Плагин 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 FPS; тайминг 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Ожидается в этом пакете — см. примечание вверху

Была ли эта страница полезной?