En esta página, se explica cómo almacenar, analizar y administrar imágenes de diapositivas completas (WSI) con la API de Cloud Healthcare.
Descripción general
La patología digital permite almacenar, procesar y administrar diapositivas de vidrio convencionales mediante la digitalización de las mismas para generar imágenes de diapositivas completas (WSI).
Las WSI suelen ser archivos grandes que pueden tener varios GB. Vienen en varios formatos de archivo, lo que puede hacer difícil de administrar. La API de Cloud Healthcare simplifica el proceso de almacenamiento, análisis y administración de las WSI.
Almacena imágenes de diapositivas completas con DICOM
La API de Cloud Healthcare proporciona un servicio administrado para almacenar imágenes de DICOM. Este servicio también es admite el almacenamiento y la recuperación de las WSI. Para obtener más información sobre DICOM en la API de Cloud Healthcare, consulta DICOM.
Usar DICOM tiene los siguientes beneficios:
- Admite varios proveedores y software.
- DICOM es un formato de archivo y también un protocolo de red que define las APIs de DICOMweb y DIMSE. Estas APIs, que se usan para recuperar y almacenar instancias de DICOM, proporcionan una funcionalidad extensa y simplifican la interacción con imágenes.
Convierte imágenes de diapositivas completas a DICOM
La mayoría de los analizadores de WSI no producen archivos de DICOM a partir de las WSI de forma nativa. Como resultado, debes convertir las WSI en archivos de DICOM de forma manual.
Las siguientes herramientas pueden convertir las WSI a DICOM:
- Herramienta de línea de comandos “Dicomizer” de Orthanc
- Toolkit de DICOM para Java de PixelMed™
- Herramienta de línea de comandos de wsi2dcm
En la siguiente sección, se muestra cómo usar la herramienta de línea de comandos de wsi2dcm para generar archivos de DICOM.
Genera archivos de DICOM con la herramienta de línea de comandos de wsi2dcm
Antes de completar los pasos siguientes, asegúrate de tener un archivo WSI válido. Los datos de muestra están disponibles en OpenSlide y en otros recursos enumerados en el sitio web de Digital Pathology Association.
Ejecuta la herramienta de línea de comandos de wsi2dcm:
wsi2dcm \ --input=INPUT_WSI \ --outFolder=PATH/TO/OUTPUT/FOLDER \ --seriesDescription=WSI_DESCRIPTION
Donde:
- INPUT_WSI es la ruta de acceso y el nombre del archivo WSI.
- PATH/TO/OUTPUT/FOLDER es la ruta de acceso donde la herramienta genera el archivo de DICOM convertido.
- WSI_DESCRIPTION es una descripción de tu elección para el archivo de DICOM convertido.
La ejecución de la herramienta genera varios archivos de DICOM desde las WSI. Los archivos de DICOM tienen el sufijo .dcm
.
Sube los archivos de DICOM a la API de Cloud Healthcare
Si todavía no creaste un almacén de DICOM, hazlo ahora.
Puedes subir los archivos de DICOM generados en un almacén de DICOM con uno de los siguientes métodos:
- Almacenar los archivos directamente con la implementación de transacción en tienda de DICOMweb de la API de Cloud Healthcare
- Almacenar los archivos con la herramienta CLI de DICOMweb
Recupera archivos de DICOM y sus metadatos
Después de subir los archivos dde DICOM en un almacén DICOM, puedes enumerar y ver los metadatos de las imágenes de DICOM.
Enumera las imágenes de diapositivas completas
Cada WSI es un estudio de DICOM. Para ver una lista de las WSI, puedes llamar al método dicomStores.searchForStudies
:
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.
- 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
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Explorador de API
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.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Visualiza los metadatos de imágenes de diapositivas completas
Cada estudio contiene varias instancias y cada una contiene un subconjunto de los mosaicos de una WSI. Para ver los metadatos de la instancia de una instancia en el estudio, llama al método dicomStores.searchForInstances
:
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.
- 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
- STUDY_INSTANCE_UID: El identificador único (UID) de la instancia del estudio
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID"
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/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 API
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.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Visualiza los mosaicos de imágenes de diapositivas completas
Cada instancia suele contener varios marcos. Un marco representa un mosaico de la WSI a un nivel de zoom particular en la “pirámide” de la WSI.
Para recuperar un solo marco en formato JPEG, llama al método frames.retrieveRendered
:
curl
Para recuperar un solo marco en formato JPEG, realiza una solicitud GET
y especifica la siguiente información
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El UID del estudio
- El UID de la serie
- UID de instancia
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: image/jpeg" \ --output FILENAME \ "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/0/rendered"
Si la solicitud se realiza correctamente, el archivo JPEG se escribe en tu máquina.
PowerShell
Para recuperar un solo marco en formato JPEG, realiza una solicitud GET
y especifica la siguiente información
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El UID del estudio
- El UID de la serie
- UID de instancia
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; "Accept" = "image/jpeg" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -OutFile FILENAME ` -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/0/rendered"
Si la solicitud se realiza correctamente, el archivo JPEG se escribe en tu máquina.
Recupera todas las imágenes de diapositivas completas
Para recuperar toda la instancia, que contiene las WSI, usa el método instances.retrieveInstance
:
curl
Para recuperar una instancia completa, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El UID del estudio
- El UID de la serie
- UID de instancia
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/dicom" \ --output FILENAME \ "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"
Si la solicitud se realiza correctamente, el archivo DICOM se escribe en su máquina.
PowerShell
Para recuperar una instancia completa, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El UID del estudio
- El UID de la serie
- UID de instancia
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; "Accept" = "application/dicom" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -OutFile FILENAME ` -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"
Si la solicitud se realiza correctamente, el archivo DICOM se escribe en su máquina.
Visualiza una diapositiva con un visualizador de imágenes de diapositivas completas
En las secciones anteriores, se mostraba cómo ver los metadatos de una WSI y recuperar mosaicos individuales. Para ver la WSI completa, debes usar un visualizador de WSI con la tecnología de DICOMweb.
Los siguientes visualizadores son compatibles con la API de Cloud Healthcare:
Ve archivos DICOM de WSI convertidos con el visualizador WSI de DICOMweb
Completa las siguientes secciones para usar el visualizador de WSI de DICOMweb para ver los archivos DICOM de WSI convertidos.
Descarga el visualizador
Descarga el visualizador WSI de DICOMweb:
git clone https://github.com/GoogleCloudPlatform/dicomweb-wsi-viewer.git
Obtén el secreto del cliente
Un secreto de cliente autentica a un usuario cuando accede a una aplicación. Incorporas el secreto del cliente en el código fuente del visualizador WSI de DICOMweb. Para obtener un secreto del cliente, completa los siguientes pasos:
Ve a la página Credenciales en la consola de Google Cloud.
Ir a la página CredencialesHaz clic en Crear credenciales y, luego, selecciona ID de cliente OAuth.
En Tipo de aplicación, selecciona Aplicación web.
Agrega un nombre de tu elección.
En Orígenes de JavaScript autorizado y URI de redireccionamiento autorizado, ingresa
http://localhost:8000
.Haz clic en Crear y, luego, en Aceptar en la ventana Cliente de OAuth que aparecerá. Copia el ID de cliente para usarlo en la próxima sección.
Configura el secreto del cliente en el visualizador
Completa los siguientes pasos con el ID de cliente que obtuviste en la sección anterior:
En el directorio
dicomweb-wsi-viewer
, abre el archivoviewer.js
.Reemplaza la siguiente línea para que contenga tu ID de cliente.
const CLIENT_ID = 'INSERT-YOUR-CLIENT-ID-HERE'
La línea debería verse como el siguiente ejemplo:
const CLIENT_ID = 'PROJECT_ID-VALUE.apps.googleusercontent.com';
Guarde el archivo.
Configura la pantalla de consentimiento de OAuth
Si aún no configuraste la pantalla de consentimiento de OAuth de tu proyecto de Google Cloud, sigue estos pasos:
Ve a la pantalla de consentimiento de OAuth.
Ve a la pantalla de consentimiento de OAuthEn Correo electrónico de asistencia, selecciona la dirección de correo electrónico que deseas mostrar como contacto público. Esta debe ser tu dirección de correo electrónico o un Grupo de Google de tu propiedad.
Ingresa el Nombre de la aplicación que deseas mostrar.
Haz clic en Agregar alcance. En el cuadro de diálogo que aparecerá, ingresa
https://www.googleapis.com/auth/cloud-healthcare
y, luego, haz clic en Agregar.Haga clic en Save.
Para cambiar la información en la pantalla de consentimiento de OAuth más tarde, como el nombre del producto o la dirección de correo electrónico, repite los pasos anteriores para configurarla.
Si ya configuraste la pantalla de consentimiento de OAuth de tu proyecto de Google Cloud, debes agregar https://www.googleapis.com/auth/cloud-healthcare
en el cuadro de diálogo Agregar alcance.
Ejecuta el visualizador WSI de DICOMweb
En el directorio
dicomweb-wsi-viewer
, ejecuta el siguiente comando:python -m http.server 8000
Navega a
https://localhost:8000
en la máquina en la que ejecutaste el comando anterior.En la IU, haz clic en Acceder/Autorizar para acceder a la pantalla de consentimiento de OAuth y otorga permiso de visualizador a fin de acceder a tu proyecto de Google Cloud y a los recursos de la API de Cloud Healthcare.