Files
chis_osi/docs/decisions/001-phis-health-record-source-key.md
T

1.6 KiB

001 · PHIS 健康档案稳定源主键

背景

PHIS 待上报响应同时给出 archId、businessId、empiId、phrId。项目需要一个跨重试、跨更新时间稳定的源记录键生成 OSI checkId,否则同一档案更新会产生新的第三方流水号。

本地真实健康档案样例中 archId == businessId,单凭这一条数据无法判断两者语义。参考项目 chis_upload/worker/phis_poll_worker.go 的 PHIS 回调会同时原样回传 archId 和 businessId;其他业务样例中二者不同,说明 businessId 是业务记录/任务标识,不能作为跨业务稳定的居民档案标识。empiId/phrId 属于 CHIS 侧主键链路,可由创建或查询获得,不适合作为第三方源键。

决策

  • 健康档案的 SourceRecordID 固定使用 PHIS archId。
  • businessId 保留用于 trace 和 PHIS 状态回写,不参与 checkId。
  • empiId/phrId 保留为上游携带的参考值;upsert 时以 CHIS 查询结果为准,不参与 checkId。
  • archId 缺失时返回校验错误,不回退到 businessId,避免把一次业务任务误当成稳定档案。
  • checkId = sha1("PHIS|JKDA|<archId>") 的前 20 位小写十六进制;updateTime 不参与计算。

影响

  • 同一 PHIS 档案重试或内容更新时保持相同 checkId。
  • 现有 GenerateCheckID 移除版本参数;原 T-205 中“更新时间改变 checkId”的基线同步调整。
  • 若 PHIS 后续正式契约说明 archId 不是稳定档案键,必须新建 ADR 迁移,不能静默改变已投递记录的 checkId。