Desidentificar los datos de DICOM con DicomTagConfig

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

En esta página, también se explica cómo aplicar filtros cuando se desidentifican datos en el nivel del almacén DICOM.

Puedes configurar operaciones de desidentificación de DICOM mediante el objeto DicomConfig de la versión 1 heredada o el objeto DicomTagConfig de la versión v1beta1. Te recomendamos que uses DicomTagConfig.

Si ya usas DicomConfig para tus operaciones de desidentificación, te recomendamos que migres a DicomTagConfig. Para obtener un resumen de las funciones nuevas, consulta Nuevas opciones de configuración en DicomTagConfig. Si deseas obtener instrucciones para migrar, consulta Migra solicitudes y respuestas para usar DicomTagConfig.

Nuevas opciones de configuración en DicomTagConfig

Desidentifica texto con desidentificación contextual

Puedes configurar el objeto DicomTagConfig.Options.CleanDescriptorsOption para habilitar la desidentificación contextual de texto de metadatos no estructurados. Esta opción se basa en la opción de descriptores limpios. Cuando especificas DicomTagConfig.Options.CleanDescriptorsOption, se usa un Infotipo adicional durante la inspección, lo que puede afectar los costos de facturación.

El uso de la opción DicomTagConfig.Options.CleanDescriptorsOption transforma cualquier texto de metadatos no estructurado que coincida con las etiquetas quitadas y, al hacerlo, mejora la calidad de la desidentificación. Por ejemplo, supongamos que estás desidentificando una imagen de rayos X y el paciente tiene un apellido que también es un sustantivo, como Wall. Si algún metadato de la instancia, como el texto en StudyDescription, contiene la palabra Wall, el texto se transformará.

Con la opción CleanDescriptorsOption, se ocultan las frases contextuales que coinciden con cualquier etiqueta marcada para quitarse en el perfil base de DICOM, siempre y cuando las etiquetas coincidan con uno de los siguientes códigos de acción:

  • D
  • Z
  • X
  • U

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

Para configurar qué etiquetas se ocultan, especifica lo siguiente:

  • Una enumeración en el objeto ProfileType. No es necesario especificar una enum.
  • El filtro CleanTextTag para etiquetas específicas

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

Oculta el texto grabado con desidentificación contextual

Puedes especificar el enum TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS para habilitar la desidentificación contextual del texto grabado en una imagen. Esta opción se basa en la opción de descriptores limpios. Cuando especificas la enum TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, se usa un Infotipo adicional durante la inspección, lo que puede afectar los costos de facturación.

Puedes especificar la enum TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS de las siguientes maneras:

La opción TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS oculta el texto grabado que coincide con cualquier etiqueta marcada para quitarse en el perfil base de DICOM, siempre y cuando las etiquetas coincidan con uno de los siguientes códigos de acción:

  • D
  • Z
  • X
  • U

No hay ninguna configuración adicional para la desidentificación contextual del texto grabado que no sea habilitarlo o inhabilitarlo mediante una enumeración en el objeto ProfileType. No es necesario especificar una enum.

Infotipos adicionales en la desidentificación de imágenes

Puedes usar tipos de información (Infotipos) para especificar qué datos se deben analizar cuando se realiza la desidentificación de las etiquetas. Un Infotipo es un tipo de datos sensibles, como el nombre de un paciente, dirección de correo electrónico, número de teléfono, número de identificación o número de tarjeta de crédito.

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

Estos campos solo tendrán efecto si DicomTagConfig.Options.ImageConfig.TextRedactionMode se establece en uno de los siguientes valores:

Migra solicitudes y respuestas para usar DicomTagConfig

Puedes configurar la desidentificación de DICOM mediante DicomTagConfig, que está disponible en la versión v1beta1 de la API de Cloud Healthcare y es una alternativa al uso de la DicomConfig heredada. Cuando envías una solicitud, no puedes incluir DicomConfig y DicomTagConfig.

En las siguientes secciones, se describen las opciones de configuración en DicomConfig y cómo migrarlas a DicomTagConfig.

TagFilterProfile a ProfileType

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

En el siguiente ejemplo, se muestra cómo migrar una solicitud de TagFilterProfile al uso de 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 usaste keepList y removeList para especificar las etiquetas que deseas conservar o quitar en lugar de usar un perfil, debes migrar al nuevo objeto Action en el que especificas el comportamiento de la etiqueta. El objeto Action proporciona opciones adicionales para transformar etiquetas.

