Usar la API Cloud Healthcare para la anatomía patológica digital

En esta página se explica cómo almacenar, consultar, visualizar y usar imágenes de portaobjetos completas (WSIs) de anatomía patológica digital con la API Cloud Healthcare.

Información general

La anatomía patológica digital está transformando las imágenes médicas, ya que permite archivar, visualizar y evaluar las portaobjetos de vidrio convencionales en flujos de trabajo digitales. Entre sus muchas ventajas, la patología digital permite realizar consultas rápidas, ofrece a los pacientes un mayor acceso y comprensión, y mejora los flujos de trabajo clínicos y de investigación al permitir que las imágenes de patología sean una fuente de datos para la IA más avanzada.

La patología digital de portaobjetos completo se representa como una colección de imágenes. Los más grandes suelen tener un tamaño de varios gigabytes. DICOM es el estándar interoperable de patología digital que permite almacenar de forma eficiente imágenes de portaobjetos completas y sus metadatos asociados, así como hacer referencia a ellos desde historiales clínicos electrónicos (por ejemplo, FHIR) y se accede a ellos a través de APIs de alto rendimiento independientes del proveedor.

La representación DICOM para patología digital se ha diseñado para admitir casos prácticos interactivos de alto rendimiento que requieren la capacidad de desplazarse y hacer zoom rápidamente en imágenes de gigapíxeles. DICOM representa la patología digital de portaobjetos completo como una pirámide de imágenes. Los niveles de la pirámide se corresponden con los aumentos de la imagen de la diapositiva completa. Las imágenes representadas en un nivel de la pirámide se almacenan como una colección de imágenes más pequeñas (marcos). El estándar define APIs que permiten el almacenamiento, la búsqueda (descubrimiento de imágenes disponibles), la obtención de metadatos y la obtención de imágenes de todo el nivel de la pirámide (ampliación) o de subregiones (marcos) concretas dentro de un nivel de la pirámide.

Las APIs DICOM admiten respuestas de metadatos en JSON y XML, y la API Cloud Healthcare también admite el acceso a metadatos a través de BigQuery para permitir consultas relacionales complejas que combinen los metadatos DICOM con otras fuentes de datos. Las imágenes se pueden devolver tal como se almacenan o convertidas (transcodificadas) a formatos alternativos.

Generar imágenes DICOM de portaobjetos completos

Cada vez son más los escáneres de portaobjetos de patología digital que admiten la generación de imágenes DICOM directamente desde el escáner. En muchos casos, los archivos DICOM generados por escáneres de portaobjetos se pueden ingerir directamente en la API Cloud Healthcare mediante las APIs DICOM DICOMweb o DIMSE. Si los escáneres de portaobjetos que producen imágenes DICOM no están conectados a un sistema de información de laboratorio (SIL), puede que sea necesario aumentar los metadatos no de píxeles en DICOM para añadir (por ejemplo, el paciente) o modificar (por ejemplo, UID de instancia de estudio) antes de usarla en un PACS de imagen clínica.

Tradicionalmente, los escáneres de diapositivas han generado imágenes en formatos propietarios. La pipeline de transformación se puede usar para transformar formatos compatibles con OpenSlide a DICOM, combinar metadatos personalizados con el formato DICOM generado e incorporar el formato DICOM generado directamente en la API Cloud Healthcare. Esta solución se ha utilizado para facilitar la transformación de archivos de varios petabytes a DICOM.

Entre las herramientas que se pueden usar para convertir imágenes de patología digital a DICOM se incluyen las siguientes:

Las instancias DICOM se pueden importar de forma programática a la API Cloud Healthcare mediante DICOMweb, DIMSE y Cloud Storage.

Niveles de almacenamiento de imágenes

La API Cloud Healthcare admite la organización en niveles de almacenamiento con la granularidad de una instancia DICOM. En el caso de las imágenes de portaobjetos completos, esto significa que cada aumento de una pirámide de imágenes de patología digital se puede almacenar en el nivel que mejor se adapte a su uso previsto. El nivel de almacenamiento de una instancia DICOM afecta al coste del almacenamiento, la recuperación y, en algunos casos, la eliminación de los datos. La estratificación del almacenamiento no afecta al rendimiento del acceso a los datos. De forma predeterminada, todas las instancias DICOM se almacenan en el nivel de almacenamiento estándar. La API Cloud Healthcare proporciona una API para ver y cambiar la clase de almacenamiento de las instancias DICOM. Además, se puede usar una solución de gestión del ciclo de vida de las imágenes (ILM) para automatizar el movimiento de las instancias DICOM entre niveles de almacenamiento en función de la heurística. La solución puede automatizar la transición de una instancia DICOM a través de niveles de almacenamiento en función de su tamaño, antigüedad y patrones de acceso.

