Anonimizza i dati DICOM utilizzando DicomTagConfig

Questa pagina spiega come utilizzare la configurazione DicomTagConfig v1beta1 nell'API Cloud Healthcare per anonimizzare i dati sensibili nelle istanze DICOM ai seguenti livelli:

Questa pagina spiega anche come applicare i filtri durante l'anonimizzazione dei dati a livello di archivio DICOM.

Puoi configurare le operazioni di anonimizzazione DICOM utilizzando l'oggetto legacy v1 DicomConfig o l'oggetto v1beta1 DicomTagConfig. Ti consigliamo vivamente di utilizzare DicomTagConfig.

Se utilizzi già DicomConfig per le operazioni di anonimizzazione, ti consigliamo di eseguire la migrazione a DicomTagConfig. Per un riepilogo delle nuove funzionalità, vedi Nuove opzioni di configurazione in DicomTagConfig. Per istruzioni su come eseguire la migrazione, consulta Eseguire la migrazione di richieste e risposte per utilizzare DicomTagConfig.

Nuove opzioni di configurazione in DicomTagConfig

Anonimizza il testo con l'anonimizzazione contestuale

Puoi configurare l'oggetto DicomTagConfig.Options.CleanDescriptorsOption per attivare l'anonimizzazione contestuale del testo dei metadati non strutturati. Questa opzione si basa sull'opzione Descrittori puliti. Quando specifichi DicomTagConfig.Options.CleanDescriptorsOption, durante l'ispezione viene utilizzato un infoType aggiuntivo, il che può influire sui costi di fatturazione.

L'utilizzo dell'opzione DicomTagConfig.Options.CleanDescriptorsOption trasforma qualsiasi testo di metadati non strutturato che corrisponde ai tag rimossi e, in questo modo, migliora la qualità della deidentificazione. Ad esempio, supponiamo che tu stia deidentificando una radiografia e che il paziente della radiografia abbia un cognome che è anche un sostantivo, come Wall. Se i metadati nell'istanza, ad esempio il testo in StudyDescription, contengono la parola Wall, il testo verrà trasformato.

L'opzione CleanDescriptorsOption redige le frasi contestuali che corrispondono a qualsiasi tag contrassegnato per la rimozione nel profilo di base DICOM, a condizione che i tag corrispondano a uno dei seguenti codici azione:

  • D
  • Z
  • X
  • U

Le frasi contestuali corrispondenti vengono sostituite con il token [CTX].

Puoi configurare i tag da oscurare specificando quanto segue:

  • Un'enumerazione nell'oggetto ProfileType. La specifica di un'enumerazione non è obbligatoria.
  • CleanTextTag filtra per tag specifici.

Tuttavia, i tag utilizzati nel profilo di base DICOM non possono essere modificati.

Oscurare il testo integrato con l'anonimizzazione contestuale

Puoi specificare l'enumerazione TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS per attivare la deidentificazione contestuale del testo incorporato in un'immagine. Questa opzione si basa sull'opzione Descrittori puliti. Quando specifichi l'enumerazione TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, durante l'ispezione viene utilizzato un infoType aggiuntivo, il che può influire sui costi di fatturazione.

Puoi specificare l'enumerazione TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS nei seguenti modi:

L'opzione TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS oscura il testo integrato che corrisponde a qualsiasi tag contrassegnato per la rimozione nel profilo di base DICOM a condizione che i tag corrispondano a uno dei seguenti codici di azione:

  • D
  • Z
  • X
  • U

Non è necessaria alcuna configurazione aggiuntiva per la deidentificazione contestuale del testo incorporato, se non l'attivazione o la disattivazione tramite un'enumerazione nell'oggetto ProfileType. La specifica di un'enumerazione non è obbligatoria.

InfoType aggiuntivi nell'anonimizzazione delle immagini

