Plugin DICOM

Visualize imagens médicas com DicomPlugin

O plugin DICOM adiciona visualização de imagens médicas ao Doconut: arquivos DICOM multi‑frame são renderizados como uma visão animada, quadros individuais ou ambos. DICOM é um formato somente‑plugin — sem este plugin (e sua capacidade de licença), arquivos .dcm não podem ser abertos de forma alguma.

No .NET Framework 4.7.2, arquivos DICOM são renderizados completamente — páginas, quadros e animação — mas os metadados técnicos (as tags DICOM) não estão disponíveis. Viewer.GetDicomMetadataAsync sempre retorna null, e a solicitação de metadados do widget responde 501 Not Implemented. Use Doconut.NET8 se sua aplicação precisar das tags.

Instalar o pacote

powershell
Install-Package Doconut.NETFramework.Dicom

Mantenha o pacote DICOM na mesma versão que Doconut.NETFramework.

Registrar o plugin

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

O plugin (Name: "Doconut DICOM Viewer") registra visualizadores para as extensões .dcm e .ima, controlados pela capacidade Dicom. Se a licença não a conceder, DoconutHost.Initialize lança uma exceção em Application_Start e o site responde a todas as requisições com um 500 vazio (o motivo está no log de eventos do Windows). Como nenhum visualizador interno lida com esses formatos, abrir um deles falha imediatamente se a capacidade ficar indisponível posteriormente:

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

Abrindo um arquivo DICOM

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

Modos de exibição

Arquivos DICOM multi‑frame podem ser apresentados de três maneiras (DicomDisplayMode):

ModoPáginas produzidasUso
AnimationOnlyPágina 1 = GIF animado percorrendo todos os quadrosRevisão cinematográfica rápida
FramesOnlyPáginas 1..N = um PNG estático por quadroNavegação diagnóstico quadro a quadro
AnimationAndFrames (padrão)Página 1 = GIF animado, páginas 2..N = quadros estáticosVisão geral e detalhe em um único documento

O tempo da animação é controlado por AnimationFrameDelayMs (padrão 100 ms = 10 FPS; o timing do GIF usa unidades de 10 ms) e LoopCount (0 = loop infinito).

O visualizador descobre que a página 1 é animada enviando uma requisição HEAD para ela. O manipulador DocImage.axd deve, portanto, aceitar HEAD em Web.config (verb="GET,HEAD,POST", veja Installation); sem isso, o IIS responde 404 antes que o Doconut seja executado e a detecção de animação nunca funciona.

Resolução

DicomConfig renderiza a 100 DPI por eixo por padrão. Se você não definir HorizontalResolution/VerticalResolution explicitamente, eles seguem BaseConfig.ImageResolution quando este está definido, e só então retornam a 100.

csharp
// Bump uniforme via a propriedade base…
new DicomConfig { ImageResolution = 150 };

// …ou controle por eixo
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

Metadados DICOM

csharp
var metadata = await viewer.GetDicomMetadataAsync(token);
// No .NET Framework isso é sempre null: o leitor de metadados DICOM não está disponível para este
// alvo. Páginas, quadros e animação são renderizados normalmente.

O método existe neste pacote para que o código compartilhado com o pacote .NET 8 compile, mas a leitura das tags DICOM requer um componente que não possui build para .NET Framework. Planeje sua interface de usuário sem elas — por exemplo, oculte um painel de metadados quando o resultado for null.

Referência completa de configuração

A tabela completa de propriedades DicomConfig está em Format Configs. Em uma seleção por extensão, o caso DICOM se parece com isto:

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

Marca d'água e comportamento de memória

A decisão normal de marca d'água de página também se aplica à saída DICOM. Para saída animada, cada quadro GIF recebe a marca, de modo que a marca permanece visível durante a reprodução. Um DocOptions.Watermark personalizado é usado apenas quando a licença permite marcas d'água personalizadas; ele não pode substituir uma marca d'água de avaliação.

Estudos multi‑frame podem gerar tanto uma animação quanto uma página estática por quadro. AnimationAndFrames oferece a navegação mais rica, mas também o maior custo de renderização e memória — e, em um único servidor, essa memória pertence ao processo worker do IIS. Para estudos grandes:

  • use FramesOnly quando a inspeção de quadros for mais importante que a reprodução;
  • evite aumentar ambos os eixos de resolução sem medir o consumo de memória;
  • feche a sessão explicitamente quando o estudo não estiver mais aberto;
  • mantenha CachePages ativado apenas quando o acesso repetido justificar as imagens retidas.

Solução de problemas

SintomaVerificação
.dcm é relatado como não suportadoRegistro do DicomPlugin e implantação do pacote
Cada requisição responde um 500 vazio após adicionar o pluginA licença concede Dicom — log de eventos do Windows, origem ASP.NET
Apenas uma página apareceA fonte pode ser de quadro único, ou DisplayMode está como AnimationOnly
Página 1 não animaO manipulador em Web.config aceita HEAD
Animação muito rápida ou lentaAnimationFrameDelayMs; o timing do GIF usa unidades de 10 ms
Memória cresce em arquivos multi‑frame grandesModo de exibição, resolução, cache de páginas e fechamento explícito da sessão
Metadados são sempre nullEsperado neste pacote — veja a nota no início

Esta página foi útil?