將 FHIR (快速醫療照護互通性資源) 擷取至 BigQuery

1. 簡介

1f4764c4ca4c50d9.png

上次更新時間:2020 年 5 月 16 日

本程式碼研究室示範了資料擷取模式,以便使用 Cloud Healthcare FHIR API 將 FHIR R4 格式的醫療照護資料 (一般資源) 擷取至 BigQuery。系統已產生真實醫療照護檢測資料,並供您在 Google Cloud Storage 值區 (gs://hcls_testing_data_fhir_10_patients/) 中取得。

在這個程式碼研究室中,您將瞭解以下內容:

  • 如何將來自 GCS 的 FHIR R4 資源匯入 Cloud Healthcare FHIR 儲存庫。
  • 如何將 FHIR 儲存庫中的 FHIR 資料匯出至 BigQuery 的資料集。

執行此示範的必要條件為何?

  • 您需要有 GCP 專案的存取權。
  • 您必須先取得 GCP 專案的擁有者角色。
  • NDJSON 格式的 FHIR R4 資源 (content-structure=RESOURCE)

如果您沒有 GCP 專案,請按照這些步驟建立新的 GCP 專案。

已將採用 NDJSON 格式的 FHIR R4 資源預先載入至下列位置的 GCS 值區:

  • gs://hcls_testing_data_fhir_10_patients/fhir_r4_ndjson/ - 一般資源

上述所有資源皆採用新的行分隔符號 JSON (NDJSON) 檔案格式,但內容結構不同:

  • 採用 ndjson 格式的一般資源:檔案中的每一行都包含 JSON 格式的核心 FHIR 資源 (例如 PatientObservation 等)。每個 ndjson 檔案都包含相同資源類型的 FHIR 資源。舉例來說,Patient.ndjson 會包含一或多項 resourceType =「Patient」的 FHIR 資源而 Observation.ndjson 將包含一或多個 resourceType =「Observation」的 FHIR 資源。

如有需要,您隨時可以使用 SyntheaTM 產生新資料集。然後上傳至 GCS,而不是使用程式碼研究室提供的值區。

2. 專案設定

請按照下列步驟啟用 Healthcare API 並授予必要權限:

初始化環境的殼層變數

如要尋找 PROJECT_NUMBERPROJECT_ID,請參閱識別專案

<!-- CODELAB: Initialize shell variables -->
export PROJECT_ID=<PROJECT_ID>
export PROJECT_NUMBER=<PROJECT_NUMBER>
export SRC_BUCKET_NAME=hcls_testing_data_fhir_10_patients
export BUCKET_NAME=<BUCKET_NAME>
export DATASET_ID=<DATASET_ID>
export FHIR_STORE=<FHIR_STORE>
export BQ_DATASET=<BQ_DATASET>

啟用 Healthcare API

按照下列步驟操作,即可在 GCP 專案中啟用 Healthcare API。這會將 Healthcare API 服務帳戶新增至專案。

  1. 前往 GCP 控制台的 API 程式庫
  2. 從專案清單中選取您的專案。
  3. 在 API 程式庫中,選取您要啟用的 API。如果您找不到 API,請使用搜尋欄位和篩選器。
  4. 在 API 頁面中,按一下「啟用」

取得綜合資料集的存取權

  1. 透過您用來登入 Cloud 控制台的電子郵件地址,傳送電子郵件至 hcls-solutions-external+subscribe@google.com 要求加入。
  2. 您會收到一封電子郵件,說明如何確認這項操作。
  3. 使用回覆電子郵件加入群組。
  4. 「請勿」點選 525a0fa752e0acae.png 按鈕。也不成行。
  5. 收到確認電子郵件後,您可以繼續進行本程式碼研究室的下一個步驟。

在 GCP 專案中建立 Google Cloud Storage 值區

gsutil mb gs://$BUCKET_NAME

將綜合資料複製到 GCP 專案

gsutil -m cp gs://$SRC_BUCKET_NAME/fhir_r4_ndjson/**.ndjson \
gs://$BUCKET_NAME/fhir_r4_ndjson/

授予權限

從 Cloud Storage 匯入 FHIR 資源並匯出至 BigQuery 之前,您必須授予 Cloud Healthcare 服務代理 服務帳戶的其他權限。詳情請參閱 FHIR 儲存庫 Cloud StorageFHIR 儲存 BigQuery 權限。

授予 Storage 管理員權限

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
  --role=roles/storage.objectViewer

授予 BigQuery 管理員權限

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
  --role=roles/bigquery.admin

3. 環境設定

請按照下列步驟,使用 Cloud Healthcare FHIR API 將 NDJSON 檔案中的資料擷取至 BigQuery 中的醫療照護資料集:

建立 Healthcare 資料集和 FHIR 儲存庫

使用 Cloud Healthcare API 建立 Healthcare 資料集

gcloud beta healthcare datasets create $DATASET_ID --location=us-central1

使用 Cloud Healthcare API 在資料集中建立 FHIR 儲存庫

gcloud beta healthcare fhir-stores create $FHIR_STORE \
  --dataset=$DATASET_ID --location=us-central1 --version=r4

4. 將資料匯入 FHIR 儲存庫

將測試資料從 Google Cloud Storage 匯入 FHIR 儲存庫

我們將使用 GCS 值區中預先載入的檔案。這些檔案包含 NDJSON 格式的 FHIR R4 一般資源。回應時,您會收到 OPERATION_NUMBER,可用於驗證步驟。

從 GCP 專案的 GCS 值區匯入一般資源

gcloud beta healthcare fhir-stores import gcs $FHIR_STORE \
  --dataset=$DATASET_ID --async \
  --gcs-uri=gs://$BUCKET_NAME/fhir_r4_ndjson/**.ndjson \
  --location=us-central1 --content-structure=RESOURCE

驗證

驗證作業已順利完成。這項作業可能需要幾分鐘才能完成,因此您可能需要重複執行這項指令幾次,並稍微延遲。

gcloud beta healthcare operations describe OPERATION_NUMBER \
  --dataset=$DATASET_ID --location=us-central1

5. 將 FHIR 儲存庫中的資料匯出至 BigQuery

建立 BigQuery 資料集

bq mk --location=us --dataset $PROJECT_ID:$BQ_DATASET

將醫療照護資料從 FHIR Store 匯出至 BigQuery 資料集

gcloud beta healthcare fhir-stores export bq $FHIR_STORE \
  --dataset=$DATASET_ID --location=us-central1 --async \
  --bq-dataset=bq://$PROJECT_ID.$BQ_DATASET \
  --schema-type=analytics

回應時,您會收到 OPERATION_NUMBER,可用於驗證步驟。

驗證

已成功完成驗證作業

gcloud beta healthcare operations describe OPERATION_NUMBER \
  --dataset=$DATASET_ID --location=us-central1

驗證 BigQuery 資料集是否包含所有 16 個資料表

bq ls $PROJECT_ID:$BQ_DATASET

6. 清除所用資源

如要避免系統向您的 Google Cloud Platform 帳戶收取本教學課程所用資源的費用,您可以清除在 GCP 上建立的資源,這樣資源就不會佔用配額,您日後也無須為其付費。下列各節將說明如何刪除或停用這些資源。

刪除專案

如要避免付費,最簡單的方法就是刪除您針對教學課程建立的專案。

如要刪除專案,請進行以下操作:

  1. 在 GCP Console 中,前往「Projects」(專案) 頁面。前往「PROJECTS」(專案) 頁面
  2. 在專案清單中選取您要刪除的專案,並按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。

如要保留專案,請按照下列操作說明刪除 Cloud Healthcare 資料集和 BigQuery 資料集。

刪除 Cloud Healthcare API 資料集

請按照步驟操作,使用 GCP 控制台和 gcloud CLI 刪除 Healthcare API 資料集。

快速 CLI 指令:

gcloud beta healthcare datasets delete $DATASET_ID --location=us-central1

刪除 BigQuery 資料集

請按照步驟,使用不同的介面刪除 BigQuery 資料集。

快速 CLI 指令:

bq rm -r -f $PROJECT_ID:$DATASET_ID

7. 恭喜

恭喜!您已成功完成程式碼研究室,瞭解如何使用 Cloud Healthcare API 在 BigQuery 中擷取醫療照護資料。

您已從 Google Cloud Storage 將符合 FHIR R4 標準的合成資料匯入 Cloud Healthcare FHIR API。

您已將 Cloud Healthcare FHIR API 中的資料匯出至 BigQuery。

您現已瞭解在 Google Cloud Platform 上使用 BigQuery 展開 Healthcare 資料分析之旅的重要步驟。