Plugin DICOM

Visualizza immagini mediche con DicomPlugin

Il plugin DICOM aggiunge la visualizzazione di immagini mediche a Doconut: i file DICOM multi-frame vengono renderizzati come una panoramica animata, fotogrammi individuali o entrambi. DICOM è un formato solo plugin — senza questo plugin (e la relativa capacità di licenza), i file .dcm non possono essere aperti affatto.

Su .NET Framework 4.7.2, i file DICOM vengono renderizzati completamente — pagine, fotogrammi e animazione — ma i metadati tecnici (i tag DICOM) non sono disponibili. Viewer.GetDicomMetadataAsync restituisce sempre null, e la richiesta di metadati del widget risponde 501 Not Implemented. Usa Doconut.NET8 se la tua applicazione necessita dei tag.

Installa il pacchetto

powershell
Install-Package Doconut.NETFramework.Dicom

Mantieni il pacchetto DICOM alla stessa versione di Doconut.NETFramework.

Registra il plugin

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

Il plugin (Name: "Doconut DICOM Viewer") registra visualizzatori per le estensioni .dcm e .ima, controllate dalla capacità Dicom. Se la licenza non la concede, DoconutHost.Initialize genera un'eccezione da Application_Start e il sito risponde a ogni richiesta con un 500 vuoto (il motivo è nel registro eventi di Windows). Poiché nessun visualizzatore integrato gestisce questi formati, l'apertura di uno fallisce direttamente se la capacità diventa successivamente non disponibile:

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

Apertura di un file DICOM

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

Modalità di visualizzazione

I file DICOM multi-frame possono essere presentati in tre modi (DicomDisplayMode):

ModalitàPagine generateUso
AnimationOnlyPagina 1 = GIF animato che ripete tutti i fotogrammiRevisione cinematografica rapida
FramesOnlyPagine 1..N = un PNG statico per fotogrammaNavigazione diagnostica fotogramma per fotogramma
AnimationAndFrames (default)Pagina 1 = GIF animato, pagine 2..N = fotogrammi staticiPanoramica e dettaglio in un unico documento

Il timing dell'animazione è controllato da AnimationFrameDelayMs (predefinito 100 ms = 10 FPS; il timing GIF utilizza unità di 10 ms) e LoopCount (0 = loop infinito).

Il visualizzatore scopre che la pagina 1 è animata inviando una richiesta HEAD per essa. Il gestore DocImage.axd deve quindi accettare HEAD in Web.config (verb="GET,HEAD,POST", vedi Installazione); senza di ciò, IIS risponde 404 prima che Doconut venga eseguito e il rilevamento dell'animazione non funziona mai.

Risoluzione

DicomConfig renderizza a 100 DPI per asse per impostazione predefinita. Se non imposti esplicitamente HorizontalResolution/VerticalResolution, esse seguono BaseConfig.ImageResolution quando è impostato, e solo allora tornano a 100.

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

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

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

Il metodo esiste in questo pacchetto affinché il codice condiviso con il pacchetto .NET 8 compili, ma la lettura dei tag DICOM richiede un componente che non ha una build per .NET Framework. Progetta la tua interfaccia utente senza di essi — ad esempio, nascondi un pannello dei metadati quando il risultato è null.

Riferimento completo della configurazione

La tabella completa delle proprietà DicomConfig è in Configurazioni Formato. In una selezione per estensione, il caso DICOM appare così:

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

Filigrana e comportamento della memoria

La decisione normale sulla filigrana della pagina si applica anche all'output DICOM. Per l'output animato, ogni fotogramma GIF è contrassegnato, quindi la filigrana rimane visibile durante la riproduzione. Un DocOptions.Watermark personalizzato è usato solo quando la licenza consente filigrane personalizzate; non può sostituire una filigrana di valutazione.

Gli studi multi-frame possono produrre sia un'animazione sia una pagina statica per fotogramma. AnimationAndFrames offre la navigazione più ricca ma anche il più alto costo di rendering e memoria — e su un singolo server quella memoria appartiene al processo worker di IIS. Per studi di grandi dimensioni:

  • usa FramesOnly quando l'ispezione dei fotogrammi è più importante della riproduzione;
  • evita di aumentare entrambi gli assi di risoluzione senza misurare la memoria;
  • chiudi esplicitamente la sessione quando lo studio non è più aperto;
  • mantieni CachePages attivo solo quando l'accesso ripetuto vale le immagini conservate.

Risoluzione dei problemi

SintomoVerifica
.dcm segnalato come non supportatoRegistrazione di DicomPlugin e distribuzione del pacchetto
Ogni richiesta risponde con un 500 vuoto dopo aver aggiunto il pluginLa licenza concede Dicom — registro eventi Windows, sorgente ASP.NET
Viene visualizzata una sola paginaLa sorgente potrebbe essere a fotogramma singolo, o DisplayMode è AnimationOnly
La pagina 1 non è animataIl gestore in Web.config accetta HEAD
L'animazione è troppo veloce o lentaAnimationFrameDelayMs; il timing GIF utilizza unità di 10 ms
La memoria aumenta con file multi-frame di grandi dimensioniModalità di visualizzazione, risoluzione, cache delle pagine e chiusura esplicita della sessione
I metadati sono sempre nullPrevisto in questo pacchetto — vedi la nota in alto

Questa pagina è stata utile?