Les aplicacions sanitàries modernes es basen cada vegada més en les interfícies web per visualitzar i gestionar dades d’imatges mèdiques. Convertir arxius DICOM a JSON permet la integració sense segell amb els quadres JavaScript, les APIs REST i les plataformes de núvols. Aquesta guia t’ha mostrat com convertir-te en C# amb Aspose.Medical per .NET.
Per què convertir DICOM a JSON?
DICOM (Digital Imaging and Communications in Medicine) és el format estàndard per a la imatge mèdica, però la seva estructura binària fa que sigui desafiant treballar amb en aplicacions web.
- Compatibilitat amb JavaScript: JSON és nativa als navegadors web i els quadres frontals com React, Vue i Angular
- REST API integració: JSON és l’estàndard de facto per a APIs web moderns
- Arxiu d’emmagatzematge de bases de dades: NoSQL, com MongoDB, emmagatzema documents JSON de forma nativa
- Llegabilitat humana: JSON és fàcil d’inspeccionar i desembocar en comparació amb el binari DICOM
L’estàndard DICOM PS3.18 defineix una representació JSON per a les dades DIKOM, garantint la interoperabilitat a través dels sistemes sanitaris.
Creació del teu projecte .NET
Primer, instal·la Aspose.Medical per a .NET i configura la llicència mesurada:
using Aspose.Medical;
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Activate metered license
Metered metered = new Metered();
metered.SetMeteredKey("your-public-key", "your-private-key");
Conversió de DICOM a JSON
La manera més senzilla de convertir un arxiu DICOM a JSON:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
public class DicomJsonConverter
{
public string ConvertToJson(string dicomFilePath)
{
// Load the DICOM file
DicomFile dicomFile = DicomFile.Open(dicomFilePath);
// Serialize dataset to JSON string
string json = DicomJsonSerializer.Serialize(dicomFile.Dataset);
return json;
}
}
Pretty-Print JSON per a Debugging
Durant el desenvolupament, el format JSON és més fàcil de llegir i debutar:
public string ConvertToFormattedJson(string dicomFilePath)
{
DicomFile dicomFile = DicomFile.Open(dicomFilePath);
// Configure serialization options
var options = new DicomJsonSerializerOptions
{
WriteIndented = true // Enable pretty-print
};
string json = DicomJsonSerializer.Serialize(dicomFile.Dataset, options);
return json;
}
Utilitzar les paraules clau en lloc de codis hex
Per default, DICOM JSON utilitza codis d’etiquetes hexadecimals. per a un rendiment més llegible, utilitzeu els noms de paraules clau:
public string ConvertWithKeywords(string dicomFilePath)
{
DicomFile dicomFile = DicomFile.Open(dicomFilePath);
var options = new DicomJsonSerializerOptions
{
WriteIndented = true,
UseKeywordsAsJsonKeys = true, // Use "PatientName" instead of "00100010"
WriteKeyword = true, // Include keyword in output
WriteName = true // Include human-readable name
};
string json = DicomJsonSerializer.Serialize(dicomFile.Dataset, options);
return json;
}
Creació d’un REST API Endpoint
Aquí teniu com crear un endpoint ASP.NET Core que converteix els arxius DICOM carregats a JSON:
using Microsoft.AspNetCore.Mvc;
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
[ApiController]
[Route("api/[controller]")]
public class DicomController : ControllerBase
{
[HttpPost("to-json")]
public async Task<IActionResult> ConvertToJson(IFormFile file)
{
if (file == null || file.Length == 0)
{
return BadRequest("No DICOM file provided");
}
try
{
// Save uploaded file temporarily
var tempPath = Path.GetTempFileName();
using (var stream = new FileStream(tempPath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
// Convert to JSON
DicomFile dicomFile = DicomFile.Open(tempPath);
var options = new DicomJsonSerializerOptions
{
WriteIndented = true,
UseKeywordsAsJsonKeys = true
};
string json = DicomJsonSerializer.Serialize(dicomFile.Dataset, options);
// Clean up temp file
System.IO.File.Delete(tempPath);
return Content(json, "application/json");
}
catch (Exception ex)
{
return StatusCode(500, $"Conversion failed: {ex.Message}");
}
}
[HttpGet("metadata/{fileName}")]
public IActionResult GetMetadata(string fileName)
{
var filePath = Path.Combine("DicomFiles", fileName);
if (!System.IO.File.Exists(filePath))
{
return NotFound("DICOM file not found");
}
DicomFile dicomFile = DicomFile.Open(filePath);
// Extract specific metadata fields
var metadata = new
{
PatientName = dicomFile.Dataset.GetString(DicomTag.PatientName),
PatientID = dicomFile.Dataset.GetString(DicomTag.PatientID),
StudyDate = dicomFile.Dataset.GetString(DicomTag.StudyDate),
Modality = dicomFile.Dataset.GetString(DicomTag.Modality),
StudyDescription = dicomFile.Dataset.GetString(DicomTag.StudyDescription)
};
return Ok(metadata);
}
}
Serialització basada en el flux per a arxius grans
Per a grans arxius DICOM, utilitzeu la serialització basada en el flux per reduir l’ús de la memòria:
public async Task ConvertToJsonStreamAsync(string dicomFilePath, string outputPath)
{
DicomFile dicomFile = DicomFile.Open(dicomFilePath);
var options = new DicomJsonSerializerOptions
{
WriteIndented = true
};
using (var fileStream = new FileStream(outputPath, FileMode.Create))
{
await DicomJsonSerializer.SerializeAsync(
fileStream,
dicomFile.Dataset,
options);
}
}
Conversió de batxillerat per a múltiples arxius
Processar tots els directoris dels arxius DICOM:
public class BatchDicomConverter
{
public async Task ConvertDirectoryAsync(string inputDir, string outputDir)
{
Directory.CreateDirectory(outputDir);
var dicomFiles = Directory.GetFiles(inputDir, "*.dcm");
var options = new DicomJsonSerializerOptions
{
WriteIndented = true,
UseKeywordsAsJsonKeys = true
};
foreach (var filePath in dicomFiles)
{
try
{
DicomFile dicomFile = DicomFile.Open(filePath);
string fileName = Path.GetFileNameWithoutExtension(filePath);
string outputPath = Path.Combine(outputDir, $"{fileName}.json");
using (var stream = new FileStream(outputPath, FileMode.Create))
{
await DicomJsonSerializer.SerializeAsync(
stream,
dicomFile.Dataset,
options);
}
Console.WriteLine($"Converted: {fileName}");
}
catch (Exception ex)
{
Console.WriteLine($"Failed to convert {filePath}: {ex.Message}");
}
}
}
}
Integració amb React Frontend
Una vegada que la seva API torna a JSON, consumir-la en React és senzill:
// React component to display DICOM metadata
import React, { useState } from 'react';
function DicomViewer() {
const [metadata, setMetadata] = useState(null);
const handleFileUpload = async (event) => {
const file = event.target.files[0];
const formData = new FormData();
formData.append('file', file);
const response = await fetch('/api/dicom/to-json', {
method: 'POST',
body: formData
});
const json = await response.json();
setMetadata(json);
};
return (
<div>
<input type="file" onChange={handleFileUpload} accept=".dcm" />
{metadata && (
<pre>{JSON.stringify(metadata, null, 2)}</pre>
)}
</div>
);
}
Les millors pràctiques
Quan es converteix DICOM a JSON per a aplicacions web, tingueu en compte aquests consells:
- Anònimització abans de la conversió: sempre elimina la informació identificable del pacient abans d’exposar les dades de DICOM a través de les APIs web
- Use async mètodes: Per a les aplicacions web, utilitzeu la serialització asíncrona per evitar bloquejar les cadenes
- Cache dades convertides: Si els mateixos arxius DICOM es sol·liciten freqüentment, cache la sortida JSON
- Valida els fitxers d’entrada: comprova que els arxius carregats són vàlids DICOM abans del processament
- Traduar dades binàries amb cura: Les grans dades de píxels s’han de tractar de forma separada o excloses de les respostes JSON
Conclusió
Convertir els arxius DICOM a JSON obre les dades d’imatge mèdica per al desenvolupament web modern. Amb Aspose.Medical per a .NET, es pot serialitzar fàcilment els set de dades Dicom a PS3.18-compliant JSon, construir APIs REST, i integrar amb els quadres JavaScript. Els exemples en aquest guia proporcionen un fonament per construir els visuals web DIKOM, portals de pacients i plataformes de informació de salut.
Per a més informació sobre les opcions de serialització de DICOM JSON, visiteu el Aspose.Documentació mèdica.
More in this category
- Construcció d'un Microsservi Anònim de DICOM en ASP.NET Core
- Per què DICOM Anonymització Important per a HIPAA i GDPR en els fluxos de treball .NET
- Preparació de DICOM Datasets per a AI i aprenentatge de màquina amb Aspose.Medical
- Profils de confidencialitat personalitzats per adaptar-se a la anonimització de DICOM a les vostres polítiques d'hospital
- Emmagatzemar metadades DICOM en bases de dades SQL i NoSQL amb C#