Transmite metadatos de DICOM a BigQuery

En esta página, se describe cómo configurar un almacén de DICOM para exportar metadatos de instancias de DICOM a una tabla de BigQuery cada vez que se produce una de las siguientes situaciones:

La transmisión de metadatos de DICOM a una tabla de BigQuery sincroniza la tabla con tus datos de DICOM para que puedas ejecutar consultas complejas en la versión más reciente de tu almacén de DICOM.

Antes de comenzar

Antes de configurar el almacén de DICOM, completa lo siguiente:

Configura los permisos de BigQuery

Antes de transmitir metadatos de DICOM a BigQuery, debes otorgar los permisos necesarios a la cuenta de servicio del agente de servicio de Cloud Healthcare. Para obtener más información, consulta Permisos de BigQuery para el almacén de DICOM.

Aprender a exportar metadatos de DICOM a BigQuery

Antes de configurar la transmisión, comprende cómo exportar metadatos de DICOM a BigQuery.

Configura el almacén de DICOM

Para habilitar la transmisión a BigQuery, configura el objeto StreamConfig en el almacén DICOM. En el objeto StreamConfig, configura el objeto BigQueryDestination en un URI de tabla de BigQuery completamente calificado como un destino de metadatos de instancia de DICOM.

Puedes especificar hasta cinco destinos de BigQuery como objetos JSON separados por comas.

Si se borran instancias de DICOM en un almacén de DICOM, no se borran las filas de BigQuery que contienen los metadatos de esas instancias.

Console

Para actualizar un almacén de DICOM a fin de habilitar la transmisión de BigQuery, realiza los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Conjuntos de datos.
    Ir a Conjuntos de datos
  2. Selecciona el conjunto de datos que contenga el almacén de DICOM que deseas editar.
  3. Selecciona el almacén de DICOM para el que agregarás una configuración de transmisión.
  4. En la pestaña Descripción general de la página Detalles del almacén de datos, haz clic en Agregar configuración de transmisión nueva.
  5. En el campo Nueva configuración de transmisión, haz clic en Explorar.
    1. En el panel Seleccionar tabla, selecciona una tabla de BigQuery.
    2. Haz clic en Seleccionar.
  6. Haz clic en Listo.

REST

En los siguientes ejemplos, se muestra cómo actualizar un almacén de DICOM para habilitar la transmisión de BigQuery. En estas muestras, el almacén de DICOM y la tabla de BigQuery están en el mismo proyecto. Para exportar metadatos de DICOM a otro proyecto, consulta Exporta metadatos de DICOM a un proyecto diferente.

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
  • DATASET_ID: El conjunto de datos superior del almacén de DICOM
  • DICOM_STORE_ID: El ID del almacén de DICOM
  • BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente
  • BIGQUERY_TABLE_ID: Un nombre único para una tabla en el conjunto de datos de BigQuery. Consulta Nombres de las tablas para conocer los requisitos de nombres. El conjunto de datos de BigQuery debe existir, pero la API de Cloud Healthcare puede actualizar una tabla existente o crear una nueva.

Cuerpo JSON de la solicitud:

{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}

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'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
EOF

Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:

curl -X PATCH \
-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/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs"

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:

@'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
'@  | 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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

Explorador de API

Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel del Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Pega el cuerpo de la solicitud en esta herramienta, completa cualquier otro campo obligatorio y haz clic en Ejecutar.

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

Metadatos de eliminación

En versiones anteriores de la API de Cloud Healthcare, los metadatos de instancia de DICOM solo se exportaban a BigQuery cuando se insertaba una instancia de DICOM en un almacén de DICOM. Cuando se agregó la escritura de metadatos de para eliminaciones, se agregaron dos columnas nuevas, llamadas Type y LastUpdated, a la tabla generada que contienía los metadatos de DICOM.

