Desidentificar datos DICOM con DicomTagConfig

En esta página se explica cómo usar la configuración DicomTagConfig de la versión v1beta1 de la API Cloud Healthcare para desidentificar datos sensibles en instancias DICOM en los siguientes niveles:

En esta página también se explica cómo aplicar filtros al desidentificar datos a nivel de almacén DICOM.

Puedes configurar operaciones de desidentificación DICOM con el objeto DicomConfig de la versión 1 antigua o con el objeto DicomTagConfig de la versión 1 beta. Te recomendamos que uses DicomTagConfig.

Si ya utiliza DicomConfig para sus operaciones de anonimización, le recomendamos que migre a DicomTagConfig. Para ver un resumen de las nuevas funciones, consulta Nuevas opciones de configuración en DicomTagConfig. Para obtener instrucciones sobre cómo migrar, consulta Migrar solicitudes y respuestas para usar DicomTagConfig.

Nuevas opciones de configuración en DicomTagConfig

Desidentificar texto con desidentificación contextual

Puedes configurar el objeto DicomTagConfig.Options.CleanDescriptorsOption para habilitar la desidentificación contextual del texto de metadatos no estructurado. Esta opción se basa en la opción de descriptores limpios. Si especifica DicomTagConfig.Options.CleanDescriptorsOption, se usará un infoType adicional durante la inspección, lo que puede afectar a los costes de facturación.

La opción DicomTagConfig.Options.CleanDescriptorsOption transforma cualquier texto de metadatos sin estructurar que coincida con las etiquetas eliminadas y, de este modo, mejora la calidad de la anonimización. Por ejemplo, supongamos que estás anonimizando una radiografía y el paciente tiene un apellido que también es un sustantivo, como Wall. Si algún metadato de la instancia, como el texto de StudyDescription, contiene la palabra Wall, el texto se transformará.

La opción CleanDescriptorsOption oculta las frases contextuales que coincidan con las etiquetas marcadas para eliminarse en el perfil básico de DICOM, siempre que las etiquetas coincidan con uno de los siguientes códigos de acción:

  • D
  • Z
  • X
  • U

Las frases contextuales coincidentes se sustituyen por el token [CTX].

Puede configurar qué etiquetas se ocultan especificando lo siguiente:

  • Una enumeración en el objeto ProfileType. No es necesario especificar un enum.
  • CleanTextTag para filtrar por etiquetas específicas.

Sin embargo, las etiquetas utilizadas en el perfil base de DICOM no se pueden cambiar.

Ocultar texto insertado con desidentificación contextual

Puedes especificar la enumeración TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS para habilitar la desidentificación contextual del texto superpuesto en una imagen. Esta opción se basa en la opción de descriptores limpios. Cuando especifica el TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS enum, se usa un infoType adicional durante la inspección, lo que puede afectar a los costes de facturación.

Puede especificar el TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS enum de las siguientes formas:

La opción TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS oculta el texto insertado que coincida con las etiquetas marcadas para eliminarse en el perfil básico de DICOM, siempre que las etiquetas coincidan con uno de los siguientes códigos de acción:

  • D
  • Z
  • X
  • U

No hay que hacer ninguna otra configuración para desidentificar de forma contextual el texto superpuesto, solo habilitarlo o inhabilitarlo mediante un enum en el objeto ProfileType. No es necesario especificar un enum.

InfoTypes adicionales en la desidentificación de imágenes

Puedes usar tipos de información (infoTypes) para especificar qué datos se deben buscar al anonimizar etiquetas. Un infoType es un tipo de dato sensible, como el nombre de un paciente, una dirección de correo electrónico, un número de teléfono, un número de identificación o un número de tarjeta de crédito.

Puede configurar los siguientes campos en el objeto DicomTagConfig.Options.ImageConfig para determinar qué infoTypes se deben usar durante la desidentificación de imágenes DICOM:

Estos campos solo se aplican si se asigna a DicomTagConfig.Options.ImageConfig.TextRedactionMode uno de los siguientes valores:

Migrar solicitudes y respuestas para usar DicomTagConfig

