FHIR リソースを一括で BigQuery にエクスポートする

このページでは、探索と分析のために FHIR リソースを一括で BigQuery にエクスポートする方法について説明します。エクスポート オペレーションでは、FHIR ストア内の FHIR リソースタイプごとに 1 つの BigQuery テーブルが作成されます。

クエリのパフォーマンスを向上させ、コストを削減するには、FHIR リソースをパーティション分割テーブルにエクスポートすることを検討してください。手順については、パーティション分割テーブルへの FHIR リソースのエクスポートをご覧ください。

スケジュールに従って FHIR リソースをエクスポートする場合は、データを増分エクスポートすることを検討してください。手順については、増分エクスポートをご覧ください。

BigQuery の権限を設定する

FHIR リソースを BigQuery にエクスポートする前に、Cloud Healthcare Service Agentサービス アカウントに追加の権限を付与する必要があります。詳しくは、FHIR ストアの BigQuery 権限をご覧ください。

エクスポートの動作を理解する

エクスポート オペレーションの動作は、次の要素によって異なります。

  • 宛先テーブルが存在するかどうか。
  • force フィールドを設定するかどうか。
  • WriteDisposition で列挙型を指定するかどうか。列挙型を指定する場合は、force フィールドを設定しないでください。

それぞれの場合の動作は次のようになります。

  • 宛先テーブルが存在し、forcetrue に設定されている場合: エクスポート オペレーションによって既存のテーブルが上書きされます。
  • 宛先テーブルが存在し、forcefalse に設定されている: エラーが発生します。
  • 宛先テーブルが存在しない場合: force フィールドを指定するかどうかにかかわらず、エクスポート オペレーションによって新しいテーブルが作成されます。
  • 宛先テーブルが存在し、WriteDispositionWRITE_TRUNCATE または WRITE_APPEND に設定されている場合: エクスポート オペレーションはエラーを返すのではなく成功します。

このオペレーションでは、FHIR ストア内のリソースタイプごとに 1 つの BigQuery テーブルが出力されます。

FHIR リソースを一括エクスポートする

次のサンプルは、FHIR リソースを BigQuery テーブルにエクスポートする方法を示しています。

BigQuery の宛先を指定する場合は、完全修飾された URI を使用します。

bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID

Console

Google Cloud コンソールを使用して FHIR リソースを BigQuery にエクスポートするには、次の手順を行います。

  1. Google Cloud コンソールで、[データセット] ページに移動します。

    [データセット] に移動

  2. エクスポートするデータを含む FHIR ストアがあるデータセットをクリックします。

  3. FHIR ストアと同じ行で [アクション] リストを開き、[エクスポート] を選択します。

  4. 表示された [FHIR リソースのエクスポート] ページで、[宛先の選択] セクションを見つけます。[BigQuery テーブル] を選択します。

  5. [宛先テーブルの書き込み処理] セクションで、次のいずれかのオプションを選択して、エクスポート オペレーションの動作を指定します。

    • 宛先テーブルが空の場合にのみデータをエクスポートする: これは、WriteDispositionWRITE_EMPTY 列挙型を選択することと同じです。
    • 宛先テーブルにデータを追加する: これは、WriteDispositionWRITE_APPEND 列挙型を選択することと同じです。
    • FHIR リソースを書き込む前に、宛先テーブル内の既存のデータをすべて消去する: これは、WriteDispositionWRITE_TRUNCATE 列挙型を選択することと同じです。
  6. [FHIR エクスポート構成] セクションで、[参照] をクリックして BigQuery プロジェクトとデータセットを選択します。

  7. [スキーマタイプ] プルダウンで、BigQuery テーブルの出力スキーマを選択します。次のスキーマを使用できます。

    • アナリティクスSQL on FHIR ドキュメントに基づくスキーマ。BigQuery ではテーブルあたり 10,000 列しか許容されないため、Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome の各フィールドに対してはスキーマは生成されません。
    • アナリティクス V2。次のサポートが追加されている、アナリティクス スキーマと類似したスキーマ。アナリティクス V2 スキーマは、アナリティクス スキーマよりも多く宛先テーブルの領域を使用します。

  8. [Recursive Structure Depth] スライダーで深度レベルを選択して、出力スキーマ内のすべての再帰構造の深度を設定します。デフォルトでは、再帰的深度は 2 です。

    詳細については、recursiveStructureDepth をご覧ください。

  9. [エクスポート] をクリックして、FHIR リソースを BigQuery にエクスポートします。

  10. オペレーションのステータスを追跡するには、[オペレーション] タブをクリックします。オペレーションが完了すると、次の状況が表示されます。
    • [長時間実行オペレーションのステータス] セクションでは、[OK] の見出しの下に、緑色のチェックマークが表示されます。
    • [概要] セクションでは、オペレーション ID と同じ行に緑色のチェックマークと [OK] インジケーターが表示されます。
    エラーが発生した場合は、[アクション] をクリックしてから、[Cloud Logging で詳細を表示] をクリックします。

