Як перетворити файл DICOM на JSON за допомогою DicomJsonSerializer

Як перетворити файл DICOM на JSON за допомогою DicomJsonSerializer

Цей навчальний заклад показує, як конвертувати файли DICOM у форматі JSON за допомогою C#. ДНЗ є необхідним для інтеграції метадатів DIKOM з сучасними веб-сервісами, REST APIs та інформаційними системами охорони здоров’я.

Переваги перетворення DICOM в JSON

  • • Інтеграція веб-сайтів:- JSON - стандартний формат для REST APIs і веб-сервісів.

  • аналіз даних:- Легко обробляти метадані DICOM в трубопроводах з аналізу даних.

  • • Інтегральна здатність *:- Поділитися метаданими з системами, які не підтримують корінні формати DICOM.

Докладніше: Підготовка навколишнього середовища

  • Налаштування Visual Studio або будь-якого сумісного .NET IDE.
  • Створення нового проекту .NET 8 консолі.
  • Завантажити Aspose.Medical з NuGet Package Manager.

Крок за кроком Посібник для перетворення DICOM в JSON

Крок 1: Інсталяція Aspose.Medical

Додайте бібліотеку Aspose.Medical до вашого проекту за допомогою NuGet.

Install-Package Aspose.Medical

Крок 2: Включити необхідні іменні простори

Додайте посилання на необхідні іменні простори у вашому коді.

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

Крок 3: Завантажити файл DICOM

Завантажити файл DICOM, який ви хочете конвертувати.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

Крок 4: Серіалізуйтеся до JSON

Використовуйте DicomJsonSerializer.Serialize Метод конвертації файлу DICOM в JSON.

string json = DicomJsonSerializer.Serialize(dcm);

Крок 5: Зберегти або скористатися JSON Output

Зберегти JSON до файлу або використовувати його безпосередньо у вашій програмі.

// Save to file
File.WriteAllText("patient_scan.json", json);

// Or use directly
Console.WriteLine(json);

Повний приклад коду для перетворення DICOM в JSON

Ось повний приклад, який показує, як конвертувати файл DICOM в JSON:

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

// Load the DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Convert to JSON
string json = DicomJsonSerializer.Serialize(dcm);

// Save to file
File.WriteAllText("patient_scan.json", json);

Console.WriteLine("DICOM file converted to JSON successfully!");
Console.WriteLine($"Output saved to: patient_scan.json");

Завантажити JSON Output

Для гуманітарно чистих JSON з індентацією, використовуйте writeIndented Про параметри :

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

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Serialize with indentation for readability
string prettyJson = DicomJsonSerializer.Serialize(dcm, writeIndented: true);

File.WriteAllText("patient_scan_pretty.json", prettyJson);

Console.WriteLine("Pretty-printed JSON saved successfully!");

Конвертувати Dataset замість DicomFile

Ви також можете конвертувати тільки частину Dataset:

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

DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Serialize only the dataset (without file meta information)
string datasetJson = DicomJsonSerializer.Serialize(dcm.Dataset);

File.WriteAllText("patient_dataset.json", datasetJson);

Структура виходу JSON

Вихід JSON відповідає стандарту DICOM PS3.18. ось приклад того, як вихід виглядає:

{
  "00080005": {
    "vr": "CS",
    "Value": ["ISO_IR 100"]
  },
  "00080020": {
    "vr": "DA",
    "Value": ["20240115"]
  },
  "00080030": {
    "vr": "TM",
    "Value": ["143022"]
  },
  "00100010": {
    "vr": "PN",
    "Value": [
      {
        "Alphabetic": "DOE^JOHN"
      }
    ]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

Серіалізація на базі потоку

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

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

DicomFile dcm = DicomFile.Open("large_scan.dcm");

// Write directly to a file stream
using (FileStream fs = File.Create("large_scan.json"))
{
    DicomJsonSerializer.Serialize(fs, dcm.Dataset);
}

Console.WriteLine("Large DICOM file serialized to JSON stream!");

Приклад інтеграції: відправлення JSON до Web API

Ось як інтегрувати конверсію DICOM в JSON з клієнтом HTTP:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Net.Http;
using System.Text;

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

// Send to web API
using HttpClient client = new();
var content = new StringContent(json, Encoding.UTF8, "application/json");

HttpResponseMessage response = await client.PostAsync(
    "https://api.example.com/dicom/metadata",
    content
);

if (response.IsSuccessStatusCode)
{
    Console.WriteLine("DICOM metadata successfully sent to API!");
}

Використання Tips

Завантажити DICOM Metadata

Використовуйте конвертацію JSON для перевірки знаків DICOM:

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

Завантажити сайт Front-End

JSON ідеально підходить для відображення метадатів DICOM у переглядачів, заснованих на браузері:

// In ASP.NET Core controller
[HttpGet("dicom/{id}/metadata")]
public IActionResult GetMetadata(string id)
{
    DicomFile dcm = DicomFile.Open($"storage/{id}.dcm");
    string json = DicomJsonSerializer.Serialize(dcm);
    return Content(json, "application/json");
}

Що міститься в JSON Output

Вихід JSON включає в себе:

  • Всі знаки DICOM зі своїми цінностями
  • Репрезентації цінності (VR) для кожної теги
  • Повторні об’єкти, такі як знеструмлені JSON
  • Бінарні дані (BulkData) для піксельних даних

Додаткова інформація

  • Формат JSON відповідає специфікації DICOM PS3.18 Web Services.
  • Великі бінарні значення (наприклад, піксельні дані) зазвичай посилаються, а не вбудовані.
  • Розглянемо використання персоналізованих варіантів серіалізації для конкретних вимог до інтеграції.

Заключення

Цей навчальний заклад показав вам, як конвертувати файли DICOM в форматі JSON в C# за допомогою Aspose.Medical.JSON-вихід дозволяє безперервну інтеграцію з сучасними АПІ охорони здоров’я, веб-переглядачами та системами аналізу даних.

 Українська