Cum de a personaliza DICOM JSON Output cu DicomJsonSerializerOptions

Cum de a personaliza DICOM JSON Output cu DicomJsonSerializerOptions

Acest tutorial demonstrează modul de personalizare a producției de serializare DICOM JSON folosind DicomJsonSerializerOptions în C#. Personalizarea vă permite să controlați formate-cheie J SON, să includeți metadate suplimentare și să gestionați valorile numerice în funcție de cerințele dvs. de integrare.

De ce să personalizezi rezultatul JSON?

Diferitele sisteme pot necesita diferite formate JSON. personalizarea permite:

  • Utilizarea cuvintelor cheie citite de om in loc de numere de etichetare
  • Include numele de etichetă pentru documentare
  • Verificarea modului în care sunt reprezentate valorile numerice
  • Îndeplinirea cerințelor specifice ale sistemului terț

Etichetă: pregătirea mediului

  • Instalați Visual Studio sau orice IDE compatibil .NET.
  • Creați un nou proiect de aplicații .NET 8 console.
  • Instalați Aspose.Medical de la NuGet Package Manager.

Opțiuni de serializare disponibile

OptionDescriereImpact
UseKeywordsAsJsonKeysUtilizați cuvinte cheie DICOM în loc de numere de etichetare ca chei JSON"PatientName" vs "00100010"
WriteKeywordIncludeți un câmp de cuvinte cheie în fiecare obiect de etichetăAdds "keyword": "PatientName"
WriteNameIncludeți un câmp de nume în fiecare obiect de etichetăAdds "name": "Patient's Name"
NumberHandlingReprezentarea valorilor numerice de controlNumere ca linii sau numere JSON reale

Ghidul pas cu pas pentru personalizarea rezultatelor JSON

Pasul 1: Instalați Aspose.Medical

Adăugați biblioteca Aspose.Medical la proiectul dvs. folosind NuGet.

Install-Package Aspose.Medical

Pasul 2: Includeți spațiile de nume necesare

Adăugați referințe la spațiile de nume necesare în codul dvs.

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

Pasul 3: Creați instanta opțiunilor

Creați un DicomJsonSerializerOptions De exemplu, pentru a configura setările.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Pasul 4: Configurați opțiunile

Setarea opțiunilor dorite pentru ieșirea JSON.

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

Pasul 5: Serializați cu opțiuni

Transferați opțiunile la metoda Serializare.

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

Pasul 6: Salvați ieșirea personalizată

Salvați sau utilizați JSON personalizat.

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

Exemplu complet de cod cu toate opțiunile

Iată un exemplu complet care arată toate opțiunile de personalizare:

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

Compararea formatelor de ieșire

Formatul standard PS3.18 (default format)

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

Cu UseKeywordsAsJsonKeys = adevărat

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

Cu WriteKeyword și WritName = adevărat

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

Cu numărHandling = WriteAsString

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

Cu NumărHandling = AllowReadingFromString < WriteAsNumber

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

Utilizarea exemplelor de cazuri

Pentru documentarea citită de om

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

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

Pentru PS3.18 Servicii web compatibile

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

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

Pentru stocarea bazei de date

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

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

Considerări importante

Avertisment de interoperabilitate

Opțiunile non-standard pot întrerupe compatibilitatea cu unele parsere 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();

Recomandare pentru conformitate

În cazul în care conformitatea cu DICOM PS3.18 este necesară, utilizați setările predefinite:

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

Serializare bazată pe flux cu opțiuni

Pentru fișierele mari, utilizați serializarea bazată pe flux:

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

Informații suplimentare

  • Opțiunile personalizate afectează atât serializarea, cât și desertificarea - asigură opțiuni consistente atunci când datele sunt rotund.
  • pe care WriteName Opțiunea adaugă nume de etichetă DICOM, care crește dimensiunea JSON, dar îmbunătățește citibilitatea.
  • Unele sisteme terțe pot necesita formate JSON specifice - consultați documentația lor înainte de a alege opțiuni.

concluziile

Acest tutorial a arătat cum să personalizați producția de serializare DICOM JSON în C# folosind Aspose.Medical. Prin configurarea DicomJsonSerializerOptions, puteți adapta formatul J SON pentru a satisface cerințele specifice de integrare, echilibrând în același timp nevoile de lectură, dimensiune și interoperabilitate.

 Română