gcloud

FHIR リソースを BigQuery にエクスポートするには、gcloud healthcare fhir-stores export bq コマンドを実行します。

  1. FHIR リソースをエクスポートします。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • LOCATION: データセットの場所
    • DATASET_ID: FHIR ストアの親データセット
    • FHIR_STORE_ID: FHIR ストア ID
    • BIGQUERY_DATASET_ID: FHIR リソースをエクスポートする既存の BigQuery データセットの名前
    • SCHEMA_TYPE: SchemaType の値。次の値のいずれかを使用できます。
      • analytics: SQL on FHIR ドキュメントに基づくスキーマ。BigQuery ではテーブルあたり 10,000 列しか許容されないため、Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome の各フィールドに対してはスキーマは生成されません。
      • analytics_v2analytics と類似したスキーマで、次のサポートが追加されています。

        analytics-v2 は、宛先テーブル内のスペースを analytics より多く使用します。

    • WRITE_DISPOSITION: WriteDisposition の値。次の値のいずれかを使用できます。
      • write-empty: 宛先 BigQuery テーブルが空の場合にのみ、データをエクスポートします。
      • write-truncate: FHIR リソースを書き込む前に、BigQuery テーブル内の既存のデータをすべて消去します。
      • write-append: 宛先 BigQuery テーブルにデータを追加します。
    • FHIR_RESOURCE_TYPE: オプションのフィールド。カンマ区切りの 1 つ以上の FHIR リソースタイプを指定して、それらのタイプの FHIR リソースのみをエクスポートします。
    • SINCE_TIMESTAMP: オプションのフィールド。特定の時間以降に更新された FHIR リソースのみをエクスポートするには、YYYY-MM-DDThh:mm:ss.sss+zz:zz の形式で値を指定します。 2 番目の部分に時刻を指定し、タイムゾーンを加えます。たとえば、2015-02-07T13:28:17.239+02:002017-01-01T00:00:00Z は有効な時刻です。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
      --location=LOCATION \
      --dataset=DATASET_ID \
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID \
      --schema-type=SCHEMA_TYPE \
      --write-disposition=WRITE_DISPOSITION \
      --resource-type=FHIR_RESOURCE_TYPE \
      --since=SINCE_TIMESTAMP

    Windows(PowerShell)

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID `
      --location=LOCATION `
      --dataset=DATASET_ID `
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID `
      --schema-type=SCHEMA_TYPE `
      --write-disposition=WRITE_DISPOSITION `
      --resource-type=FHIR_RESOURCE_TYPE `
      --since=SINCE_TIMESTAMP

    Windows(cmd.exe)

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID ^
      --location=LOCATION ^
      --dataset=DATASET_ID ^
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID ^
      --schema-type=SCHEMA_TYPE ^
      --write-disposition=WRITE_DISPOSITION ^
      --resource-type=FHIR_RESOURCE_TYPE ^
      --since=SINCE_TIMESTAMP
    レスポンスは次のとおりです。レスポンスには、長時間実行オペレーションの ID が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでにかなりの時間がかかる場合に返されます。このコマンドは、長時間実行オペレーションをポーリングし、エクスポートの完了後、name フィールドにオペレーションの名前を出力します。OPERATION_IDの値をメモします。この値は次の手順で必要になります。

    レスポンス

    Request issued for: [FHIR_STORE_ID]
    Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    

  2. オペレーションの詳細を表示するには、gcloud healthcare operations describe を実行してレスポンスの OPERATION_ID を指定します。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • DATASET_ID: データセット ID
    • LOCATION: データセットの場所
    • OPERATION_ID: 長時間実行オペレーションから返された ID

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud healthcare operations describe OPERATION_ID \
        --project=PROJECT_ID \
        --dataset=DATASET_ID \
        --location=LOCATION

    Windows(PowerShell)

    gcloud healthcare operations describe OPERATION_ID `
        --project=PROJECT_ID `
        --dataset=DATASET_ID `
        --location=LOCATION

    Windows(cmd.exe)

    gcloud healthcare operations describe OPERATION_ID ^
        --project=PROJECT_ID ^
        --dataset=DATASET_ID ^
        --location=LOCATION

    次のようなレスポンスが返されます。

    レスポンス

    done: true
    // If there were any errors, an `error` field displays instead of a `response` field.
    // See Troubleshooting long-running operations for a list of response codes.
    error: ERROR
      code: ERROR_CODE
      message: DESCRIPTION
    metadata:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata'
      apiMethodName: 'google.cloud.healthcare.v1.fhir.FhirStoreService.ExportResources_bq'
      counter:
        success: 'SUCCESS_COUNT'
        // If there were any failures, they display in the `failure` field.
        failure: 'FAILURE_COUNT'
      createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    // The `response` field only displays if there were no errors.
    response:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.fhir.ExportResourcesResponse'
    

