exam_status状态说明.md 4.5 KB

exam_status 检查状态说明

状态值定义

正常业务流程状态

状态值 状态名称 说明 使用场景
0 初始状态 检查记录初始化状态 数据初始化
1 登记 检查已登记,等待检查 患者登记完成
2 登记完成 登记流程完成 登记确认
3 影像到达 DICOM影像已上传到系统 影像采集完成
7 已写报告 报告医生已完成报告书写 报告书写完成
8 已审报告 审核医生已审核报告 报告审核完成
9 已确认报告 确认医生已确认报告,报告最终完成 报告流程结束
12 审核驳回 审核医生驳回报告,需要重新书写 报告质量不合格

特殊状态

状态值 状态名称 说明 使用场景
-1 待处理 特殊待处理状态 影像质量问题等
-99 已删除/无效 检查记录已删除或无效 删除操作

状态流转图

正常流程:
0/1 → 2 → 3 → 7 → 8 → 9
登记  完成  影像  写报告  审核  确认

驳回流程:
8 → 12 → 7 → 8 → 9
审核  驳回  重写  审核  确认

状态转换规则

1. 书写报告 (save)

允许的前置状态

  • 3 - 影像到达
  • 7 - 已写报告(重新编辑)
  • 12 - 审核驳回(驳回后重写)

转换后状态7 - 已写报告

代码验证

if($exam_status != 3 && $exam_status != 7 && $exam_status != 12){
    throw new Error('流程顺序错误,无法书写报告');
}

2. 审核报告 (audit)

允许的前置状态

  • 7 - 已写报告
  • 8 - 已审报告(重新审核)

转换后状态8 - 已审报告

代码验证

if($exam_status != 8 && $exam_status != 7){
    throw new Error('流程顺序错误,无法审核报告');
}

3. 确认报告 (confirm)

允许的前置状态

  • 8 - 已审报告

转换后状态9 - 已确认报告

代码验证

if($exam_status != 8){
    throw new Error('流程顺序错误,无法确认报告');
}

4. 驳回报告 (reject)

允许的前置状态

  • 7 - 已写报告
  • 8 - 已审报告

转换后状态12 - 审核驳回

操作

  • 清空审核医生信息
  • 允许重新书写和审核

权限与状态关系

报告医生(权限ID=2)

可见状态:7, 8, 9, 12

  • 可以书写状态为 3, 7, 12 的报告

审核医生(权限ID=3)

可见状态:7, 8, 9, 12

  • 可以审核状态为 7, 8 的报告
  • 可以驳回状态为 7, 8 的报告

确认医生(权限ID=4)

可见状态:8, 9

  • 可以确认状态为 8 的报告

查询过滤规则

待书写报告列表

WHERE exam_status IN (3, 7, 12)

待审核报告列表

WHERE exam_status IN (7, 12)

待确认报告列表

WHERE exam_status = 8

已完成报告列表

WHERE exam_status = 9

有效检查列表(排除删除和登记中)

WHERE exam_status NOT IN (0, 1, 2, -99)

Java实现对应关系

public class ExamStatus {
    public static final int INIT = 0;              // 初始状态
    public static final int REGISTERED = 1;        // 登记
    public static final int REGISTER_COMPLETE = 2; // 登记完成
    public static final int IMAGE_ARRIVED = 3;     // 影像到达
    public static final int REPORT_WRITTEN = 7;    // 已写报告
    public static final int REPORT_AUDITED = 8;    // 已审报告
    public static final int REPORT_CONFIRMED = 9;  // 已确认报告
    public static final int AUDIT_REJECTED = 12;   // 审核驳回
    public static final int PENDING = -1;          // 待处理
    public static final int DELETED = -99;         // 已删除
}

注意事项

  1. 状态12(审核驳回) 是驳回流程的关键状态,驳回后可以重新书写
  2. 状态9(已确认报告) 是最终状态,一般不允许修改
  3. 状态跳跃:正常情况下不应该跨状态更新(如从3直接到8)
  4. 权限控制:每个操作都需要验证医生权限和当前状态
  5. 并发控制:同一报告被多人编辑时需要检测冲突

数据库字段定义

`exam_status` tinyint(1) DEFAULT '1' COMMENT '检查状态
1  登记
2  登记完成
3  影像到达
7  写报告
8  审核报告
9  确认报告
12 审核驳回'