En el siguiente ejemplo, se muestra cómo migrar una solicitud del uso de keepList al uso de Action.keepTag. La solicitud especifica que el valor de la etiqueta PatientID se conserva durante la operación de desidentificación.

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

Cómo combinar listas de seguimiento, listas de eliminación y perfiles

En el objeto DicomConfig, puedes determinar si conservar o quitar datos según las listas de mantenimiento, las listas de eliminación y los perfiles. Estas opciones son mutuamente excluyentes.

Cuando usas el objeto DicomTagConfig, puedes combinar estas opciones si especificas las etiquetas que se conservarán y se quitarán en un objeto Action y, al mismo tiempo, se especificará 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.

skipIdRedaction a Objects.primaryIds

Reemplaza el campo skipIdRedaction en el objeto DicomConfig por el campo primaryIds en el objeto DicomTagConfig. El campo primaryIds, que se encuentra en el objeto Options, contiene un objeto PrimaryIdsOption en el que especificas una de las siguientes enumeraciones:

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

En el siguiente ejemplo, se muestra cómo migrar una solicitud del uso de skipIdRedaction al uso de 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"
    }
  }
}

DeidentifyConfig.ImageConfig a DicomTagConfig.Options.ImageConfig

Reemplaza 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 del uso de un ImageConfig en DeidentifyConfig.image al uso de un 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 los datos de 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 que contiene almacenes de DICOM con una o más instancias que tienen datos sensibles. Cuando llamas al método datasets.deidentify, se desidentifican todas las instancias en todos los almacenes de DICOM del conjunto de datos.
  • El conjunto de datos de destino: la desidentificación no afecta el conjunto de datos original ni sus datos. En cambio, las copias desidentificadas de los datos originales se escriben en un conjunto de datos nuevo, denominado conjunto de datos de destino.
  • Qué desidentificar: Parámetros de configuración que especifican cómo procesar los datos de DICOM en el conjunto de datos. Puedes configurar la desidentificación de DICOM para desidentificar los metadatos de las instancias de DICOM (con palabras clave de etiquetas) o el texto grabado en imágenes de DICOM si especificas estos parámetros en un objeto DeidentifyConfig.

La mayoría de las muestras de esta guía indican cómo desidentificar los datos de DICOM a nivel del conjunto de datos.

Desidentificación a nivel del almacén de DICOM

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

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

  • Almacén de DICOM de origen: Un almacén DICOM que contiene una o más instancias que tienen datos sensibles. Cuando llamas a la operación dicomStores.deidentify, se desidentifican todas las instancias en el almacén de DICOM.
  • El almacén de DICOM de destino: La desidentificación no afecta al almacén de DICOM original ni a sus datos. En cambio, las copias desidentificadas de los datos originales se escriben en el almacén DICOM de destino. El almacén de DICOM de destino ya debe existir.
  • Qué desidentificar: Parámetros de configuración que especifican cómo procesar el almacén de DICOM. Puedes configurar la desidentificación de DICOM para desidentificar los metadatos de la instancia de DICOM (con palabras clave de etiquetas) o el texto grabado en imágenes de DICOM si especificas estos parámetros en un objeto DeidentifyConfig.

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

Filtros

Cuando desidentificas los datos de DICOM a nivel del almacén de DICOM, puedes desidentificar un subconjunto de datos en el almacén de DICOM mediante la configuración de un archivo de filtro y la especificación del archivo en la solicitud dicomStores.deidentify. Para ver un ejemplo, consulta Desidentifica un subconjunto de un almacén de DICOM.

Descripción general de muestras

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

En las siguientes secciones, se muestra cómo se ve la imagen en la instancia de DICOM y los metadatos en la instancia.

Imagen de muestra

Algunas muestras de esta página contienen un resultado de la imagen desidentificada. Cada muestra usa la siguiente imagen original como entrada. Puedes comparar la imagen de salida de cada operación de desidentificación con esta imagen original para ver los efectos de la operación:

xray_original

Metadatos de muestra

La mayoría de las muestras de esta página contienen un resultado de los metadatos modificados en la instancia de DICOM. Cada muestra 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"
      ]
    }
  }
]

Oculta el texto grabado de las imágenes

Puedes desidentificar el texto grabado en las imágenes de DICOM mediante el objeto ImageConfig dentro de un objeto Action. Dentro de ImageConfig, puedes especificar qué Infotipos incluir o excluir y cómo ocultar texto con el objeto TextRedactionMode.

Ocultar todo el texto

