本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
删除 FHIR 资源
FHIR delete 交互将现有的 FHIR 资源从 HealthLake数据存储中移除。有关更多信息,请参阅 FHIR R4 RESTful API 文档delete
删除 FHIR 资源
-
收集 HealthLake
region和估datastoreId值。有关更多信息,请参阅 获取数据存储属性。 -
确定
Resource要删除的 FHIR 类型并收集关联id值。有关更多信息,请参阅 资源类型。 -
使用收集的 HealthLake
region和值构造请求的 URLdatastoreId。还包括 FHIRResource类型及其相关id类型。要查看以下示例中的整个 URL 路径,请滚动到 “复制” 按钮上。DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id -
发送 请求。FHIR
delete交互使用AWS 签名版本 4 或经 FHIR 授权的 SMARTDELETE请求。以下curl示例从 HealthLake 数据存储中移除现有 FHIRPatient资源。要查看整个示例,请滚动到 “复制” 按钮。
根据条件删除 FHIR 资源
当您不知道具体的 FHIR 资源 ID 但有其他有关要删除的资源的识别信息时,有条件删除尤其有用。
条件删除允许您根据搜索条件而不是按逻辑 FHIR ID 删除现有资源。当服务器处理删除请求时,它使用标准搜索功能对资源类型执行搜索,以解析请求的单一逻辑 ID。
条件删除的工作原理
服务器的操作取决于它找到的匹配项数量:
-
无匹配项:服务器尝试进行普通删除并做出相应的响应(不存在的资源为 404 未找到,已删除的资源为 204 无内容)
-
一次匹配:服务器对匹配的资源执行普通删除
-
多个匹配项:返回 412 前提条件失败错误,表明客户端的标准选择性不够
响应场景
AWS HealthLake 使用以下响应模式处理条件删除操作:
成功的操作
-
当您的搜索条件成功识别出单个活动资源时,系统将在完成删除后返回 204 No Content,就像标准删除操作一样。
ID-Based 有条件删除
根据id附加参数(createdAt_tag、或_lastUpdated)执行条件删除时:
-
204 无内容:资源已被删除
-
404 未找到:资源不存在
-
409 冲突:ID 匹配但其他参数不匹配
Non-ID-Based 有条件删除
id未提供或使用createdAt、_tag或以外的参数时_lastUpdated:
-
404 未找到:未找到匹配项
冲突局势
有几种情况会导致 412 前提条件失败的响应:
-
多个资源与您的搜索条件相匹配(条件不够具体)
-
将 ETag 标头与一起使用时出现版本冲突
If-Match -
在搜索和删除操作之间发生资源更新
成功有条件删除的示例
以下示例根据特定条件删除患者资源:
DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?name=peter&birthdate=2000-01-01&phone=1234567890
此请求删除患者资源,其中:
名字是 “彼得”
出生日期是 2000 年 1 月 1 日
电话号码是 1234567890
最佳实践
-
使用特定的搜索条件来避免多次匹配并防止 412 错误。
-
当需要处理并发修改时,可以考虑使用 ETag 标头进行版本控制。
-
适当地处理错误响应:
对于 404:优化您的搜索条件
对于 412:使标准更具体或解决版本冲突
-
为高并发环境中的时间冲突做好准备,在这些环境中,搜索和删除操作之间可能会修改资源。