使用 FHIRRESTAPI操作從 HealthLake 資料存放區匯出資料 - AWS HealthLake

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

使用 FHIRRESTAPI操作從 HealthLake 資料存放區匯出資料

完成 後設定匯出任務的許可,您可以使用 FHIRRESTAPI操作從 HealthLake 資料存放區匯出資料。若要使用 FHIR REST 提出匯出請求API,您必須擁有具有必要許可IAM的使用者、群組或角色、指定 $export做為POST請求的一部分,並在請求內文中包含請求參數。根據 FHIR規格,FHIR伺服器必須支援 GET 請求,且 可以支援 POST請求。為了支援其他參數,需要內文才能啟動匯出,因此 HealthLake 支援POST請求。

重要

HealthLake 在 2023 年 6 月 1 日之前建立的資料存放區僅支援全系統匯出的FHIRRESTAPI以 為基礎的匯出任務請求。

HealthLake 在 2023 年 6 月 1 日之前建立的資料存放區不支援使用資料存放區端點上的GET請求來取得匯出狀態。

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

您可以根據 AWS 帳戶配額將匯出請求排入佇列。若要進一步了解與 相關聯的 Service Quotas HealthLake,請參閱 AWS HealthLake 端點和配額

HealthLake 支援下列三種類型的大量匯出端點請求。

Type 描述 語法

系統匯出

從 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

開始之前

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

  • 您必須已設定具有進行匯出請求必要許可的使用者、群組或角色。如需進一步了解,請參閱 授權export請求

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

授權export請求

若要使用 FHIR REST 成功匯出請求API,請使用 或 OAuth2.0 授權您的使用者、群組IAM或角色。您也必須具有服務角色。

使用 授權請求 IAM

當您提出$export請求時,使用者、群組或角色必須具有 StartFHIRExportJobWithPostDescribeFHIRExportJobWithGetCancelFHIRExportJobWithDeleteIAM動作包含在政策中。

重要

HealthLake SDK 使用 StartFHIRExportJob API 操作匯出請求,以及使用 StartFHIRExportJobWithPostAPI操作FHIRRESTAPI匯出請求有不同的IAM動作。使用 SDK 匯出StartFHIRExportJob和使用 FHIR REST API 匯出的每個IAM動作StartFHIRExportJobWithPost,都可以分別處理允許/拒絕許可。如果您想要同時限制 SDK和 FHIR REST API 匯出,請務必拒絕每個IAM動作的許可。

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

當您在FHIR已啟用 HealthLake 的資料存放SMART區上提出$export請求時,您需要指派適當的範圍。若要進一步了解支援的 範圍,請參閱 HealthLake 資料存放區FHIR資源特定範圍

提出export請求

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

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

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

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

  2. 指定所需的標頭參數。

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

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

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 REST 提出匯出請求API,您必須指定下列兩個標頭參數。

  • Content-Type: application/fhir+json

  • 偏好: respond-async

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

步驟 3:指定請求內文, 會定義所需的參數。

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

金錀 是否為必要? 描述 Value
DataAccessRoleArn HealthLake 服務角色ARN的 。使用的服務角色必須指定 HealthLake 為服務主體。 arn:aws:iam::444455556666:role/your-healthlake-service-role
JobName 匯出請求的名稱。 your-export-job-name
S3Uri OutputDataConfig 金鑰的一部分。將下載匯出資料的URI目的地儲存貯體 S3。 s3://DOC-EXAMPLE-DESTINATION-BUCKET/EXPORT-JOB/
KmsKeyId OutputDataConfig 金鑰的一部分。用於保護 Amazon S3 儲存貯體ARN的 AWS KMS 金鑰。 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://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,藉此管理該請求。

當您使用 REST 取消匯出請求時API,將僅向您收取截至您提交取消請求之前匯出的資料部分費用。

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

取消匯出請求

若要取消匯出請求,請提出DELETE請求,並在請求 中提供任務 IDURL。

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." } ] }

描述匯出請求

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

GET https://healthlake.your-region.amazonaws.com/datastore/your-datastore-id/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
S3UriOutputDataConfig 物件的一部分。要下載匯出資料的目的地儲存貯體 URI Amazon S3。s3://DOC-EXAMPLE-DESTINATION-BUCKET/EXPORT-JOB/
KmsKeyIdOutputDataConfig 物件的一部分。用於保護 Amazon S3 儲存貯體ARN的 AWS KMS 金鑰 。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://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", } }