REST

FHIR リソースを BigQuery にエクスポートするには、projects.locations.datasets.fhirStores.export メソッドを使用します。

  1. FHIR リソースをエクスポートします。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • LOCATION: データセットの場所
    • DATASET_ID: FHIR ストアの親データセット
    • FHIR_STORE_ID: FHIR ストア ID
    • BIGQUERY_DATASET_ID: FHIR リソースをエクスポートする既存の BigQuery データセットの名前
    • SCHEMA_TYPE: SchemaType の値。次の値のいずれかを使用できます。
      • ANALYTICS: SQL on FHIR ドキュメントに基づくスキーマ。BigQuery ではテーブルあたり 10,000 列しか許容されないため、Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome の各フィールドに対してはスキーマは生成されません。
      • ANALYTICS_V2ANALYTICS と類似したスキーマで、次のサポートが追加されています。

        ANALYTICS_V2 は、宛先テーブル内のスペースを ANALYTICS より多く使用します。

        .
    • WRITE_DISPOSITION: WriteDisposition の値。次の値のいずれかを使用できます。
      • WRITE_EMPTY: 宛先 BigQuery テーブルが空の場合にのみ、データをエクスポートします。
      • WRITE_TRUNCATE: FHIR リソースを書き込む前に、BigQuery テーブル内の既存のデータをすべて消去します。
      • WRITE_APPEND: 宛先 BigQuery テーブルにデータを追加します。
    • FHIR_RESOURCE_TYPE: オプションのフィールド。カンマ区切りの 1 つ以上の FHIR リソースタイプを指定して、それらのタイプの FHIR リソースのみをエクスポートします。
    • SINCE_TIMESTAMP: オプションのフィールド。特定の時間以降に更新された FHIR リソースのみをエクスポートするには、YYYY-MM-DDThh:mm:ss.sss+zz:zz の形式で値を指定します。 2 番目の部分に時刻を指定し、タイムゾーンを加えます。たとえば、2015-02-07T13:28:17.239+02:002017-01-01T00:00:00Z は有効な時刻です。

    リクエストの本文(JSON):

    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

    cat > request.json << 'EOF'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    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/FHIR_STORE_ID:export"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

    @'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    '@  | 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/FHIR_STORE_ID:export" | Select-Object -Expand Content

    API Explorer

    リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。OPERATION_IDの値をメモします。この値は次の手順で必要になります。

  2. projects.locations.datasets.operations.get メソッドを使用して、長時間実行オペレーションのステータスを取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • DATASET_ID: データセット ID
    • LOCATION: データセットの場所
    • OPERATION_ID: 長時間実行オペレーションから返された 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/operations/OPERATION_ID"

    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/operations/OPERATION_ID" | Select-Object -Expand Content

    API Explorer

    メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスに "done": true が含まれている場合、長時間実行オペレーションは終了しています。

