DicomTagConfig を使用して DICOM データを匿名化する

このページでは、Cloud Healthcare API の v1beta1 DicomTagConfig 構成を使用して、次のレベルで 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 ベース プロファイルで削除対象としてマークされたタグに一致するコンテキストに基づく語句を秘匿化します。

  • D
  • Z
  • X
  • U

一致したコンテキストに基づく語句は、トークン [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 の列挙型は次の方法で指定できます。

TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS オプションでは、タグが次のいずれかのアクション コードに一致する限り、DICOM ベース プロファイルで削除対象としてマークされたタグに一致する焼き付きテキストが秘匿化されます。

  • D
  • Z
  • X
  • U

焼き付きテキストをコンテキストに応じて匿名化するには、ProfileType オブジェクトの列挙型を使用して焼き付きテキストを有効または無効にする以外に追加の構成はありません。列挙型の指定は必須ではありません。

画像の匿名化に関するその他の infoType

情報タイプ(infoType)を使用して、タグの匿名化を実行するときにスキャンするデータを指定できます。infoType は、患者の名前、メールアドレス、電話番号、識別番号、クレジット カード番号などの機密データのタイプです。

DicomTagConfig.Options.ImageConfig オブジェクトで次のフィールドを構成して、DICOM 画像の匿名化時に使用する infoType を決定できます。

これらのフィールドは、DicomTagConfig.Options.ImageConfig.TextRedactionMode が次のいずれかの値に設定されている場合にのみ有効になります。

DicomTagConfig を使用するようにリクエストとレスポンスを移行する

DICOM 匿名化は DicomTagConfig を使用して構成できます。これは Cloud Healthcare API v1beta1 で使用でき、以前の DicomConfig の代わりに使用できます。リクエストを送信する際に、DicomConfigDicomTagConfig の両方を含めることはできません。

以降のセクションでは、DicomConfig の構成と、それを DicomTagConfig に移行する方法について説明します。

TagFilterProfile から ProfileType

DicomConfig TagFilterProfile オブジェクトを DicomTagConfig ProfileType オブジェクトに置き換えます。TagFilterProfileType の 4 つのプロファイルは、ProfileType でも使用できます。

次の例は、TagFilterProfile の使用から ProfileType の使用にリクエストを移行する方法を示しています。

DicomConfigDicomTagConfig
"config": {
  "dicom": {
    "filterProfile": enum(TagFilterProfile)
  }
}
"config": {
  "dicomTagConfig": {
    "profileType": enum(ProfileType)
  }
}

keepListremoveList

DicomTagConfigDicomConfig keepList フィールドと removeList フィールドは使用できなくなりました。使用していた場合keepListおよびremoveListプロファイルを使用する代わりに保持または削除するタグを指定するには、新しいActionタグの動作を指定するオブジェクトに移行する必要があります。Action オブジェクトには、タグを変換するための追加オプションが用意されています。

次の例は、keepList の使用から Action.keepTag の使用にリクエストを移行する方法を示しています。このリクエストでは、匿名化オペレーション中に PatientID タグの値が保持されることを指定しています。

DicomConfigDicomTagConfig
"config": {
  "dicom": {
    "keepList": {
      "tags": [
        "PatientID"
      ]
    }
  }
}
"config": {
  "dicomTagConfig": {
    "actions": [
      {
        "queries": [
          "PatientID"
        ],
        "keepTag": {}
      }
    ]
  }
}

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 の値が保持されることを指定しています。

DicomConfigDicomTagConfig
"config": {
  "dicom": {
    "skipIdRedaction": true
  }
}
"config": {
  "dicomTagConfig": {
    "options": {
      "primaryIds": "KEEP"
    }
  }
}

DeidentifyConfig.ImageConfig から DicomTagConfig.Options.ImageConfig

DeidentifyConfig.ImageConfig オブジェクトを DicomTagConfig.Options.ImageConfig オブジェクトに置き換えます。ImageConfig オブジェクトのオプションは、どちらのバージョンでも同じです。

次の例は、DeidentifyConfig.imageImageConfig から DeidentifyConfig.DicomTagConfig.Options.cleanImageImageConfig にリクエストを移行する方法を示しています。このリクエストでは、匿名化オペレーション中に画像内のすべてのテキストを秘匿化するように指定しています。

DeidentifyConfig.imageDeidentifyConfig.DicomTagConfig.Options.cleanImage
"config": {
  "image": {
    "textRedactionMode": "REDACT_ALL_TEXT"
  }
}
"config": {
  "dicomTagConfig": {
    "options": {
      "cleanImage": {
        "textRedactionMode": "REDACT_ALL_TEXT"
      }
    }
  }
}

匿名化の概要

データセット レベルの匿名化

データセット レベルで 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 インスタンス内の画像とインスタンスのメタデータについて説明します。

サンプル画像

このページの一部のサンプルには、匿名化された画像の出力が含まれています。各例では、入力として以下の元画像を使用しています。各匿名化オペレーションからの出力イメージをこの元のイメージと比較して、オペレーションの効果を確認できます。

xray_original

サンプル メタデータ

このページのサンプルのほとんどには、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 内で、含めるまたは除外する infoType と、TextRedactionMode オブジェクトを使用してテキストを秘匿化する方法を指定できます。

すべてのテキストをリダクションします。

次のサンプルでは、TextRedactionModeREDACT_ALL_TEXT に設定して DICOM インスタンスを匿名化する方法を示しています。この構成では、画像内の焼き付きテキストがすべて秘匿化されます。

REST

  1. データセットを匿名化する。

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

    • 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"
            }
          }
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。

