使用 DicomTagConfig 將 DICOM 資料去識別化

本頁面說明如何在 Cloud Healthcare API 中使用 v1beta1 DicomTagConfig 設定,在下列層級對 DICOM 執行個體中的私密資料去識別化:

本頁面也會說明如何在 DICOM 存放區層級去識別化資料時套用篩選器。

您可以透過舊版 v1 DicomConfig 物件或 v1beta1 DicomTagConfig 物件,設定 DICOM 去識別化作業。強烈建議您使用 DicomTagConfig

如果您已使用 DicomConfig 執行去識別化作業,建議您改用 DicomTagConfig。如要查看新功能摘要,請參閱「DicomTagConfig 中的新設定選項」。如需遷移操作說明,請參閱「遷移要求和回應以使用 DicomTagConfig」。

DicomTagConfig的新設定選項

使用情境去識別化功能將文字去識別化

您可以設定 DicomTagConfig.Options.CleanDescriptorsOption 物件,啟用非結構化中繼資料文字的脈絡去識別化功能。這個選項是以「清除描述元選項」為依據。指定 DicomTagConfig.Options.CleanDescriptorsOption 時,檢查期間會使用額外的 infoType,這可能會影響帳單費用。

使用 DicomTagConfig.Options.CleanDescriptorsOption 選項可轉換與已移除標記相符的任何非結構化中繼資料文字,藉此提升去識別化品質。舉例來說,假設您要對 X 光片去識別化,而 X 光片患者的姓氏也是名詞,例如「Wall」。如果執行個體中的任何中繼資料 (例如 StudyDescription 中的文字) 含有「Wall」一詞,系統就會轉換該文字。

CleanDescriptorsOption 選項會根據 DICOM 基本設定檔中標示為要移除的標記,遮蓋相符的上下文片語,前提是標記符合下列其中一個動作代碼:

  • D
  • Z
  • X
  • U

相符的內容比對片語會替換為權杖 [CTX]

您可以指定下列項目,設定要遮蓋哪些標記:

不過,DICOM Base Profile 中使用的標記無法變更。

使用情境去識別化功能遮蓋內建文字

您可以指定 TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 列舉,啟用圖片中內建文字的脈絡去識別化功能。這個選項是以「清除描述元選項」為依據。指定 TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 列舉時,檢查作業會使用額外的 infoType,這可能會影響帳單費用。

您可以透過下列方式指定 TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 列舉:

如果標記符合下列任一動作代碼,TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 選項會遮蓋與標記相符的烙印文字:

  • D
  • Z
  • X
  • U

如要啟用或停用內建文字的脈絡去識別化功能,只要使用 ProfileType 物件中的列舉即可,不需進行額外設定。不一定要指定列舉。

圖片去識別化中的其他 infoType

您可以使用資訊類型 (infoType),在對代碼執行去識別化作業時,指定要掃描的資料。infoType 是一種機密資料,如病患姓名、電子郵件地址、電話號碼、身分證號碼或信用卡號。

您可以在 DicomTagConfig.Options.ImageConfig 物件中設定下列欄位,決定在 DICOM 圖片去識別化期間要使用哪些 infoType:

只有在 DicomTagConfig.Options.ImageConfig.TextRedactionMode 設為下列任一值時,這些欄位才會生效:

遷移要求和回應,改用 DicomTagConfig

您可以使用 DicomTagConfig 設定 DICOM 去識別化,這個方法適用於 Cloud Healthcare API v1beta1,可做為舊版 DicomConfig 的替代方案。傳送要求時,不得同時包含 DicomConfigDicomTagConfig

以下各節將說明 DicomConfig 中的設定,以及如何將這些設定遷移至 DicomTagConfig

TagFilterProfileProfileType

DicomConfig TagFilterProfile 物件替換為 DicomTagConfig ProfileType 物件。ProfileType 提供與 TagFilterProfileType 相同的四個設定檔。

下列範例說明如何將要求從使用 TagFilterProfile 遷移至使用 ProfileType

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

keepListremoveList

DicomConfigkeepListremoveList 欄位已無法在「DicomTagConfig」中使用。如果您使用 keepListremoveList 指定要保留或移除的標記,而不是使用設定檔,則必須遷移至新的 Action 物件,指定標記行為。Action 物件提供其他轉換代碼的選項。

下列範例說明如何將要求從使用 keepList 遷移至使用 Action.keepTag。要求指定在去識別化作業期間保留 PatientID 標記的值。

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

合併保留清單、移除清單和設定檔

DicomConfig 物件中,您可以根據保留清單、移除清單和設定檔,決定要保留或移除資料。這些選項互斥。

