1. 项目概述
哈尔滨中心医院用户移动端小程序是一个典型的医疗行业互联网+解决方案,采用SpringBoot后端+微信小程序前端的技术架构。这个毕设项目完整实现了从挂号预约到报告查询的全流程就医服务,特别适合计算机相关专业学生作为毕业设计参考。
我在实际开发医疗类小程序时发现,这类项目最核心的难点不在于技术实现,而在于如何准确理解医疗业务流程。比如挂号环节要处理号源同步、退号时限、医生停诊等复杂业务规则,这些在普通电商系统中是不会遇到的。
2. 技术架构解析
2.1 SpringBoot后端设计
后端采用经典的三层架构:
- Controller层:处理HTTP请求,返回JSON格式数据
- Service层:核心业务逻辑实现
- DAO层:使用MyBatis-Plus进行数据库操作
数据库设计时需要特别注意:
-- 号源表设计示例 CREATE TABLE `schedule` ( `id` bigint NOT NULL AUTO_INCREMENT, `doctor_id` bigint NOT NULL COMMENT '医生ID', `dept_id` int NOT NULL COMMENT '科室ID', `date` date NOT NULL COMMENT '出诊日期', `time_period` tinyint NOT NULL COMMENT '时段(1上午/2下午)', `total` int DEFAULT '0' COMMENT '总号源', `remain` int DEFAULT '0' COMMENT '剩余号源', `status` tinyint DEFAULT '1' COMMENT '状态(0停诊/1正常)', PRIMARY KEY (`id`), KEY `idx_doctor_date` (`doctor_id`,`date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;2.2 微信小程序前端
前端采用微信小程序原生开发框架,主要页面包括:
- 首页:科室导航、医生推荐
- 预约挂号:按科室/医生筛选
- 个人中心:就诊人管理、订单记录
样式开发建议使用rpx单位适配不同设备:
/* 挂号卡片样式示例 */ .reg-card { width: 690rpx; margin: 20rpx auto; padding: 30rpx; box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.1); }3. 核心功能实现
3.1 预约挂号系统
挂号业务流程图:
- 用户选择科室/日期
- 系统返回可预约医生列表
- 用户选择时段并确认
- 系统锁定号源并生成订单
关键代码片段(SpringBoot):
@Transactional public RegResult register(RegDTO regDTO) { // 1. 校验号源 Schedule schedule = scheduleMapper.selectById(regDTO.getScheduleId()); if(schedule.getRemain() <= 0){ throw new BusinessException("号源已约满"); } // 2. 扣减库存 int update = scheduleMapper.reduceRemain(schedule.getId()); if(update == 0){ throw new BusinessException("号源变更请重试"); } // 3. 生成订单 RegOrder order = new RegOrder(); // ...订单数据组装 orderMapper.insert(order); return new RegResult(order.getId()); }3.2 报告查询功能
医疗报告查询需要注意:
- 采用分页加载避免大数据量
- 敏感信息脱敏处理
- 支持PDF预览功能
小程序端实现示例:
Page({ data: { reports: [], loading: false }, onLoad() { this.loadReports(); }, loadReports() { this.setData({loading: true}); wx.request({ url: 'https://api.example.com/reports', success: (res) => { this.setData({reports: res.data}); }, complete: () => { this.setData({loading: false}); } }); } })4. 开发注意事项
4.1 医疗行业合规要求
患者隐私保护:
- 数据传输必须HTTPS加密
- 敏感信息展示需脱敏(如身份证号显示为110**********1234)
- 报告查询需要二次身份验证
业务连续性:
- 号源数据需要与HIS系统保持同步
- 停诊情况需要及时通知已预约患者
4.2 性能优化技巧
小程序端优化:
- 使用分包加载减少首屏体积
- 重要接口数据做本地缓存
- 列表页实现虚拟滚动
服务端优化:
- 高频查询接口添加Redis缓存
- 使用Elasticsearch实现报告搜索
- 定时任务预处理静态数据
5. 部署与上线
5.1 服务器部署
推荐使用Docker Compose部署:
version: '3' services: app: image: openjdk:8-jre ports: - "8080:8080" volumes: - ./app.jar:/app.jar command: java -jar /app.jar redis: image: redis:alpine ports: - "6379:6379"5.2 小程序审核要点
医疗类小程序需特别注意:
- 必须提供《互联网医疗信息服务资格证书》
- 功能描述不能涉及诊断治疗
- 用户协议需包含隐私条款
6. 项目扩展方向
在实际医院落地时,可以考虑增加:
- 智能分诊功能:通过症状自述推荐科室
- 候诊排队提醒:实时推送排队进度
- 医保支付对接:支持线上医保结算
- 健康档案管理:长期保存就诊记录
我在开发医疗系统时最大的体会是:业务理解比技术实现更重要。建议开发前至少花2周时间实地观察医院业务流程,与医护人员充分沟通需求。一个小技巧是录制挂号窗口的操作过程,这能帮助你发现很多隐藏的业务规则。