このチュートリアルでは、BigQuery ストリーミングを使用して FHIR ストアを BigQuery データセットとほぼリアルタイムで同期する方法について説明します。
目標
このチュートリアルでは、次の手順を説明します。
- BigQuery の権限を構成します。
- FHIR ストアを作成して患者リソースを追加します。
- FHIR ストアで BigQuery ストリーミングを有効にします。
- BigQuery へのストリーミング構成を確認します。
- 既存の FHIR リソースを BigQuery にエクスポートします。
- 複数の FHIR ストアから同じ BigQuery データセットにリソースをストリーミングします。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Enable the Cloud Healthcare API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
ステップ 1: BigQuery の権限を構成する
FHIR リソースの変更を BigQuery にストリーミングするには、Cloud Healthcare Service Agent のサービス アカウントに追加の権限を付与する必要があります。詳しくは、FHIR ストアの BigQuery 権限をご覧ください。
ステップ 2: BigQuery ストリーミングを構成して検証する
BigQuery へのストリーミングを有効にするには、次の手順に従います。
FHIR ストアの作成と患者リソースの追加
FHIR ストアを作成して 2 つの患者リソースを追加するには、次の手順に従います。
FHIR ストアを作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストアの ID。FHIR ストア ID は、次の要件を満たす必要があります。
- そのデータセットの一意の ID
- 次のもので構成される 1 ~ 256 文字の Unicode 文字列。
- 数字
- 文字
- アンダースコア
- ダッシュ
- ピリオド
- FHIR_STORE_VERSION: FHIR ストアの FHIR バージョン。使用可能なオプションは、DSTU2、STU3、または R4 です。
JSON 本文のリクエスト:
{ "version": "FHIR_STORE_VERSION" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "version": "FHIR_STORE_VERSION" } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "version": "FHIR_STORE_VERSION" } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand ContentAPI Explorer
リクエスト本文をコピーして、メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
FHIR ストアに 1 つ目の患者リソースを作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
JSON 本文のリクエスト:
{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
FHIR ストアに 2 つ目の患者リソースを作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 親データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
JSON 本文のリクエスト:
{ "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
FHIR ストアで患者リソースを検索し、ストアに 2 つの患者リソースが含まれていることを確認します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 親データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
FHIR ストアで BigQuery ストリーミングを構成する
FHIR ストアを更新して BigQuery ストリーミングを構成します。ストリーミングが構成されると、Cloud Healthcare API はリソースの変更を BigQuery データセットにストリーミングします。
既存の FHIR ストアを更新して、BigQuery データセットのロケーションを追加します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 親データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
- BIGQUERY_PROJECT_ID: FHIR リソースの変更をストリーミングする BigQuery データセットを含む Google Cloud プロジェクト
- BIGQUERY_DATASET_ID: FHIR リソースの変更をストリーミングする BigQuery データセット
JSON 本文のリクエスト:
{ "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand ContentAPI Explorer
リクエスト本文をコピーして、メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
BigQuery へのストリーミング構成を確認する
次の手順を実行して、ストリーミングが正しく構成されていることを確認します。
3 つ目の患者リソースを FHIR ストアに作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 親データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
JSON 本文のリクエスト:
{ "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
bq query
を実行して、BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
テーブルに対してクエリを実行します。BigQuery は、FHIR リソースタイプでテーブルは整理します。作成した 3 つ目の患者リソースは、Patient
テーブルにあります。bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
次の結果が返されます。FHIR ストアにストリーミングを構成した後に患者リソースを追加したため、BigQuery テーブルには 1 つの患者リソース レコードがあります。
+-----+ | f0_ | +-----+ | 1 | +-----+
手順 3: 既存の FHIR リソースを BigQuery にエクスポートする
BigQuery データセットと同期したいデータを含む既存の FHIR ストアがある場合は、次の手順を行い、既存のデータが BigQuery にあることを確認する必要があります。
- BigQuery へのストリーミングを構成します。
- 既存のデータを BigQuery データセットにエクスポートします。
BigQuery データセットへのストリーミングを構成する前に FHIR ストアに存在する 2 つの患者リソースをエクスポートするには、次の手順を行います。
FHIR ストアのリソースを BigQuery にエクスポートするには、
gcloud healthcare fhir-stores export bq
コマンドを実行します。このコマンドは--write-disposition=write-append
フラグを使用して、既存の BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
テーブルにデータを追加します。gcloud healthcare fhir-stores export bq FHIR_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --bq-dataset=bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET \ --schema-type=analytics_v2 \ --write-disposition=write-append
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
テーブルに対してクエリを実行して、BigQuery データセット内の患者リソースの数を確認します。bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
このクエリでは次の結果を返して、BigQuery テーブルに 4 つの患者レコードがあることを示します。
+-----+ | f0_ | +-----+ | 4 | +-----+
BigQuery テーブルの実際の患者リソースの数は 3 ですが、クエリは 4 を返します。リソースに異なるオペレーションの重複があると、不整合が発生する可能性があります。この例では、1 つ目の患者リソースが BigQuery テーブルに 2 回追加されています。
- 患者リソースの作成がストリーミングされた日時
- FHIR ストアのリソースが BigQuery にエクスポートされた日時
BigQuery テーブルには、1 つ目の患者リソースのミューテーション履歴も含まれています。たとえば、
fhir.delete
を使用して患者リソースを削除すると、BigQuery テーブルには、値がDELETE
のmeta.tag.code
列が作成されます。FHIR ストアのデータの最新のスナップショットを取得するには、ビューをクエリします。Cloud Healthcare API は、各リソースの最新バージョンのみを使用してビューを作成します。ビューのクエリは、FHIR ストアとそれに対応する BigQuery テーブルの同期を保持する最も正確な方法です。
ビューに対してクエリを実行するには、次のコマンドを実行します。
bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
このクエリは次の結果を返します。ここでは、BigQuery テーブルに 3 つの患者リソースがあることが正しく示されています。
+-----+ | f0_ | +-----+ | 3 | +-----+
手順 4: 複数の FHIR ストアから同じ BigQuery データセットにリソースをストリーミングする
FHIR ストアからの集計された FHIR リソースに対して分析を行うには、複数の FHIR ストアからの FHIR リソースを同じ BigQuery データセットにストリーミングすることが必要になる場合があります。
次の手順では、最初の FHIR ストアと同じ Cloud Healthcare API データセットに 2 つ目の FHIR ストアを作成しますが、FHIR リソースを集約するときに、異なるデータセットの FHIR ストアを使用できます。
BigQuery ストリーミングを有効にして 2 つ目の FHIR ストアを作成し、FHIR ストアで BigQuery ストリーミングを構成するで使用したのと同じ BigQuery データセットを使用します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 親データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- SECOND_FHIR_STORE_ID: 2 つ目の FHIR ストアの ID。FHIR ストアの ID はデータセット内で一意である必要があります。FHIR ストアの ID は、数字、英字、アンダースコア、ダッシュ、ピリオドで構成される 1~256 文字の Unicode 文字列です。
- FHIR_STORE_VERSION: FHIR ストアのバージョン: DSTU2、STU3、R4
- BIGQUERY_PROJECT_ID: FHIR リソースの変更をストリーミングする BigQuery データセットを含む Google Cloud プロジェクト
- BIGQUERY_DATASET_ID: FHIR リソースの変更をストリーミングする BigQuery データセット
JSON 本文のリクエスト:
{ "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID" | Select-Object -Expand ContentAPI Explorer
リクエスト本文をコピーして、メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
2 つ目の FHIR ストアで患者リソースを作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 親データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- SECOND_FHIR_STORE_ID: 2 つ目の FHIR ストア ID
JSON 本文のリクエスト:
{ "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
テーブルに対してクエリを実行して、BigQuery テーブル内の患者リソースの数を確認します。bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
新しい患者のデータ概要をストリーミングする際、BigQuery によって BigQuery データセットの既存の
Patient
テーブルが使用されました。このクエリでは次の結果を返して、BigQuery テーブルには 5 つの患者レコードがあることを示します。テーブルに 4 つではなく 5 つのリソースが含まれる理由の説明については、既存の FHIR リソースを BigQuery にエクスポートするをご覧ください。+-----+ | f0_ | +-----+ | 5 | +-----+
次のコマンドを実行して、ビューに対してクエリを実行します。
bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
このクエリでは次の結果を返して、組み合わされた 1 番目と 2 番目の FHIR ストアと BigQuery テーブルに患者が 4 つ存在していることを示します。
+-----+ | f0_ | +-----+ | 4 | +-----+
クリーンアップ
このチュートリアル用に新しいプロジェクトを作成した場合は、プロジェクトの削除の手順に従ってください。Cloud Healthcare API と BigQuery リソースのみを削除するには、Cloud Healthcare API データセットを削除すると BigQuery データセットを削除するの手順を完了します。
プロジェクトの削除
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Cloud Healthcare API データセットの削除
このチュートリアルで作成した Cloud Healthcare API データセットが不要になった場合、削除できます。データセットを完全に削除すると、データセットとデータセットに含まれる FHIR ストアが完全に削除されます。
データセットを削除するには、
gcloud healthcare datasets delete
コマンドを使用します。gcloud healthcare datasets delete DATASET_ID \ --location=LOCATION \ --project=PROJECT_ID
次のように置き換えます。
- DATASET_ID: Cloud Healthcare API データセット
- LOCATION: データセットのロケーション
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
確認するには、「Y」と入力します。
次のような出力が表示されます。
Deleted dataset [DATASET_ID].
BigQuery データセットの削除
このチュートリアルで作成した BigQuery データセットが不要になった場合は、削除できます。データセットを完全に削除すると、データセットとデータセットに含まれるテーブルが完全に削除されます。
BIGQUERY_PROJECT_IDBIGQUERY_DATASET_ID を、
bq rm
コマンドを実行して削除します。bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID
--recursive
フラグは、Patient
テーブルを含むデータセット内のすべてのテーブルを削除します。確認するには、「Y」と入力します。
次のステップ
- BigQuery へのストリーミング中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。
- BigQuery への FHIR リソースのエクスポートの概要をご覧ください。
- FHIR ストアを作成、表示、一覧表示、削除するには、FHIR ストアの作成と管理をご覧ください。