使用FHIRRESTAPI操作从 HealthLake 数据存储中导出数据 - AWS HealthLake

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

使用FHIRRESTAPI操作从 HealthLake 数据存储中导出数据

完成后为导出任务设置权限,您可以通过FHIRRESTAPI操作从 HealthLake 数据存储中导出数据。要使用提出导出请求 FHIR RESTAPI,您必须拥有具有所需权限的IAM用户、组或角色,在POST请求中进行指定$export,并在请求正文中包含请求参数。根据FHIR规范,FHIR服务器必须支持GET请求,并且可以支持POST请求。为了支持其他参数,需要一个主体来开始导出,因此 HealthLake 支持POST请求。

重要

HealthLake 2023 年 6 月 1 日之前创建的数据存储仅支持系统范围导出的FHIRRESTAPI基于导出任务的请求。

HealthLake 2023 年 6 月 1 日之前创建的数据存储不支持使用数据存储端点上的GET请求获取导出状态。

您使用提出的所有导出请求FHIRRESTAPI都将以ndjson格式返回并导出到 Amazon S3 存储桶。每个 S3 对象将仅包含一种FHIR资源类型。

您可以根据 AWS 账户配额对导出请求进行排队。要详细了解与之关联的 Service Quota HealthLake s,请参阅AWS HealthLake 终端节点和配额

HealthLake 支持以下三种类型的批量导出端点请求。

类型 描述 语法

系统导出

从 HealthLake FHIR服务器导出所有数据。

POST https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/$export

所有患者

导出与所有患者相关的所有数据,包括与患者资源类型相关的资源类型。

POST https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/Patient/$export

患者群体

导出与使用群组 ID 指定的一组患者相关的所有数据。

POST https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/Group/ID/$export

开始前的准备工作

使用 for 满足以下要求即可提出导出FHIRRESTAPI请求 HealthLake。

  • 您必须已设置具有必要权限的用户、组或角色才能发出导出请求。要了解更多信息,请参阅 授权请求 export

  • 您必须已创建服务角色来授予 HealthLake 访问要将数据导出到的 Amazon S3 存储桶的权限。服务角色还必须指定 HealthLake 为服务主体。有关设置权限的更多信息,请参阅为导出任务设置权限

授权请求 export

要使用成功发出导出请求 FHIR RESTAPI,请使用或 OAuth2 .0 对您的用户、群组或角色进行授权。IAM您还必须具有服务角色。

使用对请求进行授权 IAM

当您提出$export请求时,用户、组或角色必须具有策略中包含的StartFHIRExportJobWithPostDescribeFHIRExportJobWithGet、和CancelFHIRExportJobWithDeleteIAM操作。

重要

HealthLake SDK使用StartFHIRExportJobAPI操作的导FHIRRESTAPI出请求和使用StartFHIRExportJobWithPostAPI操作的导出请求有不同的IAM操作。每个IAM操作(使用SDK导出StartFHIRExportJob和FHIRRESTAPI导出时使用StartFHIRExportJobWithPost)都可以单独处理允许/拒绝权限。如果您希望同时限制两FHIRRESTAPI者SDK兼而有之,请务必拒绝每个IAM操作的权限。

使用 SMART on FHIR (OAuth2.0) 授权请求

当你在FHIR已启用的 HealthLake 数据存储SMART上$export发出请求时,你需要分配相应的范围。要了解有关支持的作用域的更多信息,请参阅HealthLake 数据存储FHIR资源特定范围

提出export请求

本节介绍使用提出导出请求时必须采取的必要步骤FHIRRESTAPI。

为避免意外向您的 AWS 账户收费,我们建议您在不提供export语法的情况下通过提出POST请求来测试您的请求。

要提出请求,您必须执行以下操作:

  1. POST请求exportURL中指定支持的终端节点。

  2. 指定所需的标题参数。

  3. 指定用于定义所需参数的请求正文。

步骤 1:在POST请求exportURL中指定支持的终端节点

HealthLake 支持三种类型的批量导出端点请求。要发出批量导出请求,您必须在三个支持的终端节点之一上发出POST基于请求的请求。以下示例演示了如何在请求export中指定URL。

  • POST https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/$export

  • POST https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/Patient/$export

  • POST https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/Group/ID/$export

在该POST请求字符串中,您可以使用以下支持的搜索参数。

支持的搜索参数

HealthLake 在批量导出请求中支持以下搜索修饰符。

这些示例包括特殊字符,在提交请求之前必须对其进行编码。

