1.6 KiB
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固定使用 PHISarchId。 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。