DicomJson के साथ DICOM JSON आउटपुट को कैसे अनुकूलित करेंSerializerOptions

DicomJson के साथ DICOM JSON आउटपुट को कैसे अनुकूलित करेंSerializerOptions

यह ट्यूटोरियल दिखाता है कि कैसे C# में DicomJsonSerializerOptions का उपयोग करके DICOM JSON सीरियलिंग आउटपुट को अनुकूलित करने के लिए।

JSON आउटपुट को अनुकूलित क्यों करें?

विभिन्न प्रणालियों को अलग-अलग JSON प्रारूपों की आवश्यकता हो सकती है. अनुकूलन के लिए:

  • टैग संख्याओं के बजाय मानव-पढ़ने योग्य कीवर्ड का उपयोग करें
  • दस्तावेज़ के लिए टैग नाम शामिल करें
  • यह देखने के लिए कि संख्यात्मक मूल्यों का प्रतिनिधित्व कैसे किया जाता है
  • तीसरे पक्ष प्रणाली की विशिष्ट आवश्यकताओं को पूरा करना

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

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

उपलब्ध सीरियलिंग विकल्प

OptionDescriptionImpact
UseKeywordsAsJsonKeysJSON कुंजी के रूप में टैग संख्याओं के बजाय DICOM कीवर्ड का उपयोग करें"PatientName" एसएस "00100010"
WriteKeywordप्रत्येक टैग ऑब्जेक्ट में कुंजी शब्द फ़ील्ड शामिल करेंAdds "keyword": "PatientName"
WriteNameप्रत्येक टैग ऑब्जेक्ट में नाम फ़ील्ड शामिल करेंAdds "name": "Patient's Name"
NumberHandlingनियंत्रण संख्यात्मक मूल्य प्रतिनिधित्वश्रृंखला या वास्तविक JSON संख्याओं के रूप में संख्याएं

JSON आउटपुट को अनुकूलित करने के लिए कदम-दर-चरण गाइड

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

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

Install-Package Aspose.Medical

चरण 2: आवश्यक नाम स्थानों को शामिल कर

अपने कोड में आवश्यक नाम स्थानों के लिए संदर्भ जोड.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;

चरण 3: विकल्प उदाहरण बनाएं

बनाने के लिए A DicomJsonSerializerOptions उदाहरण के लिए, सेटिंग्स को स्थापित करें।

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

चरण 4: विकल्पों को स्थापित करें

अपने JSON आउटपुट के लिए वांछित विकल्प सेट करें।

options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;

चरण 5: विकल्पों के साथ सीरियल करें

विकल्पों को सीरियल विधि में स्थानांतरित करें।

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

चरण 6: अनुकूलित आउटपुट बचाएं

संग्रहीत या अनुकूलित JSON का उपयोग करें।

File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");

सभी विकल्पों के साथ पूर्ण कोड उदाहरण

यहाँ एक पूर्ण उदाहरण है जो सभी अनुकूलन विकल्पों को दिखाता है:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;

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

// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true,
    NumberHandling = JsonNumberHandling.WriteAsString
};

// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

// Save output
File.WriteAllText("fully_customized.json", json);

Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);

आउटपुट प्रारूपों की तुलना

डिफ़ॉल्ट आउटपुट (स्टैंडर्ड PS3.18 प्रारूप)

{
  "00100010": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

उपयोग के साथ कुंजी शब्दAsJsonKeys = सच

{
  "PatientName": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "PatientID": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

WriteKeyword और WriteName के साथ = सच

{
  "00100010": {
    "vr": "PN",
    "keyword": "PatientName",
    "name": "Patient's Name",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  }
}

संदर्भ के साथ = WriteAsString

{
  "00280010": {
    "vr": "US",
    "Value": ["512"]
  }
}

के साथ NumberHandling = AllowReadingFromString♰ WriteAsNumber

{
  "00280010": {
    "vr": "US",
    "Value": [512]
  }
}

उदाहरणों का उपयोग करें

मानव-पढ़ने योग्य दस्तावेज

DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true
};

string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);

PS3.18 अनुकूल वेब सेवाओं के लिए

// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = false,  // Use tag numbers
    WriteKeyword = false,
    WriteName = false,
    NumberHandling = JsonNumberHandling.WriteAsString
};

string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);

JavaScript Frontend Integration के बारे में टिप्पणियाँ

DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Easier to work with in JS
    NumberHandling = JsonNumberHandling.AllowReadingFromString  // Native numbers
};

string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);

डेटाबेस संग्रह के लिए

DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Better for querying
    WriteKeyword = false,          // Reduce storage size
    WriteName = false
};

string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);

महत्वपूर्ण विचार

Interoperability चेतावनी

गैर-मानक विकल्प कुछ DICOM पैर्सरों के साथ संगतता को तोड़ सकते हैं:

// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true  // Not PS3.18 compliant
};

// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();

अनुपालन की सिफारिश

जब DICOM PS3.18 अनुपालन की आवश्यकता होती है, तो डिफ़ॉल्ट सेटिंग्स का उपयोग करें:

// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm);  // No custom options

विकल्पों के साथ स्ट्रीम-आधारित श्रृंखलाकरण

बड़े फ़ाइलों के लिए, स्ट्रीम-आधारित श्रृंखला का उपयोग करें:

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

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

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true
};

using (FileStream fs = File.Create("large_customized.json"))
{
    DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}

अतिरिक्त जानकार

  • कस्टम विकल्प दोनों श्रृंखलाकरण और deserialization को प्रभावित करते हैं - गोल-ट्रिपिंग डेटा के दौरान लगातार विकल्प सुनिश्चित करें।
  • The WriteName विकल्प मानव-पढ़ने योग्य DICOM टैग नाम जोड़ता है जो JSON आकार में वृद्धि करता है लेकिन पढ़ने की क्षमता में सुधार होता है।
  • कुछ तीसरे पक्ष के प्रणालियों को विशिष्ट JSON प्रारूपों की आवश्यकता हो सकती है - विकल्पों का चयन करने से पहले उनके दस्तावेजों की जांच करें।

Conclusion

इस ट्यूटोरियल में दिखाया गया है कि कैसे Aspose.Medical का उपयोग करके C# में DICOM JSON सीरियलिंग आउटपुट को अनुकूलित करने के लिए. DicomJsonSerializerOptions को कॉन्फ़िगर करके, आप विशिष्ट एकीकरण आवश्यकताओं को संतुलित करते हुए पढ़ने, आकार, और पारस्परिकता की जरूरतों के साथ-साथ J SON प्रारूप को समायोजित कर सकते हैं.

 हिंदी