删除 FHIR 资源 - AWS HealthLake

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

删除 FHIR 资源

FHIR delete 交互会将现有的 FHIR 资源从 HealthLake数据存储中移除。有关更多信息,请参阅 FHIR R4 RESTful API 文档delete中的。

删除 FHIR 资源

  1. 收集 HealthLake regiondatastoreId价值。有关更多信息,请参阅 获取数据存储属性

  2. 确定Resource要删除的 FHIR 类型并收集关联id值。有关更多信息,请参阅 资源类型

  3. 使用收集到的 HealthLake region和值为请求构造一个 URL datastoreId。还要包括 FHIR Resource 类型及其关联id的。要查看以下示例中的整个 URL 路径,请滚动到 “复制” 按钮。

    DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id
  4. 发送 请求。FHIR delete 交互在 FHIR 授权上使用AWS 签名版本 4 或 SMART 的DELETE请求。以下curl示例从 HealthLake 数据存储中移除现有 FHIR Patient 资源。要查看整个示例,请滚动到 “复” 按钮。

    SigV4

    Sigv4 授权

    curl --request DELETE \ 'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id' \ --aws-sigv4 'aws:amz:region:healthlake' \ --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \ --header "x-amz-security-token:$AWS_SESSION_TOKEN" \ --header 'Accept: application/json'

    服务器返回一个 204 HTTP 状态码,确认资源已从 HealthLake 数据存储中删除。如果删除请求失败,您将收到一400系列 HTTP 状态代码,说明请求失败的原因。

    SMART on FHIR

    IdentityProviderConfiguration数据类型的 SMART on FHIR 授权示例。

    { "AuthorizationStrategy": "SMART_ON_FHIR", "FineGrainedAuthorizationEnabled": true, "IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name", "Metadata": "{\"issuer\":\"https://ehr.example.com\", \"jwks_uri\":\"https://ehr.example.com/.well-known/jwks.json\",\"authorization_endpoint\":\"https://ehr.example.com/auth/authorize\",\"token_endpoint\":\"https://ehr.token.com/auth/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_basic\",\"foo\"],\"grant_types_supported\":[\"client_credential\",\"foo\"],\"registration_endpoint\":\"https://ehr.example.com/auth/register\",\"scopes_supported\":[\"openId\",\"profile\",\"launch\"],\"response_types_supported\":[\"code\"],\"management_endpoint\":\"https://ehr.example.com/user/manage\",\"introspection_endpoint\":\"https://ehr.example.com/user/introspect\",\"revocation_endpoint\":\"https://ehr.example.com/user/revoke\",\"code_challenge_methods_supported\":[\"S256\"],\"capabilities\":[\"launch-ehr\",\"sso-openid-connect\",\"client-public\",\"permission-v2\"]}" }

    调用者可以在授权 lambda 中分配权限。有关更多信息,请参阅 OAuth 2.0 瞄准镜

    AWS Console

    1. 登录 HealthLake 控制台上的 “运行查询” 页面。

    2. 在 “查询设置” 部分下,进行以下选择。

    • 数据存储 ID-选择数据存储 ID 以生成查询字符串。

    • 查询类型-选择Delete

    • 资源类型-选择要删除的 FHIR 资源类型

    • 资源 ID — 输入 FHIR 资源 ID。

    3. 选择运行查询

根据条件删除 FHIR 资源

当您不知道特定的 FHIR 资源 ID 但有关于要删除的资源的其他识别信息时,条件删除特别有用。

有条件删除允许您根据搜索标准而不是逻辑 FHIR ID 删除现有资源。当服务器处理删除请求时,它会使用标准搜索功能对资源类型执行搜索,以解析请求的单个逻辑 ID。

有条件删除的工作原理

服务器的操作取决于它找到的匹配项数量:

  1. 无匹配项:服务器尝试普通删除并做出相应响应(404 表示资源不存在,204 表示已删除的资源为 No Content)

  2. 一场匹配:服务器对匹配的资源执行普通删除

  3. 多个匹配项:返回 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

最佳实践

  1. 使用特定的搜索条件来避免多个匹配项并防止 412 错误。

  2. 当需要处理并发修改时,可以考虑使用 ETag 标头进行版本控制。

  3. 适当处理错误响应:

    • 对于 404:优化搜索条件

    • 对于 412:使标准更加具体或解决版本冲突

  4. 为高并发环境中的时间冲突做好准备,在这种环境中,可能会在搜索和删除操作之间修改资源。