7.5 KiB
7.5 KiB
服务机构端 · C1 待遇档案 · 设计文档
日期:2026-10-14 范围:待遇档案域——老人档案(elder)+ 十态待遇状态机 + 状态变更留痕(elder_status_log)+ 评估结论副本上传。 依据:P0 PRD §3.2/§5.2/§5.5.1/§7.2/§7.4/§8.2;C0 设计
2026-10-14-服务机构端-C0基础骨架-design.md。 后续:C2 派单工单(含elder_svc老人个人项目库 + 服务计划)。
1. 背景与目标
在 C0 基础骨架(机构=租户、RBAC、目录四层、菜单、多租户过滤)之上,落地「待遇档案」域。C1 只做:老人档案建档、十态待遇状态机与变更留痕、评估结论副本上传。承接 C2 的状态机消费(L1 硬锁)与 elder_svc。
2. 已定决策(用户 2026-10-14 拍板)
- 评估结论承载=上传副本 + 存字段(等级唯一来源=评估结论,禁止建档人自行填写)。
- OCR 后置(C1 手工录入身份证 + 18 位校验位校验)。
- 批量导入后置(C1 先单条建档)。
elder_svc放 C2(与「制定计划时带入」一起做)。- 文件存 MinIO(
http://localhost:9000,bucketcarelink,S3 兼容,后续切腾讯云 COS 只换配置)。
3. 数据模型(新增 2 张表)
通用字段:created_at/created_by/updated_at/deleted_at。主键 UUID v7。
elder 老人档案表(@@map("sys_elder")):
| 字段 | 类型 | 说明 |
|---|---|---|
| id | uuid | 主键 |
| tenant_code | varchar(64) | 机构(多租户隔离) |
| loc_code | varchar(12) | 参保地/统筹区(取目录依据) |
| prev_loc_code | varchar(12)? | 跨统筹区转移前参保地 |
| transfer_confirm_at | datetime? | 转移确认时间 |
| name | varchar(30) | 姓名 |
| gender | char(1) | M/F |
| birth_date | date | 出生日期(系统算年龄) |
| id_card_no | varchar(255) | 身份证号(加密预留;本期明文+TODO,掩码见 §7) |
| phone | varchar(15)? | 联系电话 |
| address | varchar(200) | 居住地址 |
| guardian_name | varchar(30)? | 紧急联系人 |
| guardian_phone | varchar(15)? | 紧急联系人电话 |
| insur_no | varchar(30) | 医保参保号 |
| insur_type | varchar(10) | employee/resident |
| insur_years | int? | 缴费年限 |
| insur_verify_status | varchar(20)? | verified/unverified(本期线下确认) |
| insur_verify_date | date? | 参保核验日期 |
| assess_level | varchar(20) | 失能等级 sev_1(重度一级·最高级)/sev_2/sev_3 |
| care_level | varchar(20) | 护理等级 care_1(一级·最高级)/care_2/care_3 |
| assess_date | date | 评估结论日期 |
| assess_org | varchar(100)? | 评估机构名称 |
| assess_evidence_file | varchar(255)? | 评估结论副本(MinIO key)【补】 |
| benefit_start | date | 待遇有效期起 |
| benefit_end | date | 待遇有效期止 |
| treat_status | varchar(20) | 待遇状态(§4) |
| status_source | varchar(10) | manual(恒)/api 预留 |
| status_change_date | date? | 状态最后变更日 |
| hosp_start / hosp_end | date? | 住院起止 |
| photo_tier_override | json? | 拍照分档加严覆盖 |
| need_assess | json? | 上门需求评估五块信息(建表留结构,采集交互后置 C2) |
| note | text? | 备注(含「注意事项」区块) |
| biz_line | varchar(20) | 恒 ltci |
索引:tenant_code、tenant_code+id_card_no(唯一,身份证防重)。
elder_status_log 待遇状态变更日志(@@map("sys_elder_status_log")):
| 字段 | 类型 | 说明 |
|---|---|---|
| id | uuid | 主键 |
| elder_id | varchar(36) | 老人 |
| from_status / to_status | varchar(20) | 变更前后 |
| change_reason | varchar(200) | 变更原因(必填) |
| source | varchar(10) | manual |
| operator_id | varchar(36) | 操作人 |
| evidence_file | varchar(255)? | 佐证材料 |
| changed_at | datetime | 变更时间 |
4. 十态待遇状态机
treat_status 十态与语义(可否派单/计费/恢复,PRD §7.4):
| 状态 | 值 | 可否派单 | 可否计费 | 恢复 |
|---|---|---|---|---|
| 待建档 | pending_file | ❌ | ❌ | 建档完成→active |
| 待起付(等待期/垫付期) | waiting_period | ✅(垫付台账) | ❌ | 待遇生效→结转 active |
| 正常享受 | active | ✅ | ✅ | — |
| 住院暂停 | hosp_pause | ❌ | ❌ | 出院人工确认→active |
| 复评等待期 | review_waiting | ❌ | ❌ | 复评结论出 |
| 跨统筹区转移中 | transferring | ❌ | ❌ | 新参保地确认 |
| 死亡 | dead | ❌ | ❌ | 不可恢复 |
| 长期异地居住 | long_away | ❌ | ❌ | 回迁确认 |
| 待遇到期 | benefit_expired | ❌ | ❌ | 续评通过 |
| 已终止 | terminated | ❌ | ❌ | 不可恢复 |
- 变更接口
/elder/status/change:to_status+change_reason(必填) + 可选evidence_file;写elder_status_log+ 审计。 - 建档初始状态:待遇有效期覆盖今天 →
active;否则 →waiting_period。 - L1 硬锁(无有效待遇不可服务)在 C2 派单时消费;C1 只实现状态机数据层与变更语义。
5. 接口(A 组 + 上传)
| 接口 | 方法 | 权限 | 说明 |
|---|---|---|---|
/elder/list |
GET | elder:list | 状态/等级/姓名筛选;身份证服务端掩码 |
/elder/create |
POST | elder:create | 建档;18 位校验、防重、等级来自评估结论 |
/elder/detail |
GET | elder:detail | 详情;admin/qc 可看身份证明文+留痕 |
/elder/status/change |
POST | elder:status-change | 变更状态,change_reason 必填 |
/elder/status/log |
GET | elder:detail | 状态变更历史 |
/elder/assess-evidence/upload |
POST | elder:create | 上传评估结论副本到 MinIO,返回 file key |
统一响应沿用 {code,message,data,hint}(hint 为硬锁提示,本期多数接口不触发)。
6. 前端
- 服务对象列表页(
ltc/elder):状态筛选(全部/正常享受/住院暂停/待建档/待遇到期)、列表(姓名/护理等级带「(最高级)」/状态/计划/下次服务/操作)。 - 建档表单:必填校验(身份证 18 位+校验位、出生日期自动带出、参保地默认取机构属地、待遇止>起)、身份证防重提示、参保核验(线下确认字段)、等级区块=上传评估结论副本(必做,禁止手填等级)。
- 档案详情:完整信息 + 状态变更(下拉十态 + 原因必填)+ 状态日志时间线 + 身份证明文查看(admin/qc,留痕)。
7. 横切
- 身份证防重:同机构
id_card_no唯一;命中已有档案提示「已有档案,是否查看」。 - 掩码在服务端:列表返回
5301**********1234;前端不做掩码。 - 明文查看留痕:
/elder/detail请求明文身份证时落审计(谁/何时/看了谁的)。 - 等级唯一来源:
/elder/create不接受前端传assess_level/care_level;等级由「上传评估结论副本」后由机构/质控录入(走assess_*字段),或由后续官方接口带出。禁止建档表单直接填等级。 - id_card_no 存储层加密后置:C1 存明文 + TODO(与 staff 一起走统一 security change);掩码 + 明文查看留痕 C1 做。
- 审计:建档、改状态、明文查看身份证落审计(复用脚手架 audit-log)。
- MinIO 配置:
.env新增MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY/MINIO_BUCKET(默认 carelink),S3 兼容,后续切 COS 只换配置。
8. 非目标(本期不做)
OCR 回填、Excel 批量导入、elder_svc、评估结论打水印、id_card_no 存储层加密、官方接口拉取评估结论(B 路径)、need_assess 采集交互。