FHIR(Fast Healthcare Interoperability Resources)を BigQuery に取り込む

1. はじめに

1f4764c4ca4c50d9.png

最終更新日: 2020 年 5 月 16 日

この Codelab では、Cloud Healthcare FHIR API を使用して FHIR R4 形式の医療データ(通常のリソース)を BigQuery に取り込むデータ取り込みパターンについて説明します。現実的な医療検査データが生成され、Google Cloud Storage バケット(gs://hcls_testing_data_fhir_10_patients/)で使用可能になっています。

この Codelab では、以下について学びます。

  • FHIR R4 リソースを GCS から Cloud Healthcare FHIR ストアにインポートする方法。
  • FHIR ストアから BigQuery のデータセットに FHIR データをエクスポートする方法。

このデモを実行するには何が必要ですか?

  • 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 形式のRegular リソース - ファイルの各行には、JSON 形式のコア FHIR リソース(PatientObservation など)が含まれます。各 ndjson ファイルには、同じリソースタイプの FHIR リソースが含まれています。たとえば、Patient.ndjson には、resourceType = ‘ Patient' の 1 つ以上の FHIR リソースが含まれます。Observation.ndjson には、resourceType = ‘ Observation の 1 つ以上の FHIR リソースが含まれます。

新しいデータセットが必要な場合は、SyntheaTM を使用していつでも生成できます。Codelab で提供されているバケットを使用する代わりに、作成したバケットを 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 Console API ライブラリに移動します。
  2. プロジェクト リストからプロジェクトを選択します。
  3. API ライブラリで、有効にする API を選択します。API を検索する場合は、検索フィールドとフィルタを使用します。
  4. [API] ページで、[有効にする] をクリックします。

合成データセットへのアクセス権を取得する

  1. Cloud コンソールへのログインに使用しているメールアドレスから、hcls-solutions-external+subscribe@google.com 宛てにメールを送信し、参加をリクエストします。
  2. 操作の確認方法が記載されたメールが届きます。
  3. メールに返信するオプションを使用してグループに参加します。
  4. [ 525a0fa752e0acae.png] ボタンはクリックしないでください。うまくいきません。
  5. 確認メールが届いたら、Codelab の次のステップに進むことができます。

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 の権限をご覧ください。

ストレージ管理者の権限を付与する

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 の医療データセットにデータを取り込む手順は次のとおりです。

医療データセットと 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 バケットからプリロードされたファイルを使用します。これらのファイルには、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 で作成したリソースをクリーンアップして、今後料金が発生しないようにします。次のセクションで、このようなリソースを削除または無効にする方法を説明します。

プロジェクトを削除する

課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには、次の操作を行います。

  1. GCP Console でプロジェクト ページに移動します。プロジェクト ページに移動
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

プロジェクトを保持する必要がある場合は、次の手順で Cloud Healthcare データセットと BigQuery データセットを削除できます。

Cloud Healthcare API データセットを削除する

GCP コンソールと gcloud CLI の両方を使用して Healthcare API データセットを削除するには、手順に従います。

Quick CLI コマンド:

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

BigQuery データセットの削除

手順に沿って、さまざまなインターフェースを使用して BigQuery データセットを削除します。

Quick CLI コマンド:

bq rm -r -f $PROJECT_ID:$DATASET_ID

7. 完了

これで、Cloud Healthcare API を使用して BigQuery に医療データを取り込む Codelab が完了しました。

FHIR R4 準拠の合成データを Google Cloud Storage から Cloud Healthcare FHIR API にインポートしました。

Cloud Healthcare FHIR API から BigQuery にデータをエクスポートしました。

ここでは、Google Cloud Platform で BigQuery を使用して医療データ分析の取り組みを開始するために必要な主な手順を学習しました。