Puedes configurar la desidentificación DICOM mediante DicomTagConfig, que está disponible en la versión v1beta1 de la API Cloud Healthcare y es una alternativa al DicomConfig antiguo. Cuando envíe una solicitud, no podrá incluir tanto DicomConfig como DicomTagConfig.

En las siguientes secciones se describen las configuraciones de DicomConfig y cómo migrarlas a DicomTagConfig.

De TagFilterProfile a ProfileType

Sustituye el objeto DicomConfig TagFilterProfile por el objeto DicomTagConfig ProfileType. Los cuatro perfiles de TagFilterProfileType están disponibles en ProfileType.

En el siguiente ejemplo se muestra cómo migrar una solicitud de TagFilterProfile a ProfileType:

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

keepList y removeList

Los campos DicomConfig keepList y removeList ya no están disponibles en DicomTagConfig. Si ha usado keepList y removeList para especificar las etiquetas que quiere conservar o quitar en lugar de usar un perfil, debe migrar al nuevo objeto Action, donde se especifica el comportamiento de las etiquetas. El objeto Action proporciona opciones adicionales para transformar etiquetas.

En el siguiente ejemplo se muestra cómo migrar una solicitud de keepList a Action.keepTag. La solicitud especifica que el valor de la etiqueta PatientID se mantiene durante la operación de anonimización.

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

Combinar listas de conservación, listas de eliminación y perfiles

En el objeto DicomConfig, puedes determinar si quieres conservar o eliminar datos en función de las listas de conservación, las listas de eliminación y los perfiles. Estas opciones se excluyen mutuamente.

Cuando se usa el objeto DicomTagConfig, se pueden combinar estas opciones especificando qué etiquetas se deben conservar y eliminar en un objeto Action, así como especificando un perfil en ProfileType.

Las opciones configuradas en el objeto Action anulan las configuradas en el perfil ProfileType. Las opciones del objeto Action se aplican en el orden en el que se proporcionan en la solicitud.

De skipIdRedaction a Objects.primaryIds

Sustituye el campo skipIdRedaction del objeto DicomConfig por el campo primaryIds del objeto DicomTagConfig. El campo primaryIds, que se encuentra en el objeto Options, contiene un objeto PrimaryIdsOption en el que se especifica uno de los siguientes enums:

  • PRIMARY_IDS_OPTION_UNSPECIFIED: comportamiento predeterminado cuando no se proporciona ningún valor a PrimaryIdsOption. El valor predeterminado es la opción especificada en ProfileType.
  • KEEP: deje los IDs principales sin modificar.
  • REGEN: vuelve a generar los IDs principales.

En el siguiente ejemplo se muestra cómo migrar una solicitud de skipIdRedaction a Options.primaryIds. La solicitud especifica que los valores de los IDs principales se conservan durante la operación de desidentificación:

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

De DeidentifyConfig.ImageConfig a DicomTagConfig.Options.ImageConfig

Sustituye el objeto DeidentifyConfig.ImageConfig por el objeto DicomTagConfig.Options.ImageConfig. Las opciones del objeto ImageConfig son las mismas en ambas versiones.

En el siguiente ejemplo se muestra cómo migrar una solicitud de ImageConfig en DeidentifyConfig.image a ImageConfig en DeidentifyConfig.DicomTagConfig.Options.cleanImage. La solicitud especifica que todo el texto de una imagen se debe ocultar durante la operación de desidentificación:

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

Descripción general de la desidentificación

Desidentificación a nivel de conjunto de datos

Para desidentificar datos DICOM a nivel del conjunto de datos, llama al método datasets.deidentify. El método datasets.deidentify tiene los siguientes componentes:

  • El conjunto de datos de origen: un conjunto de datos con almacenes DICOM que contienen una o más instancias, las cuales, a su vez, incluyen datos sensibles. Al llamar al método datasets.deidentify, se desidentifican todas las instancias de los almacenes DICOM del conjunto de datos.
  • El conjunto de datos de destino: la desidentificación no afecta al conjunto de datos original ni a sus datos. sino que las copias desidentificadas de los datos originales se escriben en un nuevo conjunto de datos, denominado conjunto de datos de destino.
  • Qué desidentificar: parámetros de configuración que especifican cómo procesar los datos DICOM del conjunto de datos. Puede configurar la desidentificación DICOM para desidentificar los metadatos de instancias DICOM (mediante palabras clave de etiquetas) o el texto insertado en imágenes DICOM especificando estos parámetros en un objeto DeidentifyConfig.

