Πώς να αποστασιοποιήσετε το DICOM JSON πίσω στο Dataset ή το DicomFile

Πώς να αποστασιοποιήσετε το DICOM JSON πίσω στο Dataset ή το DicomFile

Αυτό το εγχειρίδιο δείχνει πώς να αποστασιοποιήσετε το DICOM JSON πίσω σε αντικείμενα Dataset ή DicomFile χρησιμοποιώντας το C#. Αυτή η ικανότητα είναι απαραίτητη όταν χρειάζεται να ανακαταστήσετε τα δεδομένα DIKOM από το jSON που αποθηκεύονται σε βάσεις δεδομένων ή λαμβάνονται από web APIs.

Πλεονεκτήματα της αποσυνδεσιμότητας JSON

  • • Ανακαίνιση δεδομένων:- Αποκατάσταση αρχείων DICOM από JSON που αποθηκεύονται σε βάσεις δεδομένων.

    • Πληροφορίες για την ενσωμάτωση API:- Επεξεργασία δεδομένων DICOM που λαμβάνονται ως JSON από υπηρεσίες Web.
    • Πληροφορίες για το «Round-Trip Processing»:- Σειρίστε στο JSON, τροποποιήστε, στη συνέχεια αποστειρώστε πίσω στο DICOM.

Προϋποθέσεις: Προετοιμασία του περιβάλλοντος

  • Εγκαταστήστε το Visual Studio ή οποιοδήποτε συμβατό .NET IDE.
  • Δημιουργήστε ένα νέο πρόγραμμα εφαρμογής .NET 8 console.
  • Εγκαταστήστε το Aspose.Medical από το NuGet Package Manager.

Η κατανόηση των επιλογών αποστράγγισης

Ο DicomJsonSerializer παρέχει διαφορετικές μεθόδους αποσυνδεσιμότητας:

ΜέθοδοςInputΕΞΕΛΙΞΗΧρησιμοποιήστε την περίπτωση
DeserializeJSON ΣύνδεσμοςDataset?Μοναδικό σύνολο δεδομένων από JSON
DeserializeFileJSON ΣύνδεσμοςDicomFile?Συμπληρώστε το αρχείο DICOM με meta info
DeserializeListJSON ΣύνδεσμοςDataset[]?Πολλαπλές συσκευές δεδομένων από το JSON array

Βήμα προς βήμα Οδηγός για την αποστράγγιση του DICOM JSON

Βήμα 1: Εγκατάσταση Aspose.Medical

Προσθήκη της βιβλιοθήκης Aspose.Medical στο έργο σας χρησιμοποιώντας το NuGet.

Install-Package Aspose.Medical

Βήμα 2: Συμπληρώστε τις απαραίτητες ονομαστικές περιοχές

Προσθέστε αναφορές στις απαιτούμενες ονομαστικές περιοχές στον κώδικα σας.

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

Βήμα 3: Διαβάστε το περιεχόμενο JSON

Διαβάστε το περιεχόμενο JSON από ένα αρχείο ή μεταβλητό.

string jsonText = File.ReadAllText("patient_scan.json");

Βήμα 4: Αποσυνδεθείτε στο Dataset

Χρήση Deserialize για την ανακατασκευή ενός αντικειμένου Dataset.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Βήμα 5: Εργασία με το Dataset

Πρόσβαση και χειραγώγηση της ανακατασκευασμένης δέσμης δεδομένων.

if (dataset != null)
{
    Console.WriteLine("Dataset successfully reconstructed from JSON.");
    // Work with the dataset...
}

Βήμα 6: Αποθηκεύστε πίσω στο DICOM (επιλεγμένο)

Δημιουργήστε ένα νέο DicomFile και αποθηκεύστε στο δίσκο.

if (dataset != null)
{
    DicomFile newDcm = new DicomFile(dataset);
    newDcm.Save("reconstructed.dcm");
}

Συμπληρωματικό παράδειγμα κώδικα: Deserialize Single Dataset

Εδώ είναι ένα πλήρες παράδειγμα που δείχνει πώς να αποστειρωθεί ένα ενιαίο σύνολο δεδομένων:

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

// Read JSON from file
string jsonText = File.ReadAllText("patient_scan.json");

// Deserialize to Dataset
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

if (dataset != null)
{
    Console.WriteLine("Dataset successfully deserialized!");
    
    // Create a new DicomFile with the dataset
    DicomFile newDcm = new DicomFile(dataset);
    
    // Save to DICOM format
    newDcm.Save("reconstructed_scan.dcm");
    Console.WriteLine("Saved to reconstructed_scan.dcm");
}
else
{
    Console.WriteLine("Failed to deserialize JSON.");
}

Αποκάλυψη Complete DicomFile

Όταν το JSON σας περιέχει αρχεία μετα στοιχεία, χρησιμοποιήστε DeserializeFile:

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

// Read JSON that includes file meta information
string jsonFileText = File.ReadAllText("complete_dicom.json");

// Deserialize to complete DicomFile
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonFileText);

if (dicomFile != null)
{
    Console.WriteLine("DicomFile successfully deserialized!");
    dicomFile.Save("reconstructed_complete.dcm");
}

