

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

# 使用 FHI HealthLake R 导出数据 `$export`
<a name="reference-fhir-operations-export"></a>

您可以使用 FHIR \$1export 操作从 HealthLake 数据存储中批量导出数据。 HealthLake 支持 FHIR `$export` 使用`POST`和`GET`请求。要向发出导出请求`POST`，您必须拥有具有所需权限的 IAM 用户、群组或角色，在请求中指定`$export`，并在请求正文中包含所需的参数。

**注意**  
使用 FHIR 发出的所有 HealthLake 导出请求`$export`都将以`ndjson`格式返回并导出到 Amazon S3 存储桶，其中每个 Amazon S3 对象仅包含一个 FHIR 资源类型。  
您可以根据 AWS 账户服务配额对导出请求进行排队。有关更多信息，请参阅 [服务限额](reference-healthlake-endpoints-quotas.md#reference-healthlake-quotas)。

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


**HealthLake 批量`$export`类型**  

| 导出类型 | 说明 | 语法 | 
| --- | --- | --- | 
| 系统 | 从 HealthLake FHIR 服务器导出所有数据。 | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/$export`  | 
| 所有患者 | 导出与所有患者相关的所有数据，包括与患者资源类型相关的资源类型。 | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export` `GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export` | 
| 患者群体 | 导出与使用群组 ID 指定的一组患者相关的所有数据。 | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export` `GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export` | 

## 开始前的准备工作
<a name="export-rest-before-you-begin"></a>

要使用适用 HealthLake的 FHIR REST API 提出导出请求，请满足以下要求。
+ 您必须已设置具有必要权限的用户、组或角色才能发出导出请求。要了解更多信息，请参阅[对请求进行授`$export`权](#export-rest-auth)。
+ 您必须已创建服务角色来授予 HealthLake 访问要将数据导出到的 Amazon S3 存储桶的权限。服务角色还必须指定 HealthLake 为服务主体。有关设置权限的更多信息，请参阅[为导出任务设置权限](getting-started-setting-up.md#setting-up-export-permissions)。

## 对请求进行授`$export`权
<a name="export-rest-auth"></a>

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

**使用 IAM 对请求进行授权**  
当您提出`$export`请求时，用户、群组或角色的策略中必须包含 IAM 操作。有关更多信息，请参阅 [为导出任务设置权限](getting-started-setting-up.md#setting-up-export-permissions)。

**在 FHIR 上使用 SMART 授权请求 (2.0) OAuth**  
在支持 FHIR 的 SMART HealthLake 数据存储上`$export`发出请求时，必须分配相应的范围。有关更多信息，请参阅 [SMART 对 FHIR 的资源范围适用于 HealthLake](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest)。

**注意**  
`$export`带有`GET`请求的 FHIR 需要相同的身份验证方法或持有者令牌（对于 FHIR 上的 SMART 而言）才能请求导出和检索文件。使用 FHIR 导出的文件`$export``GET`可在 48 小时内下载。

## 提出`$export`请求
<a name="export-rest-request"></a>

本节介绍使用 FHIR REST API 发出导出请求时必须采取的必要步骤。

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

要提出请求，您必须执行以下操作：

1. `$export`在`POST`请求网址中指定支持的终端节点。

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

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

### 步骤 1：`$export`在`POST`请求网址中指定支持的[终端节点](reference-healthlake-endpoints-quotas.md#reference-healthlake-endpoints)。
<a name="export-rest-request-step-1"></a>

HealthLake 支持三种类型的批量导出端点请求。要发出批量导出请求，您必须在三个支持的终端节点之一上发出`POST`基于请求的请求。以下示例演示了在请求网址`$export`中指定何处。
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/$export`
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export`
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export`

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

#### 支持的搜索参数
<a name="export-rest-query-parameters"></a>

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

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


| Name | 必填？ | 说明 | 示例 | 
| --- | --- | --- | --- | 
| \$1outputFormat | 否 | 要生成的请求的批量数据文件的格式。可接受的值为application/fhir\$1ndjson、application/ndjson、ndjson。 |  | 
| \$1type | 否 | 要包含在导出任务中的以逗号分隔的 FHIR 资源类型字符串。我们建议将其包括在内，\$1type因为在导出所有资源时，这可能会影响成本。 | &\$1type=MedicationStatement, Observation | 
| \$1since | 否 | 在日期时间戳当天或之后修改的资源类型。如果某个资源类型没有上次更新时间，则会将其包含在您的响应中。 | &\$1since=2024-05-09T00%3A00%3A00Z | 
| \$1until | 否 | 在日期时间戳当天或之前修改的资源类型。与结合使用\$1since以定义特定的导出时间范围。如果某个资源类型没有上次更新时间，则它们将被排除在您的响应之外。 | &\$1until=2024-12-31T23%3A59%3A59Z | 

### 步骤 2：指定所需的标题参数
<a name="export-rest-request-step-2"></a>

要使用 FHIR REST API 发出导出请求，必须指定以下标头参数。
+ Content-Type：`application/fhir+json`
+ 更喜欢：`respond-async`

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

### 步骤 3：指定用于定义所需参数的请求正文。
<a name="export-rest-request-step-3"></a>

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


| Key | 必填？ | 说明 | 值 | 
| --- | --- | --- | --- | 
| DataAccessRoleArn | 是 |  HealthLake 服务角色的 ARN。使用的服务角色必须指定 HealthLake 为服务主体。 | arn:aws:iam::444455556666:role/your-healthlake-service-role | 
| JobName | 否 | 导出请求的名称。 | your-export-job-name | 
| S3Uri | 是 |  OutputDataConfig 钥匙的一部分。将下载导出数据的目标存储桶的 S3 URI。 | s3://amzn-s3-demo-bucket/EXPORT-JOB/ | 
| KmsKeyId | 是 |  OutputDataConfig 钥匙的一部分。用于保护 Amazon S3 存储桶的 AWS KMS 密钥的 ARN。 | arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab | 

**Example 使用 FHIR REST API 发出的导出请求的正文**  
要使用 FHIR REST API 发出导出请求，必须指定正文，如下所示。  

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

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

*响应标头*

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

*响应正文*

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

## 管理您的导出请求
<a name="export-rest-management"></a>

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

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

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

### 取消导出请求
<a name="export-rest-management-describe"></a>

要取消导出请求，`DELETE`请提出请求并在请求网址中提供任务 ID。

```
DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/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."
    }
  ]
}
```

### 描述导出请求
<a name="export-rest-management-describe"></a>

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

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

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


| Name | 必填？ | 说明 | 值 | 
| --- | --- | --- | --- | 
| DataAccessRoleArn | 否 |  HealthLake 服务角色的 ARN。使用的服务角色必须指定 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 | 否 |  | 有效值为：<pre>SUBMITTED | IN_PROGRESS | COMPLETED_WITH_ERRORS | COMPLETED |<br />      FAILED</pre> | 
| S3Uri | 是 | [OutputDataConfig](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_OutputDataConfig.html)物体的一部分。将下载导出数据的目标存储桶的 Amazon S3 URI。 | s3://amzn-s3-demo-bucket/EXPORT-JOB/ | 
| KmsKeyId | 是 | [OutputDataConfig](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_OutputDataConfig.html)物体的一部分。用于保护 Amazon S3 存储桶的 AWS KMS 密钥的 ARN。 | arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab | 

**Example : 使用 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://amzn-s3-demo-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",
  }
}
```