REDACT_ALL_TEXT を使用して画像を匿名化すると、画像は次のようになります。画像の下部にある焼き付きテキストがすべて秘匿化されています。

図 1. REDACT_ALL_TEXT を使用した匿名化後の DICOM インスタンス。

Clean Descriptors オプションを使用して機密テキストを秘匿化する

次のサンプルでは、TextRedactionModeREDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS に設定して DICOM インスタンスを匿名化する方法を示しています。

CleanDescriptorsOption オプションの詳細については、コンテキストに応じた匿名化を使用してテキストを匿名化するをご覧ください。

REST

  1. データセットを匿名化する。

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

    • 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"
            }
          }
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。

REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS を使用して画像を匿名化すると、画像は次のようになります。画像の下部にある焼き付きテキストがすべて秘匿化されているわけではありません。PatientSex (0010,0040)デフォルトの DICOM infoType のいずれでもないため、テキスト Female は引き続き表示されます。

図 2. 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 になります。

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • TransferSyntaxUID
  • MediaStorageSOPInstanceUID
  • MediaStorageSOPClassUID
  • PixelData
  • Rows
  • Columns
  • SamplesPerPixel
  • BitsAllocated
  • BitsStored
  • Highbit
  • PhotometricInterpretation
  • PixelRepresentation
  • NumberOfFrames
  • PlanarConfiguration
  • PixelAspectRatio
  • SmallestImagePixelValue
  • LargestImagePixelValue
  • RedPaletteColorLookupTableDescriptor
  • GreenPaletteColorLookupTableDescriptor
  • BluePaletteColorLookupTableDescriptor
  • RedPaletteColorLookupTableData
  • GreenPaletteColorLookupTableData
  • BluePaletteColorLookupTableData
  • ICCProfile
  • ColorSpace
  • WindowCenter
  • WindowWidth
  • VOILUTFunction

ただし、一部のタグの値は再生成されます。つまり、値は確定的変換によって別の値に置き換えられます。詳細については、DICOM 標準の UID オプションの保持をご覧ください。

StudyInstanceUIDSeriesInstanceUIDSOPInstanceUIDMediaStorageSOPInstanceUID の値は「プライマリ ID」と呼ばれます。プライマリ ID の変換方法を決定するには、PrimaryIdsOption に値を指定します。

次のサンプルは、KeepTag オブジェクトを使用して、匿名化中に特定のタグの値を変更しない方法を示しています。PatientName タグは queries[] リストに追加されているため、匿名化中に PatientName 値は秘匿化されません。

サンプルでは PrimaryIdsOption が指定されていないため、primaryIds フィールドはデフォルトで PRIMARY_IDS_OPTION_UNSPECIFIED になり、これはデフォルトで ProfileType の値になります。ProfileType も指定されていないため、profileType フィールドはデフォルトの PROFILE_TYPE_UNSPECIFIED になり、属性の機密性に関する基本的なプロファイル(DICOM 標準エディション 2018e)に基づいてタグが削除されます。

REST

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。

タグを削除

次のサンプルは、RemoveTag オブジェクトを使用して、匿名化中に特定のタグの値を削除する方法を示しています。削除されたタグは空の値に置き換えられます。

次のサンプルでは、PatientName タグが queries[] リストに追加されているため、匿名化中にその値は空の値に置き換えられます。

REST

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。

タグを削除

次のサンプルは、DeleteTag オブジェクトを使用して匿名化中に特定のタグを削除する方法を示しています。

REST

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。

タグをプレースホルダの値にリセットする

