Πώς να μετατρέψετε πολλά αρχεία DICOM σε ένα ενιαίο JSON array

Πώς να μετατρέψετε πολλά αρχεία 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. Αυτή η προσέγγιση επιτρέπει την αποτελεσματική εξαγωγή μαζικών δεδομένων για την ανάλυση, τις εισαγωγές βάσεων δεδομένου και την ενσωμάτωση του σωλήνα δεδομένα.

 Ελληνικά