Як налаштувати DICOM JSON Output з DicomJsonSerializerOptions

Як налаштувати DICOM JSON Output з DicomJsonSerializerOptions

Цей навчальний заклад показує, як налаштувати вихід серіалізації DICOM JSON за допомогою DicomJsonSerializerOptions в C#. Налаштування дозволяє контролювати ключові формати J SON, включаючи додаткові метадані та керувати чисельними значеннями відповідно до ваших вимог до інтеграції.

Чому потрібно адаптуватися до 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 Output

Крок 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 = true

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

Письменник і письменник = правдивий

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

Створення Writing = WriteAsString

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

У зв’язку з цим вищезазначеним пунктом визначається

{
  "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 Compliant Web Services

// 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 Integration

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, ви можете адаптувати формат J SON для задоволення конкретних вимог інтеграції, збалансуючи читання, розмір і потреби в взаємодії.

 Українська