このページでは、Cloud Healthcare API で v1beta1 DicomTagConfig 構成を使用して、次のレベルで DICOM インスタンスのセンシティブ データを匿名化する方法について説明します。
datasets.deidentifyを使用したデータセット レベルdicomStores.deidentifyを使用した DICOM ストアレベル
また、このページでは、DICOM ストアレベルでデータを匿名化するときにフィルタを適用する方法についても説明します。
DICOM 匿名化オペレーションは、以前の v1 DicomConfig オブジェクトまたは v1beta1 DicomTagConfig オブジェクトを使用して構成できます。DicomTagConfig を使用することを強くおすすめします。
すでに匿名化オペレーションで DicomConfig を使用している場合は、DicomTagConfig の使用に移行することをおすすめします。新機能の概要については、DicomTagConfig の新しい構成オプションをご覧ください。移行手順については、DicomTagConfig を使用するようにリクエストとレスポンスを移行するをご覧ください。
DicomTagConfig の新しい構成オプション
コンテキストに応じた匿名化を使用してテキストを匿名化する
非構造化メタデータ テキストのコンテキストに基づく匿名化を有効にするには、DicomTagConfig.Options.CleanDescriptorsOption オブジェクトを構成します。このオプションは Clean Descriptors Option に基づいています。DicomTagConfig.Options.CleanDescriptorsOption を指定すると、検査中に追加の infoType が使用され、請求額に影響する可能性があります。
DicomTagConfig.Options.CleanDescriptorsOption オプションを使用すると、削除されたタグに一致する非構造化メタデータ テキストが変換され、匿名化の品質が向上します。たとえば、X 線を匿名化する場合、X 線の患者の姓が Wall などの名詞であるとします。StudyDescription のテキストなど、インスタンス内のメタデータに Wall という単語が含まれている場合、テキストは変換されます。
CleanDescriptorsOption オプションは、タグが次のいずれかのアクション コードと一致する限り、DICOM ベース プロファイルで削除対象としてマークされたタグに一致するコンテキストに基づく語句を秘匿化します。
DZXU
一致したコンテキストに基づく語句は、トークン [CTX] に置き換えられます。
以下を指定すると、秘匿化するタグを構成できます。
ProfileTypeオブジェクトの列挙型。列挙型の指定は必須ではありません。- 特定のタグの
CleanTextTagフィルタ。
ただし、DICOM ベース プロファイルで使用されるタグは変更できません。
焼き付きテキストを削除し、コンテキストで匿名化
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 列挙型を指定すると、画像内の焼き付きテキストのコンテキストに基づく匿名化を有効にできます。このオプションは Clean Descriptors Option に基づいています。TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 列挙型を指定すると、検査中に追加の infoType が使用され、請求額に影響する可能性があります。
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS の列挙型は次の方法で指定できます。
DicomTagConfig.Options.ImageConfig.TextRedactionModeを含むOptions.ImageConfigオブジェクトの場合。このオプションを指定すると、秘匿化するタグのリストにPixelData (7FE0,0010)タグが自動的に追加されます。DicomTagConfig.Action.CleanImageTag.TextRedactionModeを含むAction.CleanImageTagオブジェクトの場合。このオプションを指定する場合は、Action.queries[]配列にPixelDataタグを手動で追加する必要があります。Action.CleanImageTagを使用する場合にサポートされるタグはPixelDataタグのみです。
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS オプションでは、タグが次のいずれかのアクション コードに一致する限り、DICOM ベース プロファイルで削除対象としてマークされたタグに一致する焼き付きテキストが秘匿化されます。
DZXU
焼き付きテキストをコンテキストに応じて匿名化するには、ProfileType オブジェクトの列挙型を使用して焼き付きテキストを有効または無効にする以外に追加の構成はありません。列挙型の指定は必須ではありません。
画像の匿名化に関するその他の infoType
情報タイプ(infoType)を使用して、タグの匿名化を実行するときにスキャンするデータを指定できます。infoType は、患者の名前、メールアドレス、電話番号、識別番号、クレジット カード番号などの機密データのタイプです。
DicomTagConfig.Options.ImageConfig オブジェクトで次のフィールドを構成して、DICOM 画像の匿名化時に使用する infoType を指定できます。
これらのフィールドは、DicomTagConfig.Options.ImageConfig.TextRedactionMode が次のいずれかの値に設定されている場合にのみ有効になります。
DicomTagConfig を使用するようにリクエストとレスポンスを移行する
DICOM 匿名化は DicomTagConfig を使用して構成できます。これは Cloud Healthcare API v1beta1 で使用でき、以前の DicomConfig の代わりに使用できます。リクエストを送信するときに、DicomConfig と DicomTagConfig の両方を含めることはできません。
以降のセクションでは、DicomConfig の構成と、DicomTagConfig への移行方法について説明します。
TagFilterProfile から ProfileType
DicomConfig TagFilterProfile オブジェクトを DicomTagConfig ProfileType オブジェクトに置き換えます。TagFilterProfileType の 4 つのプロファイルは、ProfileType でも使用できます。
次の例は、TagFilterProfile の使用から ProfileType の使用にリクエストを移行する方法を示しています。
DicomConfig | DicomTagConfig |
|---|---|
|
|
keepList と removeList
DicomTagConfig では、DicomConfig keepList と removeList のフィールドは使用できなくなりました。使用していた場合keepListおよびremoveListプロファイルを使用する代わりに保持または削除するタグを指定するには、新しいActionタグの動作を指定するオブジェクトに移行する必要があります。Action オブジェクトは、タグを変換するための追加オプションを提供します。
次の例は、keepList の使用から Action.keepTag の使用にリクエストを移行する方法を示しています。リクエストでは、匿名化オペレーション中に PatientID タグの値を保持するように指定しています。
DicomConfig | DicomTagConfig |
|---|---|
|
|
keeplist、removelist、プロファイルを組み合わせる
DicomConfig オブジェクトでは、keeplist、removelist、プロファイルに基づいてデータを保持または削除するかどうかを決定できます。これらのオプションは相互排他的です。
DicomTagConfigオブジェクトを使用する際、Actionオブジェクトで保存するタグと削除するタグを指定し、プロファイルをProfileTypeで指定することで、こうしたオプションを組み合わせることができます。
Action オブジェクトで構成されたオプションは、ProfileType プロファイルで構成されたオプションをオーバーライドします。Action オブジェクトのオプションは、リクエストで指定された順に適用されます。
skipIdRedaction から Objects.primaryIds
DicomConfig オブジェクトの skipIdRedaction フィールドを、DicomTagConfig オブジェクトの primaryIds フィールドに置き換えます。Options オブジェクトの primaryIds フィールドには、次のいずれかの列挙型が指定できる PrimaryIdsOption オブジェクトが含まれています。
PRIMARY_IDS_OPTION_UNSPECIFIED:PrimaryIdsOptionに値が指定されていない場合のデフォルトの動作。デフォルトでは、ProfileTypeで指定されたオプションが使用されます。KEEP: プライマリ ID は変更しません。REGEN: プライマリ ID を再生成します。
次の例は、skipIdRedaction の使用から Options.primaryIds の使用にリクエストを移行する方法を示しています。リクエストでは、匿名化オペレーション中にプライマリ ID の値を保持するように指定します。
DicomConfig | DicomTagConfig |
|---|---|
|
|
DeidentifyConfig.ImageConfig から DicomTagConfig.Options.ImageConfig
DeidentifyConfig.ImageConfig オブジェクトを DicomTagConfig.Options.ImageConfig オブジェクトに置き換えます。ImageConfig オブジェクトのオプションは、両方のバージョンで同じです。
次の例は、DeidentifyConfig.image で ImageConfig を使用するリクエストを DeidentifyConfig.DicomTagConfig.Options.cleanImage で ImageConfig を使用するリクエストに移行する方法を示しています。リクエストでは、匿名化オペレーション中に画像内のすべてのテキストを秘匿化するように指定しています。
DeidentifyConfig.image | DeidentifyConfig.DicomTagConfig.Options.cleanImage |
|---|---|
|
|
匿名化の概要
データセット レベルの匿名化
データセット レベルで DICOM データを匿名化するには、datasets.deidentify メソッドを呼び出します。datasets.deidentify メソッドには次のコンポーネントがあります。
- ソース データセット: 機密データがある 1 つ以上のインスタンスを持つ DICOM ストアを含むデータセット。
datasets.deidentifyメソッドを呼び出すと、データセットにあるすべての DICOM ストア内のすべてのインスタンスが匿名化されます。 - 宛先データセット: 匿名化は元のデータセットまたはそのデータに影響しません。代わりに、元のデータの匿名化されたコピーは、新しいデータセット(宛先データセット)に書き込まれます。
- 匿名化の対象: データセット内の DICOM データの処理方法を指定する構成パラメータ。タグ キーワードを使用して DICOM インスタンス メタデータや DICOM 画像の焼き付きテキストを匿名化するために、
DeidentifyConfigオブジェクトでこれらのパラメータを指定することで、DICOM 匿名化を構成できます。
このガイドのサンプルのほとんどは、データセット レベルで DICOM データを匿名化する方法を示しています。
DICOM ストアレベルの匿名化
DICOM ストアレベルで DICOM データを匿名化すると、匿名化されるデータをより詳細に制御できます。たとえば、複数の DICOM ストアを含むデータセットがある場合に、ストアに含まれるデータの種類に応じて、各 DICOM ストアを匿名化できます。
DICOM ストア内の DICOM データを匿名化するには、dicomStores.deidentify メソッドを呼び出します。dicomStores.deidentify メソッドには次のコンポーネントがあります。
- ソース DICOM ストア: 機密データを持つ 1 つ以上のインスタンスを含む DICOM ストア。
dicomStores.deidentifyオペレーションを呼び出すと、DICOM ストア内のすべてのインスタンスが匿名化されます。 - 転送先の DICOM ストア: 匿名化が元の DICOM ストアまたはそのデータに影響を与えることはありません。代わりに、元のデータの匿名化されたコピーが宛先の DICOM ストアに書き込まれます。宛先 DICOM ストアはすでに存在している必要があります。
- 匿名化の対象: DICOM ストアの処理方法を指定する構成パラメータ。タグ キーワードを使用して DICOM インスタンス メタデータや DICOM 画像の焼き付きテキストを匿名化するために、
DeidentifyConfigオブジェクトでこれらのパラメータを指定することで、DICOM 匿名化を構成できます。
DICOM ストアレベルで DICOM データを匿名化する方法の例については、DICOM ストアレベルでのデータの匿名化をご覧ください。
フィルタ
DICOM ストアレベルで DICOM データを匿名化する場合は、フィルタ ファイルを構成し、dicomStores.deidentify リクエストでファイルを指定することで、DICOM ストア内のデータのサブセットを匿名化できます。例については、DICOM ストアのサブセットの匿名化をご覧ください。
サンプルの概要
このガイドのサンプルでは、dicom_deid_instance_sample.dcm単一の DICOM インスタンスを使用しますが、複数のインスタンスを匿名化することもできます。このページの例で DICOM インスタンスのサンプルを使用するには、ファイルをローカルマシンにダウンロードし、DICOM データの保存の手順に従って DICOM にデータを保存します。
以降のセクションでは、DICOM インスタンスの画像とインスタンスのメタデータについて説明します。
サンプル画像
このページの一部のサンプルには、匿名化された画像の出力が含まれています。各例では、入力として以下の元画像を使用しています。各匿名化オペレーションからの出力イメージをこの元のイメージと比較して、オペレーションの効果を確認できます。

