# HMS 全业务流程合理性审核 — 多专家组头脑风暴 > 日期: 2026-05-20 | 参与者: 6 专家组(患者管理/预约排班/健康数据与告警/随访咨询积分/AI内容透析/跨流程整合与合规) ## 1. 背景 HMS 健康管理平台已完成核心功能开发(59 业务实体、376+ API 端点、990+ 测试),进入 V1 CONDITIONAL GO 阶段。在投入试运行前,需要从**真实医疗业务场景**角度审视所有业务流程的合理性和完整性,而非仅关注技术实现质量。 核心问题:**这些流程是否真正满足体检中心/血透中心/社区卫生中心的日常运营需求?** ## 2. 审核方法 6 个专家组并行工作,每位专家深入阅读实际代码(handler/service/dto/前端页面/小程序页面),从以下维度审核: - 流程完整性(端到端是否闭合) - 真实场景覆盖度(体检/血透/社区/多科室) - 业务规则合理性(状态机/并发/权限) - 缺失功能清单(按 P0/P1/P2 分级) ## 3. 综合评分矩阵 | 业务域 | 评分 | 核心优势 | 最大缺失 | |--------|------|----------|----------| | 患者管理 | **7.5** | PII 加密+盲索引+知情同意体系 | 无批量导入、无自助绑定、无转诊流程 | | 预约排班 | **6.5** | CAS 原子并发控制+状态机 | 无排班模板、无改期、无候补 | | 健康数据采集 | **7.0** | 双链路摄入+三层降采样+BLE 4 适配器 | 两套告警系统不互通 | | 告警系统 | **7.0** | 规则引擎 3 条件+降噪+升级机制 | 通知渠道单一(仅站内) | | 随访管理 | **7.0** | 闭环完整+批量操作+5 种方式 | 模板与任务关联断裂 | | 咨询管理 | **7.5** | 长轮询+PII 加密+咨询→随访联动 | 缺文件上传流程、缺满意度评价 | | 积分商城 | **8.0** | FIFO 消费+CAS 防超卖+活动联动 | 积分触发点太少(仅签到) | | AI 智能分析 | **7.5** | ReAct Agent+9 Tool+角色沙箱 | 缺引用来源、Token 计量不精确 | | 内容管理 | **8.0** | 审核状态机+媒体库安全+轮播图 | 缺内容推送机制 | | 透析管理 | **6.5** | 数据字段完整+KDIGO 规则引擎 | 无排位管理、无 Kt/V 计算、无小程序端 | | 跨流程整合 | **7.5** | 事件驱动+Outbox+幂等消费 | 49% 事件无消费者 | | 安全合规 | **7.0** | AES-256-GCM+KEK/DEK+哈希链审计 | 知情同意未在数据访问层强制执行 | | 多角色协作 | **7.5** | 四级数据权限+AI 建议闭环 | 护士角色在事件流中缺失 | | 异常处理 | **6.5** | Dead-letter+幂等+乐观锁 | Dead-letter 无自动重试 | **综合评分: 7.1 / 10 (B)** --- ## 4. 各域详细审核结论 ### 4.1 患者管理 (7.5/10) **已实现且合理:** - PII 加密体系(AES-256-GCM + HMAC 盲索引)设计优秀,身份证/过敏史/病史/紧急联系人全覆盖 - 盲索引去重机制防止跨系统重复建档 - 患者与用户账号解耦(先建档后绑定),符合体检中心实际 - 家庭成员管理完善,支持多级访问控制(summary/full/limited) - 知情同意 6 种类型,授权/撤回完整流程 - 标签系统多对多关系,事务保证一致性 **P0 缺失:** - **无批量导入** — 体检中心每天 200-500 人,只有单条创建不可接受 - **无患者自助绑定** — 患者无法通过手机号+验证码匹配已有档案 - **无转诊流程** — 只有添加/删除医生关系,无"转诊"语义 **P1 缺失:** - 患者本人电话号码字段缺失(DTO 和 Entity 均无 phone 列) - source 字段无枚举校验 - 列表搜索不支持电话号码 - 小程序知情同意缺少签署入口 ### 4.2 预约排班 (6.5/10) **已实现且合理:** - CAS 原子并发控制,事务内 `UPDATE current + 1 WHERE current < max`,取消反向释放 - 预约状态机(pending→confirmed→completed/cancelled/no_show)完善 - 乐观锁保护(排班/预约均带 version) - 前端排班余量实时显示 **P0 缺失:** - **无排班模板** — 没有周期性排班能力,必须逐天手动创建 - **无批量排班** — 只有单条创建 - **无改期功能** — 只能取消再重新预约,存在中间态风险 **真实场景覆盖度:** - 体检套餐预约:未覆盖(模型是单医生+单时段) - 血透固定排位:未覆盖(无周期性预约) - 候补排队:未覆盖 - 当天加号:未覆盖 ### 4.3 健康数据与告警 (7.0/10) **已实现且合理:** - 双链路数据摄入(手动录入 + BLE 设备同步)独立运行 - 三层降采样(原始→小时聚合→日聚合含 P95) - 规则引擎 3 条件类型(single_threshold / consecutive / trend) - 告警降噪(患者级升级 + 系统级聚合抑制),critical 不抑制 - 危急值阈值差异化配置(科室/年龄维度) - 告警→随访闭环(critical 1 天内、warning 3 天内) - 告警→咨询智能关联 **最严重问题 — 两套告警系统不互通:** - 链路一(手动录入)→ `critical_value_threshold` → `critical_alert` 表 - 链路二(设备同步)→ `alert_rules` → `alerts` 表 - 两张表、两套检测逻辑、两个生命周期 - 设备同步双写 `vital_signs` 后不触发危急值检测 - 手动录入不走规则引擎的 consecutive/trend 评估 ### 4.4 随访管理 (7.0/10) **已实现且合理:** - 模板字段自定义(7 种类型:text/number/date/select/checkbox/textarea/scale) - 5 种随访方式(phone/outpatient/home_visit/online/wechat) - 批量操作(批量创建/分配/完成,上限 100) - 闭环完整:创建→执行→完成→自动创建后续→逾期催办 - 随访记录 PII 加密 - 工作流事件驱动自动完成 **核心断裂 — 模板与任务关联断裂:** - `follow_up_task` 无 `template_id` 外键 - `follow_up_record` 无 JSONB 字段存储结构化表单答案 - 模板定义了字段但任务/记录无法使用 - 缺少周期性随访计划规则 ### 4.5 咨询管理 (7.5/10) **已实现且合理:** - 会话生命周期(waiting→active→closed)完整 - 长轮询 + EventBus 混合模式 - 消息 PII 加密 - 双端未读计数(独立计数 CAS 更新) - 咨询→随访联动 + 咨询→AI 分析联动 - sender_role 服务端推导(不信任客户端) - 医生仪表盘 7 项指标聚合 **缺失:** - 消息附件上传流程未实现(DTO 支持 image/file/voice 但无上传链路) - 满意度评价缺失 - 多人会诊不支持 - 咨询转介不支持 ### 4.6 积分商城 (8.0/10) **已实现且合理:** - FIFO 积分消费(最早到期的先扣) - CAS 防超卖(商品库存 + 积分余额) - 阶梯签到奖励(7/14/30 天) - 订单核销(QR 码 + 扫码验证) - 线下活动联动(报名+签到+自动积分发放) - 积分过期清理(每 24h) **核心缺失 — 积分触发点太少:** - `earn_points` 通用方法已就绪但只在 `daily_checkin` 调用 - 缺少:上报体征→积分、完成随访→积分、上传化验→积分 - 这是"积分激励持续上报数据"核心价值的前提 ### 4.7 AI 智能分析 (7.5/10) **已实现且合理:** - ReAct Agent + 9 Tool + 角色沙箱 - 多 Provider + fallback chain(claude→openai→ollama) - 配额管理(租户月 Token + 患者日分析次数) - 事件驱动自动分析(化验→解读、告警→趋势、透析→KDIGO) - 知识库上下文注入 - AI 建议→审批→执行→反馈闭环 **缺失:** - AI 输出无临床引用来源标注 - 药物相互作用检查 Tool 缺失 - Token 用量估算不精确(SSE 模式 `len/4` 估算,输入记 0) - Ollama FC 降级丢失 Tool 能力 ### 4.8 内容管理 (8.0/10) **已实现且合理:** - 审核状态机(draft→pending_review→published/rejected)完善 - 权限分离(编辑 vs 审核) - 媒体库安全(MIME 白名单 + 路径遍历防护 + 10MB 限制) - 缩略图自动生成 + 手动裁剪 - 轮播图公开端点 + 时间范围过滤 **核心断裂 — 无内容推送机制:** - `article.published` 事件已发布但无消费者 - 无法自动将文章推送给标签匹配的患者 ### 4.9 透析管理 (6.5/10) **已实现且合理:** - 数据字段完整(透前/透后体重、血压、心率、超滤量、血流量、时长、症状) - 透析处方管理(透析器、膜面积、透析液配方、抗凝剂、血管通路) - KDIGO 风险评估 12 条规则 + CKD 分期 - 统计报表完整 **P0 缺失:** - **无排位管理** — 血透中心运营核心能力完全缺失 - **Kt/V 和 URR 不自动计算** — 透析充分性指标需手动输入 - **小程序端零入口** — 患者无法查看自己的透析记录 - **透析记录与处方无关联** — 无法追溯"这次透析按哪个处方执行" - **透析记录与预约无整合** — 透析预约未走统一排班系统 --- ## 5. 全系统 TOP 20 改进建议 ### P0 — 影响核心业务可用性(建议 V1 前完成) | # | 建议 | 域 | 工时 | 影响 | |---|------|-----|------|------| | 1 | **统一两套告警系统** — 合并 `critical_alert` 和 `alerts` 为单一管线 | 告警 | 5d | 消除告警漏报风险 | | 2 | **患者批量导入** — CSV/JSON 上传 + 异步处理 + 去重合并 | 患者 | 3d | 体检中心基本需求 | | 3 | **患者自助绑定** — 手机号+验证码匹配已有档案 | 患者 | 2d | 患者端核心链路 | | 4 | **排班模板+批量排班** — 周期性模板 + 批量创建 + 复制到下周 | 排班 | 5d | 排班管理基本需求 | | 5 | **透析排位管理** — 床位/机位 + 固定/临时排位 + 周期性分配 | 透析 | 5d | 血透中心运营核心 | | 6 | **知情同意数据访问拦截** — service 层校验 consent 状态 | 合规 | 3d | 医疗合规底线 | | 7 | **随访模板关联** — task 增加 template_id + record 增加 form_data JSONB | 随访 | 3d | 随访表单核心能力 | | 8 | **积分触发扩展** — 上报体征/完成随访/上传化验 均触发积分 | 积分 | 2d | 积分激励价值前提 | ### P1 — 影响日常使用效率(建议 V1.1 完成) | # | 建议 | 域 | 工时 | |---|------|-----|------| | 9 | **预约改期+去重+候补** — 原子改期 + 重复预约检测 + 候补队列 | 排班 | 3d | | 10 | **咨询文件上传** — 集成媒体库,支持图片/语音/文件消息 | 咨询 | 2d | | 11 | **Kt/V + URR 自动计算** — 后端从 BUN 自动计算充分性指标 | 透析 | 3d | | 12 | **透析小程序端** — 患者查看记录/趋势,医护查看排位/审阅 | 透析 | 5d | | 13 | **Dead-letter 自动重试** — 后台任务定期扫描 + 指数退避 | 可靠性 | 2d | | 14 | **内容推送闭环** — article.published → 匹配 patient_tag → 推送 | 内容 | 3d | | 15 | **患者电话号码+搜索** — Entity 新增 phone + 盲索引 + 搜索支持 | 患者 | 2d | ### P2 — 影响特定场景(建议 V2 完成) | # | 建议 | 域 | 工时 | |---|------|-----|------| | 16 | **AI 引用来源标注** — 知识库注入后要求 LLM 标注 reference_id | AI | 4d | | 17 | **告警多渠道通知** — critical 级别增加微信模板消息+短信 | 告警 | 3d | | 18 | **生产 KEK 防护** — dev_default 添加编译守卫,运行时检测 | 安全 | 0.5d | | 19 | **满意度评价** — 咨询关闭后 1-5 星 + 文字评价 | 咨询 | 2d | | 20 | **护理计划事件消费者** — care_plan 激活→通知医护+积分 | 协作 | 2d | --- ## 6. 三个核心架构问题 ### 问题一:两套告警系统并行(影响最大) **现状:** 手动录入走 `critical_value_threshold` → `critical_alert`,设备同步走 `alert_rules` → `alerts`。两套检测逻辑、两张表、两个生命周期。 **风险:** 设备同步的血压 200mmHg 可能不触发任何告警(如果没配 alert_rules);医护需要看两个告警列表。 **建议:** 统一为单一告警管线,所有数据摄入点先做危急值阈值检测(fast path),再做规则引擎评估(slow path),输出到统一的 `alerts` 表。 ### 问题二:49% 事件无业务消费者 **现状:** 51 个事件中 25 个为 FIRE-AND-FORGET,auth/config/workflow 模块的 17 个事件完全没有消费者。care_plan/care_action 4 个事件已定义常量但无消费者。 **风险:** 用户删除后相关数据不清理、角色权限变更后缓存不失效、护理计划激活无后续动作。 **建议:** 按影响分批升级。P0:`appointment.cancelled`(号源回补)、`consent.revoked`(数据阻断)。P1:`user.deleted`/`role.*`(缓存失效)。P2:care_plan/care_action。 ### 问题三:知情同意未在数据访问层强制执行 **现状:** `consent_service` 实现了同意的 CRUD,但其他 service 在返回患者数据时不检查同意状态。撤回同意后,AI 分析、统计、导出仍可访问该患者数据。 **风险:** 违反《个人信息保护法》"单独同意"要求和医疗数据使用授权原则。 **建议:** 在 `patient_service`/`health_data_service`/`lab_report_service` 的查询层添加 consent 状态校验,`consent.revoked` 后阻断敏感数据访问。 --- ## 7. 结论与行动计划 ### 综合评估 HMS 平台的**技术实现质量较高**(CAS 并发控制、PII 加密、事件 Outbox、审计哈希链),但**业务流程覆盖深度不足**,尤其在面向真实医疗场景时暴露了多个核心流程断裂。 **整体评分:7.1/10 (B)** - ✅ **做得好的:** 安全基础设施、事件驱动架构、数据加密、并发控制 - ❌ **做得不够的:** 透析排位、批量导入、排班模板、告警统一、内容推送、知情同意执行 ### 行动建议 **阶段一:V1 上线前(P0,约 28 人天)** - 统一告警系统(5d)+ 知情同意拦截(3d)+ Dead-letter 重试(2d)= 可靠性 10d - 患者批量导入(3d)+ 自助绑定(2d)+ 电话号码(2d)= 患者 7d - 排班模板(5d)= 排班 5d - 积分触发扩展(2d)+ 随访模板关联(3d)+ 内容推送(1d)= 流程闭环 6d **阶段二:V1.1(P1,约 28 人天)** - 透析排位(5d)+ Kt/V 自动计算(3d)+ 透析小程序(5d)= 透析 13d - 预约改期+候补(3d)+ 咨询文件上传(2d)+ 满意度(2d)= 交互 7d - AI 引用来源(4d)+ 告警多渠道(3d)+ 生产 KEK 防护(0.5d)= 增强 7.5d **阶段三:V2 持续优化(P2)** - 周期性随访计划、多人会诊、药物交互检查、SpO2/体温监测入口、设备心跳保活等