Puoi utilizzare i tipi di informazioni (infoType) per specificare i dati da cercare durante la deidentificazione dei tag. Un infoType è un tipo di dato sensibile, ad esempio il nome di un paziente, l'indirizzo email, il numero di telefono, il numero di identificazione o il numero di carta di credito.

Puoi configurare i seguenti campi nell'oggetto DicomTagConfig.Options.ImageConfig per determinare quali tipi di informazioni utilizzare durante l'anonimizzazione delle immagini DICOM:

Questi campi hanno effetto solo se DicomTagConfig.Options.ImageConfig.TextRedactionMode è impostato su uno dei seguenti valori:

Esegui la migrazione di richieste e risposte per utilizzare DicomTagConfig

Puoi configurare l'anonimizzazione DICOM utilizzando DicomTagConfig, disponibile nell'API Cloud Healthcare v1beta1 e alternativa all'utilizzo di DicomConfig legacy. Quando invii una richiesta, non puoi includere sia DicomConfig sia DicomTagConfig.

Le sezioni seguenti descrivono le configurazioni in DicomConfig e come migrarle a DicomTagConfig.

Da TagFilterProfile a ProfileType

Sostituisci l'oggetto DicomConfig TagFilterProfile con l'oggetto DicomTagConfig ProfileType. Gli stessi quattro profili in TagFilterProfileType sono disponibili in ProfileType.

L'esempio seguente mostra come eseguire la migrazione di una richiesta dall'utilizzo di TagFilterProfile all'utilizzo di ProfileType:

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

keepList e removeList

I campi DicomConfig keepList e removeList non sono più disponibili in DicomTagConfig. Se hai utilizzato keepList e removeList per specificare i tag da conservare o rimuovere anziché utilizzare un profilo, devi eseguire la migrazione al nuovo oggetto Action in cui specificare il comportamento dei tag. L'oggetto Action fornisce opzioni aggiuntive per trasformare i tag.

L'esempio seguente mostra come eseguire la migrazione di una richiesta dall'utilizzo di keepList all'utilizzo di Action.keepTag. La richiesta specifica che il valore del tag PatientID viene mantenuto durante l'operazione di deidentificazione.

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

Combinare elenchi di conservazione, elenchi di rimozione e profili

Nell'oggetto DicomConfig, puoi decidere se mantenere o rimuovere i dati in base a elenchi di conservazione, elenchi di rimozione e profili. Queste opzioni si escludono a vicenda.

Quando utilizzi l'oggetto DicomTagConfig, puoi combinare queste opzioni specificando i tag da conservare e rimuovere in un oggetto Action e specificando un profilo in ProfileType.

Le opzioni configurate nell'oggetto Action sostituiscono quelle configurate nel profilo ProfileType. Le opzioni nell'oggetto Action vengono applicate nell'ordine in cui sono fornite nella richiesta.

Da skipIdRedaction a Objects.primaryIds

Sostituisci il campo skipIdRedaction nell'oggetto DicomConfig con il campo primaryIds nell'oggetto DicomTagConfig. Il campo primaryIds, che si trova nell'oggetto Options, contiene un oggetto PrimaryIdsOption in cui specifichi uno dei seguenti enum:

  • PRIMARY_IDS_OPTION_UNSPECIFIED: comportamento predefinito quando non viene fornito alcun valore a PrimaryIdsOption. Il valore predefinito è l'opzione specificata in ProfileType.
  • KEEP: lascia invariati gli ID principali.
  • REGEN: rigenera gli ID primari.

L'esempio seguente mostra come eseguire la migrazione di una richiesta dall'utilizzo di skipIdRedaction all'utilizzo di Options.primaryIds. La richiesta specifica che i valori degli ID primari vengono mantenuti durante l'operazione di anonimizzazione:

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

Da DeidentifyConfig.ImageConfig a DicomTagConfig.Options.ImageConfig

Sostituisci l'oggetto DeidentifyConfig.ImageConfig con l'oggetto DicomTagConfig.Options.ImageConfig. Le opzioni nell'oggetto ImageConfig sono le stesse in entrambe le versioni.

