Hvordan til at tilpasse DICOM JSON Output med DicomJsonSerializerOptions

Hvordan til at tilpasse DICOM JSON Output med DicomJsonSerializerOptions

Denne tutorial viser dig, hvordan du kan tilpasse DICOM JSON serialisering udgang ved hjælp af DicomJsonSerializerOptions i C#. Tilpasning giver dig mulighed for at styre jSON nøgleformater, inkludere yderligere metadata, og håndtere numeriske værdier i henhold til dine integrationskrav.

Hvorfor tilpasse JSON udgang?

Forskellige systemer kan kræve forskellige JSON-format. tilpasning muliggør:

  • Brug af menneskelig læsbare nøgleord i stedet for tagnummer
  • Inkluderer tagnavne til dokumentation
  • Kontroller, hvordan numeriske værdier repræsenteres
  • Overholdelse af specifikke systemkrav fra tredjeparter

Forside: Forberedelse af miljøet

  • Indstill Visual Studio eller ethvert kompatibelt .NET IDE.
  • Skab et nyt .NET 8 applikationsprojekt.
  • Installere Aspose.Medical fra NuGet Package Manager.

Tilgængelige serialiseringsmuligheder

OptionBeskrivelseImpact
UseKeywordsAsJsonKeysBrug DICOM nøgleord i stedet for tag nummer som JSON nøgler"PatientName" vs "00100010"
WriteKeywordInkludere nøgleordfeltet i hvert tag objektAdds "keyword": "PatientName"
WriteNameIndtast navnfeltet i hvert tag objektAdds "name": "Patient's Name"
NumberHandlingKontrol af numerisk værdiTall som strimler eller virkelige JSON-numre

Step-by-step guide til at tilpasse JSON-udgang

Trin 1: Installation af Aspose.Medical

Tilføj Aspose.Medicinsk bibliotek til dit projekt ved hjælp af NuGet.

Install-Package Aspose.Medical

Trin 2: Indtast de nødvendige navneområder

Tilføj henvisninger til de krævede navneområder i din kode.

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

Trin 3: Opbygning af optioner

Skab en DicomJsonSerializerOptions Eksempelvis til at konfigurere indstillinger.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Trin 4: Indstill optioner

Indstill de ønskede muligheder for din JSON-udgang.

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

Trin 5: Serialiser med muligheder

Gå til serialiseringsmetoden.

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

Trin 6: Spare den tilpassede udgang

Spare eller bruge den tilpassede JSON.

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

Fuld kodeksempel med alle muligheder

Her er et komplet eksempel, der viser alle tilpasningsmuligheder:

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

Sammenligning af formater

Standard udgang (standard PS3.18 format)

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

Med UseKeywordsAsJsonKeys = sandt

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

Med WriteKeyword og WriteName = sandt

{
  "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]
  }
}

Brug af eksempler

For menneskelig læsbar dokumentation

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

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

For PS3.18 Kompatible Webtjenester

// 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 Integration

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

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

For opbevaring af databaser

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

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

Vigtige overvejelser

Interoperabilitet advarsel

Ikke-standard muligheder kan bryde kompatibilitet med nogle 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 om overholdelse

Når DICOM PS3.18 overholdelse er nødvendig, skal du bruge standardindstillinger:

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

Stream-baseret serialisering med muligheder

For store filer, brug streamingbaseret 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);
}

Yderligere information

  • Tilpassede muligheder påvirker både serialisering og deserialisering - sikre konsekvente muligheder, når runde-tripping data.
  • Den WriteName Optionen tilføjer menneskelig læsbare DICOM tagnavn, som øger JSON-størrelsen, men forbedrer læsbarheden.
  • Nogle tredjepartssystemer kan kræve specifikke JSON-formater - se deres dokumentation, før du vælger muligheder.

Konklusion

Denne tutorial har vist, hvordan man tilpasser DICOM JSON serialisering udgang i C# ved hjælp af Aspose.Medical. Ved at konfigurere DicomJsonSerializerOptions, kan du tilpasse den jSON format til at opfylde specifikke integration krav samtidig med at balancere læsbarhed, størrelse og interoperabilitet behov.

 Dansk