La mayoría de los ejemplos de esta guía muestran cómo desidentificar datos DICOM a nivel de conjunto de datos.

Desidentificación a nivel de almacén DICOM

Desidentificar datos DICOM a nivel de almacén DICOM te permite tener más control sobre qué datos se desidentifican. Por ejemplo, si tienes un conjunto de datos con varios almacenes DICOM, puedes desidentificar cada almacén DICOM según el tipo de datos que contenga.

Para desidentificar datos DICOM en un almacén DICOM, llama al método dicomStores.deidentify. El método dicomStores.deidentify tiene los siguientes componentes:

  • El almacén DICOM de origen: un almacén DICOM que contiene una o más instancias con datos sensibles. Al llamar a la operación dicomStores.deidentify, se desidentifican todas las instancias del almacén DICOM.
  • El almacén DICOM de destino: la desidentificación no afecta al almacén DICOM original ni a sus datos. sino que las copias desidentificadas de los datos originales se escriben en el almacén DICOM de destino. El almacén DICOM de destino ya debe existir.
  • Qué desidentificar: parámetros de configuración que especifican cómo procesar el almacén DICOM. Puedes configurar la desidentificación DICOM para desidentificar los metadatos de las instancias DICOM (mediante palabras clave de etiquetas) o el texto insertado en las imágenes DICOM. Para ello, especifica estos parámetros en un objeto DeidentifyConfig.

Para ver un ejemplo de cómo desidentificar datos DICOM a nivel de almacén DICOM, consulta Desidentificar datos a nivel de almacén DICOM.

Filtros

Cuando desidentificas datos DICOM a nivel de almacén DICOM, puedes desidentificar un subconjunto de los datos del almacén DICOM configurando un archivo de filtro y especificando el archivo en la solicitud dicomStores.deidentify. Para ver un ejemplo, consulta Desidentificar un subconjunto de un almacén DICOM.

Descripción general de las muestras

En los ejemplos de esta guía se usa una sola instancia DICOM llamada dicom_deid_instance_sample.dcm, pero también puedes desidentificar varias instancias. Para usar la instancia DICOM de ejemplo en los ejemplos de esta página, descarga el archivo en tu máquina local y sigue las instrucciones de Almacenar datos DICOM para almacenarlo en un almacén DICOM.

En las siguientes secciones se muestra el aspecto de la imagen de la instancia DICOM y los metadatos de la instancia.

Imagen de muestra

Algunas muestras de esta página contienen el resultado de la imagen anonimizada. En cada ejemplo se usa la siguiente imagen original como entrada. Puedes comparar la imagen de salida de cada operación de anonimización con esta imagen original para ver los efectos de la operación:

xray_original

Metadatos de ejemplo

La mayoría de los ejemplos de esta página contienen un resultado de los metadatos modificados en la instancia DICOM. Cada ejemplo usa los siguientes metadatos originales como entrada. Puedes comparar los metadatos de salida de cada operación de desidentificación con estos metadatos originales para ver los efectos de la desidentificación:

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

Ocultar el texto insertado de las imágenes

Puede desidentificar el texto insertado en imágenes DICOM mediante el objeto ImageConfig dentro de un objeto Action. En ImageConfig, puedes especificar qué infoTypes quieres incluir o excluir, y cómo redactar texto con el objeto TextRedactionMode.

Ocultar todo el texto

En los siguientes ejemplos se muestra cómo desidentificar una instancia DICOM configurando TextRedactionMode en REDACT_ALL_TEXT. Con esta configuración, se oculta todo el texto insertado en la imagen.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Después de desidentificar la imagen con REDACT_ALL_TEXT, la imagen tiene este aspecto. Fíjate en que se ha ocultado todo el texto superpuesto en la parte inferior de la imagen.

Imagen 1. La instancia DICOM después de la desidentificación con REDACT_ALL_TEXT.

