Usar la API de Cloud Healthcare para patología digital

En esta página, se explica cómo almacenar, acceder, visualizar y usar imágenes de diapositivas completas (WSI) de patología digital con la API de Cloud Healthcare.

Descripción general

La patología digital está transformando las imágenes médicas, ya que permite archivar, visualizar y evaluar las diapositivas de vidrio convencionales en flujos de trabajo digitales. Entre sus muchos beneficios, la patología digital permite realizar consultas rápidas, brinda a los pacientes mayor acceso y comprensión, y mejora los flujos de trabajo clínicos y de investigación, ya que permite que las imágenes de patología sean una fuente de datos para la IA de vanguardia.

La patología digital de diapositivas completas 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 para la patología digital y permite que las imágenes de diapositivas completas y sus metadatos asociados se almacenen de manera eficiente y se haga referencia a ellos desde los registros médicos electrónicos (p.ej., FHIR) y se accede a través de APIs de alto rendimiento independientes del proveedor.

La representación de DICOM para patología digital se diseñó para admitir casos de uso 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 diapositivas completas como una pirámide de imágenes. Los niveles de la pirámide corresponden a las ampliaciones de las imágenes 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, es decir, fotogramas. El estándar define APIs que permiten el almacenamiento, la búsqueda (descubrimiento de imágenes disponibles), la recuperación de metadatos y la recuperación de imágenes en todo el nivel de la pirámide (ampliación) o la selección de subregiones (marcos) dentro de un nivel de la pirámide.

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

Genera imágenes DICOM de diapositivas completas

Cada vez más escáneres de diapositivas de patología digital admiten la generación de imágenes DICOM directamente desde el escáner de diapositivas. En muchos casos, los datos DICOM producidos por el escáner de portaobjetos se pueden transferir directamente a la API de Cloud Healthcare con las APIs de DICOM de 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 (LIS), es posible que sea necesario aumentar los metadatos que no son de píxeles en DICOM para agregar (p.ej., paciente) o modificar (p.ej., UID de instancia de estudio) antes de usarlo en un PACS de imágenes clínicas.

Históricamente, los escáneres de diapositivas han generado imágenes en formatos propietarios. La canalización de transformación se puede usar para transformar formatos compatibles con OpenSlide a DICOM, combinar metadatos personalizados con el formato DICOM generado y transferir el formato DICOM generado directamente a la API de Cloud Healthcare. Esta solución se usó para admitir 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 de DICOM se pueden importar de forma programática a la API de Cloud Healthcare con DICOMweb, DIMSE y desde Cloud Storage.

Niveles de almacenamiento de imágenes

La API de Cloud Healthcare admite el almacenamiento por niveles con la granularidad de una instancia de 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 esperado. El nivel de almacenamiento de una instancia de DICOM afecta el costo del almacenamiento, la recuperación y, en algunos casos, el borrado de los datos. La organización en niveles de almacenamiento no afecta el rendimiento del acceso a los datos. De forma predeterminada, todas las instancias de DICOM se almacenan en el nivel de almacenamiento estándar. La API de Cloud Healthcare proporciona una API para ver y cambiar la clase de almacenamiento de las instancias de DICOM. Además, se puede usar una solución de administración del ciclo de vida de las imágenes (ILM) para automatizar el movimiento de las instancias de DICOM entre los niveles de almacenamiento según la heurística. La solución puede automatizar la transición de una instancia de DICOM a través de niveles de almacenamiento según su tamaño, antigüedad y patrones de acceso.

NOTA: El almacenamiento de archivos aumenta el costo de la recuperación de datos de píxeles. Los cargos por recuperación de datos se pagan según el tamaño de los datos recuperados y no el tamaño de los datos almacenados. Para la obtención de imágenes de portaobjetos completos, esta es una distinción importante, ya que los datos de píxeles se pueden recuperar con las APIs a nivel de fotograma y de instancia. Recuperar imágenes de archivo con las APIs de fotogramas puede ser particularmente ventajoso, desde una perspectiva de costos, cuando se requiere un subconjunto de los fotogramas de una instancia, ya que los cargos por recuperación de datos se realizarán en función del tamaño de los datos devueltos y no del tamaño de la instancia almacenada.

Visualización interactiva

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

Cómo mejorar el rendimiento de la visualización interactiva

El proxy de DICOM de patología digital es una solución de Google Research que puedes usar para mejorar el rendimiento de la publicación de fotogramas en aplicaciones interactivas de imágenes de diapositivas completas. Cuando se implementa, el proxy de DICOM de patología digital encapsula la API de Cloud Healthcare y realiza el almacenamiento en caché de fotogramas justo a tiempo para entregar de forma preferencial imágenes de fotogramas desde una caché de Memorystore para Redis en la memoria.

Normalización del color de imágenes de diapositivas completas

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 diferir notablemente del espacio de color que utilizan las pantallas o los escáneres de diapositivas. Si se visualizan sin el perfil ICC integrado, el color de las imágenes suele aparecer mucho más o menos saturado de lo esperado. La API de Cloud Healthcare proporciona APIs para recuperar el perfil ICC incorporado en una instancia de DICOM y para transformar las imágenes recuperadas en un espacio de color de referencia.

  • Puedes recuperar el perfil ICC incorporado en una instancia de DICOM con la API de datos masivos o la API de recuperación de instancias. Luego, puedes transformar las imágenes recuperadas 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 incorporaciones de aprendizaje automático.

Aprendizaje automático

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