NOTA: El almacenamiento de archivos aumenta el coste de recuperación de los datos de píxeles. Los cargos por recuperación de datos se pagan en función del tamaño de los datos recuperados, no del tamaño de los datos almacenados. En el caso de las imágenes de portaobjetos completos, esta distinción es importante, ya que los datos de los píxeles se pueden obtener mediante APIs a nivel de marco y de instancia. Recuperar imágenes archivadas mediante APIs de fotogramas puede ser especialmente ventajoso desde el punto de vista de los costes cuando se requiere un subconjunto de los fotogramas de una instancia, ya que los cargos por recuperación de datos se basarán en el tamaño de los datos devueltos y no en el tamaño de la instancia almacenada.

Visualización interactiva

La API Cloud Healthcare se puede usar para admitir la visualización interactiva de imágenes de portaobjetos completas en aplicaciones que van desde visores web sin huella (JavaScript) hasta aplicaciones cliente independientes. Se ha probado que los siguientes visores de código abierto son compatibles con la API Cloud Healthcare:

Mejorar el rendimiento de las visualizaciones interactivas

El proxy DICOM de patología digital es una solución de Google Research que puedes usar para mejorar el rendimiento del servicio de fotogramas en aplicaciones interactivas de imágenes de portaobjetos completas. Cuando se implementa, el proxy DICOM de anatomía patológica digital envuelve la API Cloud Healthcare y realiza el almacenamiento en caché de fotogramas justo a tiempo para servir preferentemente imágenes de fotogramas desde una caché de Memorystore para Redis en memoria.

Normalización del color de las imágenes de portaobjetos completos

El estándar DICOM requiere que los WSI contengan un perfil de color ICC que defina el espacio de color del escáner de portaobjetos que adquirió las imágenes. Este espacio de color puede ser notablemente diferente del espacio de color que utilizan las pantallas u otros escáneres de diapositivas. Si se visualizan sin el perfil ICC insertado, el color de las imágenes suele aparecer mucho más o menos saturado de lo esperado. La API Cloud Healthcare proporciona APIs para recuperar el perfil ICC insertado en una instancia DICOM y para transformar las imágenes recuperadas en un espacio de color de referencia.

  • Puedes recuperar el perfil ICC insertado en una instancia DICOM mediante la API de datos en bloque o la API de recuperación de instancias. Después, puedes transformar las imágenes obtenidas en el espacio de color del escáner de diapositivas con bibliotecas como Little-CMS(escrita en C++) y Pillow (escrita en Python).

  • La biblioteca de Python EZ-WSI DICOMweb admite la transformación de perfiles ICC como parte de sus APIs de recuperación de imágenes y generación de inserciones de aprendizaje automático.

Aprendizaje automático

Path Foundation es un modelo fundacional desarrollado por Google Research para acelerar el desarrollo de aprendizaje automático en patología digital.

El modelo convierte un parche (una subregión) de imágenes de patologías en una inserción, que es una lista de números de coma flotante. Esta inserción sirve como representación de la imagen aprendida por la máquina. Usar incrustaciones de imágenes como datos de entrada puede ayudar a reducir la cantidad total de datos y recursos computacionales necesarios para desarrollar modelos de aprendizaje automático eficaces.

Puedes desplegar Path Foundation en Google Cloud desde Model Garden. También está disponible como software libre con pesos abiertos en Hugging Face.

Para facilitar la generación de inserciones, la biblioteca de Python de código abierto EZ-WSI DICOMweb incluye interfaces (consulta la guía de inicio para generar inserciones de anatomía patológica en Colab) que simplifican la transformación de las imágenes almacenadas en la API Cloud Healthcare en inserciones. Consulta el notebook de Colab Entrenar un clasificador lineal de patología digital a partir de imágenes almacenadas en DICOM para obtener información sobre cómo usar EZ-WSI DICOMweb y Pathology Foundations para entrenar un clasificador lineal a partir de imágenes DICOM de portaobjetos completos.