サンプル メタデータ
このページのほとんどのサンプルには、DICOM インスタンスの変更されたメタデータの出力が含まれています。各例では、入力として以下の元画像を使用しています。各匿名化オペレーションからの出力メタデータをこの元のメタデータと比較して、匿名化の効果を確認できます。
[
{
"00020002": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.7"
]
},
"00020003": {
"vr": "UI",
"Value": [
"1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695"
]
},
"00020010": {
"vr": "UI",
"Value": [
"1.2.840.10008.1.2.4.50"
]
},
"00020012": {
"vr": "UI",
"Value": [
"1.2.276.0.7230010.3.0.3.6.1"
]
},
"00020013": {
"vr": "SH",
"Value": [
"OFFIS_DCMTK_361"
]
},
"00080005": {
"vr": "CS",
"Value": [
"ISO_IR 100"
]
},
"00080016": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.7"
]
},
"00080018": {
"vr": "UI",
"Value": [
"1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695"
]
},
"00080020": {
"vr": "DA",
"Value": [
"20110909"
]
},
"00080030": {
"vr": "TM",
"Value": [
"110032"
]
},
"00080050": {
"vr": "SH"
},
"00080064": {
"vr": "CS",
"Value": [
"WSD"
]
},
"00080070": {
"vr": "LO",
"Value": [
"Manufacturer"
]
},
"00080090": {
"vr": "PN",
"Value": [
{
"Alphabetic": "John Doe"
}
]
},
"00081090": {
"vr": "LO",
"Value": [
"ABC1"
]
},
"00100010": {
"vr": "PN",
"Value": [
{
"Alphabetic": "Ann Johnson"
}
]
},
"00100020": {
"vr": "LO",
"Value": [
"S1214223-1"
]
},
"00100030": {
"vr": "DA",
"Value": [
"19880812"
]
},
"00100040": {
"vr": "CS",
"Value": [
"F"
]
},
"0020000D": {
"vr": "UI",
"Value": [
"2.25.70541616638819138568043293671559322355"
]
},
"0020000E": {
"vr": "UI",
"Value": [
"1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694"
]
},
"00200010": {
"vr": "SH"
},
"00200011": {
"vr": "IS"
},
"00200013": {
"vr": "IS"
},
"00200020": {
"vr": "CS"
},
"00280002": {
"vr": "US",
"Value": [
3
]
},
"00280004": {
"vr": "CS",
"Value": [
"YBR_FULL_422"
]
},
"00280006": {
"vr": "US",
"Value": [
0
]
},
"00280010": {
"vr": "US",
"Value": [
1024
]
},
"00280011": {
"vr": "US",
"Value": [
1024
]
},
"00280100": {
"vr": "US",
"Value": [
8
]
},
"00280101": {
"vr": "US",
"Value": [
8
]
},
"00280102": {
"vr": "US",
"Value": [
7
]
},
"00280103": {
"vr": "US",
"Value": [
0
]
},
"00282110": {
"vr": "CS",
"Value": [
"01"
]
},
"00282114": {
"vr": "CS",
"Value": [
"ISO_10918_1"
]
}
}
]
画像内の焼き付きテキストを秘匿化する
Action オブジェクト内の ImageConfig オブジェクトを使用して、DICOM 画像内の焼き付きテキストを匿名化できます。ImageConfig 内で、TextRedactionMode オブジェクトを使用して、含めるまたは除外する infoType と、テキストを秘匿化する方法を指定できます。
すべてのテキストをリダクションします。
次のサンプルでは、TextRedactionMode を REDACT_ALL_TEXT に設定して DICOM インスタンスを匿名化する方法を示しています。この構成では、画像内のすべての焼き付きテキストが秘匿化されます。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_ALL_TEXT" } } } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_ALL_TEXT" } } } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_ALL_TEXT" } } } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
REDACT_ALL_TEXT を使用して画像を匿名化すると、画像は次のようになります。画像の下部にある焼き付きテキストがすべて秘匿化されていることに注目してください。
REDACT_ALL_TEXT を使用して匿名化された後の DICOM インスタンス。Clean Descriptors オプションを使用して機密テキストを秘匿化する
次のサンプルでは、TextRedactionMode を REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS に設定して DICOM インスタンスを匿名化する方法を示しています。
CleanDescriptorsOption オプションの詳細については、コンテキストに応じた匿名化を使用してテキストを匿名化するをご覧ください。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS" } } } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS" } } } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS" } } } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS を使用して画像を匿名化すると、画像は次のようになります。画像の下部にある焼き付きテキストの一部が秘匿化されていないことに注意してください。PatientSex (0010,0040) はデフォルトの DICOM infoType の 1 つではないため、テキスト Female は引き続き表示されます。
REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS を使用して匿名化された後の DICOM インスタンス。DICOM タグを匿名化する
DICOM メタデータのタグキーワードに基づいて、DICOM インスタンスを匿名化できます。
DicomTagConfigAction オブジェクトでは、次のタグ フィルタリング メソッドを使用できます。
各 Action オプションは、DICOM タグ ID、名前、値表現(VR)のリストとして指定します。オプションは、リスト内のタグに対してアクションを実行します。タグのリストで Action オプションを複数指定することはできません。
各 Action オブジェクトは、タグのリストを指定する queries[] リストを提供します。サポートされているタグ形式は次のとおりです。
- タグ ID(
"00100010"など) - タグ名(
"PatientName"など) - 値表現(VR)(
"PN"など)
queries[] リストで指定できるタグの数に制限はありません。ただし、各タグで実行できる Action オプションは 1 つのみです。Action オプションが異なるタグを指定するには、複数の Action オブジェクトを指定する必要があります。
タグを保持する
DicomTagConfig オブジェクトの KeepTag オブジェクトでタグを指定することで、タグの値が秘匿化されないようにできます。
KeepTagオブジェクトの使用中に有効な DICOM オブジェクトを生成するには、ProfileTypeオブジェクトのMINIMAL_KEEP_LIST_PROFILEの値、またはDEIDENTIFY_TAG_CONTENTSの値を特定します。
これらのプロファイルのいずれかを指定すると、次のタグが自動的に保持され、匿名化された DICOM インスタンスが有効な DICOM になります。
StudyInstanceUIDSeriesInstanceUIDSOPInstanceUIDTransferSyntaxUIDMediaStorageSOPInstanceUIDMediaStorageSOPClassUIDPixelDataRowsColumnsSamplesPerPixelBitsAllocatedBitsStoredHighbitPhotometricInterpretationPixelRepresentationNumberOfFramesPlanarConfigurationPixelAspectRatioSmallestImagePixelValueLargestImagePixelValueRedPaletteColorLookupTableDescriptorGreenPaletteColorLookupTableDescriptorBluePaletteColorLookupTableDescriptorRedPaletteColorLookupTableDataGreenPaletteColorLookupTableDataBluePaletteColorLookupTableDataICCProfileColorSpaceWindowCenterWindowWidthVOILUTFunction
ただし、一部のタグの値は再生成されます。つまり、値は確定的変換によって別の値に置き換えられます。詳細については、DICOM 標準の UID オプションの保持をご覧ください。
StudyInstanceUID、SeriesInstanceUID、SOPInstanceUID、MediaStorageSOPInstanceUID の値は「プライマリ ID」と呼ばれます。プライマリ ID の変換方法を決定するには、PrimaryIdsOption に値を指定します。
次のサンプルは、KeepTag オブジェクトを使用して、匿名化中に特定のタグの値を変更しないようにする方法を示しています。PatientName タグは queries[] リストに追加されているため、匿名化中に PatientName 値は秘匿化されません。
サンプルで PrimaryIdsOption が指定されていないため、primaryIds フィールドはデフォルトで PRIMARY_IDS_OPTION_UNSPECIFIED になり、PRIMARY_IDS_OPTION_UNSPECIFIED はデフォルトで ProfileType の値になります。ProfileType も指定されていないため、profileType フィールドはデフォルトの PROFILE_TYPE_UNSPECIFIED になり、属性の機密性に関する基本的なプロファイル(DICOM 標準エディション 2018e)に基づいてタグが削除されます。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
タグを削除
次のサンプルは、RemoveTag オブジェクトを使用して、匿名化中に特定のタグの値を削除する方法を示しています。削除されたタグは空の値に置き換えられます。
次のサンプルでは、PatientName タグが queries[] リストに追加されているため、匿名化中にその値が空の値に置き換えられます。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "removeTag": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "removeTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "removeTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
タグを削除
次のサンプルは、DeleteTag オブジェクトを使用して匿名化中に特定のタグを削除する方法を示しています。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "deleteTag": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "deleteTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "deleteTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
タグをプレースホルダの値にリセットする
次のサンプルは、匿名化中に ResetTag オブジェクトを使用してタグの値を文字列 PLACEHOLDER に設定する方法を示しています。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "resetTag": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "resetTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "resetTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
特に、
PatientNameタグの値がPLACEHOLDERに設定されていることに注意してください。Original metadataResetTagの実行後のメタデータ"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Ann Johnson" } ] }"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "PLACEHOLDER" } ] }
タグ内の機密テキストを検査して変換する
次のサンプルは、CleanTextTag オブジェクトを使用してタグを検査し、TextConfig オブジェクトの構成に従ってタグの値を変換する方法を示しています。
これらのサンプルでは、Actions オブジェクトに次のオプションが設定されています。
CleanTextTagオブジェクト。PatientNameDICOM タグを含むqueries[]リスト。
TextConfig オブジェクトには次のオプションが設定されています。
- 特定の infoType に一致するテキストを変換する
InfoTypeTransformationオブジェクト。 - 一致するテキストを infoType の名前に置き換える
ReplaceWithInfoTypeConfigオブジェクト。 PERSON_NAMEinfoType を含むinfoTypes[]リスト。
これらの構成を設定すると、匿名化オペレーションによって PatientName タグを検査し、タグを PERSON_NAME infoType に照合し、タグの値を PERSON_NAME infoTypeに置き換えます。
PatientName タグの値表現(VR)は PN で、これは CleanTextTag オブジェクトでサポートされている VR の 1 つです。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "cleanTextTag": {} } ] }, "text": { "additionalTransformations": [ { "infoTypes": [ "PERSON_NAME" ], "replaceWithInfoTypeConfig": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "cleanTextTag": {} } ] }, "text": { "additionalTransformations": [ { "infoTypes": [ "PERSON_NAME" ], "replaceWithInfoTypeConfig": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "cleanTextTag": {} } ] }, "text": { "additionalTransformations": [ { "infoTypes": [ "PERSON_NAME" ], "replaceWithInfoTypeConfig": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
特に、
PatientNameタグの値が[PERSON_NAME]に設定されていることに注意してください。Original metadataCleanTextTagの実行後のメタデータ"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Ann Johnson" } ] }"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "[PERSON_NAME]" } ] }
UID を生成された UID に置き換える
次のサンプルは、RegenUidTag オブジェクトを使用して UID を新たに生成された UID に置き換える方法を示しています。RegenUidTag オブジェクトがサポートする VR は UI のみです。
デフォルトでは、サンプル メタデータの VR が UI のタグには、匿名化中に UID が生成されます。特定のタグの UID を生成する方法を示すため、サンプルでは次のオプションが設定されています。
ProfileTypeはKEEP_ALL列挙型に設定されます。これにより、DICOM メタデータが匿名化されなくなります。PrimaryIdsOptionがKEEPenum に設定されます。プライマリ ID(StudyInstanceUID、SeriesInstanceUID、SOPInstanceUID、MediaStorageSOPInstanceUIDなど)に変更はありません。
これらのオプションを設定すると、サンプルデータ内のプライマリ ID の UID は、新しく生成された値に置き換えられません。ただし、Action.queries[] 配列に SOPInstanceUID を追加すると、SOPInstanceUID タグ専用の新しい UID を生成できます。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "primaryIds": "KEEP" }, "actions": [ { "queries": [ "00080018" ], "regenUidTag": {} } ], "profileType": "KEEP_ALL_PROFILE" } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "primaryIds": "KEEP" }, "actions": [ { "queries": [ "00080018" ], "regenUidTag": {} } ], "profileType": "KEEP_ALL_PROFILE" } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "primaryIds": "KEEP" }, "actions": [ { "queries": [ "00080018" ], "regenUidTag": {} } ], "profileType": "KEEP_ALL_PROFILE" } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。
SOPInstanceUIDタグをAction.queries[]配列に指定したため、匿名化されたインスタンスには新しいインスタンス UID が含まれています。そのため、最初に新しいデータセットを検索して匿名化する必要があります。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、インスタンス UID がどのように変更されたかを示しています。
元のインスタンス メタデータ 匿名化されたインスタンス メタデータ インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
プライマリ ID のうち、
SOPInstanceUIDのみに新しく生成された UID があることに注意してください。
ネストされた Sequence 内のタグを再帰的に匿名化する
次のサンプルは、RecurseTag オブジェクトを使用して、Sequence 内のネストされた DICOM タグを再帰的に匿名化する方法を示しています。RecurseTag オブジェクトは SQ VR のみをサポートしており、これは Sequence の VR です。
SQ VR については、7.5 データセットのネストをご覧ください。
このページで提供されている DICOM サンプル インスタンスには、SQ VR を持つ DICOM タグは含まれていません。JSON メタデータと JPEG ファイルから DICOM インスタンスを作成する手順を参照して、SQ VR を含む疑似データを含む DICOM インスタンスを作成して保存することができます。次の手順で作成する DICOM インスタンスは、偽のデータを使用しており、RecurseTag の動作を示すことのみを目的としています。
次の DICOM メタデータを
instance.jsonという名前の JSON ファイルに保存します。メタデータにはPhysiciansReadingStudyIdentificationSequence(00081062)タグが含まれています。このタグにはSQVR があり、ネストされたPersonIdentificationCodeSequence(00401101)タグが 2 つ含まれています。ネストされたタグにもSQVR があり、それぞれに次のネストされたタグが含まれています。CodeValue(00080100)CodingSchemeDesignator(00080102)
[{ "00020010": { "vr": "UI", "Value": [ "1.2.840.10008.1.2.4.50" ] }, "00080005": { "vr": "CS", "Value": [ "ISO_IR 192" ] }, "00080016": { "vr": "UI", "Value": [ "1111111" ] }, "00080018": { "vr": "UI", "Value": [ "2222222" ] }, "0020000D": { "vr": "UI", "Value": [ "3333333" ] }, "0020000E": { "vr": "UI", "Value": [ "4444444" ] }, "00280002": { "vr": "US", "Value": [ 3 ] }, "00280004": { "vr": "CS", "Value": [ "YBR_FULL_422" ] }, "00280006": { "vr": "US", "Value": [ 0 ] }, "00280008": { "vr": "IS", "Value": [ 1 ] }, "00280010": { "vr": "US", "Value": [ 1024 ] }, "00280011": { "vr": "US", "Value": [ 1024 ] }, "00280100": { "vr": "US", "Value": [ 8 ] }, "00280101": { "vr": "US", "Value": [ 8 ] }, "00280102": { "vr": "US", "Value": [ 7 ] }, "00280103": { "vr": "US", "Value": [ 0 ] }, "7FE00010": { "vr": "OB", "BulkDataURI": "jpeg-image" }, "00081062": { "vr": "SQ", "Value": [ { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "CodeValue1" ] }, "00080102": { "vr": "SH", "Value": [ "CodingSchemeDesignator1" ] } } ] } }, { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "CodeValue2" ] }, "00080102": { "vr": "SH", "Value": [ "CodingSchemeDesignator2" ] } } ] } } ] } }]google.jpgファイルをローカルマシンにダウンロードします。Cloud Healthcare API DICOMweb API は、メタデータが有効である限り、JSON メタデータとペア設定された JPEG 画像を受け入れます。次のコマンドを実行して、画像の開始境界(JSON メタデータ用)、中央画像境界(JPEG 用)、終了境界を作成します。
echo -ne "--DICOMwebBoundary\r\nContent-Type: application/dicom+json\r\n\r\n" > opening.file echo -ne "\r\n--DICOMwebBoundary\r\nContent-Location: jpeg-image\r\nContent-Type: image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50\r\n\r\n" > middle.file echo -ne "\r\n--DICOMwebBoundary--" > closing.filegoogle.jpg画像を中央境界と終了境界内でラップします。Cloud Healthcare API に送信する出力ファイルは、multipart-request.fileと称されます。cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.filemultipart-request.fileファイルを保存します。REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DICOM_STORE_ID: ソース データセット内の DICOM ストアの ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \
--data-binary @multipart-request.file \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies"PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-InFile multipart-request.file `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
保存した DICOM インスタンスを匿名化するには、次の手順を行います。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
リクエストの本文(JSON):
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PhysiciansReadingStudyIdentificationSequence" ], "recurseTag": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PhysiciansReadingStudyIdentificationSequence" ], "recurseTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PhysiciansReadingStudyIdentificationSequence" ], "recurseTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。
元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)33333331.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314シリーズ UID( 0020000E)44444441.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347インスタンス UID( 00080018)22222221.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。ステップ 1 で新しいメタデータと元のメタデータを比較し、変換の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
特に、ネストされた
CodeValueタグとCodingSchemaDesignatorタグの値がPLACEHOLDERに設定されていることに注意してください。Original metadataRecurseTagの実行後のメタデータ{ "00081062": { "vr": "SQ", "Value": [ { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "CodeValue1" ] }, "00080102": { "vr": "SH", "Value": [ "CodingSchemeDesignator1" ] } } ] } }, { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": ["CodeValue2"] }, "00080102": { "vr": "SH", "Value": ["CodingSchemeDesignator2"] } } ] } } ] } }{ "00081062": { "vr": "SQ", "Value": [ { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "PLACEHOLDER" ] }, "00080102": { "vr": "SH", "Value": [ "PLACEHOLDER" ] } } ] } }, { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "PLACEHOLDER" ] }, "00080102": { "vr": "SH", "Value": [ "PLACEHOLDER" ] } } ] } } ] } }
DICOM ストアレベルでのデータの匿名化
上記のサンプルは、データセット レベルで DICOM データを匿名化する方法を示しています。このセクションでは、DICOM ストアレベルでデータを匿名化する方法について説明します。
データセット匿名化リクエストを DICOM ストア匿名化リクエストに変更するには、次の変更を行います。
- リクエスト本文の
destinationDatasetをdestinationStoreに置き換える - 宛先を指定するときに、
destinationStoreの値の末尾にdicomStores/DESTINATION_DICOM_STORE_IDを追加する - ソースデータの場所を指定するときに
dicomStores/SOURCE_DICOM_STORE_IDを追加する
次の例は、データセット レベルの匿名化リクエストと、DICOM ストア レベルの匿名化のリクエストを変更する方法を示しています。
データセット レベルの匿名化:
"destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID" ... "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
DICOM ストアレベルの匿名化:
"destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID" ... "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"
次のサンプルは、DICOM ストア内の DICOM インスタンスを匿名化し、匿名化されたデータを新しい DICOM ストアに書き込む方法を示しています。サンプルを実行する前に、宛先 DICOM ストア ID がすでに存在している必要があります。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID。匿名化オペレーションを実行する前に存在している必要があります。
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストア。匿名化オペレーションを実行する前に存在している必要があります。
リクエストの本文(JSON):
{ "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify" | Select-Object -Expand ContentOPERATION_IDの値をメモします。この値は次の手順で必要になります。projects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
DICOM ストアのサブセットの匿名化
DICOM ストア内のデータのサブセットは、フィルタを指定することで匿名化できます。
フィルタは、DicomFilterConfig オブジェクトの resourcePathsGcsUri フィールドの値として指定するフィルタ ファイルの形式をとります。フィルタ ファイルは Cloud Storage バケットに存在する必要があります。ローカルマシンやその他のソースに存在するフィルタ ファイルは指定できません。ファイルの場所は gs://BUCKET/PATH/TO/FILE の形式にする必要があります。
フィルタ ファイルを作成する
フィルタ ファイルは、匿名化する DICOM ファイルを定義します。ファイルは次のレベルでフィルタできます。
- スタディレベル
- シリーズ レベル
- インスタンス レベル
フィルタ ファイルは、匿名化するスタディ、シリーズ、またはインスタンスごとに 1 行で構成されます。各行には /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]] 形式を使用します。各行の末尾には改行文字(\n または \r\n)があります。
匿名化オペレーションの呼び出し時に渡したフィルタ ファイルでスタディ、シリーズ、またはインスタンスが指定されていない場合、そのスタディ、シリーズ、またはインスタンスは匿名化されず、宛先の DICOM ストアに存在しません。
パスの /studies/STUDY_UID の部分のみが必須です。つまり、/studies/STUDY_UID を指定してスタディを匿名化することも、/studies/STUDY_UID/series/SERIES_UID を指定してシリーズを匿名化することもできます。
次のフィルタ ファイルについて考えてみましょう。フィルタ ファイルにより、1 つのスタディ、2 つのシリーズ、3 つの個別のインスタンスが匿名化されます。
/studies/1.123.456.789
/studies/1.666.333.111/series/123.456\n
/studies/1.666.333.111/series/567.890\n
/studies/1.888.999.222/series/123.456/instances/111\n
/studies/1.888.999.222/series/123.456/instances/222\n
/studies/1.888.999.222/series/123.456/instances/333\n
BigQuery を使用してフィルタ ファイルを作成する
通常、フィルタ ファイルを作成するには、まず DICOM ストアから BigQuery にメタデータをエクスポートします。これにより、BigQuery を使用して、DICOM ストア内の DICOM データのスタディ UID、シリーズ UID、インスタンス UID を表示できます。そのうえで次の操作を行います。
目的のスタディ UID、シリーズ UID、インスタンス UID にクエリを実行します。たとえば、メタデータを BigQuery にエクスポートした後、次のクエリを実行してスタディ UID、シリーズ UID、インスタンス UID をフィルタ ファイル要件と互換性のある形式に連結できます。
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
クエリが大規模な結果セットを返す場合、クエリ結果を BigQuery の宛先テーブルに保存することで、新しいテーブルを実体化できます。
クエリ結果を宛先テーブルに保存したら、宛先テーブルの内容をファイルに保存して、Cloud Storage にエクスポートできます。この手順については、テーブルデータのエクスポートをご覧ください。エクスポートされるファイルはフィルタ ファイルです。エクスポート オペレーションでフィルタを指定するときは、Cloud Storage 内のフィルタ ファイルの場所を使用します。
フィルタ ファイルを手動で作成する
カスタム コンテンツを含むフィルタ ファイルを作成し、Cloud Storage バケットにアップロードできます。匿名化オペレーションでフィルタを指定するときは、Cloud Storage 内のフィルタ ファイルの場所を使用します。次のサンプルは、gcloud storage cp コマンドを使用してフィルタ ファイルを Cloud Storage バケットにアップロードする方法を示しています。
gcloud storage cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY
例:
gcloud storage cp /home/user/Desktop/filters.txt gs://my-bucket/my-directory
フィルタを使用する
フィルタ ファイルを構成したら、filterConfig オブジェクトの resourcePathsGcsUri フィールドに値として渡すことができます。
次のサンプルでは、DICOM ストアレベルでのデータの匿名化を展開していますが、匿名化する DICOM リソースを決定する Cloud Storage のフィルタ ファイルが指定されています。
REST
データセットを匿名化します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DICOM_STORE_ID: 匿名化するデータを含む DICOM ストアの ID
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの ID
- BUCKET/PATH/TO/FILE: Cloud Storage バケット内のフィルタ ファイルの場所
リクエストの本文(JSON):
{ "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } }リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスには、長時間実行オペレーションの識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでにかなりの時間がかかる場合に返されます。OPERATION_IDの値をメモします。この値は次の手順で必要になります。curl
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } } 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/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"PowerShell
リクエスト本文を
request.jsonという名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } } '@ | 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/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Contentprojects.locations.datasets.operations.getメソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- SOURCE_DATASET_ID: 匿名化するデータを含むデータセットの ID
- OPERATION_ID: 長時間実行オペレーションから返された ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のとおり出力されます。レスポンスにcurl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": trueが含まれている場合、長時間実行オペレーションは終了しています。匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ UID、シリーズ UID、インスタンス UID が設定されるため、まず匿名化されたインスタンスの新しいデータセットを検索する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
次の表は、スタディ UID、シリーズ UID、インスタンス UID がどのように変更されたかを示しています。元のインスタンス メタデータ 匿名化されたインスタンス メタデータ スタディ UID( 0020000D)2.25.705416166388191385680432936715593223551.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763シリーズ UID( 0020000E)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.5236941.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710インスタンス UID( 00080018)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.5236951.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029新しい値を使用して、インスタンスのメタデータを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- DESTINATION_DATASET_ID: 匿名化されたデータを書き込む宛先データセットの ID
- SOURCE_DATASET_LOCATION: ソース データセットのロケーション
- DESTINATION_DICOM_STORE_ID: 宛先データセット内の DICOM ストアの IDこれは、ソース データセット内の DICOM ストアの ID と同じです。
リクエストを送信するには、次のいずれかのオプションを選択します。
出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
DICOM 匿名化オペレーションのトラブルシューティング
DICOM 匿名化オペレーション中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。
オペレーション全体がエラーで返る場合は、長時間実行オペレーションのトラブルシューティングをご覧ください。