En los siguientes ejemplos, se muestra cómo desidentificar una instancia de DICOM mediante la configuración de TextRedactionMode en REDACT_ALL_TEXT. Esta configuración oculta todo el texto grabado de la imagen.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

Después de desidentificar la imagen con REDACT_ALL_TEXT, la imagen se verá de la siguiente manera. Ten en cuenta que se ocultó todo el texto grabado en la parte inferior de la imagen.

Figura 1. La instancia de DICOM después de la desidentificación mediante REDACT_ALL_TEXT.

Oculta texto sensible con la opción Limpiar descriptores

En los siguientes ejemplos, se muestra cómo desidentificar una instancia de DICOM mediante la configuración de TextRedactionMode en REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

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

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos 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 se verá de la siguiente manera. Ten en cuenta que no se ocultó todo el texto grabado en la parte inferior de la imagen. Aún se muestra el texto Female, ya que PatientSex (0010,0040) no es uno de los Infotipos predeterminados de DICOM.

Figura 2. La instancia de DICOM después de la desidentificación mediante REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Desidentificar etiquetas de DICOM

Puedes desidentificar las instancias de DICOM según las palabras clave de etiqueta en los metadatos de DICOM.

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

Debes especificar cada opción Action como una lista de IDs de etiquetas de DICOM, nombres o representaciones de valor (VR) y, luego, 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 de queries[] en la que especificas una lista de etiquetas. Se admiten los siguientes formatos de etiqueta:

  • Los IDs de etiqueta, como "00100010"
  • Nombres de etiquetas, como "PatientName"
  • Representaciones de valores (VR), como "PN"

No hay límite para la cantidad de etiquetas que se pueden proporcionar en la lista de queries[]. Sin embargo, cada etiqueta solo puede tener una única opción Action realizada. Para especificar diferentes etiquetas que tienen diferentes opciones de Action realizadas, debes especificar varios objetos Action.

Conservar etiquetas

Puedes evitar que se oculten los valores de las etiquetas si las especificas en un objeto KeepTag en el objeto DicomTagConfig.

Para producir un objeto DICOM válido mientras usas un objeto KeepTag, especifica los valores MINIMAL_KEEP_LIST_PROFILE o DEIDENTIFY_TAG_CONTENTS en el objeto ProfileType.

Cuando se especifica cualquiera de estos perfiles, las siguientes etiquetas se conservan de forma automática, lo que garantiza que la instancia de DICOM desidentificada sea DICOM 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 vuelven a generar, lo que significa que los valores se reemplazan por un valor diferente a través de una transformación determinística. Para obtener más información, consulta la opción Retención de UIDs en el estándar DICOM.

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

En los siguientes ejemplos, se muestra cómo usar el objeto KeepTag para mantener los valores de las etiquetas específicas sin cambios durante la desidentificación. La etiqueta PatientName se agrega a la lista queries[] para que el valor PatientName no se oculte durante la desidentificación.

Dado que PrimaryIdsOption no se especifica en la muestra, el valor predeterminado del campo primaryIds es PRIMARY_IDS_OPTION_UNSPECIFIED, que es el valor predeterminado de ProfileType. Debido a que ProfileType tampoco se especifica, el campo profileType se establece de forma predeterminada en PROFILE_TYPE_UNSPECIFIED, lo que quita las etiquetas según el Perfil básico de confidencialidad de los atributos (DICOM Standard Edition 2018e).

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

Quitar las etiquetas

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

En los siguientes ejemplos, la etiqueta PatientName se agrega a la lista queries[], por lo que su valor se reemplaza por un valor vacío durante la desidentificación.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

Borrar etiquetas

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

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

Restablecer las etiquetas a un valor de marcador de posición

En los siguientes ejemplos, se muestra cómo usar el objeto ResetTag para establecer el valor de las etiquetas en la string PLACEHOLDER durante la desidentificación.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

    En particular, observa que el valor de la etiqueta PatientName se establece en PLACEHOLDER:

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

Inspecciona y transforma el texto sensible en etiquetas

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

En estos ejemplos, se establecen las siguientes opciones en el objeto Actions:

  • Un objeto CleanTextTag.
  • Una lista queries[] que contiene la etiqueta de DICOM PatientName.

Las siguientes opciones se establecen en el objeto TextConfig:

  • Un objeto InfoTypeTransformation que transforma texto que coincide con un Infotipo en particular.
  • Un objeto ReplaceWithInfoTypeConfig que reemplaza cualquier texto coincidente por el nombre del Infotipo.
  • Una lista infoTypes[] que contiene el Infotipo PERSON_NAME.

