Annotazione di dati anonimizzati

Questa pagina spiega come configurare gli archivi di annotazioni e i record di annotazioni quando anonimizza i dati FHIR e DICOM sensibili.

Panoramica dell'annotazione di dati anonimizzati

Ogni volta che anonimizzi dati FHIR o DICOM sensibili, puoi generare informazioni sui dati sensibili rimossi da un archivio di annotazioni. Queste informazioni vengono memorizzate come uno o più record di annotazioni all'interno dell'archivio delle annotazioni.

Puoi creare l'archivio di annotazioni in un set di dati esistente o crearlo nel nuovo set di dati creato durante l'operazione di anonimizzazione. Se crei l'archivio di annotazioni in un set di dati esistente, non può già esistere in quel set di dati un archivio di annotazioni con lo stesso nome.

L'archivio di annotazioni creato deve trovarsi nello stesso progetto dei dati di origine anonimizzati. Ad esempio, non puoi anonimizzare contemporaneamente i dati in un progetto e generare record di annotazioni in un archivio di annotazioni in un altro progetto.

Per specificare un archivio di annotazioni e il suo comportamento durante l'anonimizzazione, imposta il campo annotationStoreName all'interno di un oggetto annotation nell'oggetto DeidentifyConfig.

Facoltativamente, puoi impostare il campo storeQuote, a seconda del caso d'uso. Le informazioni sull'impostazione del campo storeQuote sono disponibili nella sezione successiva.

Utilizzo del campo storeQuote

Le seguenti informazioni si applicano ai dati sia FHIR che DICOM.

Quando il campo storeQuote all'interno di annotation nella richiesta è impostato su true, i valori originali dei dati anonimizzati vengono visualizzati nel record di annotazione nel campo quote. Ad esempio:

  • Se un DATE è anonimizzato e se storeQuote è impostato su true, nel record dell'annotazione vengono visualizzate le seguenti informazioni:

    • Il valore della data, ad esempio 1980-12-05, visualizzato nel campo quote
    • L'infoType DATE
    • Le posizioni di inizio e fine in cui sono stati trovati i dati. Le località di inizio e di fine utilizzano un indice in base zero e sono entrambe inclusive.
  • Se storeQuote è impostato su false, la data (1980-12-05) non viene visualizzata nel record dell'annotazione e vengono visualizzate solo le seguenti informazioni:

    • L'infoType DATE
    • Le posizioni di inizio e fine in cui sono stati trovati i dati. Le località di inizio e di fine utilizzano un indice in base zero e sono entrambe inclusive.

Annotazioni per dati FHIR anonimizzati

Questa sezione si basa sui concetti descritti in Anonimizzazione dei dati FHIR mediante l'API Cloud Healthcare.

Struttura del record di annotazione

L'operazione di anonimizzazione crea un record di annotazione per ogni risorsa FHIR anonimizzata. Ogni record di annotazione contiene un oggetto textAnnotation che contiene informazioni sui dati anonimizzati che sono stati ispezionati e trasformati. Affinché un campo anonimizzato venga visualizzato nel record di annotazione, deve essere applicato l'elemento INSPECT_AND_TRANSFORM Action.

Configurazione delle annotazioni per dati FHIR anonimizzati

Gli esempi riportati di seguito utilizzano l'anonimizzazione predefinita dei dati FHIR come punto di partenza. Gli esempi mostrano come anonimizzare una risorsa Patient utilizzando il metodo predefinito FHIR e archiviare le informazioni sui dati anonimizzati in un record di annotazione in un nuovo archivio di annotazioni. Negli esempi, il campo storeQuote è impostato su true, il che significa che il record di annotazione di output contiene i valori originali dei dati anonimizzati.

Il nuovo archivio di annotazioni si trova nel set di dati creato dall'operazione di anonimizzazione, ma puoi anche creare l'archivio di annotazioni in un set di dati esistente.

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID',
      'config': {
        'fhir': {},
        'annotation': {
          'annotationStoreName': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID',
          'storeQuote': 'true'
        }
      }
    }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}