パーティション分割テーブルへの FHIR リソースのエクスポート

FHIR リソースを BigQuery パーティション分割テーブルにエクスポートするには、FHIR ストアで lastUpdatedPartitionConfig フィールドに TimePartitioning 列挙型を構成します。

パーティション分割テーブルは、BigQuery の時間単位のパーティション分割テーブルと同様に動作します。パーティション分割テーブルには lastUpdated という名前の列が追加されます。これは、FHIR リソースの meta.lastUpdated フィールドから生成された meta.lastUpdated 列のコピーです。BigQuery は、lastUpdated 列を使用して、時間、日、月、年でテーブルをパーティション分割します。

パーティションの粒度を選択する方法に関する推奨事項については、日単位、時間単位、月単位、年単位によるパーティショニングを選択するをご覧ください。

パーティション分割されていない既存の BigQuery テーブルをパーティション分割テーブルに変換することはできません。患者リソースの変更をパーティション分割されていない Patients テーブルにエクスポートし、後で同じ BigQuery データセットにエクスポートするテーブル パーティショニングを設定した新しい FHIR ストアを作成した場合、Cloud Healthcare API は引き続きパーティション分割されていない Patients テーブルにエクスポートします。パーティション分割テーブルの使用を開始するには、既存の Patients テーブルを削除するか、異なる BigQuery データセットを使用します。

既存の FHIR ストア構成にパーティショニングを追加しても、既存のパーティション分割されていないテーブルに依然としてエクスポートできます。ただし、パーティショニングは新しいテーブルにのみ適用されます。

次のサンプルは、FHIR リソースを BigQuery のパーティション分割テーブルにエクスポートする方法を示しています。

Console

Google Cloud コンソールと gcloud CLI では、この操作はサポートされていません。代わりに、curl、PowerShell、またはご希望の言語を使用してください。

gcloud

Google Cloud コンソールと gcloud CLI では、この操作はサポートされていません。代わりに、curl、PowerShell、またはご希望の言語を使用してください。

REST

