docs(iron-rules): 新增铁律15+16 + 业务逻辑设计文档 + 后端增强

铁律15: 模块设计必须分析业务逻辑,不能只做CRUD
- 必须查阅标准规范、梳理业务流程、设计状态流转、定义业务规则
- 附设计文档模板和医疗HIS参考标准清单

铁律16: 模块优化必须分析现有业务流并说明促进作用
- 必须回答5个问题:位置/关联/促进/兼容/冲突
- 附业务逻辑分析文档模板

业务逻辑设计文档:
- MD/specs/SURGERY_MANAGEMENT_DESIGN.md (139行)
  - 状态机: 待申请→待审批→已审批→待手术→手术中→已完成
  - 7条业务规则: 分级权限/术前讨论/术前评估/手术室冲突/禁食/随访/安全核查
- MD/specs/ORDER_MANAGEMENT_DESIGN.md
  - 状态机: 新开→签发→执行中→已完成/已停止/已签退
  - 6条业务规则: 停止时限/用药审核/查对/紧急标识/修改限制/皮试联动
- MD/specs/BED_MANAGEMENT_DESIGN.md
  - 状态机: 空闲↔占用↔清洁中↔维修中
  - 5条业务规则: 分配校验/科室匹配/自动清洁/使用率统计/预约

后端业务逻辑增强:
- SurgeryAppService: +手术室冲突校验 +手术统计
- BedController: +床位使用率统计 +分配校验 +出院自动清洁
- EsbMessageController: +消息路由校验 +消息轨迹 +死信队列处理
This commit is contained in:
2026-06-06 14:11:50 +08:00
parent 195ab67071
commit 76f090d2af
33 changed files with 1313 additions and 23 deletions

View File

@@ -0,0 +1,72 @@
# 床位管理模块设计文档
> **文档类型**: 业务设计
> **版本**: v1.0
> **编制日期**: 2026-06-06
> **依据标准**: 《三级医院评审标准(2022版)》床位使用率指标
---
## 一、业务背景
床位管理直接影响医院运营效率。三甲医院评审要求床位使用率≥85%,床位周转次数达标。需要实时掌握床位状态,支持智能分配。
---
## 二、状态流转
### 2.1 床位状态机
```
空闲(0) → 占用(1) → 清洁中(2) → 空闲(0)
维修中(3) → 空闲(0)
```
| 状态 | 值 | 触发条件 | 允许操作 |
|------|-----|---------|---------|
| 空闲 | 0 | 清洁完成/新床 | 分配患者 |
| 占用 | 1 | 患者入院分配 | 患者转科/出院 |
| 清洁中 | 2 | 患者出院后 | 清洁完成→空闲 |
| 维修中 | 3 | 设备故障 | 维修完成→空闲 |
---
## 三、业务规则
| 规则编号 | 规则名称 | 规则描述 | 触发时机 |
|---------|---------|---------|---------|
| BR-001 | 床位分配校验 | 只有"空闲"状态的床位才能分配 | 入院登记时 |
| BR-002 | 科室匹配 | 床位所属科室必须与患者入院科室一致 | 入院登记时 |
| BR-003 | 出院自动清洁 | 患者出院后床位自动变为"清洁中" | 出院结算时 |
| BR-004 | 使用率统计 | 实时计算科室/全院床位使用率 | 定时任务 |
| BR-005 | 床位预约 | 支持预约指定床位(限时保留) | 预约住院时 |
---
## 四、数据模型
### 床位使用率计算公式
```
科室床位使用率 = (占用床位数 / 总床位数) × 100%
全院床位使用率 = (全院占用床位数 / 全院总床位数) × 100%
床位周转次数 = 出院人次 / 平均开放床位数
```
### 床位占用时长统计
```
平均住院天数 = Σ(出院日期 - 入院日期) / 出院人次
```
---
## 五、测试用例
| 用例编号 | 场景 | 预期结果 |
|---------|------|---------|
| TC-B001 | 正常分配 | 空闲床位→占用,状态正确 |
| TC-B002 | 分配已占用床位 | 返回"该床位已被占用" |
| TC-B003 | 出院自动清洁 | 出院后床位变为"清洁中" |
| TC-B004 | 使用率计算 | 数据准确反映实际使用情况 |
| TC-B005 | 维修中分配 | 返回"该床位维修中" |