L'esempio seguente mostra come eseguire la migrazione di una richiesta dall'utilizzo di un ImageConfig in DeidentifyConfig.image all'utilizzo di un ImageConfig in DeidentifyConfig.DicomTagConfig.Options.cleanImage. La richiesta specifica che tutto il testo di un'immagine deve essere oscurato durante l'operazione di anonimizzazione:

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

Panoramica dell'anonimizzazione

Anonimizzazione a livello di set di dati

Per anonimizzare i dati DICOM a livello di set di dati, chiama il metodo datasets.deidentify. Il metodo datasets.deidentify ha i seguenti componenti:

  • Il set di dati di origine: un set di dati contenente archivi DICOM con una o più istanze che includono dati sensibili. Quando chiami il metodo datasets.deidentify, vengono anonimizzate tutte le istanze di tutti gli archivi DICOM nel set di dati.
  • Il set di dati di destinazione: l'anonimizzazione non interessa il set di dati originale o i dati al suo interno. Le copie anonimizzate dei dati originali vengono invece scritte in un nuovo set di dati, chiamato set di dati di destinazione.
  • Che cosa anonimizzare: i parametri di configurazione che specificano come elaborare i dati DICOM nel set di dati. Puoi configurare l'anonimizzazione DICOM per anonimizzare i metadati delle istanze DICOM (utilizzando le parole chiave dei tag) o il testo incorporato nelle immagini DICOM specificando questi parametri in un oggetto DeidentifyConfig.

La maggior parte degli esempi in questa guida mostra come anonimizzare i dati DICOM a livello di set di dati.

Anonimizzazione a livello di archivio DICOM

L'anonimizzazione dei dati DICOM a livello di archivio DICOM ti consente di avere un maggiore controllo sui dati anonimizzati. Ad esempio, se hai un set di dati con più archivi DICOM, puoi anonimizzare ogni archivio DICOM in base al tipo di dati presenti nell'archivio.

Per anonimizzare i dati DICOM in un archivio DICOM, chiama il metodo dicomStores.deidentify. Il metodo dicomStores.deidentify ha i seguenti componenti:

  • L'archivio DICOM di origine: un archivio DICOM contenente una o più istanze che includono dati sensibili. Quando chiami l'operazione dicomStores.deidentify, vengono anonimizzate tutte le istanze nell'archivio DICOM.
  • L'archivio DICOM di destinazione: l'anonimizzazione non interessa l'archivio DICOM originale o i dati al suo interno. Le copie anonimizzate dei dati originali vengono invece scritte nell'archivio DICOM di destinazione. L'archivio DICOM di destinazione deve esistere già.
  • Che cosa anonimizzare: i parametri di configurazione che specificano come elaborare l'archivio DICOM. Puoi configurare l'anonimizzazione DICOM per anonimizzare i metadati delle istanze DICOM (utilizzando le parole chiave dei tag) o il testo incorporato nelle immagini DICOM specificando questi parametri in un oggetto DeidentifyConfig.

Per un esempio di come anonimizzare i dati DICOM a livello di archivio DICOM, consulta Anonimizzare i dati a livello di archivio DICOM.

Filtri

Quando anonimizzi i dati DICOM a livello di archivio DICOM, puoi anonimizzare un sottoinsieme dei dati nell'archivio DICOM configurando un file di filtro e specificandolo nella richiesta dicomStores.deidentify. Per un esempio, vedi Anonimizzare un sottoinsieme di un archivio DICOM.

Panoramica di Samples

Gli esempi di questa guida utilizzano una singola istanza DICOM denominata dicom_deid_instance_sample.dcm, ma puoi anche anonimizzare più istanze. Per utilizzare l'istanza DICOM di esempio negli esempi di questa pagina, scarica il file sul tuo computer locale e segui le istruzioni riportate in Archiviare dati DICOM per archiviarlo in un archivio DICOM.

