Πώς να αποστασιοποιήσετε το 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 | ΕΞΕΛΙΞΗ | Χρησιμοποιήστε την περίπτωση |
|---|---|---|---|
Deserialize | JSON Σύνδεσμος | Dataset? | Μοναδικό σύνολο δεδομένων από JSON |
DeserializeFile | JSON Σύνδεσμος | DicomFile? | Συμπληρώστε το αρχείο DICOM με meta info |
DeserializeList | JSON Σύνδεσμος | 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.