View File

@@ -22,6 +22,8 @@
| #8 | 铁律和规范文档放MD目录 | P1 | 规范文档 |
| #9 | 开发前必须审核原有代码 | P0 | 全量开发 |
| #10 | 设计文档必须包含UI设计和调用流程 | P0 | 设计文档/前端开发 |
| #11 | 模块设计必须分析业务逻辑不能只做CRUD | P0 | 全量模块设计 |
| #12 | 模块优化必须分析现有业务流并说明促进作用 | P0 | 全量模块优化 |
---
@@ -309,6 +311,129 @@ npm run lint
---
---
---
### 铁律 #12: 模块优化必须分析现有业务流并说明促进作用
**任何模块新增/优化前,必须先分析现有业务流程全貌。**
#### 必须回答的5个问题
| # | 问题 | 说明 |
|---|------|------|
| 1 | 该模块在整体业务流中处于什么位置? | 上游/下游/并行 |
| 2 | 该模块与哪些现有模块有数据流转关系? | 列出所有关联模块 |
| 3 | 优化对上下游模块有什么促进作用? | 减少重复、提升一致性、加快流程 |
| 4 | 变更是否影响现有业务流程? | 兼容性评估 |
| 5 | 业务规则是否与现有模块冲突? | 规则一致性检查 |
#### 业务逻辑分析文档模板
```
# 模块名 — 业务逻辑分析
## 1. 整体业务流程定位
[该模块在HIS系统中的位置上下游关系图]
## 2. 关联模块分析
| 关联模块 | 数据流向 | 交互方式 | 影响程度 |
|---------|---------|---------|---------|
## 3. 优化促进作用
| 维度 | 优化前 | 优化后 | 提升效果 |
|------|--------|--------|---------|
## 4. 兼容性评估
- 对现有模块的影响
- 数据迁移需求
- 接口变更影响
## 5. 规则一致性检查
- 新增规则是否与现有规则冲突
- 状态流转是否与现有状态机兼容
```
---
### 铁律 #11: 模块设计必须分析业务逻辑不能只做CRUD
**任何新模块/功能开发前,必须先进行业务逻辑分析和梳理。**
#### 禁止行为
- ❌ 拿到需求就直接写CRUD不思考业务流程
- ❌ 不查阅标准规范就开发医疗业务模块
- ❌ 没有设计文档就直接编码
- ❌ 把"能增删改查"当成"功能完成"
#### 必须完成的设计步骤
| # | 步骤 | 产出物 | 说明 |
|---|------|--------|------|
| 1 | 查阅标准规范 | 参考文档清单 | 国家卫健委标准、医保局规范、HL7/FHIR、三甲评审标准 |
| 2 | 梳理业务流程 | 流程图/文字描述 | 正常流程 + 异常流程 + 边界场景 |
| 3 | 设计状态流转 | 状态机图 | 每个实体的生命周期、状态转换条件 |
| 4 | 定义业务规则 | 规则清单 | 如:药品相互作用规则、医保审核规则、危急值判定规则 |
| 5 | 设计交互时序 | 时序图 | 用户操作 → 前端事件 → API → 后端处理 → 持久化 → 响应 |
| 6 | 编写设计文档 | MD文件 | 保存到 `MD/specs/``MD/architecture/` |
#### 医疗HIS业务逻辑参考标准
| 标准/规范 | 适用模块 | 获取途径 |
|----------|---------|---------|
| 三级医院评审标准(2022版) | 全量 | 卫健委官网 |
| 电子病历应用水平分级评价 | 电子病历/质控 | 卫健委官网 |
| 互联互通标准化成熟度测评 | ESB/集成平台 | 卫健委官网 |
| 医保基金使用监督管理条例 | 医保审核/结算 | 医保局官网 |
| HL7 FHIR R4 | 数据交换/ESB | hl7.org |
| 处方管理办法 | 合理用药/处方 | 卫健委官网 |
| 抗菌药物临床应用管理办法 | 抗菌药物管理 | 卫健委官网 |
| 医院感染管理办法 | 院感管理 | 卫健委官网 |
| 病案管理与质量控制标准 | 病案管理 | 卫健委官网 |
#### 设计文档模板
```
# 模块名 设计文档
## 1. 业务背景
- 依据什么标准/规范
- 解决什么业务问题
## 2. 业务流程
### 2.1 正常流程
[流程描述/流程图]
### 2.2 异常流程
[异常场景及处理方式]
### 2.3 边界场景
[特殊情况处理]
## 3. 状态流转
| 状态 | 值 | 触发条件 | 下一状态 |
|------|-----|---------|---------|
## 4. 业务规则
| 规则编号 | 规则名称 | 规则描述 | 触发时机 |
|---------|---------|---------|---------|
## 5. 数据模型
[实体关系图/表结构设计]
## 6. 接口设计
[API列表+参数+返回值]
## 7. 前端页面设计
[UI布局+交互+调用流程]
## 8. 测试用例
[关键业务场景测试]
```
---
### 铁律 #10: 设计文档必须包含UI设计和调用流程
**所有新模块/页面的设计文档必须包含以下要素,缺一不可:**