Le sezioni riportate di seguito mostrano l'aspetto dell'immagine nell'istanza DICOM e i metadati nell'istanza.

Immagine di esempio

Alcuni esempi in questa pagina contengono un output dell'immagine deidentificata. Ogni campione utilizza la seguente immagine originale come input. Puoi confrontare l'immagine di output di ogni operazione di deidentificazione con questa immagine originale per vedere gli effetti dell'operazione:

xray_original

Metadati di esempio

La maggior parte degli esempi in questa pagina contiene un output dei metadati modificati nell'istanza DICOM. Ogni esempio utilizza i seguenti metadati originali come input. Puoi confrontare i metadati di output di ogni operazione di deidentificazione con i metadati originali per vedere gli effetti della deidentificazione:

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

Oscurare il testo integrato nelle immagini

Puoi anonimizzare il testo integrato nelle immagini DICOM utilizzando l'oggetto ImageConfig all'interno di un oggetto Action. All'interno di ImageConfig, puoi specificare quali infoType includere o escludere e come oscurare il testo utilizzando l'oggetto TextRedactionMode.

Oscura tutto il testo

Gli esempi riportati di seguito mostrano come anonimizzare un'istanza DICOM impostando TextRedactionMode su REDACT_ALL_TEXT. Questa configurazione oscura tutto il testo integrato nell'immagine.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_ALL_TEXT"
            }
          }
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    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

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Dopo aver rimosso i dati identificativi dall'immagine utilizzando REDACT_ALL_TEXT, l'immagine ha questo aspetto. Nota che tutto il testo incorporato nella parte inferiore dell'immagine è stato oscurato.

Figura 1. L'istanza DICOM dopo l'anonimizzazione utilizzando REDACT_ALL_TEXT.

Oscurare il testo sensibile con l'opzione Pulisci descrittori

Gli esempi riportati di seguito mostrano come anonimizzare un'istanza DICOM impostando TextRedactionMode su REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Per ulteriori informazioni sull'opzione CleanDescriptorsOption, vedi Anonimizzare il testo con l'anonimizzazione contestuale.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS"
            }
          }
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    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

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Dopo aver rimosso i dati identificativi dall'immagine utilizzando REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, l'immagine ha questo aspetto. Tieni presente che non tutto il testo incorporato nella parte inferiore dell'immagine è stato oscurato. Il testo Female viene ancora visualizzato perché PatientSex (0010,0040) non è uno degli infoType DICOM predefiniti.

Figura 2. L'istanza DICOM dopo l'anonimizzazione utilizzando REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Anonimizzare i tag DICOM

Puoi anonimizzare le istanze DICOM in base alle parole chiave dei tag nei metadati DICOM.

Nell'oggetto DicomTagConfig Action sono disponibili i seguenti metodi di filtro dei tag:

Specifichi ogni opzione Action come un elenco di ID tag DICOM, nomi o rappresentazioni di valori (VR), quindi l'opzione esegue un'azione sui tag nell'elenco. Non puoi specificare più di un'opzione Action in un elenco di tag.

Ogni oggetto Action fornisce un elenco queries[] in cui specifichi un elenco di tag. Sono supportati i seguenti formati di tag:

  • ID tag, ad esempio "00100010"
  • Nomi dei tag, ad esempio "PatientName"
  • Rappresentazioni di valori (VR), ad esempio "PN"

Non esiste un limite al numero di tag che possono essere forniti nell'elenco queries[]. Tuttavia, ogni tag può avere una sola opzione Action. Per specificare tag diversi a cui vengono applicate opzioni Action diverse, devi specificare più oggetti Action.

Mantieni i tag

Puoi impedire la redazione dei valori dei tag specificandoli in un oggetto KeepTag nell'oggetto DicomTagConfig.

Per produrre un oggetto DICOM valido durante l'utilizzo di un oggetto KeepTag, specifica i valori MINIMAL_KEEP_LIST_PROFILE o DEIDENTIFY_TAG_CONTENTS nell'oggetto ProfileType.