使用 DicomTagConfig 物件時,您可以同時在 Action 物件中指定要保留和移除的標記,並在 ProfileType 中指定設定檔,藉此合併這些選項。

Action 物件中設定的選項會覆寫 ProfileType 設定檔中設定的選項。Action 物件中的選項會按照要求中提供的順序套用。

skipIdRedactionObjects.primaryIds

DicomConfig 物件中的 skipIdRedaction 欄位替換為 DicomTagConfig 物件中的 primaryIds 欄位。primaryIds 欄位位於 Options 物件中,包含 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.ImageConfigDicomTagConfig.Options.ImageConfig

DeidentifyConfig.ImageConfig 物件替換為 DicomTagConfig.Options.ImageConfig 物件。ImageConfig 物件中的選項在這兩個版本中都相同。

以下範例說明如何將要求從使用 DeidentifyConfig.image 中的 ImageConfig 遷移至使用 DeidentifyConfig.DicomTagConfig.Options.cleanImage 中的 ImageConfig。要求指定在去識別化作業期間,遮蓋圖片中的所有文字:

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

去識別化總覽

資料集層級去識別化

如要在資料集層級將 DICOM 資料去識別化,請呼叫 datasets.deidentify 方法。datasets.deidentify 方法包含下列元件:

  • 來源資料集:包含 DICOM 儲存庫的資料集,其中有一或多個含有私密資料的執行個體。呼叫 datasets.deidentify 方法時,系統會對資料集中所有 DICOM 儲存庫中的所有執行個體進行去識別化。
  • 目的地資料集:去識別化不會影響原始資料集或其資料。而是將原始資料的去識別化副本寫入新的資料集 (稱為「目的地資料集」)
  • 去識別化內容:指定如何處理資料集中 DICOM 資料的設定參數。您可以設定 DICOM 去識別化,透過在 DeidentifyConfig 物件中指定這些參數,將 DICOM 執行個體中繼資料 (使用標記關鍵字) 或 DICOM 圖片中的內建文字去識別化。

本指南中的大多數範例,都會說明如何在資料集層級將 DICOM 資料去識別化。

DICOM 儲存庫層級去識別化

在 DICOM 儲存庫層級將 DICOM 資料去識別化,可讓您進一步控管要將哪些資料去識別化。舉例來說,如果資料集有多個 DICOM 儲存庫,您可以根據儲存庫中的資料類型,對每個 DICOM 儲存庫進行去識別化。

如要將 DICOM 儲存庫中的 DICOM 資料去識別化,請呼叫 dicomStores.deidentify 方法。dicomStores.deidentify 方法包含下列元件:

  • 來源 DICOM 儲存庫:包含一或多個含有私密資料的執行個體。呼叫 dicomStores.deidentify 作業時,系統會將 DICOM 儲存庫中的所有執行個體去識別化。
  • 目的地 DICOM 儲存庫:去識別化不會影響原始 DICOM 儲存庫或其資料。而是將原始資料的去識別化副本寫入目標 DICOM 儲存庫。目的地 DICOM 儲存庫必須已存在。
  • 要將哪些內容去識別化:指定如何處理 DICOM 儲存庫的設定參數。您可以設定 DICOM 去識別化功能,在 DeidentifyConfig 物件中指定這些參數,藉此將 DICOM 執行個體中繼資料 (使用標記關鍵字) 或 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 物件遮蓋文字。

遮蓋所有文字

下列範例說明如何將 TextRedactionMode 設為 REDACT_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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

使用 REDACT_ALL_TEXT 匿名化圖片後,圖片會顯示如下。請注意,圖片底部的所有內建文字都已經過編輯。

圖 1. 使用 REDACT_ALL_TEXT 去識別化後的 DICOM 執行個體。

使用「清除描述符」選項遮蓋機密文字

下列範例說明如何透過將 TextRedactionMode 設為 REDACT_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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

使用 REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 匿名化圖片後,圖片會顯示如下。請注意,圖片底部的內建文字並未完全經過修訂。系統仍會顯示 Female 文字,因為 PatientSex (0010,0040) 不是預設 DICOM infoType

圖 2. 使用 REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS 去識別化後的 DICOM 執行個體。

將 DICOM 標記去識別化

您可以根據 DICOM 中繼資料中的標記關鍵字,將 DICOM 執行個體去識別化。

DicomTagConfig Action 物件提供下列標記篩選方法:

您可以將每個 Action 選項指定為 DICOM 標記 ID、名稱或值表示法 (VR) 的清單,然後選項會對清單中的標記執行動作。您無法在標記清單中指定多個 Action 選項。

