Complemento DICOM

Ver imágenes médicas con DicomPlugin

El complemento DICOM agrega la visualización de imágenes médicas a Doconut: los archivos DICOM de varios fotogramas se renderizan como una vista previa animada, fotogramas individuales o ambos. DICOM es un formato solo de complemento — sin este complemento (y su capacidad de licencia), los archivos .dcm no pueden abrirse en absoluto.

En .NET Framework 4.7.2, los archivos DICOM se renderizan completamente — páginas, fotogramas y animación — pero los metadatos técnicos (las etiquetas DICOM) no están disponibles. Viewer.GetDicomMetadataAsync siempre devuelve null, y la solicitud de metadatos del widget responde 501 Not Implemented. Use Doconut.NET8 si su aplicación necesita las etiquetas.

Instalar el paquete

powershell
Install-Package Doconut.NETFramework.Dicom

Mantenga el paquete DICOM en la misma versión que Doconut.NETFramework.

Registrar el complemento

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

El complemento (Name: "Doconut DICOM Viewer") registra visores para las extensiones .dcm y .ima, controlados por la capacidad Dicom. Si la licencia no lo permite, DoconutHost.Initialize lanza una excepción desde Application_Start y el sitio responde a cada solicitud con un 500 vacío (la razón está en el registro de eventos de Windows). Debido a que ningún visor incorporado maneja estos formatos, abrir uno falla directamente si la capacidad posteriormente no está disponible:

text
LicenseException: This document type requires the 'Dicom' plugin license.

Abrir un archivo DICOM

csharp
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
    DisplayMode = DicomDisplayMode.AnimationAndFrames
});

Modos de visualización

Los archivos DICOM de varios fotogramas pueden presentarse de tres maneras (DicomDisplayMode):

ModoPáginas generadasUso
AnimationOnlyPágina 1 = GIF animado que reproduce todos los fotogramas en bucleRevisión cinematográfica rápida
FramesOnlyPáginas 1..N = un PNG estático por fotogramaNavegación diagnóstica fotograma a fotograma
AnimationAndFrames (default)Página 1 = GIF animado, páginas 2..N = fotogramas estáticosVisión general y detalle en un solo documento

El tiempo de animación se controla con AnimationFrameDelayMs (por defecto 100 ms = 10 FPS; el temporizador del GIF usa unidades de 10 ms) y LoopCount (0 = bucle infinito).

El visor descubre que la página 1 está animada enviando una solicitud HEAD para ella. Por lo tanto, el manejador DocImage.axd debe aceptar HEAD en Web.config (verb="GET,HEAD,POST", ver Instalación); sin ello, IIS responde 404 antes de que Doconut se ejecute y la detección de animación nunca funciona.

Resolución

DicomConfig renderiza a 100 DPI por eje por defecto. Si no establece HorizontalResolution/VerticalResolution explícitamente, siguen a BaseConfig.ImageResolution cuando está configurado, y solo entonces vuelven a 100.

csharp
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };

// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

Metadatos DICOM

csharp
var metadata = await viewer.GetDicomMetadataAsync(token);
// On .NET Framework this is always null: the DICOM metadata reader is not available for this
// target. Pages, frames and animation render normally.

El método existe en este paquete para que el código compartido con el paquete .NET 8 compile, pero la lectura de etiquetas DICOM requiere un componente que no tiene una compilación para .NET Framework. Planifique su interfaz de usuario sin ellas — por ejemplo, oculte un panel de metadatos cuando el resultado sea null.

Referencia completa de configuración

La tabla completa de propiedades de DicomConfig está en Configuraciones de Formato. En una selección por extensión, el caso DICOM se ve así:

csharp
case ".DCM": case ".IMA":
    return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };

Marca de agua y comportamiento de memoria

La decisión normal de marca de agua de página también se aplica a la salida DICOM. Para la salida animada, cada fotograma GIF lleva la marca, por lo que la señal permanece visible durante la reproducción. Un DocOptions.Watermark personalizado se usa solo cuando la licencia permite marcas de agua personalizadas; no puede reemplazar una marca de agua de evaluación.

Los estudios de varios fotogramas pueden producir tanto una animación como una página estática por fotograma. AnimationAndFrames ofrece la navegación más completa pero también el mayor costo de renderizado y memoria — y en un solo servidor esa memoria pertenece al proceso de trabajo de IIS. Para estudios grandes:

  • use FramesOnly cuando la inspección de fotogramas sea más importante que la reproducción;
  • evite aumentar ambos ejes de resolución sin medir la memoria;
  • cierre la sesión explícitamente cuando el estudio ya no esté abierto;
  • mantenga CachePages activado solo cuando el acceso repetido justifique las imágenes retenidas.

Solución de problemas

SíntomaVerificación
.dcm se informa como no compatibleRegistro de DicomPlugin y despliegue del paquete
Cada solicitud responde con un 500 vacío después de agregar el complementoLa licencia concede Dicom — registro de eventos de Windows, origen ASP.NET
Solo aparece una páginaLa fuente puede ser de un solo fotograma, o DisplayMode es AnimationOnly
La página 1 no se animaEl manejador en Web.config acepta HEAD
La animación es demasiado rápida o lentaAnimationFrameDelayMs; el temporizador del GIF usa unidades de 10 ms
La memoria crece con archivos de varios fotogramas grandesModo de visualización, resolución, caché de páginas y cierre explícito de sesión
Los metadatos siempre son nullEsperado en este paquete — vea la nota al principio

¿Fue útil esta página?