Как да персонализирате 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 формат, за да отговарят на специфичните изисквания за интеграция, като същевременно балансирате нуждите за четене, размери и съвместимост.