このページでは、Cloud Storage に DICOM インスタンスをエクスポートする方法と、Cloud Storage から DICOM オブジェクトをインポートする方法について説明します。通常、DICOM インスタンスは画像ですが、構造化レポートなどの別のタイプの永続データにすることもできます。Cloud Storage の DICOM オブジェクトは、Cloud Storage に備わっている DICOM インスタンスです。詳細については、Cloud Storage をご覧ください。
Cloud Storage 権限を設定する
Cloud Storage との間で DICOM データをエクスポートおよびインポートする前に、Cloud Healthcare サービス エージェントのサービス アカウントに追加の権限を付与する必要があります。詳細については、DICOM ストアの Cloud Storage 権限をご覧ください。
DICOM オブジェクトをインポートする
複数の DICOM インスタンス ファイルを DICOM ストアにインポートするには、次のいずれかの方法を使用します。
- 次のように、Cloud Healthcare API で、Store Transaction RESTful ウェブサービスを使用して、ローカルマシンからプログラムによって DICOM ストアにデータを直接保存します。
- DICOM データを Cloud Storage バケットにアップロードし、このセクションで説明するように、単一のインポート オペレーションを使用してファイルを DICOM ストアにインポートします。
以下のサンプルは、Cloud Storage バケットから DICOM オブジェクトをインポートする方法を示しています。
Console
Cloud Storage バケットから DICOM オブジェクトをインポートする手順は次のとおりです。
- Google Cloud コンソールで、[データセット] ページに移動します。
データセットに移動 - DICOM オブジェクトをインポートする DICOM ストアを含むデータセットをクリックします。
- データストアのリストで、DICOM ストアの [アクション] リストから [インポート] を選択ます。
DICOM ストアへのインポート ページが表示されます。 - [プロジェクト] リストで、Cloud Storage プロジェクトを選択します。
- [ロケーション] リストで、Cloud Storage バケットを選択します。
- ファイルをインポートする特定の場所を設定するには、次のようにします。
- [詳細オプション] を展開します。
- [Cloud Storage のパスをオーバーライド] を選択します。
- ファイルをインポートする特定のソースを設定するには、[ロケーション] テキスト ボックスで次の変数を使用してパスを定義します。
*
- 区切り文字以外の文字に一致します。**
- 区切り文字を含む文字に一致します。 これは、同じ種類のすべてのファイルに一致するファイル名拡張子とともに使用できます。?
- 1 文字に一致します。
- 定義したソースから DICOM オブジェクトをインポートするには、[インポート] をクリックします。
- オペレーションのステータスを追跡するには、[オペレーション] タブをクリックします。オペレーションが完了すると、次の状況が表示されます。
- [長時間実行オペレーションのステータス] セクションでは、[OK] の見出しの下に、緑色のチェックマークが表示されます。
- [概要] セクションでは、オペレーション ID と同じ行に緑色のチェックマークと [OK] インジケーターが表示されます。
gcloud
Cloud Storage バケットから DICOM オブジェクトをインポートするには、gcloud healthcare dicom-stores import gcs
コマンドを使用します。親データセットの名前、DICOM ストアの名前、Cloud Storage バケット内のオブジェクトの場所を指定します。
- バケット内のファイルの場所は任意であり、次のサンプルで指定されている形式を厳密に遵守する必要はありません。
- Cloud Storage 内の DICOM オブジェクトの場所を指定するときは、ワイルドカードを使用して 1 つ以上のディレクトリから複数のファイルをインポートできます。次のワイルドカードがサポートされています。
*
は、0 個以上の区切り文字でない文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example*.dcm
は DIRECTORY の Example.dcm と Example22.dcm に一致します。**
は 0 個以上の文字(区切り文字を含む)と一致します。パスの末尾で使用する必要があり、パスには他のワイルドカードを使用しないでください。ファイル名の拡張子(.dcm など)でも使用できます。この場合、指定したディレクトリとそのサブディレクトリに、このファイル名拡張子を持つすべてのファイルをインポートできます。 たとえば、gs://BUCKET/DIRECTORY/**.dcm
では .dcm というファイル名拡張子を持つすべてのファイルを DIRECTORYとそのサブディレクトリにインポートします。?
は 1 つの文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example?.dcm
は Example1.dcm と一致しますが、Example.dcm や Example01.dcm とは一致しません。
次のサンプルは、Cloud Storage バケットから DICOM オブジェクトをインポートする方法を示しています。
gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/DICOM_INSTANCE.dcm
コマンドラインに次のオペレーション ID が表示されます。
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
オペレーションのステータスを表示するには、レスポンスの OPERATION_ID を指定して gcloud healthcare operations describe
コマンドを実行します。
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
コマンドが完了すると、レスポンスには done: true
が含まれます。
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ImportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Cloud Storage バケットから DICOM オブジェクトをインポートするには、projects.locations.datasets.dicomStores.import
メソッドを使用します。
- バケット内のファイルの場所は任意であり、次のサンプルで指定されている形式と一致する必要はありません。
- Cloud Storage 内の DICOM オブジェクトの場所を指定するときは、ワイルドカードを使用して 1 つ以上のディレクトリから複数のファイルをインポートします。次のワイルドカードがサポートされています。
*
は、0 個以上の区切り文字でない文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example*.dcm
は DIRECTORY の Example.dcm と Example22.dcm に一致します。**
は 0 個以上の文字(区切り文字を含む)と一致します。パスの末尾で使用する必要があり、パスには他のワイルドカードを使用しないでください。ファイル名の拡張子(.dcm など)でも使用できます。この場合、指定したディレクトリとそのサブディレクトリに、このファイル名拡張子を持つすべてのファイルをインポートできます。 たとえば、gs://BUCKET/DIRECTORY/**.dcm
では .dcm というファイル名拡張子を持つすべてのファイルを DIRECTORYとそのサブディレクトリにインポートします。?
は 1 つの文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example?.dcm
は Example1.dcm と一致しますが、Example.dcm や Example01.dcm とは一致しません。
REST
DICOM オブジェクトをインポートします。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの IDLOCATION
: データセットの場所DATASET_ID
: DICOM ストアの親データセットDICOM_STORE_ID
: DICOM ストアの IDBUCKET/PATH/TO/FILE
: Cloud Storage 内の DICOM オブジェクトのパス
リクエストの本文(JSON):
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } '@ | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand Content長時間実行オペレーションのステータスを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: DICOM ストアの親データセット
- 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
Go
Java
Node.js
Python
DICOM ストアから単一のインスタンスまたはスタディを取得するには、Cloud Healthcare API に実装されている Retrieve Transaction RESTful ウェブサービスを使用して DICOM データを取得します。
DICOM オブジェクトをインポートするストレージ クラスを指定する(プレビュー)
デフォルトでは、projects.locations.datasets.dicomStores.import
メソッドは、標準ストレージ クラスを持つ DICOM ストアに DICOM オブジェクトをインポートします。ストレージ クラスは、Cloud Storage から DICOM オブジェクトをインポートするときに設定できます。詳細については、DICOM ストレージ クラスを変更するをご覧ください。
次のサンプルは、Cloud Storage から DICOM オブジェクトをインポートするときにストレージ クラスを指定する方法を示しています。
REST
projects.locations.datasets.dicomStores.import
メソッドを使用します。
DICOM オブジェクトをインポートします。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの IDLOCATION
: データセットの場所DATASET_ID
: DICOM ストアの親データセットDICOM_STORE_ID
: DICOM ストアの IDBUCKET/PATH/TO/FILE
: Cloud Storage 内の DICOM オブジェクトのパスSTORAGE_CLASS
:STANDARD
、NEARLINE
、COLDLINE
、ARCHIVE
の DICOM ストア内の DICOM オブジェクトのストレージ クラス
リクエストの本文(JSON):
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand Content長時間実行オペレーションのステータスを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: DICOM ストアの親データセット
- OPERATION_ID: 長時間実行オペレーションから返された ID。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
DICOM インポート リクエストのトラブルシューティング
DICOM のインポート リクエスト中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。
DICOM インスタンスをエクスポートする
以下のサンプルは、DICOM インスタンスを Cloud Storage バケットにエクスポートする方法を示しています。DICOM ストアから DICOM インスタンスをエクスポートするときには、ストア内のすべてのインスタンスがエクスポートされます。
Console
DICOM インスタンスを Cloud Storage にエクスポートする手順は次のとおりです。
- Google Cloud コンソールで、[データセット] ページに移動します。
データセットに移動 - DICOM インスタンスのエクスポート元の DICOM ストアを含むデータセットをクリックします。
- データストアのリストで、DICOM ストアの [アクション] リストから [エクスポート] を選択します。
- 表示される [DICOM ストアをエクスポート] ページで、[Google Cloud Storage バケット] を選択します。
- [プロジェクト] リストで、Cloud Storage プロジェクトを選択します。
- [ロケーション] リストで、Cloud Storage バケットを選択します。
- [DICOM エクスポート設定] で、DICOM インスタンスのエクスポートに使用するファイルの種類を選択します。以下の種類を選択できます。
- DICOM ファイル(
.dcm
) - オクテット ストリーム
- 画像(
.jpg
、.png
)
- DICOM ファイル(
- 追加の転送構文を定義するには、[転送構文] リストから構文を選択します。
- [エクスポート] をクリックして、Cloud Storage の定義された場所に DICOM インスタンスをエクスポートします。
- オペレーションのステータスを追跡するには、[オペレーション] タブをクリックします。オペレーションが完了すると、次の状況が表示されます。
- [長時間実行オペレーションのステータス] セクションでは、[OK] の見出しの下に、緑色のチェックマークが表示されます。
- [概要] セクションでは、オペレーション ID と同じ行に緑色のチェックマークと [OK] インジケーターが表示されます。
gcloud
DICOM インスタンスを Cloud Storage バケットにエクスポートするには、gcloud healthcare dicom-stores export gcs
コマンドを使用します。
- 親データセットの名前、DICOM ストアの名前、宛先の Cloud Storage バケットを指定します。
- Cloud Healthcare API はオブジェクトごとに 1 つの
.dcm
ファイルを作成するため、オブジェクトではなく Cloud Storage バケットまたはディレクトリに書き込みます。 - コマンドに存在しないディレクトリが指定されている場合は、そのディレクトリが作成されます。
次のサンプルは、gcloud healthcare dicom-stores export gcs
コマンドを示しています。
gcloud healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://BUCKET/DIRECTORY
コマンドラインに次のオペレーション ID が表示されます。
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
オペレーションのステータスを表示するには、レスポンスの OPERATION_ID を指定して gcloud healthcare operations describe
コマンドを実行します。
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
コマンドが完了すると、レスポンスには done: true
が含まれます。
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
DICOM インスタンスを Cloud Storage バケットにエクスポートするには、projects.locations.datasets.dicomStores.export
メソッドを使用します。
- Cloud Healthcare API は DICOM オブジェクトごとに 1 つの
.dcm
ファイルを作成するため、オブジェクトではなく Cloud Storage バケットまたはディレクトリに書き込みます。 - コマンドに存在しないディレクトリが指定されている場合は、そのディレクトリが作成されます。
curl
DICOM インスタンスをエクスポートするには、POST
リクエストを行い、次の情報を指定します。
- 親データセットの名前と場所
- DICOM ストアの名前
- 宛先の Cloud Storage バケット。
次のサンプルは、curl
を使用した POST
リクエストを示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get
メソッドを使用します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
リクエストが成功すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES } }, "done": true, "response": { "@type": "..." } }
PowerShell
DICOM インスタンスをエクスポートするには、POST
リクエストを行い、次の情報を指定します。
- 親データセットの名前と場所
- DICOM ストアの名前
- 宛先の Cloud Storage バケット。
次のサンプルは、Windows PowerShell を使用した POST
リクエストを示しています。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get
メソッドを使用します。
$cred = gcloud auth application-default 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
リクエストが成功すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES }, }, "done": true, "response": { "@type": "..." } }
Go
Java
Node.js
Python
フィルタを使用した DICOM インスタンスのエクスポート
デフォルトでは、DICOM ファイルを Cloud Storage にエクスポートする際は、DICOM ストア内のすべての DICOM ファイルがエクスポートされます。同様に、DICOM メタデータを BigQuery にエクスポートする際は、DICOM ストア内のすべての DICOM データのメタデータがエクスポートされます。
フィルタファイルを使用して、DICOM データまたはメタデータのサブセットをエクスポートできます。
フィルタ ファイルを構成する
- フィルタ ファイルの各行はスタディ、シリーズ、またはインスタンスを定義し、
/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID
の形式を使用します。 - フィルタを適用するレベルを指定するために、行を切り捨てることができます。たとえば、
/studies/STUDY_INSTANCE_UID
を指定してスタディ全体を選択したり、/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID
を指定してシリーズ全体を選択したりできます。
次のフィルタ ファイルについて考えてみましょう。
/studies/1.123.456.789 /studies/1.666.333.111/series/123.456 /studies/1.666.333.111/series/567.890 /studies/1.888.999.222/series/123.456/instances/111 /studies/1.888.999.222/series/123.456/instances/222 /studies/1.888.999.222/series/123.456/instances/333
このフィルタ ファイルの例は、次に適用されます。
- スタディ インスタンス UID が
1.123.456.789
のスタディ全体 - スタディ
1.666.333.111
内のシリーズ インスタンス UID が123.456
と567.890
の 2 つの別々のシリーズ - スタディ
1.888.999.222
とシリーズ123.456
でインスタンス ID が111
、222
、333
の独立した 3 つのインスタンス
BigQuery を使用してフィルタ ファイルを作成する
BigQuery を使用してフィルタ ファイルを作成するには、まず DICOM ストアのメタデータを BigQuery にエクスポートする必要があります。エクスポートされたメタデータには、DICOM ストア内の DICOM データのスタディ、シリーズ、インスタンスの UID が表示されます。
メタデータをエクスポートしたら、次の操作を行います。
クエリを実行して、フィルタ ファイルに追加するスタディ、シリーズ、インスタンスの UID を返します。
たとえば、次のクエリは、スタディ UID、シリーズ UID、インスタンス UID を連結して、フィルタ ファイル形式の要件を満たす方法を示しています。
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
(省略可)クエリが最大レスポンス サイズを超える大きな結果セットを返す場合は、BigQuery でクエリ結果を新しい宛先テーブルに保存します。
クエリ結果をファイルに保存し、Cloud Storage にエクスポートします。手順 2 でクエリ結果を新しい宛先テーブルに保存した場合は、テーブルデータのエクスポートでテーブルの内容を Cloud Storage にエクスポートします。
必要に応じてエクスポートしたファイルを編集し、複数の DICOM オブジェクトのストレージ クラスを変更するリクエストに含めます。
フィルタ ファイルを手動で作成する
フィルタ ファイルを手動で作成する手順は次のとおりです。
- フィルタする DICOM オブジェクトを含むフィルタ ファイルを作成します。
- フィルタ ファイルを Cloud Storage にアップロードします。手順については、ファイル システムからオブジェクトをアップロードするをご覧ください。
フィルタ ファイルで渡す
フィルタ ファイルを作成したら、DICOM エクスポート オペレーションを呼び出し、REST API を使用してフィルタ ファイルに渡します。以下のサンプルでは、フィルタを使用して DICOM データをエクスポートする方法が示されます。
gcloud
フィルタを使用して DICOM メタデータを Cloud Storage にエクスポートするには、gcloud beta healthcare dicom-stores export gcs
コマンドを使用します。
gcloud beta healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://DESTINATION_BUCKET/DIRECTORY \ --filter-config-gcs-uri=gs://BUCKET/DIRECTORY/FILTER_FILE
次のように置き換えます。
- DICOM_STORE_ID: DICOM ストアの ID
- DATASET_ID: DICOM ストアの親データセットの名前
- LOCATION: DICOM ストアの親データセットの場所
- DESTINATION_BUCKET/DIRECTORY: 転送先の Cloud Storage バケット
- BUCKET/DIRECTORY/FILTER_FILE: Cloud Storage バケット内のフィルタ ファイルの場所
次のような出力が表示されます。
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
オペレーションのステータスを表示するには、レスポンスの OPERATION_ID を指定して gcloud healthcare operations describe
コマンドを実行します。
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
次のように置き換えます。
- OPERATION_ID: 前のレスポンスから返された ID 番号
- DATASET_ID: DICOM ストアの親データセットの名前
- LOCATION: DICOM ストアの親データセットの場所
次のような出力が表示されます。
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: 'https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': '...'
API
フィルタを使用して DICOM データをエクスポートするには、projects.locations.datasets.dicomStores.export
メソッドを使用します。
curl
フィルタ ファイルを使用して DICOM データをエクスポートするには、POST
リクエストを行い、次の情報を指定します。
- 親データセットの名前と場所
- DICOM ストアの名前
- 宛先の Cloud Storage バケット。
- Cloud Storage バケット内のフィルタ ファイルの場所
次のサンプルは、curl
を使用した POST
リクエストを示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' } }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
レスポンスにはオペレーション名が含まれています。オペレーション get
メソッドを使用して、オペレーションのステータスを追跡します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME"
リクエストが成功すると、サーバーは JSON 形式で次のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
PowerShell
フィルタ ファイルを使用して DICOM データをエクスポートするには、POST
リクエストを行い、次の情報を指定します。
- 親データセットの名前と場所
- DICOM ストアの名前
- 宛先の Cloud Storage バケット。
- Cloud Storage バケット内のフィルタ ファイルの場所
次のサンプルは、Windows PowerShell を使用した POST
リクエストを示しています。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' }" ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
レスポンスにはオペレーション名が含まれています。オペレーション get
メソッドを使用して、オペレーションのステータスを追跡します。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME" | Select-Object -Expand Content
リクエストが成功すると、サーバーはオペレーションのステータスを JSON 形式で返します。
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
DICOM エクスポート リクエストのトラブルシューティング
DICOM のエクスポート リクエスト中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。
オペレーション全体がエラーで返る場合は、長時間実行オペレーションのトラブルシューティングをご覧ください。