El modelo convierte un parche (una subregión) de imágenes de patología en una incorporación, que es una lista de números de punto flotante. Este embedding sirve como una representación de la imagen aprendida por la máquina. Usar incorporaciones de imágenes como datos de entrada puede ayudar a reducir la cantidad total de datos y los recursos de procesamiento necesarios para desarrollar modelos de AA eficaces.

Puedes implementar Path Foundation en Google Cloud desde Model Garden. También está disponible como código abierto con pesos abiertos en Hugging Face.

Para ayudar con la generación de incorporaciones, la biblioteca de código abierto de Python EZ-WSI DICOMweb incluye interfaces (consulta el notebook de Colab de la guía de introducción para generar incorporaciones de patología) que simplifican la transformación de las imágenes almacenadas en la API de Cloud Healthcare en incorporaciones. Consulta el notebook de Colab para 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 de diapositivas completas de DICOM.

Recuperación programática de metadatos y generación de imágenes de píxeles

En esta sección, se describen los métodos para recuperar metadatos y obtener imágenes de patología digital desde la API de Cloud Healthcare.

Modelo de información de DICOM

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

  • UID de la instancia del estudio: Identifica todas las imágenes adquiridas o generadas a partir de un solo examen del paciente.
  • UID de la instancia de la serie: Identifica cada adquisición de imágenes médicas dentro de ese examen (por ejemplo, un análisis único de una placa 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 vidrio completa. Estas imágenes pueden incluir lo siguiente:

  • Área de tejido capturada en imágenes con varios aumentos.
  • Es la etiqueta de la diapositiva.
  • Es una imagen de toda la diapositiva.
  • Son los datos que describen la operación de análisis de diapositivas.

Cómo enumerar series de DICOM de patología digital

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

REST

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

  • PROJECT_ID: Es el 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/series?Modality=SM"

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/series?Modality=SM" | 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:

Recupera metadatos de DICOM de patología digital

Por lo general, una serie DICOM para la obtención de imágenes de diapositivas completas contiene varias instancias. Estas instancias de DICOM pueden representar diferentes niveles de la pirámide de imágenes o regiones adicionales de la diapositiva obtenida por imágenes.

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_ID: Es el 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:

Cómo recuperar datos de píxeles de imágenes de diapositivas completas

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

La mayoría de las imágenes de diapositivas completas son imágenes de varios fotogramas. Para estos casos, la API de Cloud Healthcare proporciona acceso directo a los datos de píxeles a través de las APIs de fotogramas DICOM y fotogramas renderizados.

Como alternativa, puedes recuperar los datos de píxeles de forma indirecta recuperando una instancia de DICOM completa y, luego, decodificando de forma programática los fotogramas codificados de esa instancia.

Consideraciones de rendimiento para recuperar 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 patología digital de la API de Cloud Healthcare, ya que abstrae las llamadas subyacentes de DICOMweb. La biblioteca puede ayudar a acelerar la recuperación de fotogramas en muchos casos de uso, ya que convierte las solicitudes de imágenes seriales en solicitudes por lotes. La recuperación por lotes de los datos de los fotogramas suele reducir el tiempo total y la cuota del almacén de DICOM necesarios.

Hay disponible un notebook de Colab que muestra la biblioteca.

API de recuperación de instancias de DICOMweb

La API de DICOMweb Instance Retrieval devuelve una instancia de DICOM binaria. Esta instancia contiene todos los metadatos y los datos de píxeles almacenados en ella.

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

REST

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

  • PROJECT_ID: Es el 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 de la instancia del estudio
  • SERIES_INSTANCE_UID: Es el identificador único de la instancia de la serie.
  • INSTANCE_UID: Es el identificador único de la instancia.
  • OUTPUT_FILE: Es el archivo en el que se escribirá la instancia 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)" \
-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 siguiente comando:

$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 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.

El archivo OUTPUT_FILE debe completarse con contenido

API de fotogramas de DICOMweb

La API de fotogramas de DICOMweb permite recuperar uno o más fotogramas de una instancia de DICOM. Es posible que se solicite la transcodificación de los datos de píxeles recuperados con la API a formatos distintos de los que se almacenan de forma nativa en la tienda de DICOM.

REST

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

  • PROJECT_ID: Es el 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 de la instancia del estudio
  • SERIES_INSTANCE_UID: Es el identificador único de la instancia de la serie.
  • INSTANCE_UID: Es el identificador único de la instancia.
  • FRAMES: Los números de fotogramas para recuperar los datos de píxeles

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)" \
-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 siguiente comando:

$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 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 de varias partes que codifique las imágenes solicitadas.

API de fotogramas renderizados de DICOMweb

La API de cuadro renderizado de DICOMweb permite la conversión del cuadro en un formato de imagen estándar (p.ej., JPEG y PNG).

REST

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

  • PROJECT_ID: Es el 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 de la instancia del estudio
  • SERIES_INSTANCE_UID: Es el identificador único de la instancia de la serie.
  • INSTANCE_UID: Es el identificador único de la instancia.
  • FRAME: Es el número de fotograma para recuperar los datos de píxeles.

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)" \
-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 siguiente comando:

$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 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 binaria que codifique las imágenes solicitadas.

Cómo usar la recuperación de datos masivos para recuperar un perfil ICC incorporado en una instancia de DICOM

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

REST

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

  • PROJECT_ID: Es el 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 de la instancia del estudio
  • SERIES_INSTANCE_UID: Es el identificador único de la instancia de la serie.
  • INSTANCE_UID: Es el identificador único de la instancia.
  • OUTPUT_FILE: Es el archivo en el que se escribirá la instancia del perfil ICC.

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)" \
-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 siguiente comando:

$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 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.

El archivo OUTPUT_FILE debe completarse con contenido