Files
hms/docs/discussions/2026-05-20-business-process-brainstorm.md
iven 41a865cf68 feat(health+core+ai): 业务流程全面修复 Phase 4-6 + 集成测试修复
Phase 4 — Dead-letter 重试 + 内容推送 + 安全加固:
- erp-core: retry_dead_letters() 定时重试 + PII payload 脱敏
- erp-core: audit_service 哈希链定时验证 + 写入失败告警
- erp-health: article.published 消费者匹配 patient_tag 推送消息
- erp-health: care_plan 事件消费者 (激活通知 + 完成积分)

Phase 5 — 患者批量操作 + 咨询增强 + 护理事件:
- patient: batch_import_patients + bind_by_phone + refer_patient
- consultation: rate_session 满意度评价 (rating + feedback)
- consent: patient_sign_consent 患者端签署
- validation: source 枚举 (7值) + relationship 枚举 (7值) + 12 单元测试

Phase 6 — 咨询文件上传 + AI 引用标注:
- consultation_message: media_id 附件上传端点
- ai_suggestion: references JSONB + [ref:id] 格式引用标注
- AI system prompt 增加引用指令 + output_parser 提取逻辑

迁移: 000161 (media_id + references) + 000162 (rating + feedback)
集成测试: consultation/follow_up/pii_encryption 新字段同步修复
讨论文档: 2026-05-20-business-process-brainstorm.md (10域审核报告)
2026-05-21 01:34:20 +08:00

290 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 chainclaude→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-FORGETauth/config/workflow 模块的 17 个事件完全没有消费者。care_plan/care_action 4 个事件已定义常量但无消费者。
**风险:** 用户删除后相关数据不清理、角色权限变更后缓存不失效、护理计划激活无后续动作。
**建议:** 按影响分批升级。P0`appointment.cancelled`(号源回补)、`consent.revoked`数据阻断。P1`user.deleted`/`role.*`缓存失效。P2care_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.1P1约 28 人天)**
- 透析排位5d+ Kt/V 自动计算3d+ 透析小程序5d= 透析 13d
- 预约改期+候补3d+ 咨询文件上传2d+ 满意度2d= 交互 7d
- AI 引用来源4d+ 告警多渠道3d+ 生产 KEK 防护0.5d= 增强 7.5d
**阶段三V2 持续优化P2**
- 周期性随访计划、多人会诊、药物交互检查、SpO2/体温监测入口、设备心跳保活等