View a markdown version of this page

删除 FHIR 资源 - AWS HealthLake

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

删除 FHIR 资源

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

删除 FHIR 资源

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

  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 交互使用AWS 签名版本 4 或经 FHIR 授权的 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 无内容)

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

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

最佳实践

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

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

  3. 适当地处理错误响应:

    • 对于 404:优化您的搜索条件

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

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