कई DICOM फ़ाइलों को एकल JSON Array में कैसे परिवर्तित करें
यह ट्यूटोरियल दिखाता है कि कई DICOM फ़ाइलों को C# का उपयोग करके एक एकल JSON रेंज में कैसे परिवर्तित किया जाए. यह दृष्टिकोण डेटा इंजीनियरों के लिए आदर्श है जिन्हें विश्लेषणात्मक उपकरणों, डाटाबेस, या डीएचटी पाइपलाइनों पर डीआईसीओएम मेटाडेटा निर्यात करने की आवश्यकता है.
JSON Array Export के फायदे
Bulk डेटा प्रसंस्करण:- एक ही ऑपरेशन में कई DICOM रिकॉर्ड को डेटाबेस में आयात करें।
- विश्लेषणात्मक तैयारी:- JSON रैली सीधे Python, Spark, या डेटा भंडार में लोड की जा सकती है।
- कॉम्पैक्ट आउटपुट *:- सभी मेटाडेटा शामिल एकल फ़ाइल डेटा प्रबंधन को सरल बनाता है।
आवश्यकताएँ: पर्यावरण को तैयार करन
- Visual Studio या किसी भी संगत .NET IDE सेट कर.
- एक नया .NET 8 एप्लिकेशन प्रोजेक्ट बनाएं।
- NuGet Package Manager से Aspose.Medical स्थापित करें।
- एक फ़ोल्डर तैयार करें जिसमें कई DICOM फ़ाइलें शामिल हैं।
चरण-दर-चरण गाइड कई DICOM फ़ाइलों को JSON Array में परिवर्तित करने के लिए
चरण 1: Aspose.Medical स्थापित करें
NuGet का उपयोग करके अपने परियोजना में Aspose.Medical लाइब्रेरी जोड़ें।
Install-Package Aspose.Medicalचरण 2: आवश्यक नाम स्थानों को शामिल कर
अपने कोड में आवश्यक नाम स्थानों के लिए संदर्भ जोड.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;चरण 3: कई DICOM फ़ाइलों को लोड करें
DICOM फ़ाइलों को एक फ़ोल्डर से एक संग्रह में लोड करें।
string inputFolder = @"C:\DicomStudies";
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");
List<DicomFile> dicomFiles = new();
foreach (string path in dicomPaths)
{
dicomFiles.Add(DicomFile.Open(path));
}चरण 4: डेटासेट आरे से निकालना
लोड किए गए फ़ाइलों से डेटासेट वस्तुओं की एक श्रृंखला बनाएं।
Dataset[] datasets = dicomFiles
.Select(dcm => dcm.Dataset)
.ToArray();चरण 5: JSON Array के लिए सीरियल करें
Use DicomJsonSerializer.Serialize डेटा सेट के साथ।
string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);चरण 6: JSON Array को बचाएं
JSON Array को एक फ़ाइल में सहेजें।
File.WriteAllText("dicom_studies.json", jsonArray);
Console.WriteLine($"Exported {datasets.Length} DICOM datasets to JSON array.");पूर्ण कोड उदाहरण
यहाँ एक पूर्ण उदाहरण दिखाता है कि कैसे कई DICOM फ़ाइलों को एक JSON रेंज में परिवर्तित करने के लिए:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
string inputFolder = @"C:\DicomStudies";
string outputFile = "dicom_studies.json";
// Get all DICOM files
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");
Console.WriteLine($"Found {dicomPaths.Length} DICOM files.");
// Load all files
List<DicomFile> dicomFiles = new();
foreach (string path in dicomPaths)
{
try
{
dicomFiles.Add(DicomFile.Open(path));
}
catch (Exception ex)
{
Console.WriteLine($"Skipping invalid file: {Path.GetFileName(path)}");
}
}
// Build dataset array
Dataset[] datasets = dicomFiles
.Select(dcm => dcm.Dataset)
.ToArray();
// Serialize to JSON array
string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);
// Save to file
File.WriteAllText(outputFile, jsonArray);
Console.WriteLine($"Successfully exported {datasets.Length} datasets to {outputFile}");JSON Array आउटपुट
JSON आउटपुट रैली इस तरह दिखती है:
[
{
"00080005": { "vr": "CS", "Value": ["ISO_IR 100"] },
"00100010": { "vr": "PN", "Value": [{ "Alphabetic": "DOE^JOHN" }] },
"00100020": { "vr": "LO", "Value": ["12345"] }
},
{
"00080005": { "vr": "CS", "Value": ["ISO_IR 100"] },
"00100010": { "vr": "PN", "Value": [{ "Alphabetic": "SMITH^JANE" }] },
"00100020": { "vr": "LO", "Value": ["67890"] }
}
]LINQ के साथ बड़े डेटा सेट का प्रसंस्करण
बड़े डेटा सेट के साथ बेहतर स्मृति प्रबंधन के लिए, LINQ प्रोजेक्शन का उपयोग करें:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
string inputFolder = @"C:\LargeDicomArchive";
string outputFile = "large_export.json";
// Process files lazily to manage memory
Dataset[] datasets = Directory.GetFiles(inputFolder, "*.dcm")
.Select(path =>
{
try
{
return DicomFile.Open(path).Dataset;
}
catch
{
return null;
}
})
.Where(ds => ds != null)
.ToArray()!;
string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);
File.WriteAllText(outputFile, jsonArray);
Console.WriteLine($"Exported {datasets.Length} datasets.");प्रगति की रिपोर्टिंग
बड़े बैच के लिए, प्रगति रिपोर्ट जोड़ें:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
string inputFolder = @"C:\DicomStudies";
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");
List<Dataset> datasets = new();
int processed = 0;
int total = dicomPaths.Length;
foreach (string path in dicomPaths)
{
try
{
DicomFile dcm = DicomFile.Open(path);
datasets.Add(dcm.Dataset);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {Path.GetFileName(path)} - {ex.Message}");
}
processed++;
if (processed % 100 == 0 || processed == total)
{
Console.WriteLine($"Progress: {processed}/{total} ({processed * 100 / total}%)");
}
}
string jsonArray = DicomJsonSerializer.Serialize(datasets.ToArray(), writeIndented: true);
File.WriteAllText("export.json", jsonArray);
Console.WriteLine($"Export complete: {datasets.Count} datasets.");JSON Array को Analytics Tools में आयात करें
Python उदाहरण
import json
import pandas as pd
# Load the exported JSON array
with open('dicom_studies.json', 'r') as f:
dicom_data = json.load(f)
# Convert to DataFrame for analysis
df = pd.json_normalize(dicom_data)
print(df.head())MongoDB में लोड करें
// Using mongoimport
// mongoimport --db medical --collection studies --jsonArray --file dicom_studies.json
स्मृति विचार
बहुत बड़े डेटा सेट के साथ काम करते समय:
- बैट्स में प्रक्रिया: 100-500 फ़ाइलों के बैट्स में फाइल को विभाजित करें।
- स्ट्रीम आउटपुट: बहुत बड़े रैली के लिए स्ट्रीम-आधारित श्रृंखला का उपयोग करें।
- ** फ़ाइलों की व्यवस्था करें**: डेटा सेट निकालने के बाद DicomFile वस्तुओं को हटा दिया जाता है।
// Batch processing example
int batchSize = 100;
string[] allFiles = Directory.GetFiles(inputFolder, "*.dcm");
int batchNumber = 0;
for (int i = 0; i < allFiles.Length; i += batchSize)
{
string[] batch = allFiles.Skip(i).Take(batchSize).ToArray();
Dataset[] datasets = batch
.Select(path => DicomFile.Open(path).Dataset)
.ToArray();
string batchJson = DicomJsonSerializer.Serialize(datasets, writeIndented: true);
File.WriteAllText($"batch_{batchNumber++}.json", batchJson);
}अतिरिक्त जानकार
- JSON आरेट प्रारूप NoSQL डेटाबेस में बड़े पैमाने पर आयात के लिए आदर्श है।
- भंडारण दक्षता के लिए बड़े JSON फ़ाइलों को संपीड़ित करने पर विचार करें।
- स्ट्रीमिंग परिदृश्यों के लिए, इसके बजाय NDJSON (नई लाइन-डिलिमिटेड JSON) प्रारूप का उपयोग करने पर विचार करें।
Conclusion
इस ट्यूटोरियल ने आपको दिखाया है कि Aspose.Medical का उपयोग करके कई DICOM फ़ाइलों को C# में एक एकल JSON रेंज में कैसे परिवर्तित किया जाए. यह दृष्टिकोण विश्लेषण, डेटाबेस आयात और डाटा पाइपलाइन एकीकरण के लिए कुशल बड़े पैमाने पर जानकारी निर्यात की अनुमति देता है.