Савремене здравствене апликације све више се ослањају на веб-базирани интерфејси за гледање и управљање подацима медицинске слике. Конвертација ДИЦОМ датотека у ЈСОН омогућава беспрекорно интегрисање са JavaScript оквирима, РЕСТ АПИ и облачним платформама. Овај водич вам показује како конвертовати КСНУМКС на Ц # користећи Асписе.Медикал за .НЕТ.
Zašto pretvoriti DICOM u JSON?
DICOM (Digital Imaging and Communications in Medicine) је стандардни формат за медицинску слику, али његова бинарна структура чини изазовним да се ради са у веб апликацијама.
- JavaScript kompatibilnost: JSON je prirodan za web pretraživače i frontend okvirima kao što su React, Vue i Angular
- REST API integracija: JSON je de facto standard za moderne web APIs
- Складиштење базе података: НоСКЛ базе као што је МонгоДБ складиштити ЈСОН документе по рођењу
- Човечка читавост: ЈСОН је лако инспектирати и дебатирати у поређењу са бинарним дицом
Стандард ДИЦОМ ПС3.18 дефинише ЈСОН репрезентацију за податке ДИСОМА, обезбеђујући интерактивност у здравственим системима.
Sastavite svoj .NET projekat
Прво, инсталирајте Aspose.Medical за .NET и конфигуришете мерено лиценцирање:
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");
Основни диком за 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 za debugging
Током развоја, форматирани ЈСОН је лакше читати и дебатирати:
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;
}
Коришћење таг кључних речи уместо хекс кодова
По подразумевању, DICOM JSON користи хексадецималне кодове ознака. за читавији излаз, користите имена кључних речи:
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;
}
Изградња остатка АПИ Ендепоинт
Ево како да креирате АСП.НЕТ Цоре крајње тачке која конвертује преузете ДИКОМ датотеке у ЈСОН:
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);
}
}
Стрејм-базирани серијализација за велике датотеке
За велике ДИКОМ датотеке, користите сериализацију засновану на току како бисте смањили употребу меморије:
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);
}
}
Бацх конверзија за више датотека
Процесирајте целе директорије ДИЦОМ датотека:
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}");
}
}
}
}
Интегрисање са React Frontend
Када ваш АПИ враћа ЈСОН, конзумирање га у Реакту је једноставно:
// 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>
);
}
Најбоља пракса
Приликом конверзије ДИКОМ-а на ЈСОН за веб апликације, запамтите ове савете:
- Анонимизирајте пре конверзије: Увек уклоните информације које могу идентификовати пацијента пре излагања ДИЦОМ података преко веб АПИ-а
- Употреба метода асинц: За веб апликације, користите асинхронну сериализацију како бисте избегли блокирање трака
- Cache конвертовани подаци: Ако се исте DICOM датотеке често захтевају, Cache JSON излаз
- Валидирајте улазне датотеке: Проверите да ли су преузети датови важећи ДИЦОМ пре обраде
- Ради бинарне податке пажљиво: Велики пикселни подаци треба да се обрађују одвојено или искључују из JSON одговора
Закључак
Конвертирање ДИЦОМ датотека у ЈСОН отвара медицинске слике података за савремени веб развој. са Асписе.Медицински за .НЕТ, лако можете сериализовати ДиЦоМ податке сете на ПС3.18-у складу са ЈСОН, изградити РЕСТ АПИ, и интегрисати са Јаваскрипт оквирима. Примери у овом водичу пружају темељ за изградњу веб-базирани ДиЦом гледаоци, портали за пацијенте и платформе за здравствене информације.
Za više informacija o opcijama serijacije DICOM JSON, posetite Апсос.медицинска документација.
More in this category
- Zašto je DICOM Anonimizacija važna za HIPAA i GDPR u .NET radnim tokovima
- Изградња Мицросервиса за анонимизацију Дицома у АСП.НЕТ Цоре
- Прилагођени профили приватности који прилагођавају ДИКОМ анонимизацију вашим полицама у болници
- Припрема ДИЦОМ-а за ИИ и машинско учење са аспозом.медицински
- Складиштење ДИКОМ метада у СКЛ и НоСКЛ базама података са Ц #