
温馨提示本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片1. 项目背景与意义随着移动互联网和医疗信息化的快速发展传统就医模式在挂号、候诊、复诊等环节存在效率低、体验差等问题。家庭医生在线问诊微信小程序以家庭医生签约服务为基础借助微信生态的便捷入口为居民提供在线咨询、健康管理、预约复诊等一站式服务有助于提升基层医疗资源的利用效率缓解线下门诊压力。2. 系统需求分析2.1 用户角色分析居民用户通过微信小程序完成注册登录、在线问诊、健康档案查看、预约挂号、在线支付等操作。家庭医生接收问诊请求、在线回复、开具电子处方、查看签约居民健康档案。系统管理员负责医生信息管理、科室管理、问诊记录审核、数据统计与系统配置。2.2 功能需求用户管理微信授权登录、个人信息维护、家庭成员绑定。在线问诊图文问诊、语音问诊、问诊记录查询、医生在线状态展示。健康档案居民健康信息录入、历史病历查询、体检报告上传。预约管理家庭医生排班查看、预约挂号、取消预约。处方管理电子处方开具、处方详情查看、用药提醒。消息通知问诊回复提醒、预约成功通知、健康宣教推送。3. 系统架构设计3.1 总体架构系统采用前后端分离架构前端基于微信小程序原生框架与 Vue 技术栈后端基于 SpringBoot 构建 RESTful API 服务数据存储采用 MySQL 关系型数据库并引入 Redis 缓存热点数据。flowchart TD A[微信小程序前端] -- B[微信API网关] B -- C[SpringBoot后端服务] C -- D[MySQL数据库] C -- E[Redis缓存] C -- F[文件存储服务] C -- G[第三方接口: 支付/短信]3.2 技术选型层次技术说明前端微信小程序 Vue 3小程序原生页面与 Vue 组件化开发结合后端SpringBoot 2.7提供 RESTful API 服务持久层MyBatis-Plus简化数据库操作数据库MySQL 8.0存储业务数据缓存Redis缓存医生状态、验证码等热点数据安全认证JWT Spring Security接口鉴权与用户身份校验4. 数据库设计4.1 核心数据表表名说明关键字段user居民用户表id、openid、nickname、phone、avatardoctor家庭医生表id、name、department、title、statusconsultation问诊记录表id、user_id、doctor_id、content、reply、statusappointment预约挂号表id、user_id、doctor_id、appoint_time、statusprescription电子处方表id、consultation_id、drug_name、dosage、remarkhealth_record健康档案表id、user_id、height、weight、allergy、history4.2 ER 关系说明居民用户与家庭医生之间通过签约关系关联一个居民可签约一位或多位家庭医生问诊记录关联居民与医生一条问诊记录可对应一条或多条处方记录健康档案与居民用户为一对一关系。5. 后端核心实现5.1 项目结构family-doctor-server/ ├── src/main/java/com/example/familydoctor/ │ ├── controller/ # 接口控制层 │ ├── service/ # 业务逻辑层 │ ├── mapper/ # 数据访问层 │ ├── entity/ # 实体类 │ ├── config/ # 配置类 │ ├── utils/ # 工具类 │ └── common/ # 通用返回结果 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ └── mapper/ # MyBatis XML 文件 └── pom.xml5.2 微信登录接口实现RestController RequestMapping(/api/user) public class UserController { Autowired private UserService userService; PostMapping(/login) public ResultString login(RequestBody LoginRequest request) { // 调用微信 code2Session 接口获取 openid String openid wxService.code2Session(request.getCode()); User user userService.findOrCreateByOpenid(openid); String token jwtUtil.generateToken(user.getId()); return Result.success(token); } }5.3 在线问诊接口实现PostMapping(/consultation) public ResultLong createConsultation(RequestBody ConsultationDTO dto) { Consultation consultation new Consultation(); consultation.setUserId(dto.getUserId()); consultation.setDoctorId(dto.getDoctorId()); consultation.setContent(dto.getContent()); consultation.setStatus(0); // 0 待回复 consultationService.save(consultation); return Result.success(consultation.getId()); }6. 前端核心实现6.1 小程序页面结构首页展示医生列表、健康资讯、快捷问诊入口。问诊页选择医生、发起图文问诊、查看回复。预约页查看医生排班、提交预约申请。我的页面个人中心、健康档案、处方记录、签约管理。6.2 问诊请求封装// request.js const BASE_URL https://api.example.com; export function request(path, method GET, data {}) { return new Promise((resolve, reject) { wx.request({ url: BASE_URL path, method, data, header: { Authorization: Bearer wx.getStorageSync(token) }, success: (res) { if (res.data.code 200) { resolve(res.data.data); } else { reject(res.data.msg); } }, fail: reject }); }); }6.3 问诊页面 Vue 组件template view classconsultation-page textarea v-modelcontent placeholder请描述您的症状 / button clicksubmitConsultation提交问诊/button /view /template script setup import { ref } from vue; import { request } from /utils/request; const content ref(); async function submitConsultation() { const res await request(/api/consultation, POST, { content: content.value, doctorId: selectedDoctorId }); wx.showToast({ title: 提交成功, icon: success }); } /script7. 系统测试7.1 测试用例设计模块测试项预期结果用户登录微信授权登录成功获取 openid 并生成 token在线问诊提交问诊内容问诊记录创建成功状态为待回复预约挂号选择医生和时间预约成功并发送通知处方管理医生开具处方处方保存成功居民可查看7.2 性能测试使用 JMeter 对核心接口进行并发测试在 200 并发用户场景下问诊提交接口平均响应时间低于 500ms系统吞吐量满足日常业务需求。8. 总结与展望本文设计并实现了基于 SpringBoot 和 Vue 的家庭医生在线问诊微信小程序覆盖了在线问诊、预约挂号、健康档案、电子处方等核心业务功能。系统采用前后端分离架构具有良好的可扩展性和维护性。后续可在智能分诊、AI 辅助诊断、远程健康监测等方向进一步深化提升基层医疗服务的智能化水平。