Плагін DICOM

Перегляд медичних зображень за допомогою DicomPlugin

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

Встановлення пакету

bash
dotnet add package Doconut.NETStandard.Dicom

Команда без вказання версії встановлює останній стабільний випуск. Щоб зафіксувати плагін на поточному випуску 26.8.0, передайте версію окремо:

bash
dotnet add package Doconut.NETStandard.Dicom --version 26.8.0

Тримайте пакет DICOM на тій же версії, що й Doconut.NETStandard. Ідентифікатор пакету — Doconut.NETStandard.Dicom; .26.8.0 з’являється лише у назві завантаженого файлу .nupkg.

Реєстрація плагіна

csharp
builder.Services.AddDoconut(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

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

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):

РежимСтворені сторінкиПризначення
AnimationOnlyPage 1 = animated GIF looping all framesШвидкий кінематографічний огляд
FramesOnlyPages 1..N = one static PNG per frameДіагностична навігація кадр за кадром
AnimationAndFrames (за замовчуванням)Page 1 = animated GIF, pages 2..N = static framesОгляд + деталі в одному документі

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

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

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 у .NET Standard

Відображення сторінок DICOM, окремих кадрів, анімація, трансформації та водяні знаки підтримуються. Технічні метадані тегів недоступні у пакеті .NET Standard, оскільки читач метаданих постачається лише у збірці .NET 8.

Viewer.GetDicomMetadataAsync(token) тому повертає null для DICOM‑сесії та записує одноразове попередження. Відповідний запит middleware ?token=…&meta повертає HTTP 501 Not Implemented зі стабільним кодом помилки dicom_metadata_unsupported. Використовуйте пакет .NET 8, коли технічні метадані DICOM є вимогою.

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

Повна таблиця властивостей DicomConfig розташована в API Reference → Format Configs. Приклад у виробничому середовищі з перемикачем по розширенню у довідковому застосунку:

csharp
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },

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

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

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

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

Усунення проблем

СимптомПеревірка
.dcm повідомляється як непідтримуванийреєстрація DicomPlugin та розгортання пакету
Помилка запуску після додавання плагінаЗавантажена ліцензія надає Dicom
З'являється лише одна сторінкаДжерело може бути одно-кадровим, або DisplayMode встановлено в AnimationOnly
Анімація занадто швидка або повільнаAnimationFrameDelayMs; ефективний таймінг GIF використовує одиниці 10 мс
Пам'ять зростає при великих багатокадрових файлахРежим відображення, роздільна здатність, кеш сторінок та явне закриття сесії
Метадані null, або &meta повертає 501Очікуване обмеження цього пакету; рендеринг не постраждає

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