Ocultar texto sensible con la opción Limpiar descriptores

En los siguientes ejemplos se muestra cómo desidentificar una instancia DICOM configurando TextRedactionMode en REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Para obtener más información sobre la opción CleanDescriptorsOption, consulta Desidentificar texto con desidentificación contextual.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Después de desidentificar la imagen con REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, la imagen tiene este aspecto. Ten en cuenta que no se ha ocultado todo el texto superpuesto en la parte inferior de la imagen. El texto Female sigue mostrándose porque PatientSex (0010,0040) no es uno de los infoTipos DICOM predeterminados.

Imagen 2. La instancia DICOM después de la desidentificación con REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Desidentificar etiquetas DICOM

Puedes desidentificar instancias DICOM en función de las palabras clave de las etiquetas de los metadatos DICOM.

Los siguientes métodos de filtrado de etiquetas están disponibles en el objeto DicomTagConfig Action:

Cada opción Action se especifica como una lista de IDs, nombres o representaciones de valor (VRs) de etiquetas DICOM. A continuación, la opción realiza una acción en las etiquetas de la lista. No puedes especificar más de una opción Action en una lista de etiquetas.

Cada objeto Action proporciona una lista queries[] en la que se especifica una lista de etiquetas. Se admiten los siguientes formatos de etiquetas:

  • IDs de etiquetas, como "00100010"
  • Nombres de etiquetas, como "PatientName"
  • Representaciones de valores (VRs), como "PN"

No hay límite en cuanto al número de etiquetas que se pueden proporcionar en la lista queries[]. Sin embargo, cada etiqueta solo puede tener una opción Action. Para especificar diferentes etiquetas que tengan diferentes opciones de Action, debe especificar varios objetos Action.

Conservar etiquetas

Para evitar que se oculten los valores de las etiquetas, especifica las etiquetas en un objeto KeepTag del objeto DicomTagConfig.

Para generar un objeto DICOM válido al usar un objeto KeepTag, especifica los valores MINIMAL_KEEP_LIST_PROFILE o DEIDENTIFY_TAG_CONTENTS en el objeto ProfileType.

Si especifica alguno de estos perfiles, se conservarán automáticamente las siguientes etiquetas, lo que garantiza que la instancia DICOM desidentificada sea válida:

  • 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

Los valores de algunas de las etiquetas anteriores se regeneran, lo que significa que se sustituyen por un valor diferente mediante una transformación determinista. Para obtener más información, consulta la opción para conservar los UIDs de la norma DICOM.

Los valores de StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID y MediaStorageSOPInstanceUID se denominan "IDs principales". Para determinar cómo se transforman los IDs principales, especifica un valor en PrimaryIdsOption.

En los siguientes ejemplos se muestra cómo usar el objeto KeepTag para mantener sin modificar los valores de etiquetas específicas durante la desidentificación. La etiqueta PatientName se añade a la lista queries[], por lo que el valor PatientName no se oculta durante la desidentificación.

Como no se especifica PrimaryIdsOption en el ejemplo, el campo primaryIds tiene el valor predeterminado PRIMARY_IDS_OPTION_UNSPECIFIED, que a su vez tiene el valor predeterminado de ProfileType. Como tampoco se especifica ProfileType, el campo profileType tiene el valor predeterminado PROFILE_TYPE_UNSPECIFIED, que elimina las etiquetas basadas en el perfil básico de confidencialidad de los atributos (estándar DICOM, edición 2018e).

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Eliminar etiquetas

En los siguientes ejemplos se muestra cómo usar el objeto RemoveTag para eliminar los valores de etiquetas específicas durante la desidentificación. Una etiqueta eliminada se sustituye por un valor vacío.

En los siguientes ejemplos, la etiqueta PatientName se añade a la lista queries[], por lo que su valor se sustituye por un valor vacío durante la anonimización.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Eliminar etiquetas

En los siguientes ejemplos se muestra cómo usar el objeto DeleteTag para eliminar etiquetas específicas durante la desidentificación.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Restablecer etiquetas a un valor de marcador de posición

