BigQuery への DICOM メタデータのストリーミング

このページでは、DICOM インスタンスが DICOM ストアに挿入されるたびに、DICOM インスタンスのメタデータを BigQuery テーブルにエクスポートするように DICOM ストアを構成する方法について説明します。DICOM インスタンスは、ストア トランザクションを使用するか、Cloud Storage からのインポートにより挿入されます。

BigQuery ストリーミングを使用すると、DICOM ストアのデータを BigQuery データセットとほぼリアルタイムで同期できます。データを分析するたびに DICOM ストアの最新バージョンを BigQuery にエクスポートしなくても、DICOM データに対して複雑なクエリを実行できます。

ストリーミングを構成する前に、BigQuery への DICOM メタデータのエクスポートに関する概要をご覧ください。

BigQuery の権限を設定する

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

DICOM ストアの構成

BigQuery へのストリーミングを有効にするには、DICOM ストアで StreamConfig オブジェクトを構成します。StreamConfig 内で、DICOM インスタンスのメタデータがストリーミングされる完全修飾 BigQuery テーブル URI を含めるように BigQueryDestination を構成します。StreamConfig は配列であるため、複数の BigQuery の宛先を指定できます。1 つの DICOM ストアからメタデータを、BigQuery データセット内の最大 5 つの BigQuery テーブルにストリーミングできます。

Cloud Healthcare API で DICOM インスタンスを削除しても、それらのインスタンスのメタデータが含まれる BigQuery 行は削除されません。

以下のサンプルは、DICOM ストアを更新して BigQuery ストリーミングを有効にする方法を示しています。これらのサンプルでは、DICOM ストアと BigQuery テーブルは同じプロジェクトにあります。DICOM メタデータを別のプロジェクトにエクスポートする場合は、DICOM メタデータを別のプロジェクトにエクスポートするをご覧ください。

REST とコマンドライン

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

  • PROJECT_ID: Google Cloud プロジェクトの ID
  • LOCATION: データセットの場所
  • DATASET_ID: DICOM ストアの親データセット
  • DICOM_STORE_ID: DICOM ストア ID
  • BIGQUERY_DATASET_ID: 既存の BigQuery データセットの名前
  • BIGQUERY_TABLE_ID: BigQuery データセット内のテーブルの一意の名前。命名要件については、テーブルの命名をご覧ください。BigQuery データセットが存在している必要がありますが、Cloud Healthcare API で既存のテーブルの更新や、新しいテーブルの作成ができます。

JSON 本文のリクエスト:

{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}

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

curl

  1. リクエスト本文を request.json という名前のファイルに保存します。次のコマンドをコピーしてターミナルで実行し、このファイルを作成します。
    cat > request.json << 'EOF'
    {
      'streamConfigs': [{
         'bigqueryDestination': {
          'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
         }
      }]
    }
    EOF
  2. ターミナルで次のコマンドを実行します。作成した request.json ファイルを参照します。
    curl -X PATCH \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs"

PowerShell

  1. リクエスト本文を request.json という名前のファイルに保存します。次のコマンドをコピーしてターミナルで実行し、このファイルを作成します。
    @'
    {
      'streamConfigs': [{
         'bigqueryDestination': {
          'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
         }
      }]
    }
    '@  | Out-File -FilePath request.json -Encoding utf8
  2. ターミナルで次のコマンドを実行します。作成した request.json ファイルを参照します。
    $cred = gcloud auth application-default 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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

API Explorer

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

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

制限事項と追加の動作

  • 次のいずれかが発生すると、DICOM タグは宛先 BigQuery テーブル内の別の列(DroppedTags.TagName という名前)に一覧表示されます。

    • DICOM タグのサイズが 1 MB 以上。
    • DICOM タグが BigQuery でサポートされているタイプではない(Exclusion VRs に一覧表示)。
  • DICOM ストア内のインスタンスを削除しても、そのインスタンスは BigQuery からは削除されません。

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

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

ストリーミング DICOM メタデータに関連するログをフィルタリングするには、[ラベルまたはテキスト検索でフィルタ] の 2 番目のリストから [healthcare.googleapis.com/dicom_stream] を選択します。