DICOM plugin

Prohlížejte lékařské snímky pomocí DicomPlugin

DICOM plugin přidává prohlížení lékařských snímků do Doconut: více‑rámcové DICOM soubory se vykreslují jako animovaný přehled, jednotlivé snímky nebo obojí. DICOM je formát pouze pro plugin — bez tohoto pluginu (a jeho licenční schopnosti) nelze soubory .dcm vůbec otevřít.

Na .NET Framework 4.7.2 se DICOM soubory vykreslují kompletně — stránky, snímky i animace — ale technická metadata (DICOM tagy) nejsou k dispozici. Viewer.GetDicomMetadataAsync vždy vrací null a požadavek widgetu na metadata odpovídá 501 Not Implemented. Použijte Doconut.NET8, pokud vaše aplikace potřebuje tagy.

Instalace balíčku

powershell
Install-Package Doconut.NETFramework.Dicom

Udržujte DICOM balíček ve stejné verzi jako Doconut.NETFramework.

Registrace pluginu

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

Plugin (Name: "Doconut DICOM Viewer") registruje prohlížeče pro .dcm a .ima rozšíření, řízené schopností Dicom. Pokud licence tuto schopnost nepovolí, DoconutHost.Initialize vyhodí výjimku během Application_Start a stránka odpoví na každý požadavek prázdným 500 (důvod je v protokolu událostí Windows). Protože žádný vestavěný prohlížeč tyto formáty neobsluhuje, otevření souboru selže, pokud se schopnost později stane nedostupnou:

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

Otevření DICOM souboru

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

Režimy zobrazení

Více‑rámcové DICOM soubory mohou být prezentovány třemi způsoby (DicomDisplayMode):

RežimVytvořené stránkyPoužití
AnimationOnlyStránka 1 = animovaný GIF opakující všechny snímkyRychlý filmový přehled
FramesOnlyStránky 1..N = jeden statický PNG na snímekDiagnostická navigace snímek po snímku
AnimationAndFrames (default)Stránka 1 = animovaný GIF, stránky 2..N = statické snímkyPřehled a detail v jednom dokumentu

Časování animace řídí AnimationFrameDelayMs (výchozí 100 ms = 10 FPS; časování GIF používá jednotky 10 ms) a LoopCount (0 = nekonečné opakování).

Prohlížeč zjistí, že stránka 1 je animovaná odesláním požadavku HEAD. Handler DocImage.axd proto musí v Web.config akceptovat HEAD (verb="GET,HEAD,POST", viz Instalace); bez toho IIS vrátí 404 ještě před spuštěním Doconut a detekce animace nikdy neproběhne.

Rozlišení

DicomConfig vykresluje ve výchozím nastavení 100 DPI na osu. Pokud explicitně nenastavíte HorizontalResolution/VerticalResolution, použijí hodnotu z BaseConfig.ImageResolution, pokud je nastavena, a až poté se vrátí k 100.

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

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

DICOM metadata

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.

Metoda existuje v tomto balíčku, aby kód sdílený s balíčkem .NET 8 byl kompilovatelný, ale čtení DICOM tagů vyžaduje komponentu, která nemá sestavení pro .NET Framework. Navrhněte uživatelské rozhraní bez nich — například skryjte panel s metadaty, když je výsledek null.

Kompletní referenční konfigurace

Úplná tabulka vlastností DicomConfig je v Konfiguracích formátu. Při výběru podle přípony vypadá případ DICOM takto:

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

Vodoznak a chování paměti

Rozhodnutí o vodoznaku běžné stránky se vztahuje i na výstup DICOM. U animovaného výstupu je každý GIF snímek opatřen vodoznakem, takže značka zůstává viditelná po celou dobu přehrávání. Vlastní DocOptions.Watermark se používá pouze tehdy, když licence umožňuje vlastní vodoznaky; nemůže nahradit zkušební vodoznak.

Více‑rámcové studie mohou vytvořit jak animaci, tak statickou stránku pro každý snímek. AnimationAndFrames poskytuje nejbohatší navigaci, ale také nejvyšší nároky na vykreslování a paměť — a na jediném serveru tato paměť patří pracovnímu procesu IIS. Pro velké studie:

  • použijte FramesOnly, když je kontrola snímků důležitější než přehrávání;
  • vyhněte se zvýšení obou os rozlišení bez měření paměti;
  • ukončete relaci explicitně, když už studie není otevřená;
  • nechte CachePages zapnuté pouze tehdy, když opakovaný přístup stojí za uchování obrázků.

Řešení problémů

PříznakKontrola
.dcm je hlášeno jako nepodporovanéRegistrace DicomPlugin a nasazení balíčku
Každý požadavek vrací prázdný 500 po přidání pluginuLicence uděluje Dicom — Windows event log, zdroj ASP.NET
Zobrazuje se pouze jedna stránkaZdroj může být jednosnímkový, nebo DisplayMode je AnimationOnly
Stránka 1 se neanimujeHandler v Web.config akceptuje HEAD
Animace je příliš rychlá nebo pomaláAnimationFrameDelayMs; časování GIF používá jednotky 10 ms
Paměť roste u velkých více‑rámcových souborůRežim zobrazení, rozlišení, cache stránek a explicitní uzavření relace
Metadata jsou vždy nullOčekáváno v tomto balíčku — viz poznámka nahoře

Byla tato stránka užitečná?