更新 FHIR 资源 - AWS HealthLake

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

更新 FHIR 资源

FHIR update 交互为现有资源创建新的当前版本,如果给定id资源尚不存在任何资源,则创建初始版本。有关更多信息,请参阅 FHIR R4 RESTful API 文档update中的。

更新 FHIR 资源

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

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

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

    PUT https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id
  4. 为请求构造JSON正文,指定要进行的 FHIR 数据更新。出于本过程的目的,请将文件另存为update-patient.json

    { "id": "2de04858-ba65-44c1-8af1-f2fe69a977d9", "resourceType": "Patient", "active": true, "name": [ { "use": "official", "family": "Doe", "given": [ "Jane" ] }, { "use": "usual", "given": [ "Jane" ] } ], "gender": "female", "birthDate": "1985-12-31" }
  5. 发送 请求。FHIR update 交互在 FHIR 授权上使用AWS 签名版本 4 或 SMART 的PUT请求。以下curl示例更新了中的Patient资源 HealthLake。要查看整个示例,请滚动到 “复” 按钮。

    SigV4

    Sigv4 授权

    curl --request PUT \ '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' \ --data @update-patient.json

    如果更新了现有资源,则您的请求将返回 200 HTTP 状态码;如果创建了新资源,则将返回 201 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 以生成查询字符串。

    • 查询类型-选择Update (PUT)

    • 资源类型-选择要更新或创建的 FHIR 资源类型

    • 请求正文 — 为请求构建 JSON 正文,指定用于更新资源的 FHIR 数据。

    3. 选择运行查询

根据条件更新 FHIR 资源

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

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

  • 没有匹配项,请求正文中未id提供匹配项:服务器创建 FHIR 资源。

  • id提供匹配项,且资源尚不存在 id:服务器将交互视为 “更新即创建” 交互。

  • 没有匹配项,已id提供且已存在:服务器以409 Conflict错误拒绝更新。

  • One Match,未提供任何资源 OR(id提供的资源并且它与找到的资源相匹配):服务器对匹配的资源执行更新,如上所述,如果资源已更新,则服务器应返回 a 200 OKid

  • One Match,已id提供资源但与找到的资源不匹配:服务器返回409 Conflict错误,表明客户端 ID 规范有问题,最好是 OperationOutcome

  • 多个匹配项:服务器返回一个412 Precondition Failed错误,表明客户端的标准选择性不够好,最好是 OperationOutcome

以下示例更新了一个名为 peter、出生日期为 2000 年 1 月 1 日、电话号码为 1234567890 的Patient资源。

PUT https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?name=peter&birthdate=2000-01-01&phone=1234567890

为资源更新配置验证级别

更新 FHIR 资源时,您可以选择指定 x-amzn-healthlake-fhir-validation-level HTTP 标头来配置资源的验证级别。 AWS HealthLake 目前支持以下验证级别:

  • strict:根据资源的配置文件元素对资源进行验证,如果不存在配置文件,则根据R4规格进行验证。这是的默认验证级别 AWS HealthLake。

  • structure-only:根据 R4 对资源进行验证,忽略任何引用的配置文件。

  • minimal:资源经过最低限度的验证,忽略了某些 R4 规则。未通过所需的结构检查的资源 search/analytics 将进行更新,以包括审计警告。

尽管搜索索引需要验证失败,但使用最低验证级别更新的资源仍可能会被提取到数据存储中。在这种情况下,将更新资源,以包括专门用于记录上述故障的 Healthlake 扩展程序:

{ "url": "http://healthlake.amazonaws.com/fhir/StructureDefinition/validation-issue", "valueString": "{\"resourceType\":\"OperationOutcome\",\"issue\":[{\"severity\":\"error\",\"code\":\"processing\",\"details\":{\"text\":\"FHIR resource in payload failed FHIR validation rules.\"},\"diagnostics\":\"FHIR resource in payload failed FHIR validation rules.\"}]}" }

此外,将包含以下 HTTP 响应标头,其值为 “true”:

x-amzn-healthlake-validation-issues : true
注意

请注意,如果存在这些错误,则根据 R4 规范提取的数据可能无法按预期进行搜索。