View File

@@ -0,0 +1,91 @@
# 医嘱管理模块设计文档
> **文档类型**: 业务设计
> **版本**: v1.0
> **编制日期**: 2026-06-06
> **依据标准**: 《三级医院评审标准(2022版)》医嘱管理制度
---
## 一、业务背景
医嘱管理是住院诊疗的核心环节。依据《病历书写基本规范》和《处方管理办法》,医嘱必须经过开具→审核→执行→完成的完整闭环。
---
## 二、状态流转
### 2.1 医嘱状态机
```
新开(0) → 已签发(1) → 执行中(2) → 已完成(3)
已停止(4) → 已取消停嘱(恢复)(2)
已签退(5)
```
| 状态 | 值 | 触发条件 | 允许操作 |
|------|-----|---------|---------|
| 新开 | 0 | 医生新开医嘱 | 签发/删除 |
| 已签发 | 1 | 医生签发 | 护士执行/签退 |
| 执行中 | 2 | 护士开始执行 | 停止/完成 |
| 已完成 | 3 | 执行完毕 | 查看 |
| 已停止 | 4 | 医生停止医嘱 | 恢复(取消停嘱) |
| 已签退 | 5 | 护士签退 | 查看 |
---
## 三、业务规则
| 规则编号 | 规则名称 | 规则描述 | 触发时机 |
|---------|---------|---------|---------|
| OR-001 | 长期医嘱停止时限 | 长期医嘱停止必须在执行时间之前2小时 | 停止医嘱时 |
| OR-002 | 用药医嘱审核 | 用药医嘱必须经过合理用药系统审核 | 签发用药医嘱时 |
| OR-003 | 医嘱查对 | 执行医嘱前必须双人查对 | 护士执行时 |
| OR-004 | 紧急医嘱标识 | 紧急医嘱需要特殊标识和优先执行 | 开具医嘱时 |
| OR-005 | 医嘱修改限制 | 已签发的医嘱不能修改,只能停止后新开 | 修改医嘱时 |
| OR-006 | 皮试医嘱联动 | 需要皮试的药物必须关联皮试医嘱 | 开具需皮试药物时 |
---
## 四、前后端交互时序
### 4.1 签发医嘱
```
用户操作: 医生点击"签发医嘱"
→ 前端: 收集选中医嘱列表
→ API: POST /reg-doctorstation/advice-manage/sign-reg-advice
→ 后端: AdviceManageController.signRegAdvice()
→ 校验医嘱状态必须为"新开"(OR-005)
→ 用药医嘱调用合理用药系统审核(OR-002)
→ 设置签发时间+签发人
→ 更新状态=已签发(1)
→ 返回: {code:200, msg:"签发成功"}
→ 前端: 刷新医嘱列表
```
### 4.2 停止医嘱
```
用户操作: 医生点击"停止医嘱"
→ 前端: 弹出确认框+填写停嘱原因
→ API: POST /reg-doctorstation/advice-manage/stop-reg-advice
→ 后端: 校验医嘱状态必须为"执行中"
→ 长期医嘱校验停止时限(OR-001)
→ 设置停嘱时间+停嘱原因
→ 更新状态=已停止(4)
→ 返回: {code:200, msg:"停嘱成功"}
```
---
## 五、测试用例
| 用例编号 | 场景 | 预期结果 |
|---------|------|---------|
| TC-O001 | 正常签发流程 | 新开→签发→执行→完成 |
| TC-O002 | 签发后修改 | 返回"已签发医嘱不能修改" |
| TC-O003 | 停止后恢复 | 已停止→恢复→执行中 |
| TC-O004 | 用药审核拦截 | 有相互作用的药物签发时被拦截 |
| TC-O005 | 紧急医嘱优先 | 紧急医嘱在列表中高亮显示 |