Con estos parámetros de configuración establecidos, la operación de desidentificación inspecciona la etiqueta PatientName, la hace coincidir con el Infotipo PERSON_NAME y reemplaza el valor de la etiqueta por el Infotipo PERSON_NAME. La etiqueta PatientName tiene una representación de valor (VR) de PN, que es una de las RV admitidas en el objeto CleanTextTag.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

    En particular, observa que el valor de la etiqueta PatientName se establece en [PERSON_NAME]:

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

Cómo reemplazar un UID por uno generado

En los siguientes ejemplos, se muestra cómo usar el objeto RegenUidTag para reemplazar un UID por uno recién generado. La única RV que admite el objeto RegenUidTag es UI.

De forma predeterminada, cada etiqueta en los metadatos de muestra con una RV de UI tiene su UID generado durante la desidentificación. A fin de mostrar cómo generar un UID para una etiqueta específica, se establecen las siguientes opciones en el ejemplo:

  • ProfileType se establece en la enum KEEP_ALL, que evita que se desidentifiquen los metadatos de DICOM.

  • PrimaryIdsOption se configura en la enumeración KEEP, lo que deja los IDs principales (StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID y MediaStorageSOPInstanceUID) sin cambios.

Cuando se establecen estas opciones, ninguno de los UID de ID principal en los datos de muestra se reemplaza por valores recién generados. Sin embargo, si agregas SOPInstanceUID al array Action.queries[], puedes generar un UID nuevo específicamente para la etiqueta SOPInstanceUID.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID nuevo de instancias porque especificaste la etiqueta SOPInstanceUID en el arreglo Action.queries[], por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambió el UID de las instancias:

      Metadatos de la instancia original Metadatos de instancia 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 valor nuevo, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

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

Desidentifica recursivamente las etiquetas en un Sequence anidado

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

Para obtener información sobre la RV de SQ, consulta 7.5 Anidación de conjuntos de datos.

