1. 簡介

上次更新時間:2020 年 5 月 16 日
本程式碼研究室會示範資料擷取模式,使用 Cloud Healthcare FHIR API 將 FHIR R4 格式的醫療保健資料 (一般資源) 擷取至 BigQuery。我們已產生真實的醫療保健測試資料,並存放在 Google Cloud Storage bucket (gs://hcls_testing_data_fhir_10_patients/) 中。
在本程式碼研究室中,您將學到:
- 如何將 FHIR R4 資源從 GCS 匯入 Cloud Healthcare FHIR 儲存庫。
- 如何將 FHIR 資料從 FHIR 儲存庫匯出至 BigQuery 的資料集。
執行這個試用版需要什麼?
- 您必須有 GCP 專案的存取權。
- 您必須獲派 GCP 專案的擁有者角色。
- NDJSON 格式的 FHIR R4 資源 (content-structure=RESOURCE)
如果您沒有 GCP 專案,請按照這些步驟建立新的 GCP 專案。
NDJSON 格式的 FHIR R4 資源已預先載入下列位置的 GCS bucket:
- gs://hcls_testing_data_fhir_10_patients/fhir_r4_ndjson/ - 一般資源
上述所有資源都採用以換行符號分隔的 JSON (NDJSON) 檔案格式,但內容結構不同:
- 一般資源 (ndjson 格式) - 檔案中的每一行都包含 JSON 格式的核心 FHIR 資源 (例如「Patient」、「Observation」等)。每個 ndjson 檔案都包含相同資源類型的 FHIR 資源。舉例來說,Patient.ndjson 會包含一或多個 resourceType =「Patient」的 FHIR 資源,而 Observation.ndjson 則會包含一或多個 resourceType =「Observation」的 FHIR 資源。
如需新資料集,隨時可以使用 SyntheaTM 產生。然後上傳至 GCS,而非使用程式碼研究室提供的 bucket。
2. 專案設定
請按照下列步驟啟用 Healthcare API 並授予必要權限:
初始化環境的殼層變數
如要尋找「PROJECT_NUMBER」和「PROJECT_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 服務帳戶新增至專案。
- 前往 GCP 主控台的 API 程式庫。
- 從專案清單中選取您的專案。
- 在 API 程式庫中,選取您要啟用的 API。如果找不到 API,請使用搜尋欄位和篩選器。
- 在 API 頁面中,按一下「啟用」。
取得合成資料集存取權
- 使用登入 Cloud Console 的電子郵件地址,傳送電子郵件至 hcls-solutions-external+subscribe@google.com,要求加入。
- 您會收到一封電子郵件,內含確認動作的操作說明。
- 使用該選項回覆電子郵件,即可加入群組。
- 請勿點選
按鈕。這項功能無法運作。 - 收到確認電子郵件後,即可繼續執行程式碼研究室的下一個步驟。
在 GCP 專案中建立 Google Cloud Storage bucket
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 Storage」和「FHIR 儲存區 BigQuery」權限。
授予儲存空間管理員權限
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 建立醫療保健資料集
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 Bucket 中預先載入的檔案。這些檔案包含 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 儲存庫匯出至 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 上建立的資源,以免資源占用您的配額,也避免系統日後向您收取資源費用。下列各節將說明如何刪除或停用這些資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
如要刪除專案,請進行以下操作:
- 前往 GCP 主控台的「Projects」(專案) 頁面。前往「PROJECTS」(專案) 頁面
- 在專案清單中選取要刪除的專案,然後點按「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。
如需保留專案,請按照下列操作說明刪除 Cloud 醫療保健資料集和 BigQuery 資料集。
刪除 Cloud Healthcare API 資料集
請按照步驟,使用 GCP Console 和 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。
您已將符合 FHIR R4 規範的合成資料,從 Google Cloud Storage 匯入 Cloud Healthcare FHIR API。
您已將資料從 Cloud Healthcare FHIR API 匯出至 BigQuery。
您現在已瞭解在 Google Cloud Platform 上使用 BigQuery 展開醫療保健資料分析之旅的必要步驟。