Как настроить 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.

Доступные опции сериализации

Опцияописание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 = true

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

С WriteKeyword и WriteName = True

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

С помощью NumberHandling = 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 для удовлетворения конкретных требований интеграции при равновесии читаемости, размеров и потребностей взаимодействия.

 Русский