Πώς να μετατρέψετε πολλά αρχεία DICOM σε ένα ενιαίο JSON array
Αυτό το εγχειρίδιο δείχνει πώς να μετατρέψετε πολλαπλά αρχεία DICOM σε μια ενιαία JSON γραμμή χρησιμοποιώντας C#. Αυτή η προσέγγιση είναι ιδανική για τους μηχανικούς δεδομένων που χρειάζονται να εξάγουν τα μεταδεδομένα DIKOM για τα εργαλεία ανάλυσης, τις βάσεις δεδομένου ή τους σωλήνες δεδομένα.
Πλεονεκτήματα της εξαγωγής JSON Array
- Πληροφορίες για την επεξεργασία δεδομένων:- Εισαγωγή πολλαπλών αρχείων DICOM σε βάσεις δεδομένων σε μια ενιαία λειτουργία.
«Αναλυτικά έτοιμα»:- Οι ρίζες JSON μπορούν να φορτωθούν απευθείας σε Python, Spark ή αποθήκες δεδομένων.
*Παραδοσιακό εξώφυλλο:- Ένα ενιαίο αρχείο που περιέχει όλα τα μεταδεδομένα απλοποιεί τη διαχείριση των δεδομένων.
Προϋποθέσεις: Προετοιμασία του περιβάλλοντος
- Εγκαταστήστε το Visual Studio ή οποιοδήποτε συμβατό .NET IDE.
- Δημιουργήστε ένα νέο πρόγραμμα εφαρμογής .NET 8 console.
- Εγκαταστήστε το Aspose.Medical από το NuGet Package Manager.
- Προετοιμάστε ένα φάκελο που περιέχει πολλά αρχεία DICOM.
Βήμα προς βήμα Οδηγός για τη μετατροπή πολλαπλών αρχείων DICOM σε JSON Array
Βήμα 1: Εγκατάσταση Aspose.Medical
Προσθήκη της βιβλιοθήκης Aspose.Medical στο έργο σας χρησιμοποιώντας το NuGet.
Install-Package Aspose.MedicalΒήμα 2: Συμπληρώστε τις απαραίτητες ονομαστικές περιοχές
Προσθέστε αναφορές στις απαιτούμενες ονομαστικές περιοχές στον κώδικα σας.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Βήμα 3: Κατεβάστε Multiple 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 Array
Δημιουργήστε μια σειρά αντικειμένων Dataset από τα φορτωμένα αρχεία.
Dataset[] datasets = dicomFiles
.Select(dcm => dcm.Dataset)
.ToArray();Βήμα 5: Σειράρισμα στο JSON Array
Χρήση DicomJsonSerializer.Serialize με το Dataset array.
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 Output
Η έκδοση JSON array μοιάζει με αυτό:
[
{
"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
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 αρχείων.
- Stream Output: Χρησιμοποιήστε τη σειρά με βάση το ρεύμα για πολύ μεγάλες γραμμές.
- Διαθέστε αρχεία: Βεβαιωθείτε ότι τα αντικείμενα 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 για αποδοτικότητα αποθήκευσης.
- Για σενάρια streaming, σκεφτείτε να χρησιμοποιήσετε NDJSON (newline-delimited JSON) μορφή αντί.
Συμπεράσματα
Αυτό το εγχειρίδιο σας έχει δείξει πώς να μετατρέψετε πολλαπλά αρχεία DICOM σε μια ενιαία σειρά JSON στο C# χρησιμοποιώντας Aspose.Medical. Αυτή η προσέγγιση επιτρέπει την αποτελεσματική εξαγωγή μαζικών δεδομένων για την ανάλυση, τις εισαγωγές βάσεων δεδομένου και την ενσωμάτωση του σωλήνα δεδομένα.