DicomXml का उपयोग करके DICOM को XML और Back में कैसे परिवर्तित करें

DicomXml का उपयोग करके DICOM को XML और Back में कैसे परिवर्तित करें

इस ट्यूटोरियल में दिखाया गया है कि कैसे DICOM फ़ाइलों को XML प्रारूप में परिवर्तित करने के लिए और C# का उपयोग करके XML को वापस डीआईसीओएम में डिज़ेरियलिंग. XML फ़ॉर्मेट को विरासत प्रणालियों, HL7 कार्यप्रवाहों, और वातावरण के साथ एकीकरण की पसंद है जहां XML टूलिंग अच्छी तरह से स्थापित है।

जब JSON पर XML का उपयोग करें

    • अवैध प्रबंधन *:- मौजूदा मध्यवर्ती और सिस्टम अक्सर XML प्रारूप की उम्मीद करते हैं।
  • HL7 संगतता:- HL7 v2/v3 का उपयोग करने वाले स्वास्थ्य देखभाल प्रणालियां आमतौर पर XML के साथ काम करती हैं।

    • एक्सएमएल टूलिंग:- स्थापित XSLT ट्रांसफार्मर और XPath क्वेरी के साथ संगठन।
    • प्रोजेक्ट सत्यापन *:- XML योजनाएं सख्त वैधता क्षमता प्रदान करती हैं।

आवश्यकताएँ: पर्यावरण को तैयार करन

  • Visual Studio या किसी भी संगत .NET IDE सेट कर.
  • एक नया .NET 8 एप्लिकेशन प्रोजेक्ट बनाएं।
  • NuGet Package Manager से Aspose.Medical स्थापित करें।

DICOM को XML में परिवर्तित करने के लिए कदम-दर-चरण गाइड

चरण 1: Aspose.Medical स्थापित करें

NuGet का उपयोग करके अपने परियोजना में Aspose.Medical लाइब्रेरी जोड़ें।

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: XML को डेटासेट में वापस डिज़ेरियल करें

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.");
}

Round-Trip उदाहरण: DICOM → XML → DIKOM

डेटा ईमानदारी को साबित करने के लिए पूर्ण रूट-ट्रिप रूपांतरण:

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 vs XML आउटपुट की तुलना करें

तुलना के आकार

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अनुशंसित प्रारूप
नई वेबसाइट सेवाएंJSON
PACS Integration के बारे में जानकारीXML के बारे म
HL7 मध्यवर्गीयXML के बारे म
जावास्क्रिप्ट frontendsJSON
XSLT परिवर्तनXML के बारे म
NoSQL डेटाबेसJSON
योजना की वैधताXML के बारे म

विरासत प्रणालियों के साथ एकीकरण

उदाहरण मध्यवर्ती विरासत के साथ एकीकरण:

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 में Wrap deserialization:

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 फ़ाइलों के लिए, स्ट्रीमिंग पर विचार करें:

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 डेटा प्रकार और संरचना का समर्थन करते हैं।

Conclusion

इस ट्यूटोरियल में दिखाया गया है कि कैसे DICOM फ़ाइलों को XML प्रारूप में परिवर्तित करने के लिए और C# में डीआईसीओएम में वापस XML deserialize का उपयोग करके Aspose.Medical. XML serialization वंशानुगत स्वास्थ्य देखभाल प्रणालियों और वातावरण के साथ एकीकृत करना आवश्यक है जो XML टूलिंग और कार्य प्रवाह पर भरोसा करते हैं।

 हिंदी