Se specifichi uno di questi profili, i seguenti tag vengono mantenuti automaticamente, garantendo che l'istanza DICOM anonimizzata sia DICOM valida:

  • 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

I valori di alcuni tag precedenti vengono rigenerati, il che significa che i valori vengono sostituiti con un valore diverso tramite una trasformazione deterministica. Per saperne di più, consulta l'opzione Retain UIDs nello standard DICOM.

I valori di StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID e MediaStorageSOPInstanceUID sono chiamati "ID principali". Per determinare come vengono trasformati gli ID principali, specifica un valore in PrimaryIdsOption.

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto KeepTag per mantenere invariati i valori di tag specifici durante l'anonimizzazione. Il tag PatientName viene aggiunto all'elenco queries[], quindi il valore PatientName non viene oscurato durante l'anonimizzazione.

Poiché PrimaryIdsOption non è specificato nell'esempio, il campo primaryIds è impostato sul valore predefinito PRIMARY_IDS_OPTION_UNSPECIFIED, che a sua volta è impostato sul valore in ProfileType. Poiché non è specificato neanche ProfileType, il campo profileType ha come valore predefinito PROFILE_TYPE_UNSPECIFIED, che rimuove i tag in base al profilo di base di riservatezza attributo (DICOM Standard Edition 2018e).

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    EOF

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Rimuovi i tag

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto RemoveTag per rimuovere i valori di tag specifici durante l'anonimizzazione. Un tag rimosso viene sostituito da un valore vuoto.

Nei seguenti esempi, il tag PatientName viene aggiunto all'elenco queries[], quindi il suo valore viene sostituito con un valore vuoto durante la deidentificazione.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                 "PatientName"
              ],
              "removeTag": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                 "PatientName"
              ],
              "removeTag": {}
            }
          ]
        }
      }
    }
    EOF

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Elimina tag

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto DeleteTag per eliminare tag specifici durante l'anonimizzazione.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "deleteTag": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "deleteTag": {}
            }
          ]
        }
      }
    }
    EOF

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Reimpostare i tag su un valore segnaposto

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto ResetTag per impostare il valore dei tag sulla stringa PLACEHOLDER durante l'anonimizzazione.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "resetTag": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "resetTag": {}
            }
          ]
        }
      }
    }
    EOF

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

    In particolare, nota che il valore del tag PatientName è impostato su PLACEHOLDER:

    Original metadataMetadati dopo l'esecuzione di ResetTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "PLACEHOLDER"
        }
      ]
    }

Ispezionare e trasformare il testo sensibile nei tag

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto CleanTextTag per esaminare i tag e trasformare i valori dei tag in base alla configurazione nell'oggetto TextConfig.

In questi esempi, nell'oggetto Actions sono impostate le seguenti opzioni:

  • Un oggetto CleanTextTag.
  • Un elenco queries[] contenente il tag DICOM PatientName.

Le seguenti opzioni sono impostate nell'oggetto TextConfig:

  • Un oggetto InfoTypeTransformation che trasforma il testo che corrisponde a un particolare infoType.
  • Un oggetto ReplaceWithInfoTypeConfig che sostituisce qualsiasi testo corrispondente con il nome dell'infoType.
  • Un elenco infoTypes[] contenente l'infoType PERSON_NAME.

Con queste configurazioni impostate, l'operazione di anonimizzazione esamina il tag PatientName, lo associa al infoType PERSON_NAME e sostituisce il valore del tag con il infoType PERSON_NAME. Il tag PatientName ha una rappresentazione del valore (VR) di PN, che è una delle VR supportate nell'oggetto CleanTextTag.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                "PatientName"
              ],
              "cleanTextTag": {}
            }
          ]
        },
        "text": {
          "additionalTransformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    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

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

    In particolare, nota che il valore del tag PatientName è impostato su [PERSON_NAME]:

    Original metadataMetadati dopo l'esecuzione di CleanTextTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "[PERSON_NAME]"
        }
      ]
    }

