报告驳回接口说明.md 3.7 KB

报告驳回接口说明

原PHP项目接口分析

接口信息

  • 路由: report/rejectAudit
  • 方法: POST
  • 功能: 审核医生驳回已书写的报告

入参

{
    "report_id": "报告ID",
    "reject_reason": "驳回原因"
}

实现逻辑 (ReportService.php line 450-477)

1. 获取报告信息

$field = ['report_doctor_id','exam_id'];
$write = $this->reportDao->getReportById($id,$field);
  • 根据报告ID查询报告的书写医生ID和检查ID

2. 权限验证

$now_authority = $this->reportDao->getDoctorClass($user['id']);
$now_authority = explode(',',$now_authority);
if(!in_array('3',$now_authority)) {
    $this->throwError('do_not_have_permission',0005);
}
  • doctor_class 表查询当前医生的权限分类
  • 检查是否包含权限码 3(审核权限)
  • 如果没有权限则抛出异常

3. 更新检查状态为"审核驳回"

$this->reportDao->updateExamStatus($write['exam_id'], 12);
  • 更新 exams 表的 exam_status 字段为 12(审核驳回)

4. 清空审核医生信息

$this->reportDao->updateReport($write['exam_id'], 1, [
    'review_doctor_id' => null,
    'review_doctor_name' => null,
    'review_datetime' => null
]);
  • 清空 report 表中的审核相关字段
  • 第2个参数 1 表示本地报告(type=1)

5. 创建消息通知

$data = [
    'id' => UUIDUtils::uuid(),
    'title' => '您写的报告有最新消息,请注意查收',
    'content' => $user['realname'].'医师驳回了您写得报告,驳回原因是:'.$reason,
    'count' => '1',
    'type' => '9',
    'ctime' => date('Y-m-d H:i:s', time()),
    'exam_id' => $write['exam_id'],
    'doctor_id' => $write['report_doctor_id']
];
$this->reportDao->insertMessage($data);
  • 插入一条消息到 message
  • 消息类型为 9(报告驳回通知)
  • 通知对象为书写报告的医生
  • 消息内容包含驳回原因

6. 返回结果

return true;

状态码说明

exam_status 状态值

  • 7: 已写报告
  • 8: 已审报告
  • 12: 审核驳回

message.type 消息类型

  • 9: 报告驳回通知

权限说明

doctor_class 权限分类

驳回操作需要权限码 3(审核权限)

权限码说明:

  • 1: 书写权限
  • 2: 审核权限(推测)
  • 3: 审核驳回权限
  • 多个权限用逗号分隔,如 "1,3"

数据库操作

涉及的表

  1. report - 报告表

    • 清空审核医生相关字段
  2. exams - 检查表

    • 更新 exam_status = 12
  3. message - 消息表

    • 插入驳回通知消息
  4. doctor_class - 医生权限分类表

    • 查询医生权限

业务流程

1. 审核医生发起驳回
   ↓
2. 验证权限(必须有权限码3)
   ↓
3. 查询报告信息(获取书写医生ID和检查ID)
   ↓
4. 更新检查状态为"审核驳回"(exam_status=12)
   ↓
5. 清空报告的审核医生信息
   ↓
6. 创建消息通知书写医生
   ↓
7. 返回成功

Java实现要点

1. 接口设计

POST /api/report/reject
{
    "reportId": "报告ID",
    "rejectReason": "驳回原因"
}

2. 需要实现的功能

  • 权限验证(检查医生是否有审核权限)
  • 查询报告信息
  • 更新检查状态为12(审核驳回)
  • 清空报告的审核医生信息
  • 创建消息通知
  • 事务处理

3. 需要的实体和VO

  • ReportRejectVO - 驳回请求参数
  • Message 实体(如果还没有)
  • DoctorClass 实体(权限分类,如果还没有)

4. 注意事项

  • 操作需要在事务中执行
  • 需要记录操作日志
  • 消息通知可能需要推送到前端
  • 驳回后报告重新回到"已写报告"状态,可以重新审核