Πώς να προσαρμόσετε το DICOM JSON Output με το DicomJsonSerializerOptions
Αυτό το εγχειρίδιο δείχνει πώς να προσαρμόσετε την παραγωγή DICOM JSON serialization χρησιμοποιώντας DicomJsonSerializerOptions στο C#. Η προετοιμασία σας επιτρέπει να ελέγξετε τις βασικές μορφές JSon, συμπεριλαμβανομένων πρόσθετων μεταδεδομένων και να χειριστείτε αριθμητικές τιμές σύμφωνα με τις απαιτήσεις ενσωμάτωσής σας.
Γιατί να προσαρμόσετε το JSON output;
Διαφορετικά συστήματα μπορεί να απαιτούν διαφορετικές μορφές JSON. Η προσαρμογή επιτρέπει:
- Χρησιμοποιήστε λέξεις-κλειδιά που μπορούν να διαβάσουν οι άνθρωποι αντί για αριθμούς ετικετών
- Περιλαμβάνει τα ονόματα ετικετών για την τεκμηρίωση
- Ελέγξτε πώς αντιπροσωπεύονται οι αριθμητικές τιμές
- Συμμόρφωση με τις ειδικές απαιτήσεις συστήματος τρίτων
Προϋποθέσεις: Προετοιμασία του περιβάλλοντος
- Εγκαταστήστε το Visual Studio ή οποιοδήποτε συμβατό .NET IDE.
- Δημιουργήστε ένα νέο πρόγραμμα εφαρμογής .NET 8 console.
- Εγκαταστήστε το Aspose.Medical από το NuGet Package Manager.
Διαθέσιμες επιλογές serialization
| Option | Περιγραφή | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Χρησιμοποιήστε λέξεις-κλειδιά DICOM αντί για αριθμούς ετικέτας ως κλειδιές JSON | "PatientName" VS "00100010" |
WriteKeyword | Συμπληρώστε το πεδίο λέξεων-κλειδιών σε κάθε αντικείμενο ετικέτας | Adds "keyword": "PatientName" |
WriteName | Συμπεριλάβετε το πεδίο ονόματος σε κάθε αντικείμενο ετικέτας | Adds "name": "Patient's Name" |
NumberHandling | Ελέγχου αριθμητικής αξίας αντιπροσωπείας | Αριθμοί ως γραμμές ή πραγματικοί αριθμοί JSON |
Βήμα προς βήμα Οδηγός για την προσαρμογή της παραγωγής JSON
Βήμα 1: Εγκατάσταση Aspose.Medical
Προσθήκη της βιβλιοθήκης Aspose.Medical στο έργο σας χρησιμοποιώντας το NuGet.
Install-Package Aspose.MedicalΒήμα 2: Συμπληρώστε τις απαραίτητες ονομαστικές περιοχές
Προσθέστε αναφορές στις απαιτούμενες ονομαστικές περιοχές στον κώδικα σας.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Βήμα 3: Δημιουργία επιλογών
Δημιουργία A DicomJsonSerializerOptions Παραδείγματος χάριν, να ρυθμίζουμε τις ρυθμίσεις.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Βήμα 4: Προσαρμόστε τις επιλογές
Ρυθμίστε τις επιθυμητές επιλογές για την παραγωγή JSON σας.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Βήμα 5: Σειρά με τις επιλογές
Μεταφέρετε τις επιλογές στη μέθοδο Serialize.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Βήμα 6: Αποθηκεύστε την προσαρμοσμένη έκδοση
Αποθηκεύστε ή χρησιμοποιήστε το προσαρμοσμένο JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Συμπληρωματικό παράδειγμα κώδικα με όλες τις επιλογές
Εδώ είναι ένα πλήρες παράδειγμα που δείχνει όλες τις επιλογές προσαρμογής:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;
// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true,
NumberHandling = JsonNumberHandling.WriteAsString
};
// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);
// Save output
File.WriteAllText("fully_customized.json", json);
Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);Συγκρίνετε τις μορφές εξόδου
Προεπιλεγμένη έκδοση (Standard PS3.18 Format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Χρησιμοποιώντας λέξεις-κλειδιάAsJsonKeys = αλήθεια
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Γράφει και γράφει = αληθινό
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Με αριθμό = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Με ΑριθμόςΔιαχείριση = AllowReadingFromString, WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Χρησιμοποιήστε παραδείγματα
Η ανθρώπινη αναγνώσιμη τεκμηρίωση
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Για το PS3.18 Compliant Web Services
// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = false, // Use tag numbers
WriteKeyword = false,
WriteName = false,
NumberHandling = JsonNumberHandling.WriteAsString
};
string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);Για την ενσωμάτωση του JavaScript Frontend
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Για την αποθήκευση βάσης δεδομένων
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Σημαντικές παρατηρήσεις
Προειδοποίηση διαλειτουργικότητας
Οι μη τυποποιημένες επιλογές ενδέχεται να διαταράξουν τη συμβατότητα με ορισμένους διακομιστές DICOM:
// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true // Not PS3.18 compliant
};
// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();Σύσταση για τη συμμόρφωση
Όταν απαιτείται συμμόρφωση με το DICOM PS3.18, χρησιμοποιήστε τις προεπιλεγμένες ρυθμίσεις:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsΣειροποίηση με επιλογές
Για μεγάλα αρχεία, χρησιμοποιήστε τη σειρά με βάση το ρεύμα:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
DicomFile dcm = DicomFile.Open("large_scan.dcm");
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true
};
using (FileStream fs = File.Create("large_customized.json"))
{
DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}Πρόσθετες πληροφορίες
- Οι προσαρμοσμένες επιλογές επηρεάζουν τόσο την σειριοποίηση όσο και την αποστρατικοποίηση - εξασφαλίζουν συνεπείς επιλογές όταν τα δεδομένα περιστρέφονται.
- Η
WriteNameΗ επιλογή προσθέτει ανθρώπινα ονόματα ετικέτας DICOM που αυξάνουν το μέγεθος του JSON αλλά βελτιώνουν την αναγνώριση. - Ορισμένα συστήματα τρίτων μπορεί να απαιτούν συγκεκριμένες μορφές JSON - ελέγξτε την τεκμηρίωσή τους πριν επιλέξετε τις επιλογές.
Συμπεράσματα
Αυτό το εγχειρίδιο έχει δείξει πώς να προσαρμόσετε την παραγωγή της σειριοποίησης DICOM JSON στο C# χρησιμοποιώντας το Aspose.Medical. Με τη διαμόρφωση του DicomJsonSerializerOptions, μπορείτε να ρυθμίσετε το μορφότυπο J SON για να ικανοποιήσετε συγκεκριμένες απαιτήσεις ενσωμάτωσης ενώ εξισορροπείτε τις ανάγκες ανάγνωσης, μεγέθους και διαλειτουργικότητας.