Wie man DICOM JSON Output mit DicomJsonSerializerOptionen anpassen

Wie man DICOM JSON Output mit DicomJsonSerializerOptionen anpassen

Dieses Tutorial zeigt Ihnen, wie Sie die DICOM JSON-Serialisierungsergebnisse mit DicomJson SerializerOptions in C# anpassen können.Die Anpassung ermöglicht Ihnen die Kontrolle der JSO-Schlüsselformate, zusätzliche Metadaten und die Verwaltung numerischer Werte nach Ihren Integrationsanforderungen.

Warum Customize JSON Output?

Verschiedene Systeme können unterschiedliche JSON-Formate erfordern.Anpassung ermöglicht:

  • Verwendung menschlich lesbarer Schlüsselwörter anstelle von Tag-Nummern
  • Inbegriffen der Tagnamen für die Dokumentation
  • Überprüfen, wie numerische Werte dargestellt werden
  • Erfüllung spezifischer Systemanforderungen Dritter

Voraussetzungen: Umwelt vorbereiten

  • Installieren Sie Visual Studio oder eine kompatible .NET IDE.
  • Erstellen Sie ein neues .NET 8-Konsole-Anwendungsprojekt.
  • Installieren Sie Aspose.Medical vom NuGet Package Manager.

Verfügbare Serialisierungsoptionen

OptionBeschreibungImpact
UseKeywordsAsJsonKeysVerwenden Sie DICOM-Schlüsselwörter anstelle von Tag-Nummern als JSON-Spiegel"PatientName" VS "00100010"
WriteKeywordInkludieren Sie das Keywordfeld in jedem Tag-ObjektAdds "keyword": "PatientName"
WriteNameNamefeld in jedem Tag-Objekt einfügenAdds "name": "Patient's Name"
NumberHandlingKontrolle der numerischen WertvertretungZahlen als Streifen oder tatsächliche JSON-Nummern

Schritt für Schritt Guide zur Anpassung der JSON-Ausgabe

Schritt 1: Installieren Aspose.Medical

Fügen Sie die Aspose.Medical Bibliothek zu Ihrem Projekt mit NuGet hinzu.

Install-Package Aspose.Medical

Schritt 2: Inkludieren Sie notwendige Namenräume

Fügen Sie Referenzen zu den erforderlichen Namenräumen in Ihrem Code hinzu.

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

Schritt 3: Erstellen von Optionen Instance

Schaffung A DicomJsonSerializerOptions Beispiel für die Konfiguration von Einstellungen.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Schritt 4: Konfigurieren von Optionen

Setzen Sie die gewünschten Optionen für Ihre JSON-Ausgabe.

options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;

Schritt 5: Serialisieren mit Optionen

Übertragen Sie die Optionen auf die Serialisierungsmethode.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

Schritt 6: Speichern Sie den benutzerdefinierten Ausgang

Speichern oder verwenden Sie die benutzerdefinierte JSON.

File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");

Vollständige Code Example mit allen Optionen

Hier ein vollständiges Beispiel, das alle Anpassungsoptionen zeigt:

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);

Vergleiche der Ausgangsformate

Default Output (Standard PS3.18 Format)

{
  "00100010": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

Mit UseKeywordsAsJsonKeys = wahr

{
  "PatientName": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "PatientID": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

Mit WriteKeyword und WriteName = wahr

{
  "00100010": {
    "vr": "PN",
    "keyword": "PatientName",
    "name": "Patient's Name",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  }
}

Mit NumberHandling = WriteAsString

{
  "00280010": {
    "vr": "US",
    "Value": ["512"]
  }
}

Mit NumberHandling = AllowReadingFromStringMachtAsNumber

{
  "00280010": {
    "vr": "US",
    "Value": [512]
  }
}

Verwenden Sie Beispiele

für menschlich Lesbares Dokumentation

DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true
};

string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);

Für 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);

Für JavaScript Frontend Integration

DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Easier to work with in JS
    NumberHandling = JsonNumberHandling.AllowReadingFromString  // Native numbers
};

string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);

für Database Storage

DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Better for querying
    WriteKeyword = false,          // Reduce storage size
    WriteName = false
};

string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);

Wichtige Erwägungen

Interoperabilitätswarnung

Nicht-standard-Optionen können die Kompatibilität mit einigen DICOM-Parsern brechen:

// 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();

Empfehlung für die Einhaltung

Wenn die Einhaltung von DICOM PS3.18 erforderlich ist, verwenden Sie standardmäßige Einstellungen:

// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm);  // No custom options

Stream-basierte Serialisierung mit Optionen

Für große Dateien verwenden Sie Stream-basierte Serialisierung:

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);
}

Zusätzliche Informationen

  • Anpassungsoptionen beeinflussen sowohl serialisierung als auch deserialisation - sorgen für konsistente optionen, wenn runde-tripping-daten.
  • The WriteName Die Option fügt menschlich lesbare DICOM-Tagnamen hinzu, die die JSON-Größe erhöht, aber die Lesbarkeit verbessert.
  • Einige Drittanbieter-Systeme benötigen möglicherweise spezifische JSON-Formate - prüfen Sie ihre Dokumentation vor der Auswahl der Optionen.

Schlussfolgerungen

Dieses Tutorial hat gezeigt, wie man die DICOM JSON serialisierungsergebnisse in C# mit Aspose.Medical anpassen kann.Durch die Konfiguration von DicomJsonSerializerOptions, können Sie das jSON-Format anzupassen, um spezifische Integrationsanforderungen zu erfüllen und gleichzeitig die Lesbarkeit, Größe und Interoperabilität Bedürfnisse ausgleichen.

 Deutsch