Cualquier metadatos en la tabla que existía antes de la introducción de los metadatos de eliminación tiene un valor NULL para estas columnas. Un NULL es el valor más bajo y aparece en último lugar cuando se ordena por orden descendente.

Vista de BigQuery generada

Cuando insertas o borras una instancia de DICOM en un almacén de DICOM, se actualiza la tabla de BigQuery configurada.

Si no existe una vista de la tabla, se creará la vista. De lo contrario, la vista se actualiza.

Limitaciones y comportamientos adicionales

Es posible que falten algunas etiquetas de DICOM en los metadatos exportados. Si es así, las etiquetas faltantes están en una columna separada llamada DroppedTags.TagName en la tabla de BigQuery de destino o se quitan por completo.

Faltan etiquetas por alguno de los siguientes motivos:

  • La etiqueta de DICOM es una RV no compatible que aparece en la lista de RV excluidos.
  • La etiqueta de DICOM excede aproximadamente 1 MB, lo que hace que la etiqueta se agregue a la columna DroppedTags.Name. Las etiquetas de secuencia (SQ) que superen aproximadamente 1 MB se excluirán por completo.
  • La cantidad de columnas en la tabla de BigQuery de destino supera la cantidad máxima de columnas. Cuando se exportan metadatos de DICOM a una tabla de BigQuery que exceden el límite de columnas, las etiquetas de DICOM que no coinciden con una columna existente se agregan a la columna DroppedTags.Name. Si no se puede agregar la columna DroppedTags, las etiquetas de DICOM se descartan sin una notificación y se genera un registro de advertencia. Para obtener más información, consulta Soluciona problemas de solicitudes de transmisión de DICOM para ver registros.

Incorpora metadatos de eliminación en una tabla existente

El comportamiento de la vista generada depende de si su tabla base contiene metadatos agregados antes de que se agregara la función de metadatos de eliminación.

Supongamos que una tabla de BigQuery contiene metadatos de DICOM antes de que se admitieran los metadatos de eliminación. A continuación, ocurre lo siguiente:

  1. Insertas una instancia de DICOM en un almacén de DICOM.
  2. Borras la instancia de DICOM del almacén de DICOM.
  3. Editas las etiquetas de la instancia de DICOM original y, luego, insertas la instancia de DICOM modificada en el almacén de DICOM.

Debido a que la tabla de BigQuery contenía los metadatos originales antes de que se admitieran los metadatos de eliminación, la instancia de DICOM original y su versión editada tienen los mismos estudios, identificadores únicos de instancia (UID) y series. La vista generada puede contener la instancia de DICOM original o la instancia de DICOM más reciente. Sin la columna LastUpdated, la vista no puede identificar qué instancia de DICOM es más reciente.

Para asegurarte de consultar los metadatos de la instancia de DICOM más recientes, realiza una de las siguientes acciones:

  • Consultar la tabla base en lugar de la vista Asegúrate de que la consulta busque las etiquetas actualizadas en la instancia de DICOM editada.
  • Borra la tabla existente que contiene los metadatos de DICOM y, luego, vuelve a crearla mediante la exportación manual de los metadatos de DICOM a BigQuery. La tabla que se volvió a crear contiene la columna LastUpdated.

    Esta opción quita los metadatos de transmisión históricos, pero garantiza que la tabla contenga la columna LastUpdated con valores válidos.

Soluciona problemas de solicitudes de transmisión de DICOM

Si se producen errores durante una solicitud de exportación de DICOM a BigQuery, se registran en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.

Para filtrar los registros de errores de metadatos de transmisión de DICOM en la consola de Google Cloud, completa los siguientes pasos:

  1. Ve a la página Explorador de registros.

    Ir al Explorador de registros

  2. En el campo Consulta, escribe la siguiente consulta:

    logName="healthcare.googleapis.com%2Fdicom_stream"
    
  3. Haz clic en Ejecutar consulta.

    Los registros de errores se muestran en la sección Resultados de la consulta.