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

1. はじめに

1f4764c4ca4c50d9.png

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

この Codelab では、Cloud Healthcare FHIR API を使用して FHIR R4 形式の医療データ(Regular Resources)を BigQuery に取り込むデータ取り込みパターンを示します。現実的な医療テストデータが生成され、Google Cloud Storage バケット(gs://hcls_testing_data_fhir_10_patients/)で利用できるようになっています。

この Codelab では、次のことを学びます。

  • GCS から Cloud Healthcare FHIR ストアに FHIR R4 リソースをインポートする方法。
  • 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 形式の通常のリソース - ファイルの各行に、JSON 形式のコア FHIR リソース(PatientObservation など)が含まれています。各 ndjson ファイルには、同じリソースタイプの FHIR リソースが含まれています。たとえば、Patient.ndjson には resourceType = ‘ Patient' の FHIR リソースが 1 つ以上含まれ、Observation.ndjson には resourceType = ‘ Observation' の FHIR リソースが 1 つ以上含まれます。

新しいデータセットが必要な場合は、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 Service Agent サービス アカウントに追加の権限を付与する必要があります。詳細については、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 を使用して 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 ストアから 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 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 に医療データを取り込むコードラボを完了しました。

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

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

これで、Google Cloud Platform の BigQuery でヘルスケア データ分析を開始するために必要な主な手順を理解できました。