En los siguientes ejemplos se muestra cómo usar el objeto ResetTag para asignar el valor de las etiquetas a la cadena PLACEHOLDER durante la desidentificación.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

    En concreto, fíjate en que el valor de la etiqueta PatientName se ha definido como PLACEHOLDER:

    Original metadataMetadatos después de ejecutar ResetTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "PLACEHOLDER"
        }
      ]
    }

Inspeccionar y transformar texto sensible en etiquetas

En los siguientes ejemplos se muestra cómo usar el objeto CleanTextTag para inspeccionar etiquetas y transformar los valores de las etiquetas según la configuración del objeto TextConfig.

En estas muestras, se definen las siguientes opciones en el objeto Actions:

  • Objeto CleanTextTag.
  • Una lista queries[] que contiene la etiqueta DICOM PatientName.

Las siguientes opciones se definen en el objeto TextConfig:

  • Objeto InfoTypeTransformation que transforma el texto que coincide con un infoType concreto.
  • Un objeto ReplaceWithInfoTypeConfig que sustituye cualquier texto coincidente por el nombre del infoType.
  • Una lista infoTypes[] que contiene el infoType PERSON_NAME.

Con estas configuraciones, la operación de desidentificación inspecciona la etiqueta PatientName, la asocia al infoType PERSON_NAME y sustituye el valor de la etiqueta por el infoType PERSON_NAME. La etiqueta PatientName tiene una representación de valor (VR) de PN, que es una de las VRs admitidas en el objeto CleanTextTag.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

    En concreto, fíjate en que el valor de la etiqueta PatientName se ha definido como [PERSON_NAME]:

    Original metadataMetadatos después de ejecutar CleanTextTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "[PERSON_NAME]"
        }
      ]
    }

Sustituir un UID por un UID generado

En los siguientes ejemplos se muestra cómo usar el objeto RegenUidTag para sustituir un UID por un UID recién generado. El único valor de VR que admite el objeto RegenUidTag es UI.

De forma predeterminada, todas las etiquetas de los metadatos de muestra con un valor de VR de UI tienen su UID generado durante la desidentificación. Para mostrar cómo generar un UID para una etiqueta específica, se definen las siguientes opciones en el ejemplo:

  • ProfileType se asigna al enum KEEP_ALL, lo que impide que se desidentifiquen los metadatos DICOM.

  • PrimaryIdsOption se asigna al enum KEEP que deja sin cambios los IDs principales (StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID y MediaStorageSOPInstanceUID).

Cuando se definen estas opciones, no se sustituye ninguno de los UIDs de ID principal de los datos de muestra por valores recién generados. Sin embargo, si añade SOPInstanceUID al array Action.queries[], puede generar un nuevo UID específico para la etiqueta SOPInstanceUID.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia anonimizada tiene un nuevo UID de instancia porque ha especificado la etiqueta SOPInstanceUID en la matriz Action.queries[], por lo que primero debe buscar la instancia anonimizada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo ha cambiado el UID de las instancias:

      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con el nuevo valor, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

    Ten en cuenta que, de los IDs principales, solo el SOPInstanceUID tiene un UID recién generado.

Desidentificar de forma recursiva las etiquetas de un Sequence anidado

En los siguientes ejemplos se muestra cómo usar el objeto RecurseTag para desidentificar de forma recursiva las etiquetas DICOM anidadas en un Sequence. El objeto RecurseTag solo admite la realidad virtual SQ, que es la realidad virtual de un Sequence.

Para obtener información sobre el SQ VR, consulta 7.5 Anidación de conjuntos de datos.

