Plugin DICOM

Visualize imagens médicas com DicomPlugin

O plugin DICOM adiciona visualização de imagens médicas ao Doconut: arquivos DICOM multiquadro 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.NET6.Dicom

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

bash
dotnet add package Doconut.NET6.Dicom --version 26.7.0

Mantenha o pacote DICOM na mesma versão que o Doconut.NET6. O ID do pacote é Doconut.NET6.Dicom; .26.7.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 permissão 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 multiquadro podem ser apresentados de três maneiras (DicomDisplayMode):

ModoPáginas produzidasUso
AnimationOnlyPágina 1 = GIF animado repetindo 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 + detalhe em um único documento

O tempo da animação é controlado por AnimationFrameDelayMs (padrão 100 ms = 10 FPS; granularidade do GIF em 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: se você não definir HorizontalResolution/VerticalResolution explicitamente, elas seguem BaseConfig.ImageResolution quando configurado, 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 };

Disponibilidade de metadados DICOM no .NET 6

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 6 porque o leitor de metadados não possui uma compilação para .NET 6.

Viewer.GetDicomMetadataAsync(token) portanto retorna null para uma sessão DICOM e registra um aviso único. A requisição de middleware correspondente ?token=…&meta devolve 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 forem um requisito.

Referência completa de configuração

A tabela completa de propriedades DicomConfig está em Referência da API → Configurações de Formato. Um exemplo de produção do switch por extensão no app 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 de página também se aplica à saída DICOM. Para saída animada, cada quadro GIF é carimbado para que a marca 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 é 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 do .NET 6; a renderização não é afetada

Esta página foi útil?