Hoe om DICOM JSON-uitgang aan te passen met DicomJsonSerializerOpties

Hoe om DICOM JSON-uitgang aan te passen met DicomJsonSerializerOpties

Deze tutorial toont aan hoe u de DICOM JSON serialisatie output kunt aanpassen met behulp van DicomJsonSerializerOptions in C#. Customization stelt u in staat om jSON sleutelformaten te beheersen, extra metadata te bevatten en numerieke waarden te beheren volgens uw integratievereisten.

Waarom JSON output aanpassen?

Verschillende systemen kunnen verschillende JSON-formaten vereisen.Customization maakt het mogelijk:

  • Mensen leesbare keywords gebruiken in plaats van tagnummers
  • Inclusief tagnamen voor documentatie
  • Controleer hoe numerieke waarden worden vertegenwoordigd
  • Het voldoen aan specifieke systeemvereisten van derden

Voorwaarden: het voorbereiden van het milieu

  • Installeer Visual Studio of een compatibele .NET IDE.
  • Maak een nieuw .NET 8 console-applicatieproject.
  • Installeer Aspose.Medical vanaf de NuGet Package Manager.

Beschikbare opties voor serialisatie

OptionBeschrijvingImpact
UseKeywordsAsJsonKeysGebruik DICOM keywords in plaats van tagnummers als JSON sleutels"PatientName" VS "00100010"
WriteKeywordInclusie van het keywordveld in elke tag objectAdds "keyword": "PatientName"
WriteNameInclusie naamveld in elke tag objectAdds "name": "Patient's Name"
NumberHandlingControle numerieke waarde vertegenwoordigingAantal als strengen of werkelijke JSON-nummers

Step-by-step gids voor het aanpassen van JSON output

Stap 1: Installeer Aspose.Medical

Voeg de Aspose.Medische bibliotheek toe aan uw project met behulp van NuGet.

Install-Package Aspose.Medical

Stap 2: Inkluderen van noodzakelijke naamruimten

Voeg verwijzingen toe aan de vereiste naamruimten in uw code.

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

Stap 3: Creëren van opties instance

Creëer een DicomJsonSerializerOptions Bijvoorbeeld om instellingen te configureren.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Stap 4: Configureer opties

Stel de gewenste opties voor uw JSON-uitgang.

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

Stap 5: Serialiseren met opties

Ga de opties door naar de Serialize-methode.

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

Stap 6: Save the Custom Output

Speel of gebruik de aangepaste JSON.

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

Volledige code voorbeeld met alle opties

Hier is een complete voorbeeld die alle aanpassingsopties toont:

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

Vergelijking van output formaten

De standaard output (standard PS3.18)

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

Met UseKeywordsAsJsonKeys = waar

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

Met WriteKeyword en WriteName = waar

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

Met NumberHandling = WriteAsString

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

Met NumberHandling = AllowReadingFromString < WriteAsNumber

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

Gebruik Case voorbeelden

Voor menselijk leesbare documentatie

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

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

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

Voor JavaScript Frontend Integratie

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

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

Voor database opslag

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

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

Belangrijke overwegingen

Interoperabiliteit waarschuwing

Niet-standaard opties kunnen de compatibiliteit met sommige DICOM parsers breken:

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

Aanbeveling voor naleving

Wanneer de naleving van DICOM PS3.18 vereist is, gebruik dan standaardinstellingen:

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

Stream-based serialisatie met opties

Voor grote bestanden, gebruik stream-based serialisatie:

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

Aanvullende informatie

  • Aanpassingsopties beïnvloeden zowel serialisering als deserialisering - zorgen voor consistente opties wanneer rond-tripping gegevens.
  • De WriteName De optie voegt mensen leesbare DICOM-tagnamen toe die JSON-grootte vergroten maar de leesbaarheid verbeteren.
  • Sommige systemen van derden kunnen specifieke JSON-formaten vereisen - raadpleeg hun documentatie voordat u de opties kiest.

Conclusie

Deze tutorial heeft aangetoond hoe u de DICOM JSON serialisatie output in C# kunt aanpassen met behulp van Aspose.Medical. Door DicomJsonSerializerOptions te configureren, kunt u het J SON-formaat toe te passen om aan specifieke integratievereisten te voldoen en tegelijkertijd de leesbaarheid, grootte en interoperabiliteit behoeften te balanceren.

 Nederlands