La instancia de ejemplo DICOM que se proporciona en esta página no contiene ninguna etiqueta DICOM que tenga un VR SQ. Puede crear y almacenar una instancia DICOM con datos falsos que contenga el SQ VR siguiendo estos pasos, que se basan en las instrucciones de Crear instancias DICOM a partir de metadatos JSON y de imágenes JPEG. La instancia DICOM que crees en los siguientes pasos usa datos falsos y solo tiene como objetivo ilustrar el comportamiento de RecurseTag.

  1. Guarda los siguientes metadatos DICOM en un archivo JSON llamado instance.json. Los metadatos contienen una etiqueta PhysiciansReadingStudyIdentificationSequence (00081062). La etiqueta tiene un SQ VR y contiene dos etiquetas PersonIdentificationCodeSequence (00401101) anidadas. Las etiquetas anidadas también tienen un SQ VR y cada una contiene las siguientes etiquetas anidadas:

    • 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. Descarga el archivo google.jpg en tu equipo local. La API DICOMweb de la API Cloud Healthcare acepta cualquier imagen JPEG emparejada con metadatos JSON, siempre que los metadatos sean válidos.

  3. Ejecuta los siguientes comandos para crear los límites de apertura (para los metadatos JSON), intermedio (para la imagen JPEG) y de cierre en la imagen:

    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. Encapsula la imagen google.jpg entre los límites intermedio y de cierre. El archivo de salida, que se envía a la API Cloud Healthcare, se llama multipart-request.file:

    cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
    
  5. Guarda el archivo multipart-request.file:

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de origen

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

Sigue estos pasos para anonimizar la instancia DICOM que has almacenado.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:

    Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 3333333 1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314
    UID de serie (0020000E) 4444444 1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347
    UID de instancias (00080018) 2222222 1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puede comparar los nuevos metadatos con los metadatos originales del paso 1 para ver el efecto de la transformación.

    En concreto, fíjate en que los valores de las etiquetas anidadas CodeValue y CodingSchemaDesignator se han definido como PLACEHOLDER:

    Original metadataMetadatos después de ejecutar 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"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }

Desidentificar datos a nivel de almacén DICOM

En los ejemplos anteriores se muestra cómo desidentificar datos DICOM a nivel de conjunto de datos. En esta sección se describe cómo desidentificar datos a nivel de almacén DICOM.

Para cambiar una solicitud de desidentificación de un conjunto de datos a una solicitud de desidentificación de un almacén DICOM, haz los siguientes cambios:

  • Sustituye destinationDataset en el cuerpo de la solicitud por destinationStore.
  • Añade dicomStores/DESTINATION_DICOM_STORE_ID al final del valor de destinationStore cuando especifiques el destino.
  • Añade dicomStores/SOURCE_DICOM_STORE_ID al especificar la ubicación de los datos de origen

En los siguientes ejemplos se muestra una solicitud de desidentificación a nivel de conjunto de datos y cómo modificar la solicitud para desidentificar a nivel de almacén DICOM:

Desidentificación a nivel de conjunto de datos:

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

Desidentificación a nivel de almacén 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"

En los siguientes ejemplos se muestra cómo desidentificar una instancia DICOM en un almacén DICOM y escribir los datos desidentificados en un nuevo almacén DICOM. Antes de ejecutar los ejemplos, debe existir el ID del almacén DICOM de destino.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados. Debe existir antes de ejecutar la operación de desidentificación.
    • DESTINATION_DICOM_STORE_ID: el almacén DICOM del conjunto de datos de destino. Debe existir antes de ejecutar la operación de desidentificación.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Desidentificar un subconjunto de un almacén DICOM

Puedes desidentificar un subconjunto de los datos de un almacén DICOM especificando un filtro.

El filtro tiene la forma de un archivo de filtro que se especifica como valor del campo resourcePathsGcsUri del objeto DicomFilterConfig. El archivo de filtro debe estar en un segmento de Cloud Storage. No puedes especificar un archivo de filtro que esté en tu máquina local ni en ninguna otra fuente. La ubicación del archivo debe tener el formato gs://BUCKET/PATH/TO/FILE.

Crear un archivo de filtro

Un archivo de filtro define qué archivos DICOM se deben desidentificar. Puede filtrar archivos en los siguientes niveles:

  • A nivel de estudio
  • A nivel de serie
  • A nivel de instancia

El archivo de filtro consta de una línea por cada estudio, serie o instancia que quieras anonimizar. Cada línea usa el formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]. Al final de cada línea hay un carácter de salto de línea: \n o \r\n.

Si no se especifica un estudio, una serie o una instancia en el archivo de filtro que has enviado al llamar a la operación de desidentificación, ese estudio, serie o instancia no se desidentificará y no estará presente en el almacén DICOM de destino.

