本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
删除 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交互在 FHIR 授权上使用AWS 签名版本 4 或 SMART 的DELETE请求。以下curl示例从 HealthLake 数据存储中移除现有 FHIRPatient资源。要查看整个示例,请滚动到 “复制” 按钮。
根据条件删除 FHIR 资源
当您不知道特定的 FHIR 资源 ID 但有关于要删除的资源的其他识别信息时,条件删除特别有用。
有条件删除允许您根据搜索标准而不是逻辑 FHIR ID 删除现有资源。当服务器处理删除请求时,它会使用标准搜索功能对资源类型执行搜索,以解析请求的单个逻辑 ID。
有条件删除的工作原理
服务器的操作取决于它找到的匹配项数量:
-
无匹配项:服务器尝试普通删除并做出相应响应(404 表示资源不存在,204 表示已删除的资源为 No Content)
-
一场匹配:服务器对匹配的资源执行普通删除
-
多个匹配项:返回 412 Precondition Failed 错误,表示客户端的标准选择性不足
响应场景
AWS HealthLake 使用以下响应模式处理有条件的删除操作:
成功运营
-
当您的搜索条件成功识别出单个活动资源时,系统将在完成删除后返回 204 No Conten t,就像标准删除操作一样。
基于身份的有条件删除
根据id附加参数(createdAttag、或_lastUpdated)执行有条件删除时:
-
204 无内容:资源已被删除
-
404 未找到:资源不存在
-
409 冲突:ID 匹配但其他参数不匹配
Non-ID-Based 有条件删除
当id未提供或使用createdAttag、或之外的参数时_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:使标准更加具体或解决版本冲突
-
为高并发环境中的时间冲突做好准备,在这种环境中,可能会在搜索和删除操作之间修改资源。