Sostituisci un UID con un UID generato

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto RegenUidTag per sostituire un UID con un UID appena generato. L'unica VR supportata dall'oggetto RegenUidTag è UI.

Per impostazione predefinita, a ogni tag nei metadati di esempio con un VR di UI viene generato l'UID durante l'anonimizzazione. Per mostrare come generare un UID per un tag specifico, nell'esempio sono impostate le seguenti opzioni:

  • ProfileType è impostato sull'enumerazione KEEP_ALL, che impedisce l'anonimizzazione di qualsiasi metadato DICOM.

  • PrimaryIdsOption è impostato sull'enumerazione KEEP, che lascia invariati gli ID principali (StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID e MediaStorageSOPInstanceUID).

Quando queste opzioni sono impostate, nessuno degli UID degli ID principali nei dati di esempio viene sostituito con valori appena generati. Tuttavia, aggiungendo SOPInstanceUID all'array Action.queries[], puoi generare un nuovo UID specifico per il tag SOPInstanceUID.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    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

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID istanze perché hai specificato il tag SOPInstanceUID nell'array Action.queries[], quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come è cambiato l'UID delle istanze:

      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando il nuovo valore, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

    Tieni presente che, tra gli ID principali, solo SOPInstanceUID ha un UID appena generato.

Anonimizzare in modo ricorsivo i tag in un Sequence nidificato

Gli esempi riportati di seguito mostrano come utilizzare l'oggetto RecurseTag per anonimizzare in modo ricorsivo i tag DICOM nidificati in un Sequence. L'oggetto RecurseTag supporta solo la VR SQ, ovvero la VR per un Sequence.

Per informazioni sulla SQ VR, vedi 7.5 Nesting of Data Sets.

L'istanza DICOM di esempio fornita per questa pagina non contiene tag DICOM con un VR SQ. Puoi creare e archiviare un'istanza DICOM con dati fittizi che contengono il VR SQ completando i seguenti passaggi, basati sulle istruzioni riportate in Creare istanze DICOM da metadati JSON e file JPEG. L'istanza DICOM che crei nei passaggi seguenti utilizza dati fittizi ed è pensata solo per illustrare il comportamento diRecurseTag.

  1. Salva i seguenti metadati DICOM in un file JSON denominato instance.json. I metadati contengono un tag PhysiciansReadingStudyIdentificationSequence (00081062). Il tag ha una VR SQ e contiene due tag PersonIdentificationCodeSequence (00401101) nidificati. Anche i tag nidificati hanno un SQ VR e ognuno contiene i seguenti tag nidificati:

    • 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. Scarica il file google.jpg sulla tua macchina locale. L'API DICOMweb dell'API Cloud Healthcare accetta qualsiasi immagine JPEG abbinata a metadati JSON, purché i metadati siano validi.

  3. Esegui questi comandi per creare un separatore di apertura (per i metadati JSON), uno centrale (per l'immagine JPEG) e uno di chiusura nell'immagine:

    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. Inserisci l'immagine google.jpg tra il separatore centrale e quello di chiusura. Il file di output che invii all'API Cloud Healthcare è denominato multipart-request.file:

    cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
    
  5. Archivia il file multipart-request.file:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DICOM_STORE_ID: l'ID dell'archivio DICOM all'interno del set di dati di origine

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

Completa i seguenti passaggi per rimuovere i dati identificativi dall'istanza DICOM che hai archiviato.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati

    Corpo JSON della richiesta:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PhysiciansReadingStudyIdentificationSequence"
              ],
              "recurseTag": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PhysiciansReadingStudyIdentificationSequence"
              ],
              "recurseTag": {}
            }
          ]
        }
      }
    }
    EOF

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:

    Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 3333333 1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314
    UID serie (0020000E) 4444444 1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347
    UID istanze (00080018) 2222222 1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali nel passaggio 1 per vedere l'effetto della trasformazione.

    In particolare, nota che i valori dei tag nidificati CodeValue e CodingSchemaDesignator sono impostati su PLACEHOLDER:

    Original metadataMetadati dopo l'esecuzione di 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"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }

