Как да персонализирате DICOM JSON Output с DicomJsonSerializerOptions

Как да персонализирате DICOM JSON Output с DicomJsonSerializerOptions

Този урок показва как да персонализирате изхода за сериализация на DICOM JSON с помощта на DicomJsonSerializerOptions в C#. Приспособяването ви позволява да контролирате ключовите формати на jSON, да включите допълнителни метаданни и да се справите с цифрови стойности в съответствие с изискванията за интеграция.

Защо да персонализирате JSON изхода?

Различните системи могат да изискват различни JSON формати.

  • Използване на човешки-читаеми ключови думи вместо етикети
  • Включване на етикети имена за документация
  • Проверка как се представят цифровите стойности
  • Отговаряне на специфичните изисквания на системата на трети страни

Предимства: Подготвяне на околната среда

  • Visual Studio или всяка съвместима .NET IDE.
  • Създаване на нов проект за .NET 8 конзола.
  • Инсталирайте Aspose.Medical от NuGet Package Manager.

Достъпни опции за сериализация

OptionописаниеImpact
UseKeywordsAsJsonKeysИзползвайте ключови думи DICOM вместо таг числа като JSON ключалки"PatientName" ВС "00100010"
WriteKeywordВключете полето с ключови думи във всеки обект с тагAdds "keyword": "PatientName"
WriteNameВключете името на полето във всеки обект с етикетAdds "name": "Patient's Name"
NumberHandlingКонтролна цифрова стойностЧисла като стрии или реални JSON числа

Стъпка по стъпка ръководство за персонализиране на JSON изхода

Стъпка 1: Инсталирайте Aspose.Medical

Добавете библиотеката Aspose.Medical към вашия проект с помощта на NuGet.

Install-Package Aspose.Medical

Стъпка 2: Включете необходимите имена

Добавете препратки към необходимите имена в кода си.

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

Стъпка 3: Създаване на опции

Създаване на A DicomJsonSerializerOptions Пример за създаване на настройки.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Стъпка 4: Настройване на опции

Поставете желаните опции за вашия JSON изход.

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

Стъпка 5: Сериализиране с опции

Преместете опциите към метода Сериализиране.

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

Стъпка 6: Спестете персонализирания изход

Съхранявайте или използвайте персонализирания JSON.

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

Допълнителен код с всички опции

Ето един пълен пример, показващ всички възможности за персонализиране:

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

Сравнение на изходните формати

Стандартният формат за изход (PS3.18)

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

Използвайте ключови думиAsJsonKeys = истина

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

С WriteKeyword и WriteName = истина

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

С бройHandling = WriteAsString

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

С NumberHandling = AllowReadingFromString♰ WriteAsNumber

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

Използвайте примери за случая

За човешко-читаема документация

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

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

За PS3.18 Удобни уеб услуги

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

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

За съхранение на база данни

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

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

Важни съображения

Предупреждение за съвместимост

Нестандартните опции могат да нарушат съвместимостта с някои 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();

Препоръка за съответствие

Когато се изисква съответствие с DICOM PS3.18, използвайте настройките по подразбиране:

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

Сериализация на базата на потока с опции

За големи файлове използвайте сериализация на базата на потока:

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

Допълнителна информация

  • Посочените опции засягат както сериализацията, така и дезориентацията - осигуряват последователни възможности, когато се въртят данни.
  • на WriteName Опцията добавя човешки читаеми имена за етикети DICOM, които увеличават размера на JSON, но подобряват четенето.
  • Някои системи на трети страни може да изискват специфични JSON формати - прочетете тяхната документация, преди да изберете опции.

заключение

Този урок е показал как да персонализирате изхода на DICOM JSON сериализация в C# с помощта на Aspose.Medical. чрез конфигуриране на DicomJsonSerializerOptions, можете да приспособите JSon формат, за да отговарят на специфичните изисквания за интеграция, като същевременно балансирате нуждите за четене, размери и съвместимост.

 Български