返回作品

基于大数据的患者信息管理平台

创建于 2026 年 2 月 24 日

标签
  • Java
  • Spring Boot
  • MyBatis-Plus
  • Spring Security
  • JWT
  • Redis
  • Vue 3
  • Element Plus
  • Vant
  • ECharts
  • PySpark
  • MySQL

项目介绍

患者信息管理平台是一个面向医院/诊所场景的多角色信息化项目,把「患者预约、医生接诊、报告查看、管理运营」串成一条完整的业务链路。项目按角色拆出三个前端:患者端(移动 H5,基于 Vant 4)、医生端(Element Plus)与管理端(Element Plus + ECharts),后端由 Spring Boot 3 单体应用统一提供 RESTful API,并单独维护一个 PySpark 大数据模块负责数据清洗与统计分析,是「业务系统 + 大数据分析」一体化的完整工程。

仓库内共五个子工程:patient-server(Spring Boot 3.2 后端,按业务模块分包)、patient-web(患者端 H5)、doctor-web(医生端)、admin-web(管理后台)、spark-etl(PySpark 数据清洗与分析管线),docs/ 目录提供数据库设计、系统设计与快速启动文档。数据库约 30 张表,覆盖系统管理、患者档案、医生排班、预约、门诊/住院记录、处方、检验检查报告、健康指标、医患消息与统计分析,并内置了完整的初始化数据与演示账号,克隆即可运行演示。

项目架构

系统采用「三端前端 + 单体后端 + 大数据分析」的分层架构。前端三个 Vite 工程分别运行在 3000(管理端)、3001(患者端)、3002(医生端)端口,开发环境通过代理统一转发到后端 8080;后端 patient-server 按业务域组织包结构:system(RBAC 用户/角色/菜单/部门/字典与登录审计)、patient(患者注册登录、就诊人、地址、通知)、doctor(医生信息与排班)、appointment(预约挂号)、medical(门诊记录、处方、检验/检查报告、电子病历)、health(健康指标)、message(医患会话)、analysis(驾驶舱、疾病谱、患者画像)。

后端技术栈为 Spring Boot 3.2 + Java 17 + Spring Security(JWT 无状态认证,Redis 存储登录态与短信验证码)+ MyBatis-Plus + MySQL 8.0 + Redis + Knife4j 接口文档,并通过 AOP 切面(@Log 注解 + LogAspect)自动记录操作日志。大数据链路独立成 spark-etl 模块,四个脚本按流水线执行:1_generate_dirty_data.py 用 Faker 模拟医院导出的脏数据(重复记录、缺失值、性别/日期格式混乱、无效手机号身份证号);2_spark_clean.py 用 PySpark 做身份证去重、性别与日期标准化、数据校验;3_import_mysql.py 把清洗结果写入业务表;4_spark_analysis.py 从 MySQL 读业务数据做聚合与挖掘,把运营指标、疾病谱、患者画像标签、患者分群写回 stat_daily_operationstat_diseasepatient_tagpatient_group 四张统计表,管理端再通过 ECharts 呈现。

核心功能

  • 预约挂号与智能导诊:患者端按「科室 → 医生 → 排班」三级联动选择号源并创建预约,可查看我的预约列表;平台内置 guide_symptom_dept 症状-科室映射表,按症状关键词权重推荐挂号科室,降低患者选科门槛。

  • 诊疗业务闭环:医生端工作台展示今日待诊患者,接诊后填写门诊记录、开具处方(含明细)、下达检验/检查申请;检验报告支持项目明细与异常判断,检查报告支持影像附件;患者端可查看电子病历时间轴、各类报告与健康指标(血压、血糖等)的趋势图表,形成「就诊 → 文书 → 报告 → 复查」的完整闭环。

  • 医患消息与通知message_conversation 会话 + message 消息两级结构支撑医患在线沟通,患者端还接收平台通知,构建诊前诊后的即时联系通道。

  • 大数据分析与运营驾驶舱:管理端 analysis 模块提供数据驾驶舱(今日门诊量、预约数、新增患者、总患者/医生/科室数、近 7 天门诊与预约趋势、科室门诊分布)、疾病谱分析(各疾病患者数与就诊次数)与患者画像(性别、年龄、地区、就诊频次分布),底层数据由 PySpark 离线分析产出,支持定时任务调度。

  • RBAC 权限与审计:管理端覆盖用户、角色、菜单、部门、字典的完整 RBAC 体系,接口层通过 @PreAuthorize 控制权限;@Log 注解 + AOP 记录操作日志,另建登录日志表,操作全程可追溯。

功能截图

暂无运行截图。

快速上手

环境要求:JDK 17、Maven 3.8+、Node.js 18+、MySQL 8.0、Redis 7.x,运行 Spark 模块还需 Python 3.8+ 与 JDK 17(PySpark 依赖)。

先初始化数据库:执行 docs/patient_platform线上导出的库.sql 导入完整示例数据(含管理员、医生、患者、排班、报告等),或执行 docs/database-design.sql 仅建表与基础数据;随后修改 patient-server/src/main/resources/application-dev.yml 中的 MySQL 与 Redis 连接(仓库默认指向远程库,本地建议改为 localhost)。启动后端执行 cd patient-server && mvn spring-boot:run,接口服务在 8080 端口,Knife4j 文档地址为 http://localhost:8080/doc.html

前端三端分别执行 npm install && npm run dev,管理端、患者端、医生端依次访问 3000/3001/3002。内置测试账号:管理端 admin/admin123,医生端 doctor001/123456,患者端 13900001001/123456(短信验证码开发模式固定为 123456),登录态依赖 Redis,需先确保其已启动。如需重建大数据分析数据,按序运行 spark-etl1_generate_dirty_data.py2_spark_clean.py3_import_mysql.py4_spark_analysis.py 四个脚本即可。

总结

项目把医院业务系统常见的「预约挂号、诊疗记录、报告管理、医患沟通、后台管理」完整落地为三端可用的产品形态,同时用 PySpark 补齐了「脏数据清洗 → 统计分析 → 驾驶舱展示」的大数据链路,业务数据与统计结果在 MySQL 中同源闭环,前端通过 ECharts 直接消费。结构上模块划分清晰、文档齐全、示例数据完备,既适合作为毕设/教学演示的完整全栈工程,也便于在此基础上按科室、机构扩展二次开发。