En esta página, se explica cómo configurar almacenes de anotaciones y registros de anotaciones cuando se desidentifican datos sensibles de FHIR y DICOM.
Anota la descripción general de los datos desidentificados
Cada vez que desidentificas datos sensibles de FHIR o DICOM, puede mostrar información sobre los datos sensibles que se quitaron un almacén de anotaciones. Esta información se almacena como uno o más registros de anotación dentro del almacén de anotaciones.
Puedes crear el almacén de anotaciones en un conjunto de datos existente o crearlo en el nuevo conjunto de datos creado durante la operación de desidentificación. Si creas el almacén de anotaciones en un conjunto de datos existente, no puede existir un almacén de anotaciones con el mismo nombre en ese conjunto de datos.
El almacén de anotaciones creado debe estar en el mismo proyecto que el almacén desidentificado datos de origen. Por ejemplo, no puedes desidentificar datos en un proyecto y generar registros de anotaciones en un almacén de anotaciones en un proyecto diferente de forma simultánea.
Para especificar un almacén de anotaciones y su comportamiento durante la desidentificación, establece el campo annotationStoreName
dentro de un objeto annotation
en el objeto DeidentifyConfig
.
De forma opcional, puedes configurar el campo storeQuote
, según tu caso de uso.
La información para configurar el campo storeQuote
está disponible en la
siguiente sección.
Con el campo storeQuote
La siguiente información se aplica a los datos de FHIR y DICOM.
Cuando el campo storeQuote
dentro de annotation
en la solicitud se establece en true
, los valores originales de los datos desidentificados se muestran en el registro de anotaciones en el campo quote
. Por ejemplo:
Si se desidentifica una
DATE
y sistoreQuote
se configura comotrue
, la siguiente información se muestra en el registro de anotaciones:- El valor de la fecha (como
1980-12-05
), que se muestra en el campoquote
- El infotipo
DATE
- Las ubicaciones de inicio y finalización en las que se encontraron los datos Las ubicaciones de inicio y finalización usan un índice basado en cero y ambos son inclusivos.
- El valor de la fecha (como
Si
storeQuote
se establece comofalse
, la fecha (1980-12-05
) no se muestra en el registro de anotaciones y solo se muestra la siguiente información:- El infotipo
DATE
- Las ubicaciones de inicio y finalización en las que se encontraron los datos Las ubicaciones de inicio y finalización usan un índice basado en cero y ambos son inclusivos.
- El infotipo
Anotaciones para los datos de FHIR desidentificados
En esta sección, se desarrollan los conceptos que se explican en Cómo desidentificar datos de FHIR con la API de Cloud Healthcare.
Estructura del registro de anotaciones
La operación de desidentificación crea un registro de anotación para cada recurso de FHIR desidentificado.
Cada registro de anotaciones contiene un objeto textAnnotation
que contiene información sobre los datos desidentificados que se inspeccionaron y transformaron.
Para que un campo desidentificado aparezca en el registro de anotaciones, debe tener aplicada la Action
INSPECT_AND_TRANSFORM
.
Configura anotaciones para datos de FHIR desidentificados
En los siguientes ejemplos, se usa la Desidentificación predeterminada de datos de FHIR como punto de partida. En los ejemplos, se muestra cómo desidentificar un recurso de paciente con el método predeterminado de FHIR y almacenar información sobre los datos desidentificados en un registro de anotación en un nuevo almacén de anotaciones. En los ejemplos, el campo storeQuote
se establece en true
, lo que significa que el registro de anotaciones de salida contiene los valores originales de los datos que se desidentificaron.
El almacén de anotaciones nuevo se encuentra en el conjunto de datos creado por la operación de desidentificación, pero también puedes crear el almacén de anotaciones en un conjunto de datos existente.
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Puedes usar el método get
de operación para realizar un seguimiento del estado de la operación:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor.
Una vez que finaliza el proceso de desidentificación, la respuesta 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" } }
Después de verificar que la desidentificación se realizó correctamente, puedes enumerar los almacenes de anotaciones en el conjunto de datos y ver que la operación creó el nuevo almacén de anotaciones:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "annotationStores": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID" }, { ... } ] }
Usa el valor ANNOTATION_STORE_ID para enumerar los registros de anotaciones en el almacén de anotaciones:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "annotations": [ "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_RECORD_ID", ... ] }
Usa el valor ANNOTATION_RECORD_ID para ver el registro de anotaciones:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor.
El objeto textAnnotation
contiene información sobre el texto sensible que quitó la operación de desidentificación. En el campo details
, puedes ver que
la operación buscó el objeto patient.text.div
y encontró
cuatro infotipos, junto con sus valores y las ubicaciones donde
de que se hayan encontrado.
Con la desidentificación de FHIR predeterminada, los únicos datos que se inspeccionaron y transformaron son los datos del objeto patient.text.div
, todos los demás datos desidentificados se transformaron sin inspeccionarse porque su Infoinfo ya estaba declarado en el recurso FHIR original.
{ "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
En el siguiente ejemplo, se usa gcloud beta healthcare datasets deidentify
kubectl. El campo storeQuote
se establece en true
de forma predeterminada y no se puede cambiar cuando se usa 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 línea de comandos muestra el ID de la operación y, después de que se completa la operación, 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.
Para ver más detalles de la operación, ejecuta el comando gcloud beta healthcare operations describe
y proporciona el OPERATION_ID de la respuesta:
gcloud beta healthcare operations describe --dataset=SOURCE_DATASET_ID \ OPERATION_ID
En la respuesta, se incluye 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
Ejecuta el siguiente comando para mostrar los almacenes de anotaciones conjunto de datos y verás que la operación creó el nuevo almacén de anotaciones:
gcloud beta healthcare annotation-stores list --dataset=DESTINATION_DATASET_ID
Si la solicitud se realiza de forma correcta, el servidor muestra el nuevo almacén de anotaciones:
ID LOCATION ANNOTATION_STORE_ID LOCATION
No es posible ver detalles de una anotación individual usando el
gcloud CLI. Para ver los detalles de una anotación individual, sigue
las instrucciones de la muestra de curl
.
Anotaciones para datos de DICOM desidentificados
Esta sección se basa en conceptos que se explican en Desidentificar datos de DICOM con las API de Cloud Healthcare.
Estructura del registro de anotaciones
La operación de desidentificación crea dos tipos de registros de anotación para datos de DICOM desidentificados. Los dos tipos de registros de anotaciones son los siguientes:
- Registros de anotaciones de texto: contienen metadatos, como etiquetas de DICOM, de los datos desidentificados. Cada registro de anotaciones de texto contiene un objeto
textAnnotation
que contiene información sobre los datos desidentificados que se inspeccionaron y transformaron. Para que una etiqueta desidentificada aparezca en el registro de anotaciones, debe haber sido inspeccionada en busca de información de salud protegida (PHI) en función de la configuración proporcionada en el campoTagFilterProfile
. Por ejemplo, los ejemplos de Configura anotaciones para datos de DICOM desidentificados usan la configuraciónDEIDENTIFY_TAG_CONTENTS
. - Registros de anotaciones de imágenes: Contienen la ubicación de la información sensible en marcos de DICOM individuales. Cada registro de anotaciones de imágenes contiene un objeto
ImageAnnotation
que contiene las coordenadas de la información sensible encontrada.
La operación de desidentificación crea registros de anotación para cada fotograma en un DICOM instancia. Por ejemplo, si una instancia de DICOM tiene tres tramas, la operación de desidentificación crea los siguientes registros de anotaciones:
- Un registro de anotación de texto, que contiene un
textAnnotation
, para las etiquetas de DICOM en la instancia de DICOM. - Tres registros de anotaciones de imágenes, cada uno con una
imageAnnotation
, para cada uno de los tres marcos. Cada registro de anotaciones de imágenes contiene un campoframe_index
para indicar el marco al que corresponde el registro.
Los cuatro registros de anotaciones tienen el mismo valor cloudHealthcareSource.name
, que es la ruta de la instancia de DICOM en el formato: projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID
.
Configura anotaciones para datos de DICOM desidentificados
En los siguientes ejemplos, se usa Combina desidentificación de etiquetas y ocultamiento de texto quemado como su punto de partida. En los ejemplos, se muestra cómo desidentificar una instancia de DICOM para ocultar todo el texto grabado en la imagen, así como inspeccionar y transformar el texto sensible. En las muestras, también se indica cómo almacenar información sobre los datos desidentificados
en una
registro de anotaciones en un nuevo almacén de anotaciones. En las muestras, el elemento storeQuote
se establece en true
, lo que significa que el registro de anotación de salida contiene
los valores originales de los datos que se desidentificaron.
El almacén de anotaciones nuevo se encuentra en el conjunto de datos creado por la operación de desidentificación, pero también puedes crear el almacén de anotaciones en un conjunto de datos existente.
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Puedes usar el método get
de operación para realizar un seguimiento del estado de la operación:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor. Una vez que finaliza el proceso de desidentificación, la respuesta 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" } }
Después de verificar que la desidentificación se realizó correctamente, puedes enumerar los almacenes de anotaciones en el conjunto de datos y ver que la operación creó el nuevo almacén de anotaciones:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "annotationStores": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/annotationStores/ANNOTATION_STORE_ID" }, { ... } ] }
Usa el valor ANNOTATION_STORE_ID para enumerar los registros de anotaciones en el almacén de anotaciones:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "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", ... ] }
Puedes ver que se crearon dos registros de anotaciones: un registro de anotaciones de texto y un registro de anotaciones de imágenes.
Primero, usa TEXT_ANNOTATION_RECORD_ID. para ver el registro de anotaciones de texto:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor.
El objeto textAnnotation
contiene información sobre el texto sensible que quitó la operación de desidentificación. En el campo details
, puedes ver que la operación proporcionó una lista de etiquetas de DICOM. Cuando se encontró una etiqueta de DICOM, su información se proporcionó en el objeto findings
, que muestra el Infotipo, el valor del Infotipo y las ubicaciones donde se encontraron los valores.
{ "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" } ] } } } }
A continuación, usa el valor IMAGE_ANNOTATION_RECORD_ID para ver el registro de anotaciones de imágenes:
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"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor.
Dentro del objeto imageAnnotation
, hay varios vertices
, cada uno de los cuales contiene cuatro puntos X/Y que vinculan las ubicaciones donde la operación de desidentificación detectó datos sensibles de la imagen y texto grabado.
{ "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
En el siguiente ejemplo, se usa gcloud beta healthcare datasets deidentify
kubectl. El campo storeQuote
se establece en true
de forma predeterminada y no se puede cambiar cuando se usa 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 línea de comandos muestra el ID de la operación y, después de que se completa la operación, 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.
Para ver más detalles de la operación, ejecuta el comando gcloud beta healthcare operations describe
y proporciona el OPERATION_ID de la respuesta:
gcloud beta healthcare operations describe --dataset=SOURCE_DATASET_ID \ OPERATION_ID
En la respuesta, se incluye 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
Ejecuta el siguiente comando para mostrar los almacenes de anotaciones conjunto de datos y verás que la operación creó el nuevo almacén de anotaciones:
gcloud beta healthcare annotation-stores list --dataset=DESTINATION_DATASET_ID
Si la solicitud se realiza de forma correcta, el servidor muestra el nuevo almacén de anotaciones:
ID LOCATION ANNOTATION_STORE_ID LOCATION
No es posible ver detalles de una anotación individual usando el
gcloud CLI. Para ver los detalles de una anotación individual, sigue
las instrucciones de la muestra de curl
.