Kako prilagoditi DICOM JSON izlazak s DicomJsonSerializerOptions

Kako prilagoditi DICOM JSON izlazak s DicomJsonSerializerOptions

Ovaj tutorial pokazuje kako prilagoditi izlazak serializiranja DICOM JSON pomoću DicomJsonSerializerOptions u C#. Prilagodba vam omogućuje da kontrolirate ključne formate J SON-a, uključujući dodatne metapodatke i upravljate brojnim vrijednostima prema vašim zahtjevima za integraciju.

Zašto prilagoditi JSON izlazak?

Različiti sustavi mogu zahtijevati različite JSON formate. prilagodba omogućuje:

  • Korištenje ljudsko čitljivih ključnih riječi umjesto oznaka brojeva
  • Uključivanje imena oznaka za dokumentaciju
  • Saznajte kako se prikazuju brojne vrijednosti
  • Usklađenost s posebnim zahtjevima sustava trećih strana

Predviđanja: Priprema za okoliš

  • Sastavite Visual Studio ili bilo koji kompatibilni .NET IDE.
  • Stvorite novi .NET 8 konzol aplikacijski projekt.
  • Instalirajte Aspose.Medical iz upravitelja paketa NuGet.

Dostupne opcije serijacije

OptionOpisImpact
UseKeywordsAsJsonKeysKoristite ključne riječi DICOM umjesto oznake kao JSON ključeve"PatientName" VS "00100010"
WriteKeywordUključite polje s ključnim riječima u svakom objektu oznakeAdds "keyword": "PatientName"
WriteNameUključite ime polja u svakom objektu oznakeAdds "name": "Patient's Name"
NumberHandlingKontrola brojne vrijednostiBrojevi kao redovi ili stvarni JSON brojevi

Korak po korak vodič za prilagodbu JSON izlaska

Korak 1: Instalirati Aspose.Medical

Dodajte Aspose.Medical knjižnicu u svoj projekt pomoću NuGeta.

Install-Package Aspose.Medical

Korak 2: Uključite potrebne nazivne prostore

Dodajte upute potrebnim nazivnim prostorima u vašem kodu.

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

Korak 3: Kreirajte opcije

Stvoriti A DicomJsonSerializerOptions Primjerice, možete postaviti postavke.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Korak 4: Konfigurirajte opcije

Postavite željene opcije za svoj JSON izlazak.

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

Korak 5: Serializirajte opcije

Prebacite opcije na Serializirani način.

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

Korak 6: Sačuvajte prilagođeni izlaz

Sačuvajte ili koristite prilagođeni JSON.

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

Kompletni primjer koda sa svim opcijama

Ovdje je potpuni primjer koji prikazuje sve opcije prilagodbe:

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

Usporedba formata izlaska

Podrazumevani ishod (standardni PS3.18 format)

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

S korisnim ključnim riječimaAsJsonKeys = true

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

S WriteKeyword i WriteName = istinito

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

S brojomHandling = WriteAsString

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

S brojemHandling = AllowReadingFromString♰ WriteAsNumber

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

Koristite primjere slučajeva

Za ljudsko-čitanu dokumentaciju

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

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

Za PS3.18 Komplicirane web usluge

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

Za JavaScript Frontend integraciju

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

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

Za skladištenje baze podataka

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

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

Važna razmatranja

Upozorenje o interoperabilnosti

Ne-standardne opcije mogu narušiti kompatibilnost s nekim 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();

Preporuka za usklađenost

Kada je potrebna usklađenost s DICOMom PS3.18, koristite privremene postavke:

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

Serializiranje na temelju struje s opcijama

Za velike datoteke, koristite serijaliziranje na temelju struje:

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

Dodatne informacije

  • Prilagođene opcije utječu na serializiranje i deserializirati - osigurati dosljedna opcija prilikom krug-tripping podataka.
  • Tko je WriteName Opcija dodaje ljudski čitljive ime tagova DICOM koji povećava JSON veličinu, ali poboljšava čitanje.
  • Neki sustavi trećih strana mogu zahtijevati određene JSON formate - pročitajte njihovu dokumentaciju prije odabira opcija.

zaključak

Ovaj tutorial je pokazao kako prilagoditi izlazak serializiranja DICOM JSON u C# pomoću Aspose.Medical. Konfiguriranjem DicomJsonSerializerOptions, možete prilagođavati format JSon da zadovolji određene zahtjeve integracije dok uravnotežite potrebe čitanja, veličine i interoperabilnosti.

 Hrvatski