1. 项目概述与核心价值
这个基于SpringBoot的智能诊后随访系统,本质上是一个连接医院与患者的数字化桥梁。我在三甲医院信息科工作时,亲眼目睹了传统纸质随访的低效——医生手写记录易丢失,患者遗忘复诊时间,关键指标数据无法实时追踪。这套系统正是为了解决这些痛点而生。
系统采用B/S架构,前端用Vue+ElementUI实现响应式操作界面,后端基于SpringBoot 2.7.3构建,数据库选用MySQL 8.0作为主存储,Redis 5.0处理高并发随访提醒。特别设计了自动化问卷引擎和异常指标预警模块,当患者上传的血压、血糖等数据超出阈值时,系统会自动触发分级告警机制。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 分层设计原则
系统严格遵循DDD领域驱动设计,划分四层结构:
- 接口层:RESTful API + WebSocket双协议支持
- 应用层:业务逻辑编排,含随访计划生成器
- 领域层:核心的问卷引擎、预警规则引擎
- 基础设施层:集成HIS系统的HL7协议适配器
2.2 关键技术选型
| 技术组件 | 选型理由 | 版本 |
|---|---|---|
| SpringBoot | 快速启动+自动配置 | 2.7.3 |
| MyBatis-Plus | 动态SQL生成 | 3.5.1 |
| Redisson | 分布式锁控制 | 3.17.0 |
| EasyExcel | 体检报告解析 | 3.1.1 |
特别注意:MyBatis-Plus配置需开启逻辑删除插件,否则会导致随访记录误删
3. 核心功能实现
3.1 智能问卷引擎
采用规则引擎Drools 7.59实现动态问卷:
java复制// 糖尿病随访问卷规则示例
rule "Diabetes_FollowUp_Type2"
when
$patient : Patient(diabetesType == "II")
then
insert(new Questionnaire("T2DM-2023",Arrays.asList("HbA1c","足背动脉搏动")));
end
通过患者病史自动匹配问卷模板,支持语音填写(集成阿里云智能语音SDK)
3.2 多级预警系统
构建三级预警机制:
- 黄色预警:指标轻微异常 → 短信提醒
- 橙色预警:指标持续异常 → 自动生成医生待办
- 红色预警:危急值 → 触发电话呼叫系统
预警规则采用Groovy脚本实现动态加载:
groovy复制if(bloodPressure.systolic >180 || bloodPressure.diastolic >110){
return EmergencyLevel.RED
}
4. 数据库设计要点
4.1 关键表结构
sql复制CREATE TABLE `follow_up_plan` (
`id` bigint NOT NULL COMMENT '主键',
`template_id` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '问卷模板ID',
`patient_id` varchar(18) COLLATE utf8mb4_bin NOT NULL COMMENT '患者身份证号',
`trigger_time` datetime NOT NULL COMMENT '触发时间',
`status` tinyint NOT NULL DEFAULT '0' COMMENT '0待执行 1已完成 2已过期',
`medical_data` json DEFAULT NULL COMMENT '体征数据JSON'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
4.2 性能优化措施
- 医疗数据采用JSON类型字段存储,配合Generated Column建立索引
- 随访记录按患者ID哈希分表,解决单表数据膨胀问题
- 建立时序数据库集群存储历史体征数据
5. 开发环境搭建
5.1 必备工具链
- JDK:Azul Zulu 17.0.3 (避免Oracle JDK商业授权问题)
- IDE:IntelliJ IDEA 2022.2+ (需安装Lombok插件)
- 数据库工具:DBeaver Enterprise (支持达梦/MySQL多引擎)
5.2 关键配置项
yaml复制spring:
datasource:
druid:
filters: stat,wall,slf4j
validation-query: SELECT 1 FROM DUAL
test-on-borrow: true
min-idle: 5
max-active: 50
stat-view-servlet:
enabled: true
allow: 127.0.0.1
6. 部署实战经验
6.1 容器化部署
Docker Compose编排示例:
dockerfile复制services:
followup-db:
image: mysql:8.0.28
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/data:/var/lib/mysql
followup-app:
image: adoptopenjdk:17-jdk-hotspot
depends_on:
- followup-db
ports:
- "8080:8080"
6.2 踩坑记录
-
达梦数据库兼容问题:
- 需重写MyBatis的PageHelper分页插件
- JDBC URL需添加参数:?compatibleMode=mysql
-
微信消息模板限制:
- 随访提醒内容需控制在200字内
- 图片链接必须使用HTTPS协议
7. 扩展开发建议
- 集成NLP引擎:使用HanLP处理患者主观描述文本
java复制List<Term> terms = HanLP.segment("这两天头晕加重"); - 增加BI看板:通过Apache ECharts展示随访完成率等指标
- 对接物联网设备:解析智能手环的HL7格式数据
这套系统在我们医院上线后,随访率从38%提升至79%,医生工作效率提高近3倍。特别提醒:处理医疗数据必须遵守《网络安全法》要求,所有数据库字段都要加密存储,建议采用国密SM4算法。