名称 必填? 描述 示例
_outputFormat 要生成的请求的批量数据文件的格式。可接受的值为application/fhir+ndjsonapplication/ndjsonndjson
_type 要包含在导出任务中的以逗号分隔的FHIR资源类型字符串。我们建议将其包括在内,_type因为在导出所有资源时,这可能会影响成本。 &_type=MedicationStatement, Observation
_since 在日期时间戳当天或之后修改的资源类型。如果某个资源类型没有上次更新时间,则会将其包含在您的响应中。 &_since=2024-05-09T00%3A00%3A00Z

步骤 2:指定所需的标题参数

要使用发出导出请求 FHIR RESTAPI,必须指定以下两个标头参数。

  • Content-Type:application/fhir+json

  • 首选:respond-async

接下来,您必须在请求正文中指定所需的元素。

步骤 3:指定用于定义所需参数的请求正文。

导出请求还需要JSON格式化的正文。正文可以包含以下参数。

密钥 必填? 描述
DataAccessRoleArn ARN一个 HealthLake 服务角色。使用的服务角色必须指定 HealthLake 为服务主体。 arn:aws:iam::444455556666:role/your-healthlake-service-role
JobName 导出请求的名称。 your-export-job-name
S3Uri OutputDataConfig 钥匙的一部分。将下载导出数据的目标存储桶的 S URI 3。 s3://DOC-EXAMPLE-DESTINATION-BUCKET/EXPORT-JOB/
KmsKeyId OutputDataConfig 钥匙的一部分。用于保护 Amazon S3 存储桶的 AWS KMS 密钥之一。ARN arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab
例 — 使用发出的出口请求的正文 FHIR REST API

要使用提出导出请求 FHIR RESTAPI,必须指定正文,如下所示。

{ "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role", "JobName": "your-export-job", "OutputDataConfig": { "S3Configuration": { "S3Uri": "s3://DOC-EXAMPLE-DESTINATION-BUCKET/EXPORT-JOB", "KmsKeyId": "arn:aws:kms:region-of-bucket:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } }

请求成功后,您将收到以下回复。

响应标头

content-location: https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/export/your-export-request-job-id

响应正文

{ "datastoreId": "your-data-store-id", "jobStatus": "SUBMITTED", "jobId": "your-export-request-job-id" }

管理您的导出请求

成功发出导出请求后,您可以使用描述当前导export出请求的状态和取消当前的导出请求export来管理该请求。

当您使用取消导出请求时 RESTAPI,您只需为提交取消请求之前导出的部分数据付费。

以下主题介绍如何获取当前导出请求的状态或取消当前导出请求。

取消导出请求

要取消导出请求,DELETE请提出请求并在请求中提供任务 ID URL。

DELETE https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/export/your-export-request-job-id

请求成功后,您将收到以下信息。

{ "exportJobProperties": { "jobId": "your-original-export-request-job-id", "jobStatus": "CANCEL_SUBMITTED", "datastoreId": "your-data-store-id" } }

当您的请求失败时,您会收到以下信息。

{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "not-supported", "diagnostics": "Interaction not supported." } ] }

描述导出请求

要获取导出请求的状态,GET请使用export和您的export-request-job-id

GET https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/r4/export/your-export-request-id

JSON响应将包含一个ExportJobProperties对象。它可能包含以下键:值对。

名称必填?描述
DataAccessRoleArnARN一个 HealthLake 服务角色。使用的服务角色必须指定 HealthLake 为服务主体。arn:aws:iam::444455556666:role/your-healthlake-service-role
SubmitTime提交导出任务的日期。Apr 21, 2023 5:58:02
EndTime

导出任务完成的时间。

Apr 21, 2023 6:00:08 PM
JobName导出请求的名称。your-export-job-name
JobStatus有效值为:
SUBMITTED | IN_PROGRESS | COMPLETED_WITH_ERRORS | COMPLETED | FAILED
S3UriOutputDataConfig对象的一部分。将下载导出数据的目标存储桶的 Amazon S3 URI。s3://DOC-EXAMPLE-DESTINATION-BUCKET/EXPORT-JOB/
KmsKeyIdOutputDataConfig对象的一部分。用于保护 Amazon S3 存储桶的 AWS KMS 密钥之一。ARNarn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab
例 : 使用以下方法提出的描述导出请求的正文 FHIR REST API

成功后,您将收到以下JSON响应。

{ "exportJobProperties": { "jobId": "your-export-request-id", "JobName": "your-export-job", "jobStatus": "SUBMITTED", "submitTime": "Apr 21, 2023 5:58:02 PM", "endTime": "Apr 21, 2023 6:00:08 PM", "datastoreId": "your-data-store-id", "outputDataConfig": { "s3Configuration": { "S3Uri": "s3://DOC-EXAMPLE-DESTINATION-BUCKET/EXPORT-JOB", "KmsKeyId": "arn:aws:kms:region-of-bucket:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"" } }, "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role", } }