Πώς να προσαρμόσετε το DICOM JSON Output με το DicomJsonSerializerOptions

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

 Ελληνικά