次のサンプルは、ResetTag オブジェクトを使用して、匿名化中にタグの値を文字列 PLACEHOLDER に設定する方法を示しています。

REST

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API 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 オブジェクト。
  • PatientName DICOM タグを含む queries[] リスト。

TextConfig オブジェクトには次のオプションが設定されます。

  • 特定の infoType に一致するテキストを変換する InfoTypeTransformation オブジェクト。
  • 一致するテキストを infoType の名前に置き換える ReplaceWithInfoTypeConfig オブジェクト。
  • PERSON_NAME infoType を含む infoTypes[] リスト。

これらの構成を設定すると、匿名化オペレーションによって PatientName タグを検査し、タグを PERSON_NAME infoType に照合し、タグの値を PERSON_NAME infoTypeに置き換えます。 PatientName タグの値表現(VR)は PN です。これは、CleanTextTag オブジェクトでサポートされている VR の 1 つです。

REST

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API 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 を生成する方法を示すため、サンプルでは次のオプションが設定されています。

  • ProfileTypeKEEP_ALL 列挙型に設定されます。これにより、DICOM メタデータが匿名化されなくなります。

  • PrimaryIdsOptionKEEP enum に設定されます。プライマリ ID(StudyInstanceUIDSeriesInstanceUIDSOPInstanceUIDMediaStorageSOPInstanceUID など)に変更はありません。

これらのオプションを設定すると、サンプルデータ内のプライマリ ID UID はすべて、新しく生成された値に置き換えられません。ただし、Action.queries[] 配列に SOPInstanceUID を追加すると、SOPInstanceUID タグ専用の新しい UID を生成できます。

REST

  1. データセットを匿名化する。

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

    • 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"
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。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.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API 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 の動作を示すことを目的としています。

  1. 次の DICOM メタデータを instance.json という名前の JSON ファイルに保存します。メタデータには PhysiciansReadingStudyIdentificationSequence00081062)タグが含まれています。このタグには SQ VR があり、ネストされた PersonIdentificationCodeSequence00401101)タグが 2 つ含まれています。ネストされたタグにも SQ VR があり、それぞれに次のネストされたタグが含まれています。

    • CodeValue00080100
    • CodingSchemeDesignator00080102
    [{
      "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"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }]
    
  2. google.jpg ファイルをローカルマシンにダウンロードします。Cloud Healthcare API DICOMweb API は、メタデータが有効であれば、JSON メタデータとペア設定された JPEG 画像を受け入れます。

  3. 次のコマンドを実行して、画像の開始境界(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.file
    
  4. google.jpg 画像を中央境界と終了境界内でラップします。Cloud Healthcare API に送信する出力ファイルは、multipart-request.file と称されます。

    cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
    
  5. multipart-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

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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 3333333 1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314
    シリーズ UID(0020000E 4444444 1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347
    インスタンス UID(00080018 2222222 1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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.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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。ステップ 1 で新しいメタデータと元のメタデータを比較し、変換の効果を確認できます。

    特に、ネストされた 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 ストア匿名化リクエストに変更するには、次の変更を行います。

  • リクエスト本文の destinationDatasetdestinationStore に置き換える
  • 宛先を指定するときに、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

  1. データセットを匿名化する。

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

    • 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": {}
            }
          ]
        }
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API 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 を表示できます。そのうえで次の操作を行います。

  1. 目的のスタディ UID、シリーズ UID、インスタンス UID にクエリを実行します。たとえば、メタデータを BigQuery にエクスポートした後、次のクエリを実行してスタディ UID、シリーズ UID、インスタンス UID をフィルタ ファイル要件と互換性のある形式に連結できます。

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. クエリが大規模な結果セットを返す場合、クエリ結果を BigQuery の宛先テーブルに保存することで、新しいテーブルを実体化できます。

  3. クエリ結果を宛先テーブルに保存したら、宛先テーブルの内容をファイルに保存して、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

  1. データセットを匿名化する。

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

    • 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"
      }
    }
    

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

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

  2. 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 Content

    API Explorer

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

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

  3. 匿名化が成功したら、匿名化されたインスタンスのメタデータを取得して、その変更内容を確認できます。匿名化されたインスタンスには新しいスタディ 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.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    シリーズ UID(0020000E 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    インスタンス UID(00080018 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. 新しい値を使用して、インスタンスのメタデータを取得します。

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

    • 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 Content

    API Explorer

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

    出力には新しいメタデータが含まれます。新しいメタデータと元のメタデータを比較し、変更の効果を確認できます。

DICOM 匿名化オペレーションのトラブルシューティング

DICOM 匿名化オペレーション中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。

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