Πώς να μετατρέψετε το DICOM σε XML και πίσω χρησιμοποιώντας το DicomXmlSerializer

Πώς να μετατρέψετε το DICOM σε XML και πίσω χρησιμοποιώντας το DicomXmlSerializer

Αυτό το εγχειρίδιο αποδεικνύει πώς να μετατρέψετε τα αρχεία DICOM σε μορφή XML και να αποστειρώσετε το XML πίσω στο C#. Το μορφότυπο XML προτιμάται για ενσωμάτωση με συστήματα κληρονομιάς, ροές εργασίας HL7 και περιβάλλοντα όπου το εργαλείο XML είναι καλά εγκατεστημένο.

Πότε να χρησιμοποιήσετε το XML πάνω από το JSON

  • *Συμφωνία για την ενσωμάτωση του νόμου:- Τα υφιστάμενα middleware και τα συστήματα συχνά περιμένουν μορφή XML.

  • ** HL7 Συμβατότητα**:- Τα συστήματα υγειονομικής περίθαλψης που χρησιμοποιούν HL7 v2/v3 συνήθως λειτουργούν με XML.

  • • Το XML Tooling:- Οργανώσεις με εγκατεστημένες μετασχηματισμούς XSLT και ερωτήσεις XPath.

  • *Σχέδιο επικύρωσης *:- Τα σχήματα XML παρέχουν αυστηρές δυνατότητες επικύρωσης.

Προϋποθέσεις: Προετοιμασία του περιβάλλοντος

  • Εγκαταστήστε το Visual Studio ή οποιοδήποτε συμβατό .NET IDE.
  • Δημιουργήστε ένα νέο πρόγραμμα εφαρμογής .NET 8 console.
  • Εγκαταστήστε το Aspose.Medical από το NuGet Package Manager.

Βήμα προς βήμα Οδηγός για τη μετατροπή DICOM σε XML

Βήμα 1: Εγκατάσταση Aspose.Medical

Προσθήκη της βιβλιοθήκης Aspose.Medical στο έργο σας χρησιμοποιώντας το NuGet.

Install-Package Aspose.Medical

Βήμα 2: Συμπληρώστε τις απαραίτητες ονομαστικές περιοχές

Προσθέστε αναφορές στις απαιτούμενες ονομαστικές περιοχές στον κώδικα σας.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

Βήμα 3: Κατεβάστε το αρχείο DICOM

Κατεβάστε το αρχείο DICOM που θέλετε να μετατρέψετε.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

Βήμα 4: Σειράρισμα στο XML

Χρησιμοποιήστε το DicomXmlSerializer.Serialize Μέθοδος μετατροπής σε XML.

string xml = DicomXmlSerializer.Serialize(dcm.Dataset);

Βήμα 5: Αποθηκεύστε την εκκίνηση XML

Αποθηκεύστε το XML σε ένα αρχείο για αποθήκευση ή μετάδοση.

File.WriteAllText("patient_scan.xml", xml);

Βήμα 6: Deserialize XML Back to Dataset

Για να μετατρέψετε το XML πίσω σε DICOM, χρησιμοποιήστε το Deserialize Μέθοδος.

Dataset? dataset = DicomXmlSerializer.Deserialize(xml);

Συμπληρωματικό παράδειγμα κώδικα: DICOM σε XML μετατροπή

Εδώ είναι ένα πλήρες παράδειγμα για τη μετατροπή DICOM σε XML:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Convert to XML
string xml = DicomXmlSerializer.Serialize(dcm.Dataset);

// Save to file
File.WriteAllText("patient_scan.xml", xml);

Console.WriteLine("DICOM converted to XML successfully!");
Console.WriteLine($"Output saved to: patient_scan.xml");

Συμπληρωματικό παράδειγμα κώδικα: Μετατροπή XML σε DICOM

Εδώ είναι ένα πλήρες παράδειγμα για τη μετατροπή του XML πίσω σε DICOM:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read XML from file
string xml = File.ReadAllText("patient_scan.xml");

// Deserialize to Dataset
Dataset? dataset = DicomXmlSerializer.Deserialize(xml);

if (dataset != null)
{
    // Create DicomFile from Dataset
    DicomFile dcm = new DicomFile(dataset);
    
    // Save as DICOM file
    dcm.Save("reconstructed.dcm");
    
    Console.WriteLine("XML converted back to DICOM successfully!");
}
else
{
    Console.WriteLine("Failed to deserialize XML.");
}

Ετικέτα: DICOM → XML → ΔΙΚΟΜ

Πλήρης περιστροφική μετατροπή που αποδεικνύει την ακεραιότητα των δεδομένων:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Load original DICOM file
DicomFile original = DicomFile.Open("original_scan.dcm");
Console.WriteLine("Original DICOM loaded.");

// Convert to XML
string xml = DicomXmlSerializer.Serialize(original.Dataset);
Console.WriteLine($"Converted to XML ({xml.Length} characters).");

// Save XML (for transmission or storage)
File.WriteAllText("intermediate.xml", xml);

// Later: Deserialize XML back to Dataset
string loadedXml = File.ReadAllText("intermediate.xml");
Dataset? reconstructedDataset = DicomXmlSerializer.Deserialize(loadedXml);