La risposta contiene il nome di un'operazione. Puoi utilizzare il metodo dell'operazione get per monitorare lo stato dell'operazione:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON. Al termine del processo di anonimizzazione, la risposta contiene "done": true.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1beta1.dataset.DatasetService.DeidentifyDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.deidentify.DeidentifySummary",
    "successStoreCount": "1",
    "successResourceCount": "1"
  }
}

Dopo aver verificato l'esito positivo dell'anonimizzazione, puoi elencare gli archivi delle annotazioni nel set di dati e vedere che l'operazione ha creato l'archivio delle annotazioni:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:

{
  "annotationStores": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID"
    },
    {
      ...
    }
  ]
}

Utilizza il valore ANNOTATION_STORE_ID per elencare i record delle annotazioni nell'archivio delle annotazioni:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:

{
  "annotations": [
    "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_RECORD_ID",
    ...
  ]
}

Utilizza il valore ANNOTATION_RECORD_ID per visualizzare il record dell'annotazione:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_RECORD_ID"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON.

L'oggetto textAnnotation contiene informazioni sul testo sensibile che è stato rimosso dall'operazione di anonimizzazione. Nel campo details, puoi vedere che l'operazione ha cercato l'oggetto patient.text.div e ha trovato quattro infoType, insieme ai relativi valori e alle posizioni in cui sono stati trovati.

Utilizzando l'anonimizzazione FHIR predefinita, gli unici dati che sono stati ispezionati e trasformati erano i dati nell'oggetto patient.text.div. Tutti gli altri dati anonimizzati sono stati trasformati senza essere ispezionati perché il relativo infoType era già stato dichiarato nella risorsa FHIR originale.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_RECORD_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID"
    }
  },
  "textAnnotation": {
    "details": {
      "patient.text.div": {
        "findings": [
          {
            "infoType": "PERSON_NAME",
            "start": "42",
            "end": "54",
            "quote": "Smith, Darcy"
          },
          {
            "infoType": "PERSON_NAME",
            "start": "42",
            "end": "47",
            "quote": "Smith"
          },
          {
            "infoType": "PERSON_NAME",
            "start": "49",
            "end": "54",
            "quote": "Darcy"
          },
          {
            "infoType": "DATE",
            "start": "81",
            "end": "91",
            "quote": "1980-12-05"
          }
        ]
      }
    }
  }
}

gcloud

Il seguente esempio utilizza il comando gcloud beta healthcare datasets deidentify. Il campo storeQuote è impostato su true per impostazione predefinita e non può essere modificato quando si utilizza Google Cloud CLI.

gcloud beta healthcare datasets deidentify SOURCE_DATASET_ID \
    --destination-dataset=projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID \
    --default-fhir-config \
    --annotation-store=projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID

La riga di comando mostra l'ID operazione e, al termine dell'operazione, done:

