Cómo convertir un archivo DICOM en JSON usando DicomJsonSerializer

Cómo convertir un archivo DICOM en JSON usando DicomJsonSerializer

Este tutorial demuestra cómo convertir los archivos DICOM en formato JSON utilizando C#. la salida de jSON es esencial para la integración de los metadatos de dicom con servicios web modernos, APIs REST y sistemas de información sanitaria.

Beneficios de convertir DICOM en JSON

  • • Integración web:- JSON es el formato estándar para APIs REST y servicios web.

  • Análisis de datos:- Procesar fácilmente los metadatos de DICOM en los tubos de análisis de datos.

  • • Interoperabilidad *:- Compartir metadatos con sistemas que no soportan formatos DICOM nativos.

Requisitos: Preparación del medio ambiente

  • Instalar Visual Studio o cualquier compatible .NET IDE.
  • Crea un nuevo proyecto de aplicación .NET 8 consola.
  • Instalar Aspose.Medical desde el NuGet Package Manager.

Guía paso a paso para convertir DICOM en JSON

Paso 1: Instalar Aspose.Medical

Añade la biblioteca de Aspose.Medical a su proyecto utilizando NuGet.

Install-Package Aspose.Medical

Paso 2: Incluir los espacios de nombre necesarios

Añade las referencias a los espacios de nombre requeridos en su código.

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

Paso 3: Cargar el archivo DICOM

Cargue el archivo DICOM que desea convertir.

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

Paso 4: Serializar con JSON

Utilice el DicomJsonSerializer.Serialize Convertir el archivo DICOM en JSON.

string json = DicomJsonSerializer.Serialize(dcm);

Paso 5: Salva o Utilice la salida JSON

Almacenar el JSON en un archivo o usarlo directamente en su aplicación.

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

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

Exemplo de código completo para convertir DICOM en JSON

Aquí hay un ejemplo completo que demuestra cómo convertir un archivo DICOM en 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");

Pretty-printed JSON salida

Para la lectura humana de JSON con indentación, utilice el writeIndented Parámetros :

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

Convertir Dataset en lugar de DicomFile

También puede convertir sólo la porción de 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);

Exemplos de la estructura de salida JSON

La salida JSON sigue el estándar DICOM PS3.18. Aquí hay un ejemplo de lo que la salida parece:

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

Serialización basada en flujo

Para grandes archivos o aplicaciones web, utilice serializacin basada en el flujo:

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

Ejemplo de integración: enviar JSON a Web API

Aquí está cómo integrar la conversión de DICOM a JSON con un cliente 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!");
}

Tipos de uso

Descubrimiento de DICOM Metadata

Utilice la conversión JSON para inspeccionar los valores de la etiqueta DICOM:

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

Envío a la web Front-End

JSON es ideal para mostrar metadatos de DICOM en espectadores basados en navegador:

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

Lo que está incluido en la salida de JSON

La salida de JSON incluye:

  • Todas las etiquetas DICOM con sus valores
  • Representaciones de valor (VR) para cada etiqueta
  • Objetos de secuencia como objetos JSON
  • Referencias de datos binarios (BulkData) para los datos de píxeles

Información adicional

  • El formato JSON sigue la especificación de DICOM PS3.18 Web Services.
  • Los grandes valores binarios (como los datos de píxeles) son generalmente referenciados en lugar de incorporados.
  • Considere utilizar opciones de serificación personalizadas para requisitos específicos de integración.

Conclusión

Este tutorial le ha mostrado cómo convertir los archivos DICOM en formato JSON en C# utilizando Aspose.Medical. la salida de jSON permite la integración sin sentido con las APIs de salud modernas, los visualizadores web y los sistemas de análisis de datos.

 Español