Anonimizzazione dei dati a livello di archivio DICOM

Gli esempi precedenti mostrano come anonimizzare i dati DICOM a livello di set di dati. Questa sezione descrive come anonimizzare i dati a livello di archivio DICOM.

Per modificare una richiesta di anonimizzazione di un set di dati in una richiesta di anonimizzazione di un archivio DICOM, apporta le seguenti modifiche:

  • Sostituisci destinationDataset nel corpo della richiesta con destinationStore
  • Aggiungi dicomStores/DESTINATION_DICOM_STORE_ID alla fine del valore in destinationStore quando specifichi la destinazione
  • Aggiungi dicomStores/SOURCE_DICOM_STORE_ID quando specifichi la posizione dei dati di origine

Gli esempi riportati di seguito mostrano una richiesta di anonimizzazione a livello di set di dati e come modificare la richiesta per un'anonimizzazione a livello di archivio DICOM:

Anonimizzazione a livello di set di dati:

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

Anonimizzazione a livello di archivio 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"

Gli esempi riportati di seguito mostrano come anonimizzare un'istanza DICOM in un archivio DICOM e scrivere i dati anonimizzati in un nuovo archivio DICOM. Prima di eseguire gli esempi, l'ID archivio DICOM di destinazione deve già esistere.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati. Deve esistere prima dell'esecuzione dell'operazione di deidentificazione.
    • DESTINATION_DICOM_STORE_ID: l'archivio DICOM nel set di dati di destinazione. Deve esistere prima dell'esecuzione dell'operazione di deidentificazione.

    Corpo JSON della richiesta:

    {
      "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    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

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Anonimizzare un sottoinsieme di un archivio DICOM

Puoi anonimizzare un sottoinsieme dei dati in un archivio DICOM specificando un filtro.

Il filtro assume la forma di un file di filtro che specifichi come valore per il campo resourcePathsGcsUri nell'oggetto DicomFilterConfig. Il file di filtro deve esistere in un bucket Cloud Storage; non puoi specificare un file di filtro che esiste sulla tua macchina locale o in qualsiasi altra origine. La posizione del file deve essere nel formato gs://BUCKET/PATH/TO/FILE.

Creare un file di filtri

Un file di filtro definisce quali file DICOM anonimizzare. Puoi filtrare i file ai seguenti livelli:

  • A livello di studio
  • A livello di serie
  • A livello di istanza

Il file di filtri è composto da una riga per ogni studio, serie o istanza che vuoi deidentificare. Ogni riga utilizza il formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]. Alla fine di ogni riga è presente un carattere di nuova riga: \n o \r\n.

Se uno studio, una serie o un'istanza non è specificato nel file di filtro che hai passato quando hai chiamato l'operazione di anonimizzazione, lo studio, la serie o l'istanza non verrà anonimizzato e non sarà presente nell'archivio DICOM di destinazione.

È necessaria solo la parte /studies/STUDY_UID del percorso. Ciò significa che puoi rimuovere l'identificazione di uno studio specificando /studies/STUDY_UID oppure puoi rimuovere l'identificazione di una serie specificando /studies/STUDY_UID/series/SERIES_UID.

Considera il seguente file di filtri. Il file di filtri causa la deidentificazione di uno studio, due serie e tre singole istanze:

/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

Creare un file di filtri utilizzando BigQuery