View File

@@ -0,0 +1,139 @@
# 手术管理模块设计文档
> **文档类型**: 业务设计
> **版本**: v1.0
> **编制日期**: 2026-06-06
> **依据标准**: 《三级医院评审标准(2022版)》手术质量安全核心制度
---
## 一、业务背景
手术管理是三甲医院评审的核心检查项。依据《医疗质量安全核心制度》中的"手术分级管理制度"和"术前讨论制度",手术必须经过完整的术前评估→审批→执行→术后跟踪流程。
### 参考标准
- 三级医院评审标准(2022版) — 手术质量安全核心指标
- 电子病历应用水平分级评价 — 4级要求手术信息全院共享
- 《手术分级管理办法》— 手术分级授权管理
- 《病案管理与质量控制标准》— 手术记录规范
---
## 二、状态流转
### 2.1 手术状态机
```
待申请(0) → 待审批(1) → 已审批(2) → 待手术(3) → 手术中(4) → 已完成(5)
↓ ↓
已驳回(6) 已取消(7)
```
| 状态 | 值 | 触发条件 | 允许操作 |
|------|-----|---------|---------|
| 待申请 | 0 | 医生提交手术申请 | 编辑/删除/提交审批 |
| 待审批 | 1 | 提交审批 | 审批/驳回 |
| 已审批 | 2 | 科主任审批通过 | 安排手术室/取消 |
| 待手术 | 3 | 安排手术室和时间 | 开始手术/取消 |
| 手术中 | 4 | 主刀医生确认开始 | 记录术中事件/完成 |
| 已完成 | 5 | 主刀医生确认完成 | 查看/打印记录 |
| 已驳回 | 6 | 科主任驳回 | 编辑后重新提交 |
| 已取消 | 7 | 任意阶段取消 | 查看 |
### 2.2 手术分级
| 级别 | 名称 | 审批权限 | 示例 |
|------|------|---------|------|
| 一级 | 一级手术 | 住院医师可独立完成 | 阑尾切除术 |
| 二级 | 二级手术 | 主治医师以上 | 胃大部切除术 |
| 三级 | 三级手术 | 副主任医师以上 | 心脏搭桥术 |
| 四级 | 四级手术 | 科主任审批+医务部备案 | 器官移植术 |
---
## 三、业务规则
| 规则编号 | 规则名称 | 规则描述 | 触发时机 |
|---------|---------|---------|---------|
| SR-001 | 手术分级权限校验 | 医生只能申请其权限范围内的手术级别 | 提交申请时 |
| SR-002 | 术前讨论记录 | 三级/四级手术必须有术前讨论记录 | 提交审批时 |
| SR-003 | 术前评估 | 必须完成麻醉评估和手术风险评估 | 安排手术时 |
| SR-004 | 手术室冲突检查 | 同一手术室同一时间不能安排两台手术 | 安排手术室时 |
| SR-005 | 术前禁食提醒 | 手术前8小时禁止进食4小时禁止饮水 | 手术前1天 |
| SR-006 | 术后随访 | 手术后24h/48h/72h必须有随访记录 | 完成手术后 |
| SR-007 | 手术安全核查 | 术前/术中/术后三次安全核查(WS/T 313) | 手术各阶段 |
---
## 四、前后端交互时序
### 4.1 提交手术申请
```
用户操作: 医生点击"提交手术申请"
→ 前端: 校验表单(必填项+业务规则前端预检)
→ API: POST /clinical-manage/surgery/surgery
→ 后端: SurgeryController.addSurgery()
→ SurgeryAppService.addSurgery()
→ 校验手术分级权限(SR-001)
→ 校验三级/四级手术术前讨论(SR-002)
→ 设置状态=待申请(0)
→ 保存到数据库
→ 返回: {code:200, msg:"申请已提交"}
→ 前端: ElMessage.success → 刷新列表
```
### 4.2 安排手术室
```
用户操作: 护士长点击"安排手术"
→ 前端: 弹出安排弹窗(选择手术室/时间/麻醉医生)
→ API: PUT /clinical-manage/surgery/surgery (携带手术室+时间信息)
→ 后端: 校验手术室冲突(SR-004)
→ 校验术前评估完成(SR-003)
→ 更新状态=待手术(3)
→ 返回: {code:200, msg:"安排成功"}
```
### 4.3 开始/完成手术
```
用户操作: 主刀医生点击"开始手术"
→ API: PUT /clinical-manage/surgery/surgery-status?id=&statusEnum=4
→ 后端: 更新状态=手术中(4), 记录开始时间
用户操作: 主刀医生点击"完成手术"
→ API: PUT /clinical-manage/surgery/surgery-status?id=&statusEnum=5
→ 后端: 更新状态=已完成(5), 记录结束时间
→ 触发术后随访提醒(SR-006)
```
---
## 五、数据模型扩展
现有 `SurgeryDto` 需增加以下字段:
| 字段 | 类型 | 说明 |
|------|------|------|
| surgeryLevel | String | 手术级别(1/2/3/4) |
| surgeryRoom | String | 手术室 |
| anesthesiaType | String | 麻醉方式(全麻/局麻/脊麻/硬膜外) |
| preopDiagnosis | String | 术前诊断 |
| postopDiagnosis | String | 术后诊断 |
| startTime | DateTime | 实际开始时间 |
| endTime | DateTime | 实际结束时间 |
| complications | String | 并发症记录 |
| bloodLoss | Integer | 术中出血量(ml) |
| specimenSent | Boolean | 是否送检标本 |
---
## 六、测试用例
| 用例编号 | 场景 | 操作步骤 | 预期结果 |
|---------|------|---------|---------|
| TC-S001 | 正常申请流程 | 医生提交→科主任审批→护士安排→手术完成 | 状态正确流转 |
| TC-S002 | 越级申请拒绝 | 住院医师申请四级手术 | 返回权限不足错误 |
| TC-S003 | 手术室冲突 | 同一时间安排两台手术到同一手术室 | 返回冲突提示 |
| TC-S004 | 驳回后重新提交 | 科主任驳回→医生修改→重新提交 | 状态从驳回回到待审批 |
| TC-S005 | 取消手术 | 已审批的手术点击取消 | 状态变为已取消 |
| TC-S006 | 缺少术前讨论 | 三级手术无术前讨论记录直接提交 | 拦截并提示 |