1. 簡介
上次更新時間: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 資源 (例如 Patient、Observation 等)。每個 ndjson 檔案都包含相同資源類型的 FHIR 資源。舉例來說,Patient.ndjson 會包含一或多項 resourceType =「Patient」的 FHIR 資源而 Observation.ndjson 將包含一或多個 resourceType =「Observation」的 FHIR 資源。
如有需要,您隨時可以使用 SyntheaTM 產生新資料集。然後上傳至 GCS,而不是使用程式碼研究室提供的值區。
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 控制台的電子郵件地址,傳送電子郵件至 hcls-solutions-external+subscribe@google.com 要求加入。
- 您會收到一封電子郵件,說明如何確認這項操作。
- 使用回覆電子郵件加入群組。
- 「請勿」點選 按鈕。也不成行。
- 收到確認電子郵件後,您可以繼續進行本程式碼研究室的下一個步驟。
在 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 Storage 和 FHIR 儲存 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 上建立的資源,這樣資源就不會佔用配額,您日後也無須為其付費。下列各節將說明如何刪除或停用這些資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您針對教學課程建立的專案。
如要刪除專案,請進行以下操作:
- 在 GCP Console 中,前往「Projects」(專案) 頁面。前往「PROJECTS」(專案) 頁面
- 在專案清單中選取您要刪除的專案,並按一下 [Delete] (刪除)。
- 在對話方塊中輸入專案 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 資料分析之旅的重要步驟。