DICOM Плагін

Переглядайте медичні зображення за допомогою DicomPlugin

Плагін DICOM додає перегляд медичних зображень до Doconut: багатокадрові DICOM файли відображаються як анімований огляд, окремі кадри або обидва. DICOM — це формат лише для плагінів — без цього плагіна (і його ліцензійної можливості) файли .dcm неможливо відкрити взагалі.

У .NET Framework 4.7.2 DICOM файли відображаються повністю — сторінки, кадри та анімація — але технічні метадані (теги DICOM) недоступні. Viewer.GetDicomMetadataAsync завжди повертає null, а запит метаданих віджета відповідає 501 Not Implemented. Використовуйте Doconut.NET8, якщо вашому застосунку потрібні теги.

Встановити пакет

powershell
Install-Package Doconut.NETFramework.Dicom

Тримайте пакет DICOM тієї ж версії, що й Doconut.NETFramework.

Зареєструвати плагін

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

Плагін (Name: "Doconut DICOM Viewer") реєструє переглядачі для розширень .dcm та .ima, обмежені можливістю Dicom. Якщо ліцензія її не надає, DoconutHost.Initialize викидає виключення під час Application_Start, і сайт відповідає на кожен запит порожнім 500 (причина в журналі подій Windows). Оскільки жоден вбудований переглядач не обробляє ці формати, спроба відкриття завершується помилкою, якщо можливість згодом стає недоступною:

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

Відкриття DICOM файлу

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

Режими відображення

Багатокадрові DICOM файли можна представити трьома способами (DicomDisplayMode):

РежимСторінок створеноПризначення
AnimationOnlyСторінка 1 = анімований GIF, що циклічно відтворює всі кадриШвидкий кінематографічний перегляд
FramesOnlyСторінки 1..N = один статичний PNG на кадрНавігація кадр за кадром для діагностики
AnimationAndFrames (default)Сторінка 1 = анімований GIF, сторінки 2..N = статичні кадриОгляд та деталі в одному документі

Таймінг анімації контролюється параметром AnimationFrameDelayMs (за замовчуванням 100 мс = 10 кадр/сек; таймінг GIF використовує одиниці 10 мс) та LoopCount (0 = безкінечний цикл).

Переглядач визначає, що сторінка 1 анімована, надсилаючи запит HEAD. Тому обробник DocImage.axd повинен приймати HEAD у Web.config (verb="GET,HEAD,POST", див. Встановлення); без цього IIS відповідає 404 до запуску Doconut, і виявлення анімації ніколи не працює.

Роздільна здатність

DicomConfig за замовчуванням відображається з 100 DPI по кожній осі. Якщо ви не задаєте явно HorizontalResolution/VerticalResolution, вони успадковують BaseConfig.ImageResolution, якщо він встановлений, і лише потім повертаються до 100.

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

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

Метадані 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.

Метод існує в цьому пакеті, щоб код, спільний з пакетом .NET 8, компілювався, але читання тегів DICOM потребує компонента, який не має збірки для .NET Framework. Плануйте інтерфейс користувача без них — наприклад, приховуйте панель метаданих, коли результат null.

Повна довідка з конфігурації

Повна таблиця властивостей DicomConfig знаходиться в Конфігурації форматів. При виборі за розширенням випадок DICOM виглядає так:

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

Водяний знак та поведінка пам'яті

Звичайне рішення щодо водяного знака на сторінці також застосовується до виводу DICOM. Для анімованого виводу кожен кадр GIF підписується, тому знак залишається видимим протягом відтворення. Користувацький DocOptions.Watermark використовується лише коли ліцензія дозволяє кастомні водяні знаки; його не можна замінити на оцінний водяний знак.

Багатокадрові дослідження можуть створювати як анімацію, так і одну статичну сторінку на кадр. AnimationAndFrames забезпечує найповнішу навігацію, але й найвищі витрати на рендеринг та пам'ять — і на одному сервері ця пам'ять належить процесу робітника IIS. Для великих досліджень:

  • використовуйте FramesOnly, коли важливіший аналіз кадрів, ніж відтворення;
  • уникайте збільшення обох осей роздільної здатності без вимірювання пам'яті;
  • закривайте сесію явно, коли дослідження більше не відкрите;
  • вмикайте CachePages лише коли повторний доступ виправдовує збережені зображення.

Усунення неполадок

СимптомПеревірка
.dcm повідомляється як непідтримуванийDicomPlugin реєстрація та розгортання пакету
Кожен запит відповідає порожнім 500 після додавання плагінаЛіцензія надає Dicom — журнал подій Windows, джерело ASP.NET
З'являється лише одна сторінкаДжерело може бути одно-кадровим, або DisplayMode встановлено в AnimationOnly
Сторінка 1 не анімуєтьсяОбробник у Web.config приймає HEAD
Анімація занадто швидка або повільнаAnimationFrameDelayMs; таймінг GIF використовує одиниці 10 мс
Пам'ять зростає при великих багатокадрових файлахРежим відображення, роздільна здатність, кеш сторінок та явне закриття сесії
Метадані завжди nullОчікується в цьому пакеті — див. примітку вгорі

Чи була ця сторінка корисною?