Πρόσθετο DICOM

Προβολή ιατρικών εικόνων με DicomPlugin

Το πρόσθετο DICOM προσθέτει προβολή ιατρικών εικόνων στο Doconut: τα αρχεία DICOM πολλαπλών καρέ αποδίδονται ως μια κινούμενη επισκόπηση, μεμονωμένα καρέ, ή και τα δύο. Το DICOM είναι μορφή μόνο-πρόσθετου — χωρίς αυτό το πρόσθετο (και τη δυνατότητα άδειας), τα αρχεία .dcm δεν μπορούν να ανοίξουν καθόλου.

Στο .NET Framework 4.7.2, τα αρχεία DICOM αποδίδονται πλήρως — σελίδες, καρέ και animation — αλλά τα τεχνικά μεταδεδομένα (οι ετικέτες DICOM) δεν είναι διαθέσιμα. Viewer.GetDicomMetadataAsync πάντα επιστρέφει null, και το αίτημα μεταδεδομένων του widget απαντά 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 = animated GIF που επαναλαμβάνει όλα τα καρέΓρήγορη κινηματογραφική επισκόπηση
FramesOnlyΣελίδες 1..N = ένα στατικό PNG ανά καρέΔιάγνωση πλοήγησης καρέ-καρέ
AnimationAndFrames (default)Σελίδα 1 = animated GIF, σελίδες 2..N = στατικά καρέΕπισκόπηση και λεπτομέρεια σε ένα έγγραφο

Ο χρόνος animation ελέγχεται από το AnimationFrameDelayMs (προεπιλογή 100 ms = 10 FPS· ο χρόνος GIF χρησιμοποιεί μονάδες 10 ms) και το LoopCount (0 = αέναος βρόχος).

Ο προβολέας διαπιστώνει ότι η σελίδα 1 είναι animated στέλνοντας ένα αίτημα HEAD γι' αυτήν. Ο χειριστής DocImage.axd πρέπει επομένως να αποδέχεται HEAD στο Web.config (verb="GET,HEAD,POST", δείτε την Εγκατάσταση); χωρίς αυτό, το IIS απαντά 404 πριν τρέξει το Doconut και η ανίχνευση animation δεν λειτουργεί ποτέ.

Ανάλυση

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. Σχεδιάστε το UI σας χωρίς αυτές — για παράδειγμα, κρύψτε ένα πάνελ μεταδεδομένων όταν το αποτέλεσμα είναι null.

Πλήρης αναφορά διαμόρφωσης

Ο πλήρης πίνακας ιδιοτήτων DicomConfig βρίσκεται στα Διαμορφώσεις Μορφής. Σε επιλογή ανά επέκταση, η περίπτωση DICOM φαίνεται ως εξής:

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

Υδατογράφημα και συμπεριφορά μνήμης

Η κανονική απόφαση για υδατογράφημα σελίδας ισχύει επίσης για την έξοδο DICOM. Για animated έξοδο, κάθε καρέ GIF σφραγίζεται, ώστε το σήμα να παραμένει ορατό καθ' όλη τη διάρκεια της αναπαραγωγής. Ένα προσαρμοσμένο DocOptions.Watermark χρησιμοποιείται μόνο όταν η άδεια επιτρέπει προσαρμοσμένα υδατογραφήματα· δεν μπορεί να αντικαταστήσει ένα υδατογράφημα αξιολόγησης.

Οι μελέτες πολλαπλών καρέ μπορούν να παράγουν τόσο animation όσο και μία στατική σελίδα ανά καρέ. Το AnimationAndFrames παρέχει την πιο πλούσια πλοήγηση αλλά και το υψηλότερο κόστος απόδοσης και μνήμης — και σε έναν ενιαίο διακομιστή αυτή η μνήμη ανήκει στη διαδικασία εργαζόμενου του IIS. Για μεγάλες μελέτες:

  • χρησιμοποιήστε FramesOnly όταν η επιθεώρηση καρέ είναι πιο σημαντική από την αναπαραγωγή·
  • αποφύγετε την αύξηση και των δύο αξόνων ανάλυσης χωρίς μέτρηση μνήμης·
  • κλείστε τη συνεδρία ρητά όταν η μελέτη δεν είναι πλέον ανοιχτή·
  • διατηρήστε το CachePages ενεργό μόνο όταν η επαναλαμβανόμενη πρόσβαση αξίζει τις διατηρημένες εικόνες.

Επίλυση προβλημάτων

ΣύμπτωμαΈλεγχος
.dcm αναφέρεται ως μη υποστηριζόμενοΚαταχώριση DicomPlugin και ανάπτυξη πακέτου
Κάθε αίτηση απαντά κενό 500 μετά την προσθήκη του πρόσθετουΗ άδεια παρέχει Dicom — αρχείο καταγραφής Windows, πηγή ASP.NET
Εμφανίζεται μόνο μία σελίδαΗ πηγή μπορεί να είναι μονοκαρέ, ή το DisplayMode είναι AnimationOnly
Η σελίδα 1 δεν είναι animatedΟ χειριστής στο Web.config αποδέχεται HEAD
Το animation είναι πολύ γρήγορο ή αργόAnimationFrameDelayMs; ο χρόνος GIF χρησιμοποιεί μονάδες 10 ms
Η μνήμη αυξάνεται σε μεγάλα αρχεία πολλαπλών καρέΤρόπος εμφάνισης, ανάλυση, cache σελίδων, και ρητό κλείσιμο συνεδρίας
Τα μεταδεδομένα είναι πάντα nullΑναμένεται σε αυτό το πακέτο — δείτε τη σημείωση στην κορυφή

Ήταν αυτή η σελίδα χρήσιμη;