if (reconstructedDataset != null)
{
    // Create new DicomFile
    DicomFile reconstructed = new DicomFile(reconstructedDataset);
    reconstructed.Save("reconstructed_scan.dcm");
    
    Console.WriteLine("Round-trip complete: DICOM → XML → DICOM");
}

Η δομή προέλευσης XML

Η έκδοση XML αντιπροσωπεύει τις ετικέτες DICOM σε δομημένο μορφότυπο:

<?xml version="1.0" encoding="utf-8"?>
<NativeDicomModel>
  <DicomAttribute tag="00080005" vr="CS" keyword="SpecificCharacterSet">
    <Value number="1">ISO_IR 100</Value>
  </DicomAttribute>
  <DicomAttribute tag="00080020" vr="DA" keyword="StudyDate">
    <Value number="1">20240115</Value>
  </DicomAttribute>
  <DicomAttribute tag="00100010" vr="PN" keyword="PatientName">
    <PersonName number="1">
      <Alphabetic>
        <FamilyName>DOE</FamilyName>
        <GivenName>JOHN</GivenName>
      </Alphabetic>
    </PersonName>
  </DicomAttribute>
  <DicomAttribute tag="00100020" vr="LO" keyword="PatientID">
    <Value number="1">12345</Value>
  </DicomAttribute>
</NativeDicomModel>

Συγκρίνετε το JSON με το XML Output

Μεγάλη σύγκριση

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("sample.dcm");

string json = DicomJsonSerializer.Serialize(dcm);
string xml = DicomXmlSerializer.Serialize(dcm.Dataset);

Console.WriteLine($"JSON size: {json.Length:N0} characters");
Console.WriteLine($"XML size: {xml.Length:N0} characters");
// XML is typically 20-40% larger than JSON

Χρησιμοποιήστε συστάσεις περιπτώσεων

ScenarioΣυνιστώμενη μορφή
Νέες υπηρεσίες webJSON
Ολοκλήρωση του PACSXML
HL7 μεσαίο υλικόXML
Ετικέτες JavaScript frontendsJSON
XSLT μετασχηματισμόςXML
NoSQL βάσεις δεδομένωνJSON
Σχεδιασμός επικύρωσηςXML

Ενσωμάτωση με συστήματα κληρονομιάς

Παραδείγματα ενσωμάτωσης με κληρονομικό middleware:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Net.Http;
using System.Text;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string xml = DicomXmlSerializer.Serialize(dcm.Dataset);

// Send to legacy SOAP service
using HttpClient client = new();
var content = new StringContent(xml, Encoding.UTF8, "application/xml");

HttpResponseMessage response = await client.PostAsync(
    "http://legacy-pacs/dicom/import",
    content
);

if (response.IsSuccessStatusCode)
{
    Console.WriteLine("XML successfully sent to legacy system!");
}

Troubleshooting

Επεξεργασία Invalid XML

Συσκευή αποσυνδεσιμότητας σε try-catch για χειρισμό σφαλμάτων:

try
{
    Dataset? dataset = DicomXmlSerializer.Deserialize(xml);
    if (dataset == null)
    {
        Console.WriteLine("Deserialization returned null.");
    }
}
catch (System.Xml.XmlException ex)
{
    Console.WriteLine($"XML parsing error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Deserialization error: {ex.Message}");
}

Ετικέτες Κωδικοποίηση Προβλήματα

Διασφαλίστε τη σωστή κρυπτογράφηση κατά την ανάγνωση / γραφή αρχείων XML:

// Write with explicit encoding
using (StreamWriter writer = new StreamWriter("output.xml", false, Encoding.UTF8))
{
    writer.Write(xml);
}

// Read with explicit encoding
using (StreamReader reader = new StreamReader("input.xml", Encoding.UTF8))
{
    string xml = reader.ReadToEnd();
}

Μεγάλη επεξεργασία αρχείων

Για πολύ μεγάλα αρχεία DICOM, εξετάστε το streaming:

using (FileStream fs = File.Create("large_output.xml"))
using (StreamWriter writer = new StreamWriter(fs, Encoding.UTF8))
{
    string xml = DicomXmlSerializer.Serialize(dcm.Dataset);
    writer.Write(xml);
}

Πρόσθετες πληροφορίες

  • Η μορφή XML παρέχει καλύτερη ανθρώπινη ανάγνωση με την κατάλληλη εντύπωση.
  • Το XML είναι πιο λεκτικό από το JSON, γεγονός που οδηγεί σε μεγαλύτερα μεγέθη αρχείων.
  • Σκεφτείτε τη συμπίεση για την αποθήκευση ή τη μετάδοση μεγάλων αρχείων XML.
  • Τόσο το JSON όσο και το XML υποστηρίζουν τους ίδιους τύπους και δομές δεδομένων DICOM.

Συμπεράσματα

Αυτό το εγχειρίδιο έχει δείξει πώς να μετατρέψετε τα αρχεία DICOM σε μορφότυπο XML και να αποστειρώσετε το XML πίσω στο C# χρησιμοποιώντας το Aspose.Medical. XML serialization είναι απαραίτητη για την ενσωμάτωση με κληρονομικά συστήματα υγειονομικής περίθαλψης και περιβάλλοντα που βασίζονται στο XML εργαλείο και τις ροές εργασίας.

 Ελληνικά