每個 Action 物件都會提供 queries[] 清單,您可以在其中指定代碼清單。系統支援下列代碼格式:

  • 代碼 ID,例如 "00100010"
  • 標記名稱,例如 "PatientName"
  • 值表示法 (VR),例如 "PN"

queries[] 清單中可提供的標記數量沒有限制。 不過,每個標記只能執行單一 Action 選項。 如要指定不同標記,並對這些標記執行不同的 Action 選項,請指定多個 Action 物件。

保留標記

如要避免系統遮蓋標記值,請在 DicomTagConfig 物件的 KeepTag 物件中指定標記。

使用 KeepTag 物件時,如要產生有效的 DICOM 物件,請在 ProfileType 物件中指定 MINIMAL_KEEP_LIST_PROFILEDEIDENTIFY_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,而 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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

移除標記

下列範例說明如何使用 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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

刪除標記

下列範例說明如何使用 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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

將標記重設為預留位置值

下列範例說明如何使用 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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

    請特別注意,PatientName 標記的值已設為 PLACEHOLDER

    Original metadata執行 ResetTag 後的中繼資料
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "PLACEHOLDER"
        }
      ]
    }

檢查及轉換代碼中的機密文字

下列範例說明如何使用 CleanTextTag 物件檢查代碼,並根據 TextConfig 物件中的設定轉換代碼的值。

在這些範例中,Actions 物件會設定下列選項:

  • CleanTextTag 物件。
  • 包含 PatientName DICOM 標記的 queries[] 清單。

下列選項是在 TextConfig 物件中設定:

設定這些設定後,去識別化作業會檢查 PatientName 標記、將標記與 PERSON_NAME infoType 比對,並將標記的值替換為 PERSON_NAME infoType。 PatientName 標記的值表示法 (VR) 為 PN,這是 CleanTextTag 物件中支援的 VR 之一。

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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

    請特別注意,PatientName 標記的值已設為 [PERSON_NAME]

    Original metadata執行 CleanTextTag 後的中繼資料
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "[PERSON_NAME]"
        }
      ]
    }

將 UID 替換為產生的 UID

下列範例說明如何使用 RegenUidTag 物件,將 UID 替換為新產生的 UID。RegenUidTag 物件支援的唯一 VR 是 UI

根據預設,範例中繼資料中 VR 為 UI 的每個標記,都會在去識別化期間產生 UID。為說明如何為特定標記產生 UID,範例中設定了下列選項:

  • ProfileType 設為 KEEP_ALL 列舉,可防止任何 DICOM 中繼資料去識別化。

  • PrimaryIdsOption 設為 KEEP 列舉,主要 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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "done": true,表示長時間執行的作業已完成。

  3. 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。由於您在 Action.queries[] 陣列中指定了 SOPInstanceUID 標記,去識別化執行個體會有新的執行個體 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

    請注意,在主要 ID 中,只有 SOPInstanceUID 具有新產生的 UID。

以遞迴方式將巢狀 Sequence 中的標記去識別化

下列範例說明如何使用 RecurseTag 物件,以遞迴方式將 Sequence 中的巢狀 DICOM 標記去識別化。RecurseTag 物件僅支援 SQ VR,也就是 Sequence 的 VR。

如需 SQ VR 的相關資訊,請參閱「7.5 資料集巢狀結構」。