Solo es obligatoria la parte /studies/STUDY_UID de la ruta. Esto significa que puedes anonimizar un estudio especificando /studies/STUDY_UID o una serie especificando /studies/STUDY_UID/series/SERIES_UID.

Veamos el siguiente archivo de filtro. El archivo de filtro provoca que se anonimicen un estudio, dos series y tres instancias individuales:

/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

Crear un archivo de filtro con BigQuery

Normalmente, se crea un archivo de filtro exportando los metadatos de un almacén DICOM a BigQuery. De esta forma, puedes usar BigQuery para ver los UIDs de los estudios, las series y las instancias de los datos DICOM de tu almacén DICOM. A continuación, puedes hacer lo siguiente:

  1. Consulta los UIDs de los estudios, las series y las instancias que te interesen. Por ejemplo, después de exportar los metadatos a BigQuery, puede ejecutar la siguiente consulta para concatenar los UIDs de estudio, serie e instancia en un formato compatible con los requisitos del archivo de filtro:

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. Si la consulta devuelve un conjunto de resultados grande, puedes materializar una nueva tabla guardando los resultados de la consulta en una tabla de destino de BigQuery.

  3. Después de guardar los resultados de la consulta en la tabla de destino, puede guardar el contenido de la tabla de destino en un archivo y exportarlo a Cloud Storage. Para saber cómo hacerlo, consulta el artículo Exportar datos de una tabla. El archivo exportado es el archivo de filtro. Usarás la ubicación del archivo de filtro en Cloud Storage al especificar el filtro en la operación de exportación.

Crear un archivo de filtro manualmente

Puedes crear un archivo de filtro con contenido personalizado y subirlo a un segmento de Cloud Storage. Usarás la ubicación del archivo de filtro en Cloud Storage al especificar el filtro en la operación de desidentificación. En el siguiente ejemplo se muestra cómo subir un archivo de filtro a un segmento de Cloud Storage mediante el comando gcloud storage cp:

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

Por ejemplo:

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

Utilizar filtros

Una vez que hayas configurado el archivo de filtro, puedes pasarlo como valor al campo resourcePathsGcsUri del objeto filterConfig.

En el siguiente ejemplo se amplía la información de Desidentificar datos a nivel de almacén DICOM, pero se proporciona un archivo de filtro en Cloud Storage para determinar qué recursos DICOM se desidentifican.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DICOM_STORE_ID: el ID del almacén DICOM que contiene los datos que se van a desidentificar
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino
    • BUCKET/PATH/TO/FILE: la ubicación del archivo de filtro en un segmento de Cloud Storage

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar mucho tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: el ID del conjunto de datos que contiene los datos que se van a desidentificar
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la operación de larga duración ha finalizado.

  3. Una vez que se haya anonimizado correctamente, puede recuperar los metadatos de la instancia anonimizada para ver cómo ha cambiado. La instancia desidentificada tiene un nuevo UID de estudios, un nuevo UID de series y un nuevo UID de instancias, por lo que primero debe buscar la instancia desidentificada en el nuevo conjunto de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    En la siguiente tabla se muestra cómo han cambiado los UIDs de los estudios, las series y las instancias:
      Metadatos de instancia originales Metadatos de instancias desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de 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 de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los nuevos valores, recupera los metadatos de la instancia.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • DESTINATION_DATASET_ID: ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DATASET_LOCATION: la ubicación del conjunto de datos de origen
    • DESTINATION_DICOM_STORE_ID: el ID del almacén DICOM del conjunto de datos de destino. Es el mismo que el ID del almacén DICOM del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Explorador de APIs

    Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

    La salida contiene los nuevos metadatos. Puedes comparar los nuevos metadatos con los metadatos originales para ver el efecto de la transformación.

Solucionar problemas con las operaciones de desidentificación de DICOM

Si se producen errores durante una operación de desidentificación de DICOM, se registran en Cloud Logging. Para obtener más información, consulta Ver registros de errores en Cloud Logging.

Si toda la operación devuelve un error, consulta Solucionar problemas de operaciones de larga duración.