La instancia de muestra de DICOM proporcionada para esta página no contiene ninguna etiqueta de DICOM que tenga una RV de SQ. Para crear y almacenar una instancia de DICOM con datos falsos que contengan la RV SQ, sigue estos pasos, que se basan en las instrucciones que se indican en Crea instancias de DICOM a partir de metadatos JSON y archivos JPEG. La instancia de DICOM que creas en los siguientes pasos usa datos falsos y solo tiene el objetivo de ilustrar el comportamiento de RecurseTag.

  1. Guarda los siguientes metadatos de DICOM en un archivo JSON llamado instance.json. Los metadatos contienen una etiqueta PhysiciansReadingStudyIdentificationSequence (00081062). La etiqueta tiene una RV SQ y contiene dos etiquetas PersonIdentificationCodeSequence (00401101) anidadas. Las etiquetas anidadas también tienen una RV SQ 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 máquina local. La API de DICOMweb de la API de Cloud Healthcare acepta cualquier imagen JPEG sincronizada con metadatos JSON, siempre que los metadatos sean válidos.

  3. Ejecuta los siguientes comandos para crear una apertura (para los metadatos JSON), una imagen intermedia (para la imagen JPEG) y un límite 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. Une la imagen google.jpg entre los límites centrales y de cierre. El archivo de salida, que envías a la API de Cloud Healthcare, se llama multipart-request.file:

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

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DICOM_STORE_ID: Es el ID del almacén de DICOM dentro del conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \
    --data-binary @multipart-request.file \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -InFile multipart-request.file `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Completa los siguientes pasos para desidentificar la instancia de DICOM que almacenaste.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:

    Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales en el Paso 1 para ver el efecto de la transformación.

    En particular, observa que los valores de las etiquetas anidadas CodeValue y CodingSchemaDesignator se establecen en 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 del almacén de DICOM

Las muestras anteriores muestran cómo desidentificar datos de DICOM a nivel de conjunto de datos. En esta sección, se describe cómo desidentificar datos a nivel del almacén de DICOM.

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

  • Reemplaza destinationDataset en el cuerpo de la solicitud por destinationStore.
  • Agrega dicomStores/DESTINATION_DICOM_STORE_ID al final del valor en destinationStore cuando especifiques el destino.
  • Agrega dicomStores/SOURCE_DICOM_STORE_ID cuando especifiques 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 desidentificación a nivel de almacén de 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 del 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 de DICOM en un almacén de DICOM y escribir los datos desidentificados en un almacén de DICOM nuevo. Antes de ejecutar las muestras, el ID del almacén de DICOM de destino ya debe existir.

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el ID del conjunto de datos de destino en el que se escriben los datos desidentificados. Ya debe existir antes de ejecutar la operación de desidentificación.
    • DESTINATION_DICOM_STORE_ID: Es el almacén de DICOM en el conjunto de datos de destino. Ya 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

Desidentificar un subconjunto de un almacén de DICOM

Puedes desidentificar un subconjunto de los datos en un almacén DICOM si especificas un filtro.

El filtro toma la forma de un archivo de filtro que especificas como un valor para el campo resourcePathsGcsUri en el objeto DicomFilterConfig. El archivo de filtro debe existir en un bucket de Cloud Storage. No puedes especificar un archivo de filtro que exista en tu máquina local o en cualquier otra fuente. La ubicación del archivo debe estar en formato gs://BUCKET/PATH/TO/FILE.

Crea un archivo de filtro

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

  • A nivel del estudio
  • En el nivel de la serie
  • En el nivel de la instancia

El archivo de filtro está compuesto por una línea por estudio, serie o instancia que deseas desidentificar. 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 pasaste cuando llamaste a la operación de desidentificación, ese estudio, serie o instancia no se desidentificarán y no estarán presentes en el almacén de DICOM de destino.

Solo se requiere la parte /studies/STUDY_UID de la ruta de acceso. Esto significa que puedes desidentificar un estudio si especificas /studies/STUDY_UID o puedes desidentificar una serie si especificas /studies/STUDY_UID/series/SERIES_UID.

Considera el siguiente archivo de filtro. El archivo de filtro hace que se desidentifique 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

Crea un archivo de filtro con BigQuery

Por lo general, para crear un archivo de filtro, primero debes exportar los metadatos de un almacén de DICOM a BigQuery. Esto te permite usar BigQuery para ver los UID del estudio, serie y de las instancias de los datos de DICOM en tu almacén de DICOM. A continuación, puedes hacer lo siguiente:

  1. Consulta los UID del estudio, la serie y la instancia que te interesan. Por ejemplo, después de exportar los metadatos a BigQuery, puedes ejecutar la siguiente consulta para concatenar los UID del estudio, la serie y la 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 muestra un conjunto de resultados grande, puedes materializar una tabla nueva si guardas los resultados de las consultas en una tabla de destino en BigQuery.

  3. Después de guardar los resultados de las consultas en la tabla de destino, puedes guardar el contenido de la tabla de destino en un archivo y exportarlo a Cloud Storage. Si quieres obtener los pasos para hacerlo, consulta Exporta datos de tablas. El archivo exportado es tu archivo de filtro. Usarás la ubicación del archivo de filtro en Cloud Storage cuando especifiques el filtro en la operación de exportación.

Crear un archivo de filtro de forma manual

Puedes crear un archivo de filtro con contenido personalizado y subirlo a un bucket de Cloud Storage. Usarás la ubicación del archivo de filtro en Cloud Storage cuando especifiques el filtro en la operación de desidentificación. En el siguiente ejemplo, se muestra cómo subir un archivo de filtro a un depósito de Cloud Storage con el comando gsutil cp:

gsutil cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY

Por ejemplo:

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

Usa un filtro

Después de configurar el archivo de filtro, puedes pasarlo como un valor al campo resourcePathsGcsUri en el objeto filterConfig.

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

REST

  1. Desidentificar el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • DESTINATION_DATASET_ID: Es el ID del conjunto de datos de destino en el que se escriben los datos desidentificados.
    • SOURCE_DICOM_STORE_ID: Es el ID del almacén de DICOM que contiene los datos que se desidentificarán.
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino.
    • BUCKET/PATH/TO/FILE: La ubicación del archivo de filtro en un bucket 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar 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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • SOURCE_DATASET_ID: Es el ID del conjunto de datos que contiene los datos que se desidentificarán.
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de APIs

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

  3. Después de que la desidentificación se realice de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo cambió. La instancia desidentificada tiene un UID de estudios nuevos, un UID de serie y un UID de instancias, por lo que primero debes buscar el conjunto de datos nuevo para la instancia desidentificada.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron los UID de estudios, UID de serie y UID de instancias:
      Metadatos de la instancia original Metadatos de instancia 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 valores nuevos, recupera los metadatos para la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DESTINATION_DATASET_ID: Es el 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: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"

    PowerShell

    Ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    Explorador de APIs

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

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

Solucionar problemas de operaciones de desidentificación de DICOM

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

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