Hur man anpassar DICOM JSON Output med DicomJsonSerializerOptions

Hur man anpassar DICOM JSON Output med DicomJsonSerializerOptions

Denna tutorial visar hur du anpassar DICOM JSON serialisering utgången med DicomJsonSerializerOptions i C#. Anpassning gör att du kan styra JSon nyckelfärdigheter, inkludera ytterligare metadata och hantera numeriska värden enligt dina integrationskrav.

Varför anpassa JSON output?

Olika system kan kräva olika JSON-format. anpassning möjliggör:

  • Använd mänskligt läsbara nyckelord istället för tagnummer
  • Inkludera tagnamn för dokumentation
  • Kontrollera hur numeriska värden representeras
  • Uppfyller särskilda systemkrav för tredje part

Förutsättningar: Förbereda miljön

  • Installera Visual Studio eller någon kompatibel .NET IDE.
  • Skapa ett nytt .NET 8 konsolprogram.
  • Installera Aspose.Medical från NuGet Package Manager.

Tillgängliga serialiseringsalternativ

OptionBeskrivningImpact
UseKeywordsAsJsonKeysAnvänd DICOM-nyckelord istället för taggnummer som JSON nycklar"PatientName" vs "00100010"
WriteKeywordInkludera nyckelordfält i varje tag objektAdds "keyword": "PatientName"
WriteNameInkludera namnfält i varje tag objektAdds "name": "Patient's Name"
NumberHandlingKontroll av numerisk värderepresentationAntal som strängar eller faktiska JSON-nummer

Steg för steg guide för att anpassa JSON-utgången

Steg 1: Installera Aspose.Medical

Lägg till Aspose.Medicinska biblioteket till ditt projekt med NuGet.

Install-Package Aspose.Medical

Steg 2: Inkludera nödvändiga namnutrymmen

Lägg till hänvisningar till de nödvändiga namnutrymmenna i koden.

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

Steg 3: Skapa alternativ instans

Skapa A DicomJsonSerializerOptions Till exempel att konfigurera inställningar.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Steg 4: Konfigurera alternativ

Ställ in de önskade alternativen för din JSON-utgång.

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

Steg 5: Serialisera med alternativ

Överför alternativen till Serialiseringsmetoden.

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

Steg 6: Spara den anpassade utgången

Spara eller använda den anpassade JSON.

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

Komplett kodexempel med alla alternativ

Här är ett komplett exempel som visar alla anpassningsalternativ:

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

Jämför utgångsformat

Standard utgång (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 och WriteName = sant

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

Med NumberHandling = WriteAsString

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

Med NumberHandling = AllowReadingFromStringäna WriteAsNumber

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

Använd exempel på fall

För mänskligt läsbar dokumentation

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

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

För PS3.18 Kompatibla Webbtjänster

// 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 databas lagring

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

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

Viktiga överväganden

Interoperabilitetsvarning

Icke-standardalternativ kan bryta kompatibiliteten med vissa DICOM parsers:

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

Rekommendation för överensstämmelse

När efterlevnad av DICOM PS3.18 krävs, använd standardinställningar:

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

Stream-baserad serialisering med alternativ

För stora filer, använd strömbaserad 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);
}

Ytterligare information

  • Anpassade alternativ påverkar både serialisering och deserialisering - säkerställa konsekventa alternativ när runda data.
  • och den WriteName Alternativet lägger till mänskligt läsbara DICOM-tagnamn som ökar JSON-storleken men förbättrar läsbarheten.
  • Vissa system från tredje part kan kräva specifika JSON-format - kolla in deras dokumentation innan du väljer alternativ.

slutsatser

Denna tutorial har visat hur man anpassar DICOM JSON serialisering utgång i C# med hjälp av Aspose.Medical. Genom att konfigurera DicomJsonSerializerOptions kan du anpassa formatet för att uppfylla specifika integrationskrav samtidigt som du balanserar läsbarhet, storlek och interoperabilitetsbehov.

 Svenska