Obtener metadatos e imágenes de píxeles mediante programación

En esta sección se describen los métodos para obtener metadatos e imágenes de anatomía patológica digital de la API Cloud Healthcare.

Modelo de información DICOM

DICOM usa tres identificadores únicos (UIDs) para identificar imágenes de forma única:

  • UID de instancia de estudio: identifica todas las imágenes adquiridas o generadas a partir de un único examen de un paciente.
  • UID de instancia de serie: identifica cada adquisición de imágenes médicas de ese examen (por ejemplo, una exploración única de una diapositiva de patología).
  • UID de instancia de SOP: identifica cada imagen adquirida o generada como parte de esa adquisición.

Por ejemplo, los escáneres de diapositivas suelen generar varias imágenes para capturar una diapositiva de cristal completa. Estas imágenes pueden incluir:

  • El área de tejido de la imagen con varios aumentos.
  • Etiqueta de la diapositiva.
  • Imagen de toda la diapositiva.
  • Datos que describen la operación de digitalización de diapositivas.

Listar series DICOM de patología digital

Para identificar imágenes de microscopía de portaobjetos, busca series DICOM en las que la etiqueta Modalidad (0008,0060) sea SM. Puedes usar el método dicomStores.searchForSeries para hacer esta búsqueda.

REST

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

  • PROJECT_ID: el ID de tu Google Cloud proyecto
  • LOCATION: la ubicación del conjunto de datos
  • DATASET_ID: el conjunto de datos superior del almacén DICOM
  • DICOM_STORE_ID: el ID del almacén DICOM

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/series?Modality=SM"

PowerShell

Ejecuta el comando siguiente:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/series?Modality=SM" | Select-Object -Expand Content

Explorador de APIs

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

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

Recuperar metadatos DICOM de patología digital

Una serie DICOM de imágenes de portaobjetos completo suele contener varias instancias. Estas instancias DICOM pueden representar diferentes niveles de la pirámide de imágenes o regiones adicionales de la diapositiva de la imagen.

Para ver los metadatos de una instancia de un estudio, llama al método dicomStores.searchForInstances

REST

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

  • PROJECT_ID: el ID de tu Google Cloud proyecto
  • LOCATION: la ubicación del conjunto de datos
  • DATASET_ID: el conjunto de datos superior del almacén DICOM
  • DICOM_STORE_ID: el ID del almacén DICOM
  • STUDY_INSTANCE_UID: identificador único (UID) de la instancia del estudio

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID"

PowerShell

Ejecuta el comando siguiente:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID" | Select-Object -Expand Content

Explorador de APIs

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

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

Obtener datos de píxeles de imágenes de portaobjetos completos

Puedes recuperar de forma programática los datos de píxeles de imágenes de portaobjetos completos mediante DICOMweb. La API Cloud Healthcare también admite la recuperación a través de un adaptador DICOM que usa protocolos DIMSE.

La mayoría de las imágenes de diapositiva completa son imágenes de varios fotogramas. Para ello, la API Cloud Healthcare proporciona acceso directo a los datos de píxeles mediante las APIs de fotograma DICOM y fotograma renderizado.

También puedes recuperar los datos de píxel de forma indirecta obteniendo una instancia DICOM completa y, a continuación, decodificando de forma programática los fotogramas codificados de esa instancia.

Consideraciones sobre el rendimiento al obtener fotogramas:

  • Por lo general, recuperar una instancia completa es más rápido por fotograma que recuperar fotogramas por lotes.
  • Por lo general, la recuperación de fotogramas por lotes es más rápida que la recuperación de fotogramas individuales.

EZ-WSI DICOMweb

EZ-WSI DICOMweb es una biblioteca de Python de código abierto. Simplifica la recuperación de datos de píxeles de anatomía patológica digital de la API Cloud Healthcare abstrayendo las llamadas DICOMweb subyacentes. La biblioteca puede ayudar a acelerar la recuperación de fotogramas en muchos casos prácticos convirtiendo las solicitudes de imágenes en serie en solicitudes por lotes. La recuperación por lotes de datos de fotogramas suele reducir el tiempo total y la cuota del almacén DICOM necesarios.

Hay disponible un cuaderno de Colab que muestra la biblioteca.

