1. はじめに

最終更新日: 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 リソース(Patient、Observation など)が含まれています。各 ndjson ファイルには、同じリソースタイプの FHIR リソースが含まれています。たとえば、Patient.ndjson には resourceType = ‘ Patient' の FHIR リソースが 1 つ以上含まれ、Observation.ndjson には resourceType = ‘ Observation' の FHIR リソースが 1 つ以上含まれます。
新しいデータセットが必要な場合は、SyntheaTM を使用していつでも生成できます。次に、Codelab で提供されているバケットを使用する代わりに、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 Console API ライブラリに移動します。
- プロジェクト リストからプロジェクトを選択します。
- API ライブラリで、有効にする API を選択します。API を検索する場合は検索フィールドやフィルタを使用します。
- [API] ページで、[有効にする] をクリックします。
合成データセットにアクセスする
- Cloud コンソールへのログインに使用しているメールアドレスから、hcls-solutions-external+subscribe@google.com に参加リクエストを送信します。
- 操作を確認する手順が記載されたメールが届きます。
- メールに返信してグループに参加します。
-
ボタンはクリックしないでください。動作しません。 - 確認メールが届いたら、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 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 の医療データセットにデータを取り込みます。
医療データセットと 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 で作成したリソースをクリーンアップして、今後料金が発生しないようにします。次のセクションで、このようなリソースを削除または無効にする方法を説明します。
プロジェクトを削除する
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには、次の操作を行います。
- GCP Console で [プロジェクト] ページに移動します。プロジェクト ページに移動
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト 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 でヘルスケア データ分析を開始するために必要な主な手順を理解できました。