使用 FHIR 匯出 HealthLake 資料 $export - AWS HealthLake

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 FHIR 匯出 HealthLake 資料 $export

您可以使用 FHIR $export 操作,從 HealthLake 資料存放區大量匯出資料。HealthLake 支援$export使用 POSTGET請求的 FHIR。若要使用 提出匯出請求POST,您必須擁有具有必要許可的 IAM 使用者、群組或角色、指定 $export做為請求的一部分,並在請求內文中包含所需的參數。

注意

使用 FHIR 提出的所有 HealthLake 匯出請求$export都會以 ndjson 格式傳回,並匯出至 Amazon S3 儲存貯體,其中每個 Amazon S3 物件僅包含單一 FHIR 資源類型。

您可以根據 AWS 帳戶服務配額將匯出請求排入佇列。如需詳細資訊,請參閱Service 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

開始之前

符合下列要求,以使用適用於 HealthLake 的 FHIR REST API 提出匯出請求。

  • 您必須設定具有提出匯出請求必要許可的使用者、群組或角色。如需詳細資訊,請參閱 授權$export請求

  • 您必須已建立服務角色,以授予 HealthLake 存取要匯出資料的 Amazon S3 儲存貯體。服務角色也必須指定 HealthLake 做為服務委託人。如需設定許可的詳細資訊,請參閱 設定匯出任務的許可

授權$export請求

若要使用 FHIR REST API 提出成功的匯出請求,請使用 IAM 或 OAuth2.0. 您還必須擁有服務角色。

使用 IAM 授權請求

當您提出$export請求時,使用者、群組或角色必須在政策中包含 IAM 動作。如需詳細資訊,請參閱設定匯出任務的許可

在 FHIR 上使用 SMART 授權請求 (OAuth 2.0)

當您在啟用 FHIR 的 HealthLake 資料存放區上對 SMART 提出$export請求時,您必須指派適當的範圍。如需詳細資訊,請參閱HealthLake 的 FHIR 資源範圍上的 SMART

注意

$export 具有 GET 請求的 FHIR 需要相同的身分驗證方法或承載字符 (在 FHIR 上使用 SMART 的情況下) 來請求匯出和擷取檔案。使用 FHIR $export 搭配 匯出的檔案GET可供下載 48 小時。

提出$export請求

本節說明使用 FHIR REST API 提出匯出請求時必須採取的必要步驟。

為了避免 AWS 您的帳戶意外產生費用,我們建議您在不提供$export語法的情況下提出請求來測試您的POST請求。

若要提出請求,您必須執行下列動作:

  1. 在支援端點的POST請求 URL $export中指定 。

  2. 指定必要的標頭參數。

  3. 指定定義必要參數的請求內文。

步驟 1:在支援端點POST請求 URL $export中指定 。

HealthLake 支援三種類型的大量匯出端點請求。若要提出大量匯出請求,您必須在三個支援的端點之一上提出POST以 為基礎的請求。下列範例示範要在請求 URL $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請求字串中使用下列支援的搜尋參數。

支援的搜尋參數

HealthLake 在大量匯出請求中支援下列搜尋修飾詞。

下列範例包含特殊字元,在提交請求之前必須先編碼。

名稱 是否為必要? 描述 範例
_outputFormat 要產生的請求大量資料檔案格式。接受的值為 application/fhir+ndjsonapplication/ndjsonndjson
_type 您想要包含在匯出任務中的逗號分隔 FHIR 資源類型的字串。我們建議包含 ,_type因為匯出所有資源時,這可能會牽涉成本。 &_type=MedicationStatement, Observation
_since 在日期時間戳記當天或之後修改的資源類型。如果資源類型沒有上次更新的時間,它們將包含在回應中。 &_since=2024-05-09T00%3A00%3A00Z

步驟 2:指定必要的標頭參數

若要使用 FHIR REST API 提出匯出請求,您必須指定下列標頭參數。

  • Content-Type: application/fhir+json

  • 偏好: respond-async

接著,您必須在請求內文中指定必要的元素。

步驟 3:指定 定義必要參數的請求內文。

匯出請求也需要 JSON 格式的內文。內文可以包含下列參數。

Key 是否為必要? 描述 Value
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
範例 使用 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" }

管理您的匯出請求

成功提出匯出請求後,您可以使用 管理請求$export,以描述目前匯出請求的狀態,以及$export取消目前的匯出請求。

當您使用 REST API 取消匯出請求時,您只需支付截至您提交取消請求之前匯出的部分資料的費用。

下列主題說明如何取得狀態或取消目前的匯出請求。

取消匯出請求

若要取消匯出請求,請提出DELETE請求並在請求 URL 中提供任務 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." } ] }

描述匯出請求

若要取得匯出請求的狀態,請使用 export和 提出GET請求export-request-job-id

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

JSON 回應將包含 ExportJobProperties 物件。它可能包含下列索引鍵:值對。

名稱 是否為必要? 描述 Value
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 有效的 值如下:
SUBMITTED | IN_PROGRESS | COMPLETED_WITH_ERRORS | COMPLETED | FAILED
S3Uri OutputDataConfig 物件的一部分。要下載匯出資料的目的地儲存貯體的 Amazon 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
範例 :描述使用 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", } }