Deserialize JSON Array σε πολλαπλές συσκευές δεδομένων

Όταν εργάζεστε με το JSON, οι ρίζες περιέχουν πολλαπλά σύνολα δεδομένων:

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

// Read JSON array
string jsonArrayText = File.ReadAllText("multiple_studies.json");

// Deserialize to Dataset array
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonArrayText);

if (datasets != null)
{
    Console.WriteLine($"Deserialized {datasets.Length} datasets.");
    
    // Save each dataset as a separate DICOM file
    for (int i = 0; i < datasets.Length; i++)
    {
        DicomFile dcm = new DicomFile(datasets[i]);
        dcm.Save($"study_{i:D3}.dcm");
    }
    
    Console.WriteLine("All datasets saved successfully!");
}

Παραδείγματα στρογγυλείας: Serialize, Modify, Deserialize

Μια κοινή περίπτωση χρήσης είναι η τροποποίηση των δεδομένων DICOM μέσω JSON:

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

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

// Serialize to JSON
string json = DicomJsonSerializer.Serialize(original, writeIndented: true);

// Parse JSON for modification (using System.Text.Json)
using JsonDocument doc = JsonDocument.Parse(json);
// ... modify JSON as needed ...

// Deserialize back to Dataset
Dataset? modifiedDataset = DicomJsonSerializer.Deserialize(json);

if (modifiedDataset != null)
{
    DicomFile modifiedDcm = new DicomFile(modifiedDataset);
    modifiedDcm.Save("modified.dcm");
}

Συνεργασία με την αποθήκευση βάσης δεδομένων

Deserialize DICOM JSON που λαμβάνεται από μια βάση δεδομένων:

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

// Simulating retrieval from database
string jsonFromDatabase = GetDicomJsonFromDatabase("patient_123");

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonFromDatabase);

if (dataset != null)
{
    // Process the reconstructed dataset
    DicomFile dcm = new DicomFile(dataset);
    dcm.Save("from_database.dcm");
    Console.WriteLine("DICOM file reconstructed from database JSON.");
}

// Simulated database retrieval method
string GetDicomJsonFromDatabase(string patientId)
{
    // In real implementation, this would query your database
    return File.ReadAllText($"database_cache/{patientId}.json");
}

Async Deserialization για εφαρμογές Web

Για εφαρμογές ASP.NET Core, χρησιμοποιήστε τις μεθόδους async:

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

// Async deserialization from stream
public async Task<Dataset?> DeserializeFromStreamAsync(Stream jsonStream)
{
    Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(jsonStream);
    return dataset;
}

// Usage in ASP.NET Core controller
[HttpPost("import")]
public async Task<IActionResult> ImportDicomJson()
{
    Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(Request.Body);
    
    if (dataset != null)
    {
        // Process the dataset
        return Ok("DICOM data imported successfully");
    }
    
    return BadRequest("Invalid DICOM JSON");
}

Troubleshooting

Αντιμετώπιση ελαττωματικών JSON

Πάντα βυθίστε την αποσυνδεσιμότητα σε μπλοκ try-catch:

try
{
    Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
    if (dataset == null)
    {
        Console.WriteLine("Deserialization returned null - check JSON format.");
    }
}
catch (JsonException ex)
{
    Console.WriteLine($"JSON parsing error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Deserialization error: {ex.Message}");
}

Επεξεργαστείτε το JSON

Για μεγάλα αρχεία JSON, βεβαιωθείτε ότι το πλήρες περιεχόμενο διαβάζεται:

// Use ReadAllText for complete file content
string completeJson = File.ReadAllText("large_dicom.json");

// Verify JSON is complete (basic check)
if (!completeJson.TrimEnd().EndsWith("}") && !completeJson.TrimEnd().EndsWith("]"))
{
    Console.WriteLine("Warning: JSON may be truncated.");
}

Version Συμβατότητα

Βεβαιωθείτε ότι το JSON δημιουργήθηκε με μια συμβατή έκδοση του serializer. οι εσφαλμένες εκδόσεις μπορεί να προκαλέσουν αποσυναρμολόγηση αποτυχίες.

Πρόσθετες πληροφορίες

  • Τα αποστειρωμένα σύνολα δεδομένων δεν περιλαμβάνουν δεδομένα pixel εκτός εάν είναι ενσωματωμένα στο αρχικό JSON.
  • Για χρήση παραγωγής, εφαρμόστε την κατάλληλη επικύρωση της εισαγωγής JSON πριν από την αποστράγγιση.
  • Σκεφτείτε το caching deserialized datasets για τα συχνά προσπελάσιμα δεδομένα.

Συμπεράσματα

Αυτό το εγχειρίδιο έχει δείξει πώς να αποστειρωθεί το DICOM JSON πίσω στο Dataset ή DicomFile αντικείμενα στο C# χρησιμοποιώντας το Aspose.Medical. Αυτή η ικανότητα επιτρέπει τη διαδρομή επεξεργασίας δεδομένων DIKOM και την αδιάβροχη ολοκλήρωση με τα συστήματα αποθήκευσης και API που βασίζονται στο jSON.

 Ελληνικά