FHIR リソースを BigQuery のパーティション分割テーブルにエクスポートするには、projects.locations.datasets.fhirStores.export メソッドを使用します。

  1. FHIR リソースをエクスポートします。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • LOCATION: データセットの場所
    • DATASET_ID: FHIR ストアの親データセット
    • FHIR_STORE_ID: FHIR ストア ID
    • BIGQUERY_DATASET_ID: FHIR リソースをエクスポートする既存の BigQuery データセットの名前
    • SCHEMA_TYPE: SchemaType の値。次の値のいずれかを使用できます。
      • ANALYTICS: SQL on FHIR ドキュメントに基づくスキーマ。BigQuery ではテーブルあたり 10,000 列しか許容されないため、Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome の各フィールドに対してはスキーマは生成されません。
      • ANALYTICS_V2ANALYTICS と類似したスキーマで、次のサポートが追加されています。

        ANALYTICS_V2 は、宛先テーブル内のスペースを ANALYTICS より多く使用します。

        .
    • TIME_PARTITION_TYPE: エクスポートされた FHIR リソースを分割する粒度。次の値のいずれかを使用できます。
      • HOUR: 時間単位でデータを分割する
      • DAY: 日付単位でデータを分割する
      • MONTH: 月単位でデータを分割する
      • YEAR: 年単位でデータを分割する
    • WRITE_DISPOSITION: WriteDisposition の値。次の値のいずれかを使用できます。
      • WRITE_EMPTY: BigQuery テーブルが空の場合にのみデータをエクスポートします。
      • WRITE_TRUNCATE: DICOM インスタンスを書き込む前に、BigQuery テーブル内の既存のデータをすべて消去します。
      • WRITE_APPEND: BigQuery テーブルにデータを追加します。

    リクエストの本文(JSON):

    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

    cat > request.json << 'EOF'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    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/FHIR_STORE_ID:export"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

    @'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    '@  | 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/FHIR_STORE_ID:export" | Select-Object -Expand Content

    API Explorer

    リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。

    次のような JSON レスポンスが返されます。

  2. projects.locations.datasets.operations.get メソッドを使用して、長時間実行オペレーションのステータスを取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • DATASET_ID: データセット ID
    • LOCATION: データセットの場所
    • OPERATION_ID: 長時間実行オペレーションから返された 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/operations/OPERATION_ID"

    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/operations/OPERATION_ID" | Select-Object -Expand Content

    API Explorer

    メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスに "done": true が含まれている場合、長時間実行オペレーションは終了しています。

パーティション分割テーブルをクエリする

パーティション分割テーブルに対するクエリ実行時のクエリ費用を削減するには、WHERE 句を使用して時間単位でフィルタします。

たとえば、PartitionType 列挙型を DAY に設定するとします。特定の日付に更新された Patient リソースの Patients テーブルをクエリするには、次のクエリを実行します。

SELECT * FROM `PROJECT_ID.BIGQUERY_DATASET.Patients`
  WHERE DATE(lastUpdated) = 'YYYY-MM-DD'

増分エクスポート

タイムスタンプを指定して、前回正常にエクスポートされた以降に FHIR ストアに追加された FHIR リソースのみをエクスポートできます。これにより、パフォーマンスが向上し、FHIR ストア全体を再エクスポートするための費用が発生することを回避できます。また、エクスポートされたデータは常に最新の状態になります。

fhirStores.export を呼び出すときに、_since フィールドにタイムスタンプを指定します。

BigQuery で FHIR データの照会と分析を行う

FHIR リソースを BigQuery にエクスポートした後のエクスポートされたデータのクエリ方法と分析方法の詳細については、BigQuery での FHIR データの分析ソリューションをご覧ください。このソリューションは、FHIR での Synthea™ Generated Synthetic Data 一般公開データセットを使用しています。このデータセットには、Synthea™ と FHIR 形式で生成された 100 万を超える合成患者レコードがホストされています。

FHIR エクスポート リクエストのトラブルシューティング

FHIR エクスポート リクエスト中にエラーが発生した場合、そのエラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。

オペレーション全体がエラーで返る場合は、長時間実行オペレーションのトラブルシューティングをご覧ください。

列を NULLABLE から REPEATED に変換できません

このエラーは、拡張が繰り返された場合に発生します。このエラーを解決するには、ANALYTICS_V2 スキーマ タイプを使用します。ANALYTICS_V2 を使用している場合は、2 つの拡張機能の競合、または拡張機能と別のフィールドの競合が発生する可能性があります。

列名は、拡張機能の URL の最後の / 文字の後のテキストから生成されます。拡張機能の URL の末尾が /resource_field name のような値の場合、競合が発生する可能性があります。\

このエラーが再発しないようにするには、フィールド名が入力するリソース フィールドと同じである拡張機能を使用しないでください。

次のステップ