Jak przekonwertować plik DICOM do JSON za pomocą DicomJsonSerializer

Jak przekonwertować plik DICOM do JSON za pomocą DicomJsonSerializer

Ten podręcznik pokazuje, jak konwertować pliki DICOM do formatu JSON za pomocą C#. wyjście jSON jest niezbędne do zintegrowania metadanych DIKOM z nowoczesnymi usługami internetowymi, APIs REST i systemami informacyjnymi dotyczącymi opieki zdrowotnej.

Korzyści z konwersji DICOM do JSON

  • • Integracja internetowa:- JSON jest standardowym formatem dla REST API i usług internetowych.

  • Analiza danych:- Łatwo przetwarzać metadane DICOM w rurach analizy danych.

  • • interoperacyjność *:- Podziel się metadany z systemami, które nie obsługują native formatów DICOM.

Wymagania: przygotowanie środowiska

  • Zainstaluj program Visual Studio lub dowolny kompatybilny .NET IDE.
  • Stwórz nowy projekt aplikacji konsoli .NET 8.
  • Instaluj Aspose.Medical z programu NuGet Package Manager.

Przewodnik krok po kroku do konwersji DICOM do JSON

Krok 1: Instalacja Aspose.Medical

Dodaj do projektu bibliotekę Aspose.Medical za pomocą NuGet.

Install-Package Aspose.Medical

Krok 2: Włącz niezbędne przestrzenie nazwowe

Dodaj odniesienia do wymaganych przestrzeni nazwowych w kodzie.

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

Krok 3: Pobierz plik DICOM

Pobierz plik DICOM, który chcesz konwertować.

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

Krok 4: Serializuj się do JSON

Korzystaj z DicomJsonSerializer.Serialize Metoda konwersji pliku DICOM do JSON.

string json = DicomJsonSerializer.Serialize(dcm);

Krok 5: Zapisz lub użyj wyjścia JSON

Zapisz JSON do pliku lub użyj go bezpośrednio w aplikacji.

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

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

Pełny przykład kodu do konwersji DICOM do JSON

Oto kompletny przykład, który pokazuje, jak konwertować plik DICOM do 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");

Wydawnictwo JSON Pretty Printed

Dla ludzko czytelnego JSON z indentacją, użyj writeIndented Wskaźnik parametrów:

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!");

Konwersja Dataset zamiast DicomFile

Możesz również konwertować tylko część 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);

Struktura wyjścia JSON

Wynik JSON jest zgodny ze standardem DICOM PS3.18. oto przykład tego, jak wygląda wynik:

{
  "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"]
  }
}

Serializacja oparta na strumieniu

W przypadku dużych plików lub aplikacji internetowych użyj serializacji opartej na strumieniu:

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!");

Przykład integracji: wysyłanie JSON do sieci Web API

Oto jak zintegrować konwersję DICOM do JSON z klientem 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!");
}

Używanie wskazówek

Debugging DICOM Metadata

Użyj konwersji JSON, aby sprawdzić wartości tagów DICOM:

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

Przesyłka do strony internetowej Front-End

JSON jest idealny do wyświetlania metadanych DICOM w przeglądarkach:

// 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");
}

Co jest zawarte w JSON Output

Wynik JSON obejmuje:

  • Wszystkie etykiety DICOM z ich wartościami
  • Wskaźniki wartości (VR) dla każdej etykiety
  • Obiekty sekwencyjne jako obiekty JSON
  • Referencje danych binarnych (BulkData) dla danych pikseli

Dodatkowe informacje

  • Format JSON jest zgodny ze specyfikacją DICOM PS3.18 Web Services.
  • Duże wartości binarne (takie jak dane pikseli) są zwykle odwoływane zamiast wbudowane.
  • Zastanów się nad wykorzystaniem opcji serializacji dostosowanych do określonych wymagań integracji.

konkluzja

Ten tutorial pokazał, jak konwertować pliki DICOM do formatu JSON w C# za pomocą Aspose.Medical.JSON output umożliwia bezprzewodową integrację z nowoczesnymi APIs opieki zdrowotnej, przeglądarkami internetowymi i systemami analizy danych.

 Polski