這個頁面提供的 DICOM 範例執行個體不含任何具有 SQ VR 的 DICOM 標記。您可以建立並儲存含有虛假資料的 DICOM 例項,其中包含 SQ VR,方法是完成下列步驟 (根據「從 JSON 中繼資料和 JPEG 檔案建立 DICOM 例項」中的操作說明)。您在下列步驟中建立的 DICOM 執行個體會使用偽造資料,僅用於說明 RecurseTag 的行為。

  1. 將下列 DICOM 中繼資料儲存為名為 instance.json 的 JSON 檔案。中繼資料包含 PhysiciansReadingStudyIdentificationSequence (00081062) 標記。這個標記具有 SQ VR,並包含兩個巢狀 PersonIdentificationCodeSequence (00401101) 標記。巢狀標記也有 SQ VR,且每個標記都包含下列巢狀標記:

    • CodeValue (00080100)
    • CodingSchemeDesignator (00080102)
    [{
      "00020010": {
        "vr": "UI",
        "Value": [
          "1.2.840.10008.1.2.4.50"
        ]
      },
      "00080005": {
        "vr": "CS",
        "Value": [
          "ISO_IR 192"
        ]
      },
      "00080016": {
        "vr": "UI",
        "Value": [
          "1111111"
        ]
      },
      "00080018": {
        "vr": "UI",
        "Value": [
          "2222222"
        ]
      },
      "0020000D": {
        "vr": "UI",
        "Value": [
          "3333333"
        ]
      },
      "0020000E": {
        "vr": "UI",
        "Value": [
          "4444444"
        ]
      },
      "00280002": {
        "vr": "US",
        "Value": [
          3
        ]
      },
      "00280004": {
        "vr": "CS",
        "Value": [
          "YBR_FULL_422"
        ]
      },
      "00280006": {
        "vr": "US",
        "Value": [
          0
        ]
      },
      "00280008": {
        "vr": "IS",
        "Value": [
          1
        ]
      },
      "00280010": {
        "vr": "US",
        "Value": [
          1024
        ]
      },
      "00280011": {
        "vr": "US",
        "Value": [
          1024
        ]
      },
      "00280100": {
        "vr": "US",
        "Value": [
          8
        ]
      },
      "00280101": {
        "vr": "US",
        "Value": [
          8
        ]
      },
      "00280102": {
        "vr": "US",
        "Value": [
          7
        ]
      },
      "00280103": {
        "vr": "US",
        "Value": [
          0
        ]
      },
      "7FE00010": {
        "vr": "OB",
        "BulkDataURI": "jpeg-image"
      },
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue1"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator1"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue2"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator2"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }]
    
  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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與步驟 1 中的原始中繼資料,瞭解轉換效果。

    請特別注意,巢狀 CodeValueCodingSchemaDesignator 標記的值已設為 PLACEHOLDER

    Original metadata執行 RecurseTag 後的中繼資料
    {
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue1"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator1"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue2"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator2"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }
    {
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }

將 DICOM 存放區層級資料去識別化

上述範例說明如何將資料集層級的 DICOM 資料去識別化。 本節說明如何將 DICOM 存放區層級資料去識別化。

如要將資料集去識別化要求變更為 DICOM 儲存庫去識別化要求,請進行下列變更:

  • 將要求主體中的 destinationDataset 替換為 destinationStore
  • 指定目的地時,在 destinationStore 中值的結尾新增 dicomStores/DESTINATION_DICOM_STORE_ID
  • 指定來源資料位置時,請加入 dicomStores/SOURCE_DICOM_STORE_ID

下列範例顯示資料集層級的去識別化要求,以及如何修改 DICOM 存放區層級的去識別化要求:

資料集層級去識別化:

"destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID"
...
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

DICOM 儲存庫層級去識別化:

"destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID"
...
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"

下列範例說明如何將 DICOM 儲存庫中的 DICOM 執行個體去識別化, 並將去識別化資料寫入新的 DICOM 儲存庫。 執行範例前,目的地 DICOM 儲存庫 ID 必須已存在。

REST

  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) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

將 DICOM 儲存庫的子集去識別化

您可以指定篩選器,將 DICOM 存放區中的部分資料去識別化。

篩選條件會採用篩選條件檔案的形式,您可以在 DicomFilterConfig 物件中,將篩選條件檔案指定為 resourcePathsGcsUri 欄位的值。篩選器檔案必須位於 Cloud Storage bucket 中,您無法指定本機或其他來源的篩選器檔案。檔案位置的格式必須為 gs://BUCKET/PATH/TO/FILE

建立篩選器檔案

篩選器檔案會定義要將哪些 DICOM 檔案去識別化。 您可以依下列層級篩選檔案:

  • 研究層級
  • 在影集層級
  • 在執行個體層級

篩選器檔案的每一行代表您要匿名處理的研究、序列或執行個體。每行都採用 /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 來去識別序列。

請參考下列篩選器檔案。篩選器檔案會導致一項研究、兩個序列和三個個別例項去識別化:

/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。接著,你可以執行下列操作:

  1. 查詢您感興趣的研究、系列和執行個體 UID。 舉例來說,將中繼資料匯出至 BigQuery 後,您可以執行下列查詢,將研究、系列和例項 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 儲存庫層級資料去識別化的內容,但會提供 Cloud Storage 中的篩選器檔案,以判斷要將哪些 DICOM 資源去識別化。

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
    輸出內容如下所示。回應會包含長時間執行作業的 ID。 如果方法呼叫可能需要大量時間才能完成,系統就會傳回長時間執行的作業。請記下 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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容如下所示。如果回應包含 "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

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」

    輸出內容會包含新的中繼資料。您可以比較新中繼資料與原始中繼資料,瞭解轉換效果。

排解 DICOM 去識別化作業問題

如果 DICOM 去識別化作業期間發生錯誤,系統會將錯誤記錄至 Cloud Logging。詳情請參閱「查看 Cloud Logging 中的錯誤記錄檔」。

如果整個作業傳回錯誤,請參閱「排解長期執行的作業問題」。