liuyun 2792dc7e34 chore(openspec): 归档 C4 质控闸门 change
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-15 07:25:19 +08:00

60 lines
2.6 KiB
Markdown
Raw Permalink 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.

# backend/qc Specification
## Purpose
定义服务机构端质控闸门的后端行为——全量质控、放行/退回(自审自放行 4001)、五类推送聚合、异常联动改计划、补正。
## Requirements
### Requirement: 全量质控生成
定时任务 MUST 扫描 `record_status='submitted'` 且无 qc 记录的留痕 → 生成 qc(qc_result=pending)。非抽检。
#### Scenario: 兜底生成
- **WHEN** 一条留痕 submitted 后无 qc
- **THEN** 定时任务为其生成 qc 记录
### Requirement: 放行
`POST /qc/pass` MUST 按序校验:① 四要素齐(时间/项目/时长/护理员,否则 1004)→ ② 必拍已拍(3001)→ ③ 状态=待质控(幂等)→ ④ **放行人 ≠ 录入人**(4001 自审自放行);通过则 qc_result=passed + pass_time。
#### Scenario: 自审自放行拒绝
- **WHEN** 放行人 = 该记录的录入人
- **THEN** 返回 4001 拒绝
#### Scenario: 缺要素拒绝
- **WHEN** 留痕缺必填要素
- **THEN** 返回 1004 拒绝
### Requirement: 退回
`POST /qc/return` MUST qc_note 必填 → qc_result=returned;退回后护理员可补正。
#### Scenario: 退回需原因
- **WHEN** 退回缺 qc_note
- **THEN** 拒绝
### Requirement: 五类主动推送聚合
`GET /qc/pending/list` MUST 聚合五类:异常待处理(abnormal.handle_status=open)、逾期未做(order 过时段无 record 超 24h)、住院仍有派单(elder.treat_status=hosp_pause 且有未完成 order)、计划未制定(待遇生效 5 工作日无 active plan)、留痕待放行(qc pending);每类带消除条件。
#### Scenario: 逾期未做
- **WHEN** 工单过时段超 24h 仍无 record
- **THEN** 出现在「逾期未做」待办
### Requirement: 异常处理与联动改计划
`POST /qc/exception/link` MUST 复用 plan.change 生成新 plan + 回填 record_abnormal.link_plan_change=true。
#### Scenario: 异常联动改计划
- **WHEN** 质控员判断异常需加专项
- **THEN** 生成新计划并回填 link_plan_change
### Requirement: 补正
`POST /qc/correct` MUST 写 ho_record_correction(correction_note)+ record 重新 submitted(触发 recheck);不可补正签到时间/定位/照片;同记录补正 ≥3 次 ⇒ 进质控重点。
#### Scenario: 补正不改原值
- **WHEN** 补正一条留痕
- **THEN** 原记录不动,新增更正说明,record 重新进质控
### Requirement: 批量放行
`POST /qc/batch-pass` MUST 排除有异常/未执行项/临时加项/时长异常/补正过的记录。
#### Scenario: 批量安全边界
- **WHEN** 批量放行含异常记录
- **THEN** 拒绝(必须逐条看)