Request issued for: [SOURCE_DATASET_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...done.

Per visualizzare ulteriori dettagli sull'operazione, esegui il comando gcloud beta healthcare operations describe, fornendo il valore OPERATION_ID dalla risposta:

gcloud beta healthcare operations describe --dataset=SOURCE_DATASET_ID \
    OPERATION_ID

La risposta include done: true:

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1beta1.dataset.DatasetService.DeidentifyDataset
  counter: {COUNTER}
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
  logsUrl: CLOUD_LOGGING_URL
name: projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
response:
  '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.deidentify.DeidentifySummary

Esegui questo comando per elencare gli archivi di annotazioni nel set di dati e vedere che l'operazione ha creato il nuovo archivio di annotazioni:

gcloud beta healthcare annotation-stores list --dataset=DESTINATION_DATASET_ID

Se la richiesta ha esito positivo, il server restituisce il nuovo archivio di annotazioni:

ID                    LOCATION
ANNOTATION_STORE_ID                      LOCATION

Non è possibile visualizzare i dettagli di una singola annotazione utilizzando gcloud CLI. Per visualizzare i dettagli di una singola annotazione, segui le istruzioni nell'esempio di curl.

Annotazioni per dati DICOM anonimizzati

Questa sezione si basa sui concetti descritti in Anonimizzazione dei dati DICOM utilizzando l'API Cloud Healthcare.

Struttura del record di annotazione

L'operazione di anonimizzazione crea due tipi di record di annotazione per i dati DICOM anonimizzati. I due tipi di record di annotazione sono:

  • Record di annotazioni di testo: contengono metadati, come i tag DICOM, dai dati anonimizzati. Ogni record di annotazione di testo contiene un oggetto textAnnotation che contiene informazioni sui dati anonimizzati che sono stati ispezionati e trasformati. Affinché un tag anonimizzato venga visualizzato nel record di annotazione, deve essere stato ispezionato per informazioni sanitarie protette (PHI) in base alla configurazione fornita nel campo TagFilterProfile. Ad esempio, gli esempi in Configurazione delle annotazioni per i dati DICOM anonimizzati utilizzano la configurazione DEIDENTIFY_TAG_CONTENTS.
  • Record di annotazioni delle immagini: contengono la posizione delle informazioni sensibili nei singoli frame DICOM. Ogni record di annotazione immagine contiene un oggetto ImageAnnotation che contiene le coordinate delle informazioni sensibili trovate.

L'operazione di anonimizzazione crea record di annotazione per ogni frame in un'istanza DICOM. Ad esempio, se un'istanza DICOM ha tre frame, l'operazione di anonimizzazione crea i seguenti record di annotazione:

  • Un record di annotazione di testo, contenente un textAnnotation, per i tag DICOM nell'istanza DICOM.
  • Tre record di annotazione immagine, ciascuno contenente un imageAnnotation, per ciascuno dei tre frame. Ogni record di annotazione immagine contiene un campo frame_index per indicare il frame a cui corrisponde il record.

Tutti e quattro questi record di annotazione hanno lo stessocloudHealthcareSource.name valore, che è il percorso dell'istanza DICOM nel formato projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID.

Configurazione delle annotazioni per i dati DICOM anonimizzati

I seguenti esempi utilizzano la combinazione di anonimizzazione dei tag e oscuramento del testo integrato come punto di partenza. Gli esempi mostrano come anonimizzare un'istanza DICOM per oscurare tutti gli elementi bruciati nel testo nell'immagine e ispezionare e trasformare il testo sensibile. Gli esempi mostrano anche come archiviare le informazioni sui dati anonimizzati in un record di annotazione in un nuovo archivio di annotazioni. Negli esempi, il campo storeQuote è impostato su true, il che significa che il record di annotazione di output contiene i valori originali dei dati anonimizzati.

Il nuovo archivio di annotazioni si trova nel set di dati creato dall'operazione di anonimizzazione, ma puoi anche creare l'archivio di annotazioni in un set di dati esistente.

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID',
      'config': {
        'dicom': {
          'filterProfile': 'DEIDENTIFY_TAG_CONTENTS'
        },
        'image': {
          'textRedactionMode': 'REDACT_ALL_TEXT'
        },
        'annotation': {
          'annotationStoreName': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID',
          'storeQuote': 'true'
        }
      }
    }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}

La risposta contiene il nome di un'operazione. Puoi utilizzare il metodo dell'operazione get per monitorare lo stato dell'operazione:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON. Al termine del processo di anonimizzazione, la risposta contiene "done": true.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1beta1.dataset.DatasetService.DeidentifyDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.deidentify.DeidentifySummary",
    "successStoreCount": "1",
    "successResourceCount": "1"
  }
}

Dopo aver verificato l'esito positivo dell'anonimizzazione, puoi elencare gli archivi delle annotazioni nel set di dati e vedere che l'operazione ha creato il nuovo archivio di annotazioni:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:

{
  "annotationStores": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID"
    },
    {
      ...
    }
  ]
}

Utilizza il valore ANNOTATION_STORE_ID per elencare i record delle annotazioni nell'archivio delle annotazioni:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:

{
  "annotations": [
    "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/TEXT_ANNOTATION_RECORD_ID",
    "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/IMAGE_ANNOTATION_RECORD_ID",
    ...
  ]
}

Puoi vedere che sono stati creati due record di annotazione: un record di annotazione di testo e un record di annotazione immagine.

Innanzitutto, utilizza il valore TEXT_ANNOTATION_RECORD_ID per visualizzare il record di annotazione di testo:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/TEXT_ANNOTATION_RECORD_ID"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON.

