Jak přizpůsobit výstup DICOM JSON s DicomJsonSerializerOptions

Jak přizpůsobit výstup DICOM JSON s DicomJsonSerializerOptions

Tento tutoriál ukazuje, jak přizpůsobit výstup serializace DICOM JSON pomocí DicomJsonSerializerOptions v C#. Customizace vám umožňuje ovládat klíčové formáty jSON, zahrnovat další metadata a zpracovávat číselné hodnoty podle vašich požadavků na integraci.

Proč přizpůsobit výstup JSON?

Různé systémy mohou vyžadovat různé formáty JSON.

  • Použití lidsky čitelných klíčových slov namísto čísel
  • Obsahuje jména značek pro dokumentaci
  • Zkontrolujte, jak jsou reprezentovány číselné hodnoty
  • Splnění specifických systémových požadavků třetích stran

Předpoklady: Příprava životního prostředí

  • Nastavení Visual Studio nebo jakéhokoli kompatibilního .NET IDE.
  • Vytvořte nový projekt aplikace .NET 8 konzole.
  • Instalace aplikace Aspose.Medical z programu NuGet Package Manager.

Dostupné možnosti serializace

OptionPopisImpact
UseKeywordsAsJsonKeysPoužijte klíčová slova DICOM namísto označování čísel jako kláves JSON"PatientName" vs "00100010"
WriteKeywordVložte pole klíčových slov do každého objektu značkyAdds "keyword": "PatientName"
WriteNameVložte název pole v každém objektu značkyAdds "name": "Patient's Name"
NumberHandlingKontrola číselné hodnotyČísla jako řádky nebo skutečné JSON čísla

Krok za krokem průvodce pro přizpůsobení výstupu JSON

Krok 1: Instalace Aspose.Medical

Přidejte do svého projektu knihovnu Aspose.Medicine pomocí aplikace NuGet.

Install-Package Aspose.Medical

Krok 2: Vložte potřebné názevové prostory

Přidejte odkazy na požadované názevové prostory ve vašem kódu.

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

Krok 3: Vytvořte možnost Instance

Vytvořte A DicomJsonSerializerOptions Příkladem je nastavování nastavení.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Krok 4: Nastavení možností

Nastavení požadovaných možností pro váš JSON výstup.

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

Krok 5: Serializujte s možností

Přejděte možnosti do metody Serializace.

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

Krok 6: Ušetřete přizpůsobený výstup

Uložte nebo použijte přizpůsobený JSON.

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

Kompletní příklad kódu se všemi možnostmi

Zde je kompletní příklad, který ukazuje všechny možnosti přizpůsobení:

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

Porovnání formátů výstupu

Standardní výstup (standardní PS3.18 formát)

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

S použitímKeywordsAsJsonKeys = pravda

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

S WriteKeyword a WriteName = pravda

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

S číslemHandling = WriteAsString

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

S číslemHandling = AllowReadingFromString♰ WriteAsNumber

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

Použijte příklady případů

Pro lidsky čitelnou dokumentaci

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

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

Pro PS3.18 Kompatibilní webové služby

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

Integrace JavaScript Frontend

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

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

Uložení databáze

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

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

Důležité úvahy

Varování o interoperabilitě

Neštandardní možnosti mohou narušit kompatibilitu s některými parséry DICOM:

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

Doporučení pro dodržování

Pokud je požadována dodržování DICOM PS3.18, použijte výchozí nastavení:

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

Stream-based serializace s možností

Pro velké soubory použijte stream-based serializace:

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

Další informace

  • Přizpůsobené možnosti ovlivňují jak serializace, tak deserializací - zajišťují konzistentní možnosti při kroužkování dat.
  • a to WriteName Možnost přidává lidsky čitelné názvy tagů DICOM, které zvyšují velikost JSON, ale zlepšují čtení.
  • Některé systémy třetích stran mohou vyžadovat specifické formáty JSON - před výběrem možností se podívejte na jejich dokumentaci.

závěr

Tento tutoriál ukázal, jak přizpůsobit výstup serializace DICOM JSON v C# pomocí Aspose.Medical. Konfigurováním DicomJsonSerializerOptions, můžete upravit formát jSON tak, aby splňovaly specifické integrační požadavky a zároveň vyvážit čitelnost, velikost a potřeby interoperability.

 Čeština