API de recuperación de instancias de DICOMweb

La API de recuperación de instancias DICOMweb devuelve una instancia DICOM binaria. Esta instancia contiene todos los metadatos y los datos de píxeles almacenados en ella.

Puede decodificar los datos binarios devueltos con varias bibliotecas, como las siguientes:

REST

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

  • PROJECT_ID: el ID de tu Google Cloud proyecto
  • LOCATION: la ubicación del conjunto de datos
  • DATASET_ID: el conjunto de datos superior del almacén DICOM
  • DICOM_STORE_ID: el ID del almacén DICOM
  • STUDY_INSTANCE_UID: identificador único de la instancia del estudio
  • SERIES_INSTANCE_UID: identificador único de la instancia de la serie
  • INSTANCE_UID: identificador único de la instancia
  • OUTPUT_FILE: archivo en el que se escribirá la instancia DICOM.

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/dicom" \
--output OUTPUT_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "application/dicom" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"

Explorador de APIs

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

El archivo OUTPUT_FILE debe incluir contenido

API de marcos DICOMweb

La API de marcos DICOMweb permite recuperar uno o varios marcos de una instancia DICOM. Los datos de píxeles obtenidos mediante la API se pueden transcodificar a formatos distintos de los que se almacenan de forma nativa en el almacén DICOM.

REST

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

  • PROJECT_ID: el ID de tu Google Cloud proyecto
  • LOCATION: la ubicación del conjunto de datos
  • DATASET_ID: el conjunto de datos superior del almacén DICOM
  • DICOM_STORE_ID: el ID del almacén DICOM
  • STUDY_INSTANCE_UID: identificador único de la instancia del estudio
  • SERIES_INSTANCE_UID: identificador único de la instancia de la serie
  • INSTANCE_UID: identificador único de la instancia
  • FRAMES: los números de fotograma para obtener los datos de píxeles

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: multipart/related; type="image/jpeg"; transfer-syntax=1.2.840.10008.1.2.4.50" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAMES"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "multipart/related; type="image/jpeg"; transfer-syntax=1.2.840.10008.1.2.4.50" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAMES" | Select-Object -Expand Content

Explorador de APIs

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

Deberías recibir una respuesta multipart que codifique la imagen solicitada.

API de fotogramas renderizados de DICOMweb

La API DICOMweb rendered frame permite convertir en el servidor un fotograma a un formato de imagen estándar (por ejemplo, JPEG y PNG).

REST

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

  • PROJECT_ID: el ID de tu Google Cloud proyecto
  • LOCATION: la ubicación del conjunto de datos
  • DATASET_ID: el conjunto de datos superior del almacén DICOM
  • DICOM_STORE_ID: el ID del almacén DICOM
  • STUDY_INSTANCE_UID: identificador único de la instancia del estudio
  • SERIES_INSTANCE_UID: identificador único de la instancia de la serie
  • INSTANCE_UID: identificador único de la instancia
  • FRAME: número de fotograma para obtener los datos de píxeles

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: image/png" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAME/rendered"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "image/png" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAME/rendered" | Select-Object -Expand Content

Explorador de APIs

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

Deberías recibir una respuesta binaria que codifique las imágenes solicitadas.

Usar la recuperación de datos en bloque para recuperar un perfil ICC insertado en una instancia DICOM

Puedes usar DICOMweb retrieve bulkdata para recuperar directamente los bytes del perfil ICC (International Color Consortium) insertados en una instancia DICOM.

REST

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

  • PROJECT_ID: el ID de tu Google Cloud proyecto
  • LOCATION: la ubicación del conjunto de datos
  • DATASET_ID: el conjunto de datos superior del almacén DICOM
  • DICOM_STORE_ID: el ID del almacén DICOM
  • STUDY_INSTANCE_UID: identificador único de la instancia del estudio
  • SERIES_INSTANCE_UID: identificador único de la instancia de la serie
  • INSTANCE_UID: identificador único de la instancia
  • OUTPUT_FILE: archivo en el que se escribirá la instancia del perfil ICC.

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/octet-stream; transfer-syntax=*" \
--output OUTPUT_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/bulkdata/00480105/0/00282000"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "application/octet-stream; transfer-syntax=*" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/bulkdata/00480105/0/00282000"

Explorador de APIs

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

El archivo OUTPUT_FILE debe incluir contenido