如何从FHIR的_history恢复已删除资源并保留其原ID?
FHIR已删除资源恢复的最优方式
大多数FHIR服务器执行DELETE只是标记资源为删除状态而非物理删除,恢复这类资源的最优方案是保留原ID的PUT更新操作,而非创建副本:
核心操作步骤:
- 通过
GET Patient/1/_history/2获取已删除版本的完整资源内容,保留原资源的id(即1)和meta.versionId(即2),同时移除资源meta字段中的deleted标记(该标记是资源被标记为删除的关键标识)。 - 执行
PUT /Patient/1请求,将修改后的资源内容提交给服务器。合规的FHIR服务器会识别这是对原ID资源的状态更新,移除删除标记、恢复资源的可用状态,同时生成新的版本号(比如3)。
- 通过
不推荐POST创建副本的原因:
POST到/Patient会生成全新的资源ID,原资源的关联数据(比如关联的就诊记录、实验室结果、处方等引用的都是原ID)会全部断裂,后续需要手动更新所有关联资源的引用,在医疗数据场景中这会带来极高的维护成本和数据一致性风险。额外注意点:
部分服务器可能要求操作账号具备资源恢复的特定权限,少数自定义服务器可能有额外参数要求,但PUT恢复原ID是FHIR标准明确支持的恢复方式,主流服务器(如HAPI FHIR、IBM FHIR Server)均实现了该功能。只有在服务器明确不支持PUT恢复的极端情况下,才考虑POST创建副本作为替代方案。
内容的提问来源于stack exchange,提问作者Henrik Joreteg
相关产品推荐
相关产品推荐