L'oggetto textAnnotation contiene informazioni sul testo sensibile rimosso dall'operazione di anonimizzazione. Nel campo details, puoi vedere che l'operazione ha fornito un elenco di tag DICOM. Quando è stato trovato un tag DICOM, le relative informazioni sono state fornite nell'oggetto findings, che mostra l'infoType, il valore dell'infoType e le posizioni in cui sono stati trovati i valori.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/TEXT_ANNOTATION_RECORD_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID"
    }
  },
  "textAnnotation": {
    "details": {
      "00080070": {},
      "00080090": {
        "findings": [
          {
            "infoType": "PERSON_NAME",
            "end": "8",
            "quote": "John Doe"
          }
        ]
      },
      "00081090": {},
      "00100010": {
        "findings": [
          {
            "infoType": "PERSON_NAME",
            "end": "11",
            "quote": "Ann Johnson"
          }
        ]
      },
      "00100020": {},
      "00100030": {
        "findings": [
          {
            "infoType": "DATE",
            "end": "8",
            "quote": "19880812"
          }
        ]
      },
      "00020013": {
        "findings": [
          {
            "infoType": "LOCATION",
            "end": "5",
            "quote": "OFFIS"
          }
        ]
      },
      "00080020": {
        "findings": [
          {
            "infoType": "DATE",
            "end": "8",
            "quote": "20110909"
          }
        ]
      }
    }
  }
}

Quindi, utilizza il valore IMAGE_ANNOTATION_RECORD_ID per visualizzare il record di annotazione dell'immagine:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID//annotations/IMAGE_ANNOTATION_RECORD_ID"

Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON.

All'interno dell'oggetto imageAnnotation sono presenti diversi vertices, ognuno dei quali contiene quattro punti X/Y che associano le località in cui l'operazione di anonimizzazione ha rilevato dati di immagine sensibili e testo integrato.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/IMAGE_ANNOTATION_RECORD_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID"
    }
  },
  "imageAnnotation": {
    "boundingPolys": [
      {
        "vertices": [
          {
            "x": 439,
            "y": 919
          },
          {
            "x": 495,
            "y": 919
          },
          {
            "x": 495,
            "y": 970
          },
          {
            "x": 439,
            "y": 970
          }
        ]
      },
      {
        "vertices": [
          {
            "x": 493,
            "y": 919
          },
          {
            "x": 610,
            "y": 919
          },
          {
            "x": 610,
            "y": 972
          },
          {
            "x": 493,
            "y": 972
          }
        ]
      },
      {
        "vertices": [
        ...
        ]
      },
      ...
    ]
  }
}

gcloud

Il seguente esempio utilizza il comando gcloud beta healthcare datasets deidentify. Il campo storeQuote è impostato su true per impostazione predefinita e non può essere modificato quando si utilizza Google Cloud CLI.

gcloud beta healthcare datasets deidentify SOURCE_DATASET_ID \
    --destination-dataset=projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID \
    --text-redaction-mode=all \
    --annotation-store=projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID

La riga di comando mostra l'ID operazione e, al termine dell'operazione, done:

Request issued for: [SOURCE_DATASET_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...done.

Per visualizzare ulteriori dettagli sull'operazione, esegui il comando gcloud beta healthcare operations describe, fornendo il valore OPERATION_ID dalla risposta:

gcloud beta healthcare operations describe --dataset=SOURCE_DATASET_ID \
    OPERATION_ID

La risposta include done: true:

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1beta1.dataset.DatasetService.DeidentifyDataset
  counter: {COUNTER}
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
  logsUrl: CLOUD_LOGGING_URL
name: projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
response:
  '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.deidentify.DeidentifySummary

Esegui questo comando per elencare gli archivi di annotazioni nel set di dati e vedere che l'operazione ha creato il nuovo archivio di annotazioni:

gcloud beta healthcare annotation-stores list --dataset=DESTINATION_DATASET_ID

Se la richiesta ha esito positivo, il server restituisce il nuovo archivio di annotazioni:

ID                    LOCATION
ANNOTATION_STORE_ID                      LOCATION

Non è possibile visualizzare i dettagli di una singola annotazione utilizzando gcloud CLI. Per visualizzare i dettagli di una singola annotazione, segui le istruzioni nell'esempio di curl.