目录
- 项目概述
- 系统架构设计
- 核心功能模块
- AI能力设计
- 数据库设计
- 项目实施路线图
- 合规与安全
- 附录
1. 项目概述
1.1 项目名称
AI智慧医疗随访系统(AI Smart Medical Follow-up System)
1.2 项目目标
构建一套以大语言模型(LLM)为核心的智能随访平台,实现患者出院后随访工作的自动化、智能化、标准化,降低医护人员随访工作量,提高患者依从性和满意度,最终提升慢病管理和康复效果。
1.3 核心价值
| 维度 | 传统随访 | AI智慧随访 |
|---|
| 效率 | 人工逐个电话随访,每人每天约30-50例 | AI并行处理,单日可触达数千例 |
| 覆盖 | 抽样随访,覆盖率低 | 全量覆盖,无遗漏 |
| 及时性 | 延迟数天甚至数周 | 实时触发,秒级响应 |
| 个性化 | 标准化话术,千人一面 | 根据患者画像动态调整话术 |
| 数据 | 纸质/表单记录,难以分析 | 结构化采集,实时分析预警 |
| 成本 | 大量护理人力投入 | 人力成本降低60%-80% |
1.4 解决的痛点
- 人力瓶颈:护理人员不足,随访工作量大,导致覆盖率低
- 质量参差:不同随访人员水平不一,沟通质量难以保证
- 数据孤岛:随访数据分散在Excel、纸质表格中,无法形成闭环
- 预警滞后:患者异常情况发现晚,错过最佳干预窗口
- 合规风险:缺乏标准化流程,医疗文书记录不完整
- 患者体验差:被动等待回访,缺乏互动感和获得感
2. 系统架构设计
2.1 整体技术架构图
┌─────────────────────────────────────────────────────────────────────┐
│ 用户访问层 (Presentation) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Web管理台 │ │ 小程序端 │ │ 患者H5端 │ │ 飞书/钉钉工作台 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
└────────────────────────────────┬────────────────────────────────────┘
│ HTTPS / WSS
┌────────────────────────────────▼────────────────────────────────────┐
│ API网关层 (Gateway) │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Kong / APISIX — 鉴权 · 限流 · 路由 · 日志 · 灰度发布 │ │
│ └──────────────────────────────────────────────────────────────┘ │
└────────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────────▼────────────────────────────────────┐
│ 业务服务层 (Microservices) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ 随访任务服务 │ │ 对话引擎服务 │ │ 数据采集服务 │ │ 预警服务 │ │
│ │ FollowUpSvc │ │ ChatEngineSvc│ │ DataCollSvc │ │ AlertSvc │ │
│ └─────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ 报告生成服务 │ │ 用户权限服务 │ │ 患者画像服务 │ │ 消息推送 │ │
│ │ ReportSvc │ │ AuthSvc │ │ ProfileSvc │ │ NotifySvc │ │
│ └─────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
│ │
│ 技术栈: Spring Boot / Go · gRPC · Redis · RabbitMQ/Kafka │
└────────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────────▼────────────────────────────────────┐
│ AI能力层 (AI Layer) │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ LLM 推理引擎 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ │ │
│ │ │ 通义千问 │ │ DeepSeek │ │ 本地部署 │ │ 模型路由 │ │ │
│ │ │ Qwen-Max │ │ Chat │ │ Qwen-7B │ │ Gateway │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ ASR语音 │ │ TTS语音 │ │ NER/意图 │ │ 情感分析/RAG │ │
│ │ 识别 │ │ 合成 │ │ 识别 │ │ 知识检索增强 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
│ │
│ 技术栈: Python · FastAPI · vLLM · LangChain · Milvus/Chroma │
└────────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────────▼────────────────────────────────────┐
│ 数据层 (Data Layer) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │PostgreSQL │ │ Redis │ │ ClickHouse│ │ MinIO/OSS │ │
│ │ 业务主库 │ │ 缓存/会话 │ │ 分析数仓 │ │ 对象存储 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Elasticsearch — 日志 · 全文检索 · 审计 │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌────────────────────────────────▼────────────────────────────────────┐
│ 外部系统对接层 (Integration) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ HIS系统 │ │ EMR系统 │ │ LIS/PACS │ │ 医保/公卫平台 │ │
│ │ (万达信息) │ │ 电子病历 │ │ 检验影像 │ │ 数据上报 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
│ │
│ 对接方式: HL7/FHIR · WebService · REST API · 数据库视图/Dblink │
└─────────────────────────────────────────────────────────────────────┘
2.2 前端技术选型
| 端 | 技术栈 | 说明 |
|---|
| 管理后台 | Vue 3 + Vite + Element Plus | 随访管理、数据看板、系统配置 |
| 患者端 | 微信小程序 / UniApp | 随访问卷、健康数据上报、AI对话 |
| 医护人员端 | 飞书/钉钉小程序 | 移动端处理随访任务、异常预警 |
| 数据可视化 | ECharts + DataV | 随访数据大屏、质量监控看板 |
2.3 后端技术选型
| 层级 | 技术选型 | 理由 |
|---|
| 主服务 | Spring Boot 3.x (Java 17) / Go | 企业级稳定性,与HIS对接生态成熟 |
| AI服务 | Python FastAI / FastAPI | AI/ML生态丰富,模型部署便捷 |
| 通信 | gRPC(内部)+ REST(外部) | 高性能内部通信,标准外部接口 |
| 消息队列 | RabbitMQ / Kafka | 随访任务调度、异步消息处理 |
| 缓存 | Redis 7.x Cluster | 会话状态、限流、热点数据缓存 |
| 任务调度 | XXL-JOB | 定时随访任务触发、批量处理 |
2.4 AI层技术选型
| 能力 | 技术方案 | 备注 |
|---|
| 对话大模型 | 通义千问 Qwen-Max / DeepSeek-Chat | 中文医疗场景优化 |
| 本地小模型 | Qwen-7B-Chat(私有部署) | 敏感数据场景、低延迟需求 |
| 语音识别 ASR | Paraformer / Whisper | 支持方言识别 |
| 语音合成 TTS | CosyVoice / ChatTTS | 自然流畅的语音输出 |
| 向量数据库 | Milvus / ChromaDB | 医学知识库RAG检索 |
| 意图识别 | LLM + 微调分类器 | 随访意图路由、紧急程度判断 |
| RAG框架 | LangChain + LlamaIndex | 医学知识增强生成 |
2.5 数据层技术选型
| 组件 | 选型 | 用途 |
|---|
| 业务数据库 | PostgreSQL 16 | 患者信息、随访记录、系统配置 |
| 分析数仓 | ClickHouse | 随访数据聚合分析、报表查询 |
| 搜索引擎 | Elasticsearch 8.x | 全文检索、审计日志、对话搜索 |
| 对象存储 | MinIO / 阿里云OSS | 语音录音、报告PDF、影像文件 |
2.6 与HIS系统对接方案
对接架构
┌─────────────────────────────────────────────────┐
│ HIS系统 (万达信息) │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌──────┐ ┌─────────┐ │
│ │门诊 │ │住院 │ │医嘱 │ │检查 │ │诊断信息 │ │
│ └──┬──┘ └──┬──┘ └──┬──┘ └──┬───┘ └────┬────┘ │
│ └───────┴───────┴───────┴───────────┘ │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ HIS数据接口层 │ │
│ │ (HL7/WebService) │ │
│ └─────────┬─────────┘ │
└────────────────────────┼────────────────────────┘
│
┌──────────────▼──────────────┐
│ 随访系统数据中台 │
│ ┌────────────────────────┐ │
│ │ ETL数据同步服务 │ │
│ │ - 定时全量同步 │ │
│ │ - 增量实时同步(CDC) │ │
│ │ - HL7 FHIR消息转换 │ │
│ └────────────────────────┘ │
│ ┌────────────────────────┐ │
│ │ 数据标准化映射 │ │
│ │ - ICD-10诊断编码 │ │
│ │ - SNOMED CT术语映射 │ │
│ │ - 药品编码统一 │ │
│ └────────────────────────┘ │
└─────────────────────────────┘
对接方式详解
| 方式 | 适用场景 | 实时性 | 复杂度 |
|---|
| HL7 FHIR | 标准化数据交换(优先) | 近实时 | 中 |
| WebService/SOAP | 万达信息HIS传统接口 | 近实时 | 低 |
| 数据库视图/Dblink | 批量数据同步 | T+1 | 低 |
| CDC(Debezium) | 实时增量同步 | 实时 | 高 |
| REST API | 新一代HIS/互联网医院 | 实时 | 中 |
核心对接数据
- 患者基本信息:姓名、性别、年龄、联系方式、身份证号、医保类型
- 住院/就诊记录:入院日期、出院日期、诊断(ICD-10)、手术记录
- 医嘱信息:用药医嘱、检查检验医嘱、治疗方案
- 检查检验结果:血常规、生化、影像报告等
- 出院小结:出院诊断、出院带药、复诊计划
3. 核心功能模块
3.1 智能随访任务管理
功能概述
基于患者疾病类型、出院信息和临床路径,自动生成个性化随访计划,支持多渠道触达(电话、短信、微信、APP推送)。
核心子功能
| 子功能 | 说明 |
|---|
| 随访模板引擎 | 按病种/科室预置随访模板,支持自定义问题集和时间线 |
| 自动任务生成 | 出院时自动触发随访计划,按临床路径排布随访节点 |
| 智能排程 | 根据患者偏好时间、节假日、历史接听率自动选择最佳触达时间 |
| 多渠道触达 | 电话(AI外呼)→ 短信 → 微信推送 → 人工兜底 |
| 任务状态跟踪 | 待执行/进行中/已完成/失访/拒绝,全生命周期管理 |
| 智能重试 | 失败自动重试策略(间隔递增、渠道切换、时段调整) |
随访计划规则引擎示例
# 糖尿病术后随访模板
template:
name: "糖尿病术后随访"
applicable_diagnosis: ["E11", "E14"] # ICD-10糖尿病编码
schedule:
- offset_days: 3
channel: phone
questions: [symptom_check, medication_compliance]
- offset_days: 14
channel: wechat
questions: [blood_sugar_report, diet_assessment]
- offset_days: 30
channel: phone
questions: [comprehensive_review, lab_results]
- offset_days: 90
channel: phone
questions: [long_term_outcome, quality_of_life]
escalation:
no_answer_retry: 3
fallback_to_human: true
3.2 AI语音/文字随访
功能概述
基于大语言模型驱动的多轮对话引擎,模拟专业护士进行标准化随访,支持语音和文字两种交互方式。
对话流程设计
┌──────────────────────────────────────────────────────┐
│ AI随访对话流程 │
│ │
│ ┌─────────┐ │
│ │ 开场白 │ 根据患者身份个性化问候 │
│ └────┬────┘ │
│ ▼ │
│ ┌─────────┐ ┌─────────────┐ │
│ │ 症状询问 │───▶│ 结构化采集 │ │
│ └────┬────┘ │ - 疼痛评分 │ │
│ │ │ - 症状频率 │ │
│ │ │ - 用药情况 │ │
│ │ └──────┬──────┘ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────────┐ │
│ │ 自由问答 │───▶│ 意图识别 │ │
│ └────┬────┘ │ - 就医咨询 │ │
│ │ │ - 药物咨询 │ │
│ │ │ - 紧急求助 │ │
│ │ └──────┬──────┘ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────────┐ │
│ │ 风险评估 │───▶│ 异常预警 │ │
│ └────┬────┘ └──────┬──────┘ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────────┐ │
│ │ 结束语 │───▶│ 总结生成 │ │
│ └─────────┘ └─────────────┘ │
└──────────────────────────────────────────────────────┘
核心能力
- 语音交互:ASR实时转写 → LLM生成回复 → TTS语音输出,支持打断
- 文字交互:微信/小程序内嵌对话窗口,支持图文混排
- 多轮对话管理:上下文记忆、话题切换、意图回归
- 对话安全:敏感词过滤、医疗建议免责提示、紧急情况自动转人工
3.3 随访数据采集与分析
数据采集维度
| 维度 | 采集内容 | 采集方式 |
|---|
| 症状评估 | 疼痛VAS评分、症状频率/强度、功能状态 | AI对话结构化提取 |
| 用药依从 | 是否按时服药、剂量、不良反应 | AI对话 + 患者自报 |
| 生理指标 | 血压、血糖、体重、体温等 | 小程序录入 + 智能设备同步 |
| 生活方式 | 饮食、运动、睡眠、吸烟饮酒 | AI对话评估 |
| 心理状态 | 焦虑/抑郁筛查(PHQ-9/GAD-7) | 标准量表自动施测 |
| 满意度 | 就医体验、随访体验 | 结构化问卷 |
分析看板
- 随访完成率:按科室/病种/时间段统计
- 患者依从性趋势:用药依从率、复诊率变化
- 健康指标分布:血压/血糖达标率、异常比例
- 风险分层统计:高/中/低风险患者分布及变化
- AI对话质量:满意度评分、对话轮次、平均时长
3.4 异常预警与干预
预警规则体系
┌──────────────────────────────────────────────────────────┐
│ 三级预警机制 │
│ │
│ 🔴 红色预警(紧急) │
│ ├─ 患者主诉胸痛、呼吸困难等急性症状 │
│ ├─ 生命体征严重异常(收缩压>180/60, 血糖<3.9/>16.7) │
│ ├─ 自杀倾向/严重抑郁筛查阳性 │
│ └─ 处置: 立即转人工 + 通知主管医生 + 推送急诊建议 │
│ │
│ 🟡 黄色预警(关注) │
│ ├─ 症状持续恶化(连续2次随访评分上升) │
│ ├─ 用药依从性差(漏服>30%) │
│ ├─ 指标轻度异常但未达紧急阈值 │
│ └─ 处置: 标记关注 + 纳入重点随访 + 通知责任护士 │
│ │
│ 🟢 绿色正常 │
│ ├─ 指标在正常范围 │
│ ├─ 依从性良好 │
│ └─ 处置: 常规随访 + 健康教育推送 │
└──────────────────────────────────────────────────────────┘
干预闭环
- 自动识别:AI实时分析对话内容和生理指标,触发预警
- 分级通知:按预警级别推送至对应责任人(护士→主管→科主任)
- 干预执行:电话回访 / 约诊提醒 / 急诊转介
- 效果跟踪:干预后48小时内回访确认
- 闭环归档:完整记录预警→干预→结果链路
3.5 随访报告自动生成
报告类型
| 报告类型 | 内容 | 受众 | 触发方式 |
|---|
| 患者个人报告 | 随访摘要、健康建议、复诊提醒 | 患者 | 每次随访后自动生成 |
| 单患者随访总结 | 阶段性随访回顾、健康趋势分析 | 主管医生 | 阶段性自动/手动 |
| 科室随访质量报告 | 完成率、异常率、患者满意度 | 科主任/护士长 | 每周/月自动生成 |
| 疾病群体分析报告 | 病种维度的健康趋势、干预效果 | 医务科/质控科 | 每季度自动生成 |
| 科研数据报告 | 脱敏后的队列数据、统计分析 | 科研人员 | 按需申请 |
报告生成流程
随访数据汇总 → LLM摘要生成 → 结构化报告模板填充 → 医生审核确认 → 推送/归档
4. AI能力设计
4.1 大模型在随访中的应用场景
| 应用场景 | 模型能力 | 输入 | 输出 |
|---|
| 智能对话生成 | 多轮对话、上下文理解 | 患者回复 + 历史上下文 | 下一轮对话回复 |
| 结构化信息提取 | NER、关系抽取 | 非结构化对话文本 | 结构化字段(症状、用药等) |
| 意图识别 | 分类、路由 | 患者输入文本 | 意图类别 + 置信度 |
| 风险评估 | 推理、判断 | 对话内容 + 体检指标 | 风险等级 + 建议 |
| 报告摘要 | 文本生成、总结 | 多次随访记录 | 结构化随访报告 |
| 知识问答 | RAG检索增强 | 患者问题 + 医学知识库 | 准确的医学回答 |
4.2 患者画像与个性化随访策略
患者画像维度
{
"基础属性": {
"年龄": 65,
"性别": "男",
"教育程度": "初中",
"居住状况": "独居",
"语言偏好": "普通话",
"联系方式偏好": "电话"
},
"疾病画像": {
"主诊断": "2型糖尿病",
"合并症": ["高血压", "冠心病"],
"手术史": "冠脉支架植入术",
"病程": "8年",
"当前用药": ["二甲双胍", "阿托伐他汀", "阿司匹林"]
},
"行为画像": {
"历史依从性评分": 0.72,
"历史随访配合度": "中等",
"最佳联系时段": "上午9-11点",
"平均对话时长": "8分钟",
"语言理解能力": "中等"
},
"风险画像": {
"当前风险等级": "中",
"主要风险因素": ["独居", "依从性一般"],
"上次异常记录": "2026-04-15 血糖偏高"
}
}
个性化策略引擎
| 患者类型 | 随访频率 | 对话风格 | 关注重点 | 触达渠道 |
|---|
| 高龄独居 | 每周1次 | 温和耐心、语速慢 | 跌倒风险、用药、孤独感 | 电话为主 |
| 中年上班族 | 每2周1次 | 简洁高效 | 用药依从、饮食运动 | 微信为主 |
| 高风险患者 | 每3天1次 | 专业严谨 | 症状变化、指标监测 | 电话+短信 |
| 康复期患者 | 每月1次 | 鼓励支持 | 功能恢复、心理状态 | 小程序 |
4.3 医学术语理解与意图识别
意图分类体系
随访对话意图
├── 🟢 健康汇报
│ ├── 症状描述(主诉、现病史)
│ ├── 指标汇报(自测数据)
│ ├── 用药反馈(依从性、不良反应)
│ └── 生活方式反馈
├── 🟡 咨询求助
│ ├── 药物咨询(用法、副作用、替代)
│ ├── 症状解读(是否正常、需否就医)
│ ├── 就医指导(何时复诊、挂什么科)
│ └── 康复指导(饮食、运动、注意事项)
├── 🔴 紧急求助
│ ├── 急性症状(胸痛、呼吸困难、出血)
│ ├── 严重不良反应(过敏、晕厥)
│ ├── 心理危机(自杀意念、严重焦虑抑郁)
│ └── 其他紧急情况
├── ⚪ 一般交流
│ ├── 感谢/反馈
│ ├── 预约相关
│ └── 其他/无关
└── ❌ 负面反馈
├── 抱怨不满
├── 拒绝随访
└── 投诉建议
医学术语处理
- 同义词归一:「高血压」=「血压高」=「血压偏高」=「Hypertension」
- 模糊表述解析:「最近头有点晕」→ 症状:头晕, 程度:轻度, 持续:近期
- 量表自动施测:根据疾病类型自动选择PHQ-9、GAD-7等标准量表
- 用药名称映射:「降糖药」→ 具体药品列表(二甲双胍、格列美脲等)
4.4 情感分析与风险评估
情感分析维度
| 维度 | 检测内容 | 应用 |
|---|
| 整体情绪 | 正面/中性/负面 | 调整对话策略 |
| 焦虑程度 | 轻度/中度/重度焦虑 | 触发心理干预 |
| 抑郁筛查 | 抑郁倾向检测 | 转介精神科评估 |
| 疼痛表达 | 疼痛强度和性质 | 加强疼痛管理 |
| 求助意愿 | 是否主动寻求帮助 | 优先响应处理 |
风险评估模型
风险评分 = f(症状严重度, 指标偏离度, 依从性, 合并症数, 年龄, 独居状态, 情感状态)
风险等级:
高危 (Score ≥ 80): 立即转人工 + 通知医生
中危 (60 ≤ Score < 80): 加密随访 + 标记关注
低危 (40 ≤ Score < 60): 常规随访
正常 (Score < 40): 标准随访流程
5. 数据库设计
5.1 ER关系概览
患者(Patient) 1──N 出院记录(DischargeRecord)
出院记录 1──N 随访计划(FollowUpPlan)
随访计划 1──N 随访任务(FollowUpTask)
随访任务 1──1 随访记录(FollowUpRecord)
随访记录 1──N 对话消息(ChatMessage)
随访记录 1──N 采集数据(CollectedData)
随访记录 1──0..1 预警记录(AlertRecord)
随访记录 1──0..1 随访报告(FollowUpReport)
5.2 关键表结构
5.2.1 患者信息表 (patient)
CREATE TABLE patient (
id BIGSERIAL PRIMARY KEY,
patient_no VARCHAR(32) NOT NULL UNIQUE, -- 患者编号
name VARCHAR(64) NOT NULL, -- 姓名
gender SMALLINT NOT NULL, -- 性别: 1=男 2=女
birth_date DATE, -- 出生日期
id_card_no VARCHAR(18), -- 身份证号(加密存储)
phone VARCHAR(20) NOT NULL, -- 联系电话(加密存储)
phone_encrypted VARCHAR(128), -- 加密后的电话
address VARCHAR(256), -- 联系地址
emergency_contact VARCHAR(64), -- 紧急联系人
emergency_phone VARCHAR(20), -- 紧急联系电话
insurance_type VARCHAR(32), -- 医保类型
insurance_no VARCHAR(32), -- 医保号
education_level VARCHAR(32), -- 教育程度
marital_status VARCHAR(16), -- 婚姻状况
occupation VARCHAR(64), -- 职业
living_condition VARCHAR(32), -- 居住状况
language_preference VARCHAR(16) DEFAULT 'zh-CN', -- 语言偏好
contact_preference VARCHAR(32) DEFAULT 'phone', -- 联系偏好
best_contact_time VARCHAR(32), -- 最佳联系时段
risk_level SMALLINT DEFAULT 0, -- 当前风险等级
tags JSONB, -- 自定义标签
his_patient_id VARCHAR(64), -- HIS系统患者ID
status SMALLINT DEFAULT 1, -- 状态: 1=正常 0=注销
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_patient_phone ON patient(phone_encrypted);
CREATE INDEX idx_patient_his_id ON patient(his_patient_id);
CREATE INDEX idx_patient_risk ON patient(risk_level);
5.2.2 出院记录表 (discharge_record)
CREATE TABLE discharge_record (
id BIGSERIAL PRIMARY KEY,
patient_id BIGINT NOT NULL REFERENCES patient(id),
discharge_no VARCHAR(32) NOT NULL UNIQUE, -- 出院号
admission_date DATE NOT NULL, -- 入院日期
discharge_date DATE NOT NULL, -- 出院日期
department VARCHAR(64) NOT NULL, -- 出院科室
attending_doctor VARCHAR(64), -- 主管医生
primary_diagnosis VARCHAR(256) NOT NULL, -- 主诊断(ICD-10)
diagnosis_codes JSONB, -- 诊断编码列表
secondary_diagnosis VARCHAR(512), -- 次诊断
surgery_name VARCHAR(256), -- 手术名称
surgery_date DATE, -- 手术日期
discharge_summary TEXT, -- 出院小结
discharge_medications JSONB, -- 出院带药
follow_up_advice TEXT, -- 出院医嘱/复诊建议
next_visit_date DATE, -- 建议复诊日期
condition_at_discharge VARCHAR(64), -- 出院时状况
his_admission_id VARCHAR(64), -- HIS住院号
status SMALLINT DEFAULT 1,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_discharge_patient ON discharge_record(patient_id);
CREATE INDEX idx_discharge_date ON discharge_record(discharge_date);
CREATE INDEX idx_discharge_dept ON discharge_record(department);
5.2.3 随访计划表 (follow_up_plan)
CREATE TABLE follow_up_plan (
id BIGSERIAL PRIMARY KEY,
plan_name VARCHAR(128) NOT NULL, -- 计划名称
patient_id BIGINT NOT NULL REFERENCES patient(id),
discharge_record_id BIGINT REFERENCES discharge_record(id),
template_id BIGINT REFERENCES follow_up_template(id),
disease_category VARCHAR(64), -- 病种分类
start_date DATE NOT NULL, -- 计划开始日期
end_date DATE, -- 计划结束日期
total_sessions INT NOT NULL DEFAULT 1, -- 总随访次数
completed_sessions INT NOT NULL DEFAULT 0, -- 已完成次数
frequency_rule JSONB, -- 频率规则
channel_preference JSONB, -- 渠道偏好
assigned_nurse_id BIGINT, -- 责任护士ID
assigned_doctor_id BIGINT, -- 责任医生ID
status SMALLINT DEFAULT 1, -- 1=进行中 2=已完成 3=已暂停 0=已取消
created_by BIGINT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_plan_patient ON follow_up_plan(patient_id);
CREATE INDEX idx_plan_status ON follow_up_plan(status);
CREATE INDEX idx_plan_nurse ON follow_up_plan(assigned_nurse_id);
5.2.4 随访任务表 (follow_up_task)
CREATE TABLE follow_up_task (
id BIGSERIAL PRIMARY KEY,
plan_id BIGINT NOT NULL REFERENCES follow_up_plan(id),
patient_id BIGINT NOT NULL REFERENCES patient(id),
task_seq INT NOT NULL, -- 任务序号(第几次随访)
scheduled_date DATE NOT NULL, -- 计划执行日期
scheduled_time TIME, -- 计划执行时间
channel VARCHAR(32) NOT NULL, -- 执行渠道: phone/sms/wechat/manual
questions JSONB NOT NULL, -- 需要采集的问题列表
questionnaire_id BIGINT, -- 关联问卷ID
retry_count INT DEFAULT 0, -- 已重试次数
max_retry INT DEFAULT 3, -- 最大重试次数
next_retry_at TIMESTAMP, -- 下次重试时间
status SMALLINT DEFAULT 0, -- 0=待执行 1=执行中 2=已完成 3=失败 4=跳过
started_at TIMESTAMP,
completed_at TIMESTAMP,
failure_reason VARCHAR(256),
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_task_plan ON follow_up_task(plan_id);
CREATE INDEX idx_task_patient ON follow_up_task(patient_id);
CREATE INDEX idx_task_schedule ON follow_up_task(scheduled_date, status);
CREATE INDEX idx_task_retry ON follow_up_task(next_retry_at) WHERE status = 0;
5.2.5 随访记录表 (follow_up_record)
CREATE TABLE follow_up_record (
id BIGSERIAL PRIMARY KEY,
task_id BIGINT NOT NULL REFERENCES follow_up_task(id),
plan_id BIGINT NOT NULL REFERENCES follow_up_plan(id),
patient_id BIGINT NOT NULL REFERENCES patient(id),
channel VARCHAR(32) NOT NULL, -- 实际执行渠道
interaction_type VARCHAR(32) NOT NULL, -- 交互方式: voice/text/hybrid
started_at TIMESTAMP NOT NULL, -- 对话开始时间
ended_at TIMESTAMP, -- 对话结束时间
duration_seconds INT, -- 对话时长(秒)
turn_count INT DEFAULT 0, -- 对话轮次
summary TEXT, -- AI生成的对话摘要
risk_score DECIMAL(5,2), -- 风险评分
risk_level SMALLINT, -- 风险等级
emotion_score DECIMAL(3,2), -- 情感评分 (-1到1)
patient_satisfaction SMALLINT, -- 患者满意度 (1-5)
ai_confidence DECIMAL(3,2), -- AI置信度
human_reviewed BOOLEAN DEFAULT FALSE, -- 是否经过人工审核
reviewed_by BIGINT, -- 审核人
reviewed_at TIMESTAMP,
audio_file_url VARCHAR(512), -- 语音录音文件地址
transcription TEXT, -- 语音转文字全文
raw_data JSONB, -- 原始对话数据
status SMALLINT DEFAULT 1, -- 1=正常 2=待审核 0=作废
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_record_task ON follow_up_record(task_id);
CREATE INDEX idx_record_patient ON follow_up_record(patient_id);
CREATE INDEX idx_record_time ON follow_up_record(started_at);
CREATE INDEX idx_record_risk ON follow_up_record(risk_level);
5.2.6 对话消息表 (chat_message)
CREATE TABLE chat_message (
id BIGSERIAL PRIMARY KEY,
record_id BIGINT NOT NULL REFERENCES follow_up_record(id),
sequence_no INT NOT NULL, -- 消息序号
role VARCHAR(16) NOT NULL, -- 角色: patient/ai/nurse/system
content_type VARCHAR(32) NOT NULL, -- 类型: text/voice/image/option
content TEXT NOT NULL, -- 消息内容
audio_url VARCHAR(512), -- 语音文件URL
audio_duration_ms INT, -- 语音时长毫秒
intent VARCHAR(64), -- AI识别的意图
entities JSONB, -- 提取的实体信息
emotion VARCHAR(32), -- 情感标签
confidence DECIMAL(3,2), -- 置信度
metadata JSONB, -- 扩展元数据
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_message_record ON chat_message(record_id, sequence_no);
CREATE INDEX idx_message_intent ON chat_message(intent);
5.2.7 采集数据表 (collected_data)
CREATE TABLE collected_data (
id BIGSERIAL PRIMARY KEY,
record_id BIGINT NOT NULL REFERENCES follow_up_record(id),
patient_id BIGINT NOT NULL REFERENCES patient(id),
data_category VARCHAR(32) NOT NULL, -- 类别: symptom/medication/vital_sign/lifestyle/psychological
data_key VARCHAR(64) NOT NULL, -- 数据项: blood_pressure_systolic/pain_vas/phq9_score
data_value VARCHAR(256), -- 数值型/选项型值
data_value_num DECIMAL(10,2), -- 数值型值
data_unit VARCHAR(16), -- 单位
reference_range VARCHAR(64), -- 参考范围
is_abnormal BOOLEAN DEFAULT FALSE, -- 是否异常
question_text TEXT, -- 对应问题原文
answer_text TEXT, -- 患者回答原文
source VARCHAR(32) DEFAULT 'ai_chat', -- 数据来源
recorded_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_collected_record ON collected_data(record_id);
CREATE INDEX idx_collected_patient ON collected_data(patient_id, data_key);
CREATE INDEX idx_collected_abnormal ON collected_data(is_abnormal) WHERE is_abnormal = TRUE;
5.2.8 预警记录表 (alert_record)
CREATE TABLE alert_record (
id BIGSERIAL PRIMARY KEY,
record_id BIGINT REFERENCES follow_up_record(id),
patient_id BIGINT NOT NULL REFERENCES patient(id),
alert_type VARCHAR(32) NOT NULL, -- 类型: vital_abnormal/symptom_worsening/medication_non_compliance/suicide_risk/emergency
alert_level SMALLINT NOT NULL, -- 级别: 1=红色(紧急) 2=黄色(关注) 3=蓝色(提示)
alert_source VARCHAR(32) NOT NULL, -- 来源: ai_analysis/rule_engine/patient_self_report
alert_title VARCHAR(256) NOT NULL, -- 预警标题
alert_description TEXT, -- 预警详情
alert_data JSONB, -- 触发数据
triggered_by VARCHAR(128), -- 触发规则/模型
status SMALLINT DEFAULT 0, -- 0=待处理 1=处理中 2=已处理 3=已忽略
assigned_to BIGINT, -- 处理人
assigned_at TIMESTAMP,
handled_by BIGINT, -- 实际处理人
handled_at TIMESTAMP,
handle_action VARCHAR(64), -- 处理措施
handle_notes TEXT, -- 处理备注
closed_at TIMESTAMP,
escalation_level INT DEFAULT 0, -- 升级次数
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_alert_patient ON alert_record(patient_id);
CREATE INDEX idx_alert_status ON alert_record(status, alert_level);
CREATE INDEX idx_alert_time ON alert_record(created_at);
5.2.9 随访报告表 (follow_up_report)
CREATE TABLE follow_up_report (
id BIGSERIAL PRIMARY KEY,
patient_id BIGINT NOT NULL REFERENCES patient(id),
plan_id BIGINT REFERENCES follow_up_plan(id),
report_type VARCHAR(32) NOT NULL, -- 类型: single_session/periodic_summary/department/collective
report_title VARCHAR(256) NOT NULL,
report_period_start DATE,
report_period_end DATE,
content_json JSONB NOT NULL, -- 报告结构化内容
content_html TEXT, -- 渲染后的HTML
content_markdown TEXT, -- Markdown版本
pdf_url VARCHAR(512), -- PDF文件地址
key_findings JSONB, -- 关键发现
recommendations JSONB, -- 建议措施
generated_by VARCHAR(32) DEFAULT 'ai', -- 生成方式: ai/manual
generated_by_user BIGINT, -- 手动生成人
doctor_reviewed BOOLEAN DEFAULT FALSE, -- 医生已审核
reviewed_by BIGINT,
reviewed_at TIMESTAMP,
review_notes TEXT,
status SMALLINT DEFAULT 1, -- 1=草稿 2=已发布 3=已归档
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_report_patient ON follow_up_report(patient_id);
CREATE INDEX idx_report_type ON follow_up_report(report_type);
CREATE INDEX idx_report_period ON follow_up_report(report_period_start, report_period_end);
5.2.10 系统配置表 (system_config)
CREATE TABLE system_config (
id BIGSERIAL PRIMARY KEY,
config_key VARCHAR(128) NOT NULL UNIQUE,
config_value TEXT,
config_type VARCHAR(32) DEFAULT 'string', -- string/number/boolean/json
description VARCHAR(256),
category VARCHAR(64), -- 分类: follow_up/alert/ai/general
is_system BOOLEAN DEFAULT FALSE, -- 是否系统级(不可删除)
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE follow_up_template (
id BIGSERIAL PRIMARY KEY,
template_name VARCHAR(128) NOT NULL,
disease_category VARCHAR(64),
description TEXT,
config JSONB NOT NULL, -- 模板配置(含问题集、时间线等)
version INT DEFAULT 1,
is_active BOOLEAN DEFAULT TRUE,
created_by BIGINT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
6. 项目实施路线图
6.1 分阶段实施计划
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Phase 1: MVP(最小可行产品) 2026.Q3 (12周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Week 1-2 ▸ 项目启动 · 环境搭建 · 架构设计确认
Week 3-4 ▸ HIS对接联调 · 患者数据同步 · 基础后台搭建
Week 5-6 ▸ 随访模板引擎 · 任务调度系统
Week 7-8 ▸ AI对话引擎(文本) · LLM接入 · 医学知识库
Week 9-10 ▸ 微信小程序(患者端) · 基础数据采集
Week 11 ▸ 集成测试 · Bug修复 · UAT测试
Week 12 ▸ 试运行 · 培训 · 正式上线(MVP)
✅ MVP交付物:
├─ 后台管理(随访计划管理、任务监控、数据查看)
├─ 文字随访(微信小程序端AI对话)
├─ 基础预警(规则引擎,短信/微信通知)
├─ HIS数据对接(患者信息、出院记录同步)
└─ 基础报表(随访完成率、数据统计)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Phase 2: V1.0(正式版本) 2027.Q1 (16周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Week 1-4 ▸ AI语音随访(ASR+TTS) · 多轮对话优化
Week 5-8 ▸ 患者画像系统 · 个性化策略引擎
Week 9-12 ▸ 智能预警升级(AI分析) · 干预闭环
Week 13-14 ▸ 随访报告自动生成 · 数据可视化大屏
Week 15-16 ▸ 性能优化 · 安全加固 · 等保三级测评
✅ V1.0交付物:
├─ 语音随访(AI外呼 + 语音对话)
├─ 患者画像与个性化随访
├─ AI驱动的智能预警与干预闭环
├─ 自动报告生成(患者/科室/群体)
├─ 数据可视化看板
├─ 等保三级合规认证
└─ 飞书/钉钉工作台集成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Phase 3: V2.0(高级版本) 2027.Q3 (16周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Week 1-4 ▸ 多病种模板扩展 · 慢病管理路径
Week 5-8 ▸ 智能设备数据接入(血压计/血糖仪)
Week 9-12 ▸ 科研数据平台 · 脱敏数据导出 · 队列分析
Week 13-16 ▸ 医联体多院区部署 · 运营分析 · 持续优化
✅ V2.0交付物:
├─ 慢病管理全路径(糖尿病/高血压/冠心病等)
├─ 物联网设备数据采集
├─ 科研数据平台与导出
├─ 医联体多院区协同
├─ 运营数据分析与决策支持
└─ AI模型持续优化(基于真实数据微调)
6.2 团队配置建议
| 角色 | 人数 | 职责 |
|---|
| 项目经理 | 1 | 整体协调、进度管理 |
| 后端开发 | 2-3 | 核心业务服务、HIS对接 |
| 前端开发 | 1-2 | 管理后台、小程序 |
| AI工程师 | 1-2 | LLM调优、对话引擎、NLP |
| 测试工程师 | 1 | 功能测试、性能测试 |
| 医学顾问 | 1(兼职) | 随访模板、对话话术、合规审查 |
| 运维/DBA | 1(兼职) | 部署运维、数据库管理 |
6.3 关键里程碑
| 里程碑 | 时间 | 交付物 |
|---|
| M1: 需求确认 | Week 2 | PRD文档、原型图、技术方案评审通过 |
| M2: HIS对接完成 | Week 4 | 患者数据同步正常,数据质量达标 |
| M3: AI对话Demo | Week 8 | 可演示的AI文字随访对话流程 |
| M4: MVP上线 | Week 12 | 系统部署上线,首批科室试用 |
| M5: V1.0发布 | Week 28 | 语音随访、智能预警、报告生成上线 |
| M6: V2.0发布 | Week 44 | 完整版本,多病种覆盖,科研平台 |
7. 合规与安全
7.1 医疗数据隐私保护
等保三级要求
| 安全域 | 要求 | 实施措施 |
|---|
| 物理安全 | 机房安全、设备冗余 | 部署于等保三级认证云机房(如阿里云/腾讯云合规区) |
| 网络安全 | 边界防护、入侵检测 | WAF + IPS + 网络隔离 + DDoS防护 |
| 主机安全 | 漏洞管理、安全审计 | 基线加固 + 漏洞扫描 + 安全审计日志 |
| 应用安全 | 身份认证、访问控制 | OAuth2.0 + RBAC + API鉴权 + 操作审计 |
| 数据安全 | 加密存储、脱敏、备份 | AES-256加密 + 动态脱敏 + 异地备份 |
| 管理制度 | 安全策略、应急响应 | 信息安全管理制度 + 应急预案 + 定期演练 |
数据加密策略
加密分级:
L1-核心敏感: 身份证号、手机号、银行卡号
- 存储: AES-256-GCM加密
- 传输: TLS 1.3
- 展示: 脱敏显示(如 138****5678)
L2-医疗敏感: 诊断信息、检查结果、用药记录
- 存储: 数据库字段级加密
- 传输: TLS 1.3
- 展示: 角色权限控制
L3-一般业务: 随访计划、任务配置
- 存储: 明文 + 数据库访问控制
- 传输: TLS 1.2+
- 展示: 基于角色
数据安全措施
- 数据脱敏
- 开发/测试环境使用脱敏数据
- 日志中不记录敏感信息
- API返回数据按角色脱敏
- 数据备份
- 数据库每日全量备份 + 实时增量备份
- 异地容灾备份(RPO < 1小时)
- 定期恢复演练
- 数据销毁
- 患者要求删除时,30天内完成数据擦除
- 保留必要的审计日志(匿名化)
7.2 患者知情同意
知情同意流程
┌─────────────────────────────────────────────────────────┐
│ 患者知情同意流程 │
│ │
│ 1. 首次接触(出院时/首次随访前) │
│ ├─ 明确告知: 本系统为AI辅助随访工具 │
│ ├─ 告知内容: │
│ │ - 对话内容将被记录和分析 │
│ │ - 数据将用于健康管理和质量改进 │
│ │ - 可随时退出AI随访,转为人工随访 │
│ │ - 个人隐私信息的保护措施 │
│ └─ 获取方式: 电子签名/短信确认 │
│ │
│ 2. 每次对话开始 │
│ ├─ 系统提示: "本次对话由AI助手进行,通话将被录音" │
│ └─ 确认方式: 患者继续对话即视为同意 │
│ │
│ 3. 撤回同意 │
│ ├─ 患者可随时要求停止AI随访 │
│ ├─ 系统自动转人工随访 │
│ └─ 已采集数据按患者意愿处理 │
└─────────────────────────────────────────────────────────┘
知情同意书核心条款
- 数据收集告知:明确列出将收集的数据类型和用途
- AI辅助说明:明确告知对话由AI进行,非真人对话
- 录音录像告知:语音随访需告知录音及保存期限
- 数据共享说明:如与HIS系统数据互通,需告知
- 退出机制:明确告知患者可随时退出,不影响正常就医
- 联系方式:提供人工客服/投诉渠道
7.3 AI医疗合规要求
| 要求 | 说明 | 实施措施 |
|---|
| 医疗建议免责 | AI不提供诊断和治疗建议 | 所有AI回复包含免责提示 |
| 紧急情况转人工 | 检测到紧急症状必须转人工 | 红色预警自动触发人工介入 |
| 回复审核机制 | AI回复经安全过滤 | 敏感词过滤 + 医学审核规则 |
| 可解释性 | 决策过程可追溯 | 记录AI推理过程和依据 |
| 人工兜底 | AI能力边界清晰 | 超出范围自动转人工 |
| 持续监测 | AI回复质量持续监控 | 抽样人工审核 + 满意度追踪 |
7.4 数据治理框架
┌───────────────────────────────────────────────────────┐
│ 数据治理框架 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 数据质量 │ │ 数据标准 │ │ 数据生命周期管理 │ │
│ │ - 完整性 │ │ - 编码标准│ │ - 采集 → 存储 │ │
│ │ - 准确性 │ │ - 术语标准│ │ - 使用 → 归档 │ │
│ │ - 一致性 │ │ - 接口标准│ │ - 销毁 │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 数据安全与隐私保护 │ │
│ │ - 分级分类 · 加密脱敏 · 访问控制 · 审计日志 │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 合规与伦理审查 │ │
│ │ - 伦理委员会审批 · 知情同意 · 定期评估 │ │
│ └──────────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────┘
附录
A. 技术选型对比
| 组件 | 方案A | 方案B | 推荐 | 理由 |
|---|
| 后端框架 | Spring Boot | Go (Gin) | Spring Boot | 与HIS对接生态成熟,Java人才充足 |
| AI推理 | 通义千问API | 本地部署Qwen | 混合模式 | 敏感数据本地处理,通用能力调用API |
| 向量数据库 | Milvus | ChromaDB | Milvus | 生产级稳定性,支持大规模检索 |
| 消息队列 | RabbitMQ | Kafka | RabbitMQ | 随访任务场景更适合,配置简单 |
| 任务调度 | XXL-JOB | Airflow | XXL-JOB | Java生态,与Spring Boot集成好 |
B. 关键性能指标
| 指标 | 目标值 |
|---|
| AI对话响应时间 | < 2秒(文字) / < 500ms(语音首包) |
| 语音识别准确率 | > 95%(普通话) / > 85%(方言) |
| 意图识别准确率 | > 90% |
| 系统可用性 | > 99.5% |
| 并发对话数 | ≥ 100路同时在线 |
| 数据同步延迟 | < 5分钟(HIS → 随访系统) |
C. 参考标准
- GB/T 22239-2019 信息安全技术 网络安全等级保护基本要求
- GB/T 35273-2020 信息安全技术 个人信息安全规范
- WS/T 500-2017 电子病历共享文档规范
- HL7 FHIR R4 医疗数据交换标准
- 《健康医疗大数据安全管理办法》 国家卫健委
- 《生成式人工智能服务管理暂行办法》 国家网信办
文章评论