项目

一般

简介

Feature #25

张 瑞阳 更新于 大约一个月 之前

# 患者端任务按钮显示规则 

 本文档描述患者端(`/fuv/external/my-service` 及相关任务列表/详情)各任务类型在不同状态下的操作按钮显示逻辑。 

 > 个案管理端规则见 #23 
 [task-manager-button-rules.md](./task-manager-button-rules.md)   
 > 家医端规则见 #24 
 [family-doctor-task-button-rules.md](./family-doctor-task-button-rules.md) 

 ## 通用字段 

 | 字段 | 类型 | 说明 | 
 |------|------|------| 
 | `taskType` | `TaskType` | 任务类型枚举 | 
 | `taskOriginalStatus` | `TaskStatus` | 任务原始状态 | 
 | `dwAnswerId` | `String` | 问卷回答 ID;有值表示已填写问卷 | 

 ## 状态对照 

 | 展示文案 | `taskOriginalStatus` | 
 |----------|----------------------| 
 | 未开始 | `NOT_START` | 
 | 待随访 | `WAIT_FOLLOW_UP` | 
 | 已超时 | `TIMEOUT` | 
 | 已随访 / 已提交 | `SUBMITTED` | 
 | 已随访(失访) | `SUBMITTED_LOST` | 
 | 已取消 | `CANCELED` | 

 > **说明:** 上传检查单的 `CANCELED` 仅作为展示状态,按钮逻辑与进行中一致(同个案管理端约定)。 

 --- 

 ## 1. 上门访视 `VISIT_FOLLOW_UP` 

 患者端不可操作上门访视,仅可在完成后查看问卷。 

 ### 进行中 / 失访 / 已取消 

 **条件:** 

 - `taskOriginalStatus` ∈ `NOT_START` | `TIMEOUT` | `WAIT_FOLLOW_UP` | `SUBMITTED_LOST` | `CANCELED` 

 **显示按钮:** 不显示 

 ### 已提交 

 **条件:** 

 - `taskOriginalStatus` = `SUBMITTED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 不为空 | **查看问卷** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 伪代码 

 ``` 
 if taskType == VISIT_FOLLOW_UP: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, SUBMITTED_LOST, CANCELED]: 
     → 不显示 
   elif status == SUBMITTED: 
     if dwAnswerId 有值:    → "查看问卷" 
     else:                   → 不显示 
 ``` 

 --- 

 ## 2. 电话随访 `PHONE_CALL_FOLLOW_UP` 

 患者端不可执行电话随访,仅可在终态查看已填写的问卷。 

 ### 进行中 

 **条件:** 

 - `taskOriginalStatus` ∈ `NOT_START` | `TIMEOUT` | `WAIT_FOLLOW_UP` 

 **显示按钮:** 不显示 

 ### 终态(已提交 / 失访 / 已取消) 

 **条件:** 

 - `taskOriginalStatus` ∈ `SUBMITTED` | `SUBMITTED_LOST` | `CANCELED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 不为空 | **查看问卷** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 伪代码 

 ``` 
 if taskType == PHONE_CALL_FOLLOW_UP: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP]: 
     → 不显示 
   elif status in [SUBMITTED, SUBMITTED_LOST, CANCELED]: 
     if dwAnswerId 有值:    → "查看问卷" 
     else:                   → 不显示 
 ``` 

 --- 

 ## 3. 复诊提醒 `RE_VISIT_REMINDER` 

 **条件:** 任意 `taskOriginalStatus` 

 **显示按钮:** 不显示 

 ``` 
 if taskType == RE_VISIT_REMINDER: 
   → 不显示 
 ``` 

 --- 

 ## 4. 上传检查单 `UPLOAD_CHECK_LIST` 

 患者端可上传检查单并提交,是患者侧主要可操作任务之一。 

 ### 进行中 / 已取消 

 **条件:** 

 - `taskOriginalStatus` ∈ `NOT_START` | `TIMEOUT` | `WAIT_FOLLOW_UP` | `CANCELED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 为空 | **去上传**、**提交** | 
 | `dwAnswerId` 不为空 | **去查看**、**提交** | 

 > **业务说明:** `CANCELED` 仅作展示状态,按钮逻辑与进行中一致。 

 ### 已提交 

 **条件:** 

 - `taskOriginalStatus` = `SUBMITTED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 不为空 | **去查看** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 伪代码 

 ``` 
 if taskType == UPLOAD_CHECK_LIST: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, CANCELED]: 
     if dwAnswerId 有值:    → ["去查看", "提交"] 
     else:                   → ["去上传", "提交"] 
   elif status == SUBMITTED: 
     if dwAnswerId 有值:    → "去查看" 
     else:                   → 不显示 
 ``` 

 --- 

 ## 5. 营养干预 `NUTRITION_INTERVENTION` 

 **条件:** 任意 `taskOriginalStatus` 

 **显示按钮:** **去查看** 

 ``` 
 if taskType == NUTRITION_INTERVENTION: 
   → "去查看" 
 ``` 

 --- 

 ## 汇总矩阵 

 | `taskType` | 进行中状态 | 终态 | 关键判断字段 | 
 |------------|------------|------|--------------| 
 | `VISIT_FOLLOW_UP` | 无按钮 | 查看问卷(`SUBMITTED` 且有问卷) | `dwAnswerId` | 
 | `PHONE_CALL_FOLLOW_UP` | 无按钮 | 查看问卷(有问卷时) | `dwAnswerId` | 
 | `RE_VISIT_REMINDER` | 无按钮 | 无按钮 | — | 
 | `UPLOAD_CHECK_LIST` | 去上传/去查看 + 提交(含已取消) | 去查看(`SUBMITTED` 且有问卷) | `dwAnswerId` | 
 | `NUTRITION_INTERVENTION` | 去查看 | 去查看 | — | 

 ## 三端差异对照 

 | 场景 | 患者端 | 家医端 | 个案管理端 | 
 |------|--------|--------|------------| 
 | 上门访视进行中 | 无按钮 | 指派给当前用户 → 完成失访 / 去完成 | 去指派 / 重新指派 | 
 | 上门访视 `SUBMITTED` | 有问卷 → 查看问卷 | 有问卷 → 查看问卷 | 有问卷 → 查看问卷 | 
 | 上门访视 `CANCELED` | 无按钮 | 无按钮 | 有问卷 → 查看问卷 | 
 | 电话随访进行中 | 无按钮 | 无按钮 | 无按钮 | 
 | 电话随访终态 | 有问卷 → 查看问卷 | 有问卷 → 查看问卷 | 有问卷 → 查看问卷(不含 `SUBMITTED_LOST`) | 
 | 复诊提醒 | 全程无按钮 | 全程无按钮 | 可提交 / 失访提交 | 
 | 上传检查单进行中 | 去上传/去查看 + 提交 | 无按钮 | 去上传/去查看 + 提交 | 
 | 上传检查单 `SUBMITTED` | 有问卷 → 去查看 | 有问卷 → 去查看 | 去查看 | 
 | 营养干预 | 去查看 | 无按钮 | 无按钮 | 

 ## 后端关联 

 - 接口:`GET /fuv/external/my-service/findServiceDetail`(`FollowUpRole.PATIENT`) 
 - 响应对象:`PlanTaskResp` 
 - 角色权限:`TaskTypeRoleOperateRelateUtil` 中 `PATIENT` 可操作 `PHONE_CALL_FOLLOW_UP`、`UPLOAD_CHECK_LIST`、`NUTRITION_INTERVENTION` 

返回