In genere, si crea un file di filtro esportando prima i metadati da un archivio DICOM a BigQuery. In questo modo, puoi utilizzare BigQuery per visualizzare gli UID di studio, serie e istanza dei dati DICOM nel tuo archivio DICOM. A questo punto puoi:

  1. Esegui una query per gli UID di studio, serie e istanza che ti interessano. Ad esempio, dopo aver esportato i metadati in BigQuery, puoi eseguire la seguente query per concatenare gli UID di studio, serie e istanza in un formato compatibile con i requisiti del file di filtro:

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. Se la query restituisce un set di risultati di grandi dimensioni, puoi materializzare una nuova tabella salvando i risultati della query in una tabella di destinazione in BigQuery.

  3. Dopo aver salvato i risultati della query nella tabella di destinazione, puoi salvare i contenuti della tabella di destinazione in un file ed esportarlo in Cloud Storage. Per i passaggi su come farlo, consulta Esportazione dei dati della tabella. Il file esportato è il file di filtri. Utilizzerai la posizione del file di filtro in Cloud Storage quando specifichi il filtro nell'operazione di esportazione.

Crea manualmente un file di filtri

Puoi creare un file di filtri con contenuti personalizzati e caricarlo in un bucket Cloud Storage. Utilizzerai la posizione del file di filtro in Cloud Storage quando specifichi il filtro nell'operazione di deidentificazione. Il seguente esempio mostra come caricare un file di filtri in un bucket Cloud Storage utilizzando il comando gcloud storage cp:

gcloud storage cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY

Ad esempio:

gcloud storage cp /home/user/Desktop/filters.txt gs://my-bucket/my-directory

Utilizzare un filtro

Una volta configurato il file di filtro, puoi passarlo come valore al campo resourcePathsGcsUri nell'oggetto filterConfig.

L'esempio seguente si basa sull'anonimizzazione dei dati a livello di archivio DICOM, ma viene fornito un file di filtro in Cloud Storage per determinare quali risorse DICOM vengono anonimizzate.

REST

  1. Anonimizza il set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • LOCATION: la posizione del set di dati
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da deidentificare
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DICOM_STORE_ID: l'ID dell'archivio DICOM contenente i dati da anonimizzare
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione
    • BUCKET/PATH/TO/FILE: la posizione del file di filtro in un bucket Cloud Storage

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    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

    Quindi, esegui questo comando per inviare la richiesta 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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "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

    Quindi, esegui questo comando per inviare la richiesta 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
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione. Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere un tempo considerevole per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • SOURCE_DATASET_ID: l'ID del set di dati contenente i dati da de-identificare
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

  3. Una volta completata la deidentificazione, puoi recuperare i metadati dell'istanza deidentificata per vedere come sono cambiati. L'istanza anonimizzata ha un nuovo UID per studi, serie e istanze, quindi devi prima cercare l'istanza anonimizzata nel nuovo set di dati.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

    La seguente tabella mostra come sono cambiati l'UID degli studi, l'UID delle serie e l'UID delle istanze:
      Metadati dell'istanza originale Metadati dell'istanza anonimizzati
    UID studi (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID istanze (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Utilizzando i nuovi valori, recupera i metadati per l'istanza.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DESTINATION_DATASET_ID: l'ID del set di dati di destinazione in cui vengono scritti i dati deidentificati
    • SOURCE_DATASET_LOCATION: la posizione del set di dati di origine
    • DESTINATION_DICOM_STORE_ID: l'ID dell'archivio DICOM nel set di dati di destinazione. Corrisponde all'ID dell'archivio DICOM nel set di dati di origine.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Explorer API

    Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

    L'output contiene i nuovi metadati. Puoi confrontare i nuovi metadati con i metadati originali per vedere l'effetto della trasformazione.

Risolvere i problemi relativi alle operazioni di anonimizzazione DICOM

Se si verificano errori durante un'operazione di deidentificazione DICOM, questi vengono registrati in Cloud Logging. Per ulteriori informazioni, consulta Visualizzazione dei log degli errori su Cloud Logging.

Se l'intera operazione restituisce un errore, consulta la sezione Risoluzione dei problemi relativi alle operazioni a lunga esecuzione.