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 メタデータを別のプロジェクトにエクスポートするをご覧ください。

curl

既存の DICOM ストアで BigQuery ストリーミングを有効にするには、PATCH リクエストを送信して、次の情報を指定します。

  • 親データセットの名前
  • DICOM ストアの名前
  • 既存の BigQuery データセットの名前
  • 1~5 個の BigQuery の宛先の名前。名前には、英字(大文字または小文字)、数字、アンダースコアのみを使用できます。BigQuery データセットが存在している必要がありますが、Cloud Healthcare API で既存のテーブルの更新や、新しいテーブルの作成ができます。
  • 更新マスク
  • アクセス トークン

次のサンプルは、curl を使用した PATCH リクエストを示しています。

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'streamConfigs': [{
         'bigqueryDestination': {
          'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
         }
      }]
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID",
  "streamConfigs": [
    {
      "bigqueryDestination": {
        "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID"
      }
    }
  ]
}

PowerShell

既存の DICOM ストアで BigQuery ストリーミングを有効にするには、PATCH リクエストを送信して、次の情報を指定します。

  • 親データセットの名前
  • DICOM ストアの名前
  • 既存の BigQuery データセットの名前
  • BigQuery エクスポート テーブルの名前。名前には、英字(大文字または小文字)、数字、アンダースコアのみを使用できます。BigQuery データセットが存在している必要がありますが、Cloud Healthcare API で既存のテーブルの更新や、新しいテーブルの作成ができます。
  • 更新マスク
  • アクセス トークン

次のサンプルは、Windows PowerShell を使用した PATCH リクエストを示しています。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
      'streamConfigs': [
        {
          'bigqueryDestination': {
            'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
        }
      }
    ]
  }" `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID",
  "streamConfigs": [
    {
      "bigqueryDestination": {
        "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID"
      }
    }
  ]
}

制限事項と追加の動作

  • 次のいずれかが発生すると、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] を選択します。