Plugin DICOM

Afficher des images médicales avec DicomPlugin

Le plugin DICOM ajoute la visualisation d'images médicales à Doconut : les fichiers DICOM multi‑trames sont rendus sous forme d'aperçu animé, de trames individuelles, ou les deux. DICOM est un format uniquement plugin — sans ce plugin (et sa capacité de licence), les fichiers .dcm ne peuvent pas être ouverts du tout.

Sur .NET Framework 4.7.2, les fichiers DICOM sont rendus complètement — pages, trames et animation — mais les métadonnées techniques (les balises DICOM) ne sont pas disponibles. Viewer.GetDicomMetadataAsync renvoie toujours null, et la requête de métadonnées du widget répond 501 Not Implemented. Utilisez Doconut.NET8 si votre application a besoin des balises.

Installer le package

powershell
Install-Package Doconut.NETFramework.Dicom

Conservez le package DICOM à la même version que Doconut.NETFramework.

Enregistrer le plugin

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

Le plugin (Name : "Doconut DICOM Viewer") enregistre des visionneuses pour les extensions .dcm et .ima, conditionnées par la capacité Dicom. Si la licence ne le permet pas, DoconutHost.Initialize lève une exception depuis Application_Start et le site répond à chaque requête avec un 500 vide (la raison se trouve dans le journal d'événements Windows). Comme aucun visualiseur intégré ne gère ces formats, l'ouverture d'un fichier échoue complètement si la capacité devient indisponible par la suite :

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

Ouvrir un fichier DICOM

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

Modes d’affichage

Les fichiers DICOM multi‑trames peuvent être présentés de trois manières (DicomDisplayMode) :

ModePages généréesUtilisation
AnimationOnlyPage 1 = GIF animé bouclant toutes les tramesRevue cinématographique rapide
FramesOnlyPages 1..N = un PNG statique par trameNavigation diagnostique trame par trame
AnimationAndFrames (default)Page 1 = GIF animé, pages 2..N = trames statiquesVue d'ensemble et détail dans un même document

Le timing de l'animation est contrôlé par AnimationFrameDelayMs (par défaut 100 ms = 10 IPS ; le timing GIF utilise des unités de 10 ms) et LoopCount (0 = boucle infinie).

Le visualiseur découvre que la page 1 est animée en envoyant une requête HEAD pour celle‑ci. Le gestionnaire DocImage.axd doit donc accepter HEAD dans Web.config (verb="GET,HEAD,POST", voir Installation) ; sans cela, IIS renvoie 404 avant que Doconut ne s'exécute et la détection d'animation ne fonctionne jamais.

Résolution

DicomConfig rend à 100 DPI par axe par défaut. Si vous ne définissez pas explicitement HorizontalResolution/VerticalResolution, ils suivent BaseConfig.ImageResolution lorsqu'il est défini, et ne retombent à 100 que dans le cas contraire.

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

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

Métadonnées 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.

Cette méthode existe dans ce package afin que le code partagé avec le package .NET 8 compile, mais la lecture des balises DICOM nécessite un composant qui n’a pas de version .NET Framework. Concevez votre interface utilisateur sans elles — par exemple, masquez le panneau de métadonnées lorsque le résultat est null.

Référence complète de la configuration

Le tableau complet des propriétés DicomConfig se trouve dans Format Configs. Dans une sélection par extension, le cas DICOM ressemble à ceci :

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

Filigrane et comportement mémoire

La décision normale de filigrane de page s’applique également à la sortie DICOM. Pour une sortie animée, chaque trame GIF est marquée, de sorte que le filigrane reste visible pendant toute la lecture. Un DocOptions.Watermark personnalisé n’est utilisé que lorsque la licence autorise les filigranes personnalisés ; il ne peut pas remplacer un filigrane d’évaluation.

Les études multi‑trames peuvent produire à la fois une animation et une page statique par trame. AnimationAndFrames offre la navigation la plus riche mais aussi le coût de rendu et de mémoire le plus élevé — et sur un serveur unique cette mémoire appartient au processus de travail IIS. Pour les études volumineuses :

  • utilisez FramesOnly lorsque l’inspection des trames est plus importante que la lecture ;
  • évitez d’augmenter les deux axes de résolution sans mesurer la mémoire ;
  • fermez explicitement la session lorsque l’étude n’est plus ouverte ;
  • conservez CachePages activé uniquement lorsque l’accès répété justifie la conservation des images.

Dépannage

SymptômeVérification
.dcm est signalé comme non pris en chargeEnregistrement du DicomPlugin et déploiement du package
Chaque requête répond un 500 vide après l’ajout du pluginLa licence accorde Dicom — journal d’événements Windows, source ASP.NET
Une seule page apparaîtLa source peut être à trame unique, ou DisplayMode est AnimationOnly
La page 1 ne s’anime pasLe gestionnaire dans Web.config accepte HEAD
L’animation est trop rapide ou trop lenteAnimationFrameDelayMs ; le timing GIF utilise des unités de 10 ms
La mémoire augmente avec de gros fichiers multi‑tramesMode d’affichage, résolution, cache de pages et fermeture explicite de la session
Les métadonnées sont toujours nullAttendu sur ce package — voir la note en haut

Cette page était-elle utile ?