Les applications de santé modernes dépendent de plus en plus des interfaces web pour visualiser et gérer les données d’imagerie médicale. La conversion des fichiers DICOM à JSON permet une intégration sans fil avec les cadres JavaScript, les APIs REST et les plateformes en nuage. Ce guide vous montre comment convertir DIKOM au J SON en C# en utilisant Aspose.Medical pour .NET.
Pourquoi transformer DICOM en JSON ?
DICOM (Digital Imaging and Communications in Medicine) est le format standard pour l’imagerie médicale, mais sa structure binaire la rend difficile à travailler avec dans les applications Web. JSON offre plusieurs avantages pour le développement web:
- Compatibilité JavaScript: JSON est originaire des navigateurs Web et des cadres front-end tels que React, Vue et Angular
- REST API intégration: JSON est la norme de fait pour les APIs Web modernes
- Réservation de base de données: NoSQL bases de Données telles que MongoDB stockent des documents JSON nativement
- La lecture humaine: JSON est facile à inspecter et à débarrasser par rapport au DICOM binaire
La norme DICOM PS3.18 définit une représentation JSON pour les données Dicom, ce qui garantit l’interopérabilité à travers les systèmes de soins de santé.
Créer votre projet .NET
Tout d’abord, installez Aspose.Medical pour .NET et configurez la licence mesurée :
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");
DICOM à JSON Conversion
La façon la plus simple de convertir un fichier DICOM à 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 pour Debugging
Au cours du développement, le format JSON est plus facile à lire et à débarrasser:
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;
}
Utiliser les mots-clés au lieu des codes hex
Par défaut, DICOM JSON utilise des codes d’étiquette hexadecimal. Pour une sortie plus lisible, utilisez les noms de mots-clés :
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;
}
Création d’un REST API Endpoint
Voici comment créer un endpoint ASP.NET Core qui convertit les fichiers DICOM téléchargés en 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);
}
}
Sérialisation basée sur le courant pour les fichiers majeurs
Pour les grands fichiers DICOM, utilisez la sérialisation basée sur le courant pour réduire l’utilisation de la mémoire :
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);
}
}
Conversion Batch pour plusieurs fichiers
Téléchargez les fichiers 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}");
}
}
}
}
Intégration avec React Frontend
Une fois que votre API revient à JSON, la consommation en React est simple :
// 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>
);
}
Migliori pratiche
Lors de la conversion DICOM à JSON pour les applications Web, garder ces conseils à l’esprit:
- Anonymiser avant la conversion: supprimer toujours les informations identifiables du patient avant d’exposer les données DICOM à travers les APIs Web
- Utilisez des méthodes d’async: Pour les applications Web, utilisez la sérialisation asynchronique pour éviter le blocage des filets
- Cache des données converties: Si les mêmes fichiers DICOM sont demandés fréquemment, cache la sortie JSON
- Valider les fichiers d’entrée: Vérifiez que les données téléchargées sont valides DICOM avant le traitement
- Travaillez les données binaires avec soin: Les données de grands pixels doivent être traitées séparément ou exclues des réponses JSON
Conclusion
Conversion de fichiers DICOM à JSON ouvre les données d’imagerie médicale pour le développement web moderne. Avec Aspose.Medical pour .NET, vous pouvez facilement sérialiser les ensembles de données Dicom à PS3.18-compliant JSon, construire les APIs REST, et intégrer avec les cadres JavaScript. Les exemples dans ce guide fournissent un fondement pour la construction de web-basé des lecteurs DIKOM, des portails de patients et des plates-formes de data de santé.
Pour plus d’informations sur les options de sérialisation DICOM JSON, visitez le Aspose.Documentation médicale.
More in this category
- Créer un Microservice d'anonymisation DICOM dans ASP.NET Core
- Pourquoi l'anonymisation DICOM est importante pour HIPAA et GDPR dans les flux de travail .NET
- Préparation de DICOM Datasets pour l'AI et le Machine Learning avec Aspose.Medical
- Profils de confidentialité personnalisés adaptant l'anonymisation DICOM à vos politiques hospitalières
- Stockage des métadonnées DICOM dans les bases de données SQL et NoSQL avec C#