Hvordan tilpasse DICOM JSON Output med DicomJsonSerializerOptions

Hvordan tilpasse DICOM JSON Output med DicomJsonSerializerOptions

Denne veiledningen viser hvordan du kan tilpasse DICOM JSON serialisering utgang ved hjelp av DicomJsonSerializerOptions i C#. Tilpasning lar deg kontrollere jSON nøkkelformater, inkludere ytterligere metadata, og håndtere numeriske verdier i henhold til dine integrasjonsbehov.

Hvorfor tilpasse JSON utgang?

Forskjellige systemer kan kreve forskjellige JSON-format.

  • Bruker menneskelig lesbare nøkkelord i stedet for tagnummer
  • Inkluderer etikettnavne for dokumentasjon
  • Kontroller hvordan numeriske verdier er representert
  • Overholdelse av spesifikke systemkrav fra tredjeparter

Forutsetninger: Å forberede miljøet

  • Installer Visual Studio eller noe kompatibelt .NET IDE.
  • Skap et nytt .NET 8 konsolapplikasjon prosjekt.
  • Installere Aspose.Medical fra NuGet Package Manager.

Tilgjengelige serialisering alternativer

OptionDescriptionImpact
UseKeywordsAsJsonKeysBruk DICOM nøkkelord i stedet for tag-numre som JSON-nøkler"PatientName" vs "00100010"
WriteKeywordInkludere nøkkelordfelt i hvert tag objektAdds "keyword": "PatientName"
WriteNameInkludere navnfeltet i hvert tag objektAdds "name": "Patient's Name"
NumberHandlingKontroller numerisk verdi representasjonTall som strenger eller virkelige JSON-nummer

Step-by-step guide for å tilpasse JSON utgang

Steg 1: Installere Aspose.Medical

Legg til Aspose.Medical Library til prosjektet ditt ved hjelp av NuGet.

Install-Package Aspose.Medical

Steg 2: Inkludere nødvendige navnområder

Legg til referanser til de nødvendige navnene i koden din.

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

Trinn 3: Å lage alternativer

Skaper A DicomJsonSerializerOptions For eksempel å konfigurere innstillinger.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Steg 4: Konfigurere alternativer

Sett de ønskede alternativene for din JSON utgang.

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

Steg 5: Serialisere med alternativer

Pass alternativene til serialiseringsmetoden.

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

Steg 6: Spare tilpasset utgang

Lagre eller bruke den tilpassede JSON.

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

Komplett kode eksempler med alle alternativer

Her er et komplett eksempel som viser alle tilpassingsalternativer:

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

Sammenlign utgangsformater

Standard utgang (standard PS3.18 format)

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

Med UseKeywordsAsJsonKeys = sant

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

Med WriteKeyword og WriteName = sann

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

Med NumberHandling = WriteAsString

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

Med NumberHandling = AllowReadingFromString og WriteAsNumber

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

Brukes eksempler

For menneskelig lesbar dokumentasjon

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

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

For PS3.18 Kompatible nettjenester

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

For JavaScript Frontend Integrasjon

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

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

For databaseslagring

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

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

Viktige vurderinger

Interoperabilitet advarsel

Ikke-standard alternativer kan bryte kompatibiliteten med noen DICOM parser:

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

Anbefaling for overholdelse

Når overholdelse av DICOM PS3.18 er nødvendig, bruk standardinnstillingene:

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

Stream-basert serialisering med alternativer

For store filer, bruk strømbasert serialisering:

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

Ytterligere informasjon

  • Tilpassede alternativer påvirker både serialisering og deserialisering - sørge for konsekvent valg når runde-tripping data.
  • The WriteName Alternativet legger til menneskelig lesbare DICOM-tag-navn som øker JSON-størrelsen, men forbedrer lesbarheten.
  • Noen tredjepartssystemer kan kreve spesifikke JSON-format - sjekk dokumentasjonen før du velger alternativer.

Conclusion

Denne veiledningen har vist hvordan du kan tilpasse DICOM JSON serialisering utgang i C# ved hjelp av Aspose.Medical. Ved å konfigurere DicomJsonSerializerOptions, kan du justere formatet til å oppfylle spesifikke integrasjonskrav mens du balanserer lesbarhet, størrelse og interoperabilitet behov.

 Norsk