Aspose.Medical DICOM в текстовий конвертер для .NET

Aspose.Medical DICOM to Text Converter для .NET є потужним API, зосередженим на конвертації даних ДІКОМ в гуманітарно чистих і машинно розповсюджених форматах. Це серіалізує дані DICOME до JSON і XML форматів, що дозволяє інтеграцію з веб-сервісами, REST APIs і сучасними системами охорони здоров’я.

Інсталяція та установка

Підтримка платформ

  • Операційна система: Windows, Linux, MacOS
  • Створення .NET 8.0+
    • Архітектура: x64, ARM64 (macOS)

Швидкий старт

1) ДІКОМ до JSON

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm);

2) DICOM до JSON з Pretty Print

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string formattedJson = DicomJsonSerializer.Serialize(dcm, writeIndented: true);
Console.WriteLine(formattedJson);

3) DICOM Dataset до JSON

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

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

4) Кількість файлів DICOM до JSON Array

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm1 = DicomFile.Open("scan1.dcm");
DicomFile dcm2 = DicomFile.Open("scan2.dcm");
Dataset[] datasets = [dcm1.Dataset, dcm2.Dataset];
string json = DicomJsonSerializer.Serialize(datasets, writeIndented: true);

5) Серилізація до потоку (ефективна пам’ять)

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
using MemoryStream stream = new();
DicomJsonSerializer.Serialize(stream, dcm.Dataset);

6) Зберегти як JSON файл

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
using FileStream output = File.Create("output.json");
DicomJsonSerializer.Serialize(output, dcm.Dataset, writeIndented: true);

Створення JSON Deserialization

Створення JSON String to Dataset

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string jsonText = File.ReadAllText("dicom_data.json");
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Завантажити JSON Stream в Dataset

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

using FileStream stream = File.OpenRead("dicom_data.json");
Dataset? dataset = DicomJsonSerializer.Deserialize(stream);

Створення JSON to DicomFile

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string jsonText = File.ReadAllText("dicom_file.json");
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonText);

Створення Deserialize JSON Array to Multiple Datasets

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string jsonText = File.ReadAllText("dicom_array.json");
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonText);

Серіалізація XML

Створення DICOM to XML

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string xml = DicomXmlSerializer.Serialize(dcm.Dataset);

XML до DICOM Dataset

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

string xmlText = File.ReadAllText("dicom_data.xml");
Dataset? dataset = DicomXmlSerializer.Deserialize(xmlText);

АСІНК АПІ

Для асинхронних операцій у веб-прикладах та послугах:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Async deserialization from stream
using FileStream stream = File.OpenRead("dicom_data.json");
Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(stream);

// Async serialization to stream
using FileStream output = File.Create("output.json");
await DicomJsonSerializer.SerializeAsync(output, dataset);

** Доступні методи Async:**

  • DeserializeAsync - Дезеріалізація UTF-8 JSON потоку до Dataset
  • DeserializeFileAsync - Дезеріалізація потоку UTF-8 JSON до DicomFile
  • DeserializeListAsync - Дезеріалізація потоку UTF-8 JSON до діапазону Dataset
  • SerializeAsync Серіалізуйте Dataset, DicomFile або DataSet на UTF-8 JSON Stream

Особливості та функціональність

DICOM Web Services відповідність

Конвертер дотримується стандарту DICOM PS3.18 (Веб-сервіси), що забезпечує сумісність з:

  • Решта сайтів DICOM
  • Облачні системи PACS
  • Сучасні платформи інтерактивності охорони здоров’я
  • FHIR-сумісні системи

Серіалізаційні варіанти

Використання серйозного поведінки з DicomJsonSerializerOptions:

DicomJsonSerializerOptions options = new()
{
    UseKeywordsAsJsonKeys = false,  // Use tags instead of keywords
    WriteKeyword = true,            // Include keyword as separate attribute
    WriteName = true,               // Include tag name as separate attribute
    NumberHandling = JsonNumberHandling.AsNumber  // Number format
};

string json = DicomJsonSerializer.Serialize(dataset, options);
OptionОпис
UseKeywordsAsJsonKeysВикористовуйте ключові слова DICOM замість тегів як ключі JSON (нестандартні)
WriteKeywordНапишіть ключові слова DICOM як відмінний атрибут JSON
WriteNameНапишіть назву знака DICOM як відмінний атрибут JSON
NumberHandlingВикористовуйте цифри як AsNumber або AsString
BulkDataLoaderЗавантажувач для blob даних, що посилаються в елементах BulkData
BulkDataConverterКонвертер для написання даних як референтних BulkData

System.Text.Json Інтеграція

Використовуйте конвертери з стандартною серіалізацією .NET JSON:

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

JsonSerializerOptions options = new();
options.Converters.Add(new DicomFileJsonConverter());
options.Converters.Add(new DatasetJsonConverter());

// Now use with JsonSerializer
string json = JsonSerializer.Serialize(dicomFile, options);

Підтримувані типи

Вхідний типФормат виходу
DicomFileСтворення JSON, XML
DatasetСтворення JSON, XML
Dataset[]Створення JSON, XML

Збереження даних

Серіалізація точно зберігає:

  • Всі знаки DICOM та цінності
  • Репрезентація цінностей (VR)
  • Невідомі послідовності
  • Приватні теги
  • Масштабні дані
  • Особливі значення флоту (NaN, Infinity)

Загальні випадки використання

  • Веб-переглядачі: Сервісуйте метадані DICOM для переглядачів медичних зображень, заснованих на браузері.
  • REST APIs: Будівництво медичних АПІ, які обмінюються даними DICOM у форматі JSON.
  • Аналіз даних: Експорт метаданів DICOM для аналізу в трубопроводах з обробки даних.
  • Інтеграція: Зв’яжіть спадщину PACS з сучасними платформами облачного медичного обслуговування.
  • Debugging: Створення людсько-чистих представлень даних DICOM для вирішення проблем.
  • Archiving: Зберігати метадані DICOM в документах, таких як MongoDB або Elasticsearch.

Найкращі практики

  • Ліцензія перша: Ініціалізуйте розмірну ліцензію перед будь-якою конверсією, щоб уникнути обмежень оцінки.
  • Використання потоків: Для великих файлів або веб-сервісів використовуйте методи потоку для ефективності пам’яті.
  • Async операції: Використовуйте методи асинку в веб-прикладах, щоб уникнути блокування проводів.
  • Валідація кругових поїздок: цикли тестування серіалізації/десериалізації для забезпечення цілісності даних.
  • Стандартне дотримання: Використовуйте за замовчуванням варіанти відповідності DICOM PS3.18; нестандартні опції можуть порушувати сторонні партнери.
  • УТФ-8 кодування: Методи потоку використовують UTF-8, ідеально підходить для веб-АПІ та файлових операцій.

Операційний резюме

ОпераціяInputВихідМетод
SerializeDatasetСтрий / StreamSerialize
SerializeDicomFileСтрий / StreamSerialize
SerializeСтворення Dataset[]Стрий / StreamSerialize
DeserializeСтрий / StreamDatasetDeserialize
DeserializeСтрий / StreamDicomFileDeserializeFile
DeserializeСтрий / StreamСтворення Dataset[]DeserializeList

FAQ

** Чи потрібні бібліотеки третьої сторони?**Це самостійний API, який використовує тільки вбудовану підтримку JSON/XML .NET.

** Чи відповідає вихід JSON DICOM Web Services?**Вихід за замовчуванням відповідає специфікаціям DICOM PS3.18.

** Чи можу я налаштувати формат ключа JSON?**І. Використання DicomJsonSerializerOptions Контроль за тегом vs. ключові слова та додаткові атрибути.

«Чи збереглися невідомі речі?»Серіалізтор підтримує повну структуру DICOM, в тому числі знеструмлені послідовності.

** Як я маю справу з великими файлами DICOM?**Використання різноманітних методів (Serialize(stream, ...) і DeserializeAsync) для ефективного обробки пам’яті.

** Чи є круглий перехід без втрат?**Серіалізація зберігає всі дані DICOM для точної дееріалізації назад до об’єктів Dataset або DicomFile.

 Українська