Plugin DICOM

Visualize imagens médicas com DicomPlugin

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

Instalar o pacote

bash
dotnet add package Doconut.NETStandard.Dicom

O comando sem versão instala a versão estável mais recente. Para fixar o plugin na versão atual 26.8.0, passe a versão separadamente:

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

Mantenha o pacote DICOM na mesma versão que Doconut.NETStandard. O ID do pacote é Doconut.NETStandard.Dicom; .26.8.0 aparece apenas no nome do arquivo .nupkg baixado.

Registrar o plugin

csharp
builder.Services.AddDoconut(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. Uma concessão não temporária ausente ou insuficiente normalmente falha durante AddDoconut(). Como nenhum visualizador interno lida com esses formatos, o gate de tempo de execução também falha de forma crítica 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 de múltiplas quadros podem ser apresentados de três maneiras (DicomDisplayMode):

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

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

Resolução

DicomConfig renderiza a 100 DPI por eixo por padrão. As propriedades de resolução têm uma cadeia de fallback importante de se conhecer: se você não definir HorizontalResolution/VerticalResolution explicitamente, elas seguem BaseConfig.ImageResolution quando configurado, e só então retornam a 100.

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

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

Disponibilidade de metadados DICOM no .NET Standard

A renderização de páginas DICOM, quadros individuais, animação, transformações e marca d'água são suportados. Metadados de tags técnicas não estão disponíveis no pacote .NET Standard porque o leitor de metadados é distribuído apenas em uma build .NET 8.

Viewer.GetDicomMetadataAsync(token) portanto retorna null para uma sessão DICOM e registra um aviso único. A requisição de middleware correspondente ?token=…&meta retorna HTTP 501 Not Implemented com o código de erro estável dicom_metadata_unsupported. Use o pacote .NET 8 quando metadados técnicos DICOM são um requisito.

Referência completa de configuração

A tabela completa de propriedades DicomConfig está em Referência de API → Configurações de Formato. Um exemplo de produção da troca por extensão do aplicativo de referência:

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

Marca d'água e comportamento de memória

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

Estudos multiquadro podem gerar tanto uma animação quanto uma página estática por quadro. AnimationAndFrames oferece a navegação mais rica, mas também tem o maior custo de renderização e cache. Para estudos grandes:

  • use FramesOnly quando a inspeção de quadros for mais importante que a reprodução cinematográfica;
  • evite aumentar ambos os eixos de resolução sem medir a memória;
  • feche a sessão explicitamente quando o estudo não estiver mais aberto;
  • mantenha CachePages habilitado somente quando os benefícios de acesso repetido superarem as imagens retidas.

Solução de problemas

SintomaVerificação
.dcm é relatado como não suportadoRegistro do DicomPlugin e implantação do pacote
Falha na inicialização após adicionar o pluginA licença carregada concede Dicom
Aparece apenas uma páginaA fonte pode ser de quadro único, ou DisplayMode está AnimationOnly
A animação está muito rápida ou lentaAnimationFrameDelayMs; o tempo efetivo do GIF usa unidades de 10 ms
A memória cresce em arquivos multiquadro grandesModo de exibição, resolução, cache de páginas e fechamento explícito da sessão
Metadados são null, ou &meta retorna 501Limitação esperada deste pacote; a renderização não é afetada

Esta página foi útil?