برنامه های بهداشتی مدرن به طور فزاینده ای بر روی رابط های مبتنی بر وب برای مشاهده و مدیریت داده های تصویربرداری پزشکی تکیه می کنند. تبدیل فایل های DICOM به JSON اجازه می دهد تا یکپارچه سازی بی سیم با چارچوب های جاوا اسکریپت، APIs REST و پلتفرم های ابر. این راهنمای به شما می گوید که چگونه برای تبدیل دیکوم به C# با استفاده از Aspose.Medical برای .NET.
چرا DICOM را به JSON تبدیل می کنیم؟
DICOM (تصویر دیجیتال و ارتباطات در پزشکی) فرمت استاندارد برای تصویربرداری پزشکی است، اما ساختار باینری آن باعث می شود که کار با آن در برنامه های وب چالش برانگیز باشد.
- ** سازگاری جاوا اسکریپت**: JSON به مرورگرهای وب و چارچوب های جلو مانند React، Vue و Angular متولد شده است.
- REST API Integration: JSON استاندارد واقعی برای API های وب مدرن است
- تخزین پایگاه داده: پایگاه های داده NoSQL مانند MongoDB ذخیره اسناد JSON به صورت بومی
- ** خواندن انسانی**: JSON در مقایسه با DICOM دوگانه به راحتی قابل بررسی و تخلیه است.
استاندارد DICOM PS3.18 یک نمایشنامه JSON برای داده های دیکوم را تعریف می کند، تضمین تعاملی در سراسر سیستم های مراقبت های بهداشتی.
راه اندازی پروژه .NET خود را
اول، 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");
DICOM به JSON تبدیل می شود
ساده ترین راه برای تبدیل یک فایل 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;
}
}
دانلود نرم افزار JSON برای Debugging
در طول توسعه، JSON فرمت شده برای خواندن و تخلیه آسان تر است:
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;
}
استفاده از کلمات کلیدی Tag به جای کد های Hex
به طور پیش فرض، DICOM JSON از کدهای برچسب hexadecimal استفاده می کند.برای خروجی قابل خواندن بیشتر، از نام کلمات کلیدی استفاده کنید:
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;
}
ساختن یک نقطه پایان API
در اینجا چگونه برای ایجاد یک نقطه پایان ASP.NET Core که تبدیل فایل های DICOM بارگذاری شده به 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);
}
}
سریالی سازی مبتنی بر جریان برای فایل های بزرگ
برای فایل های DICOM بزرگ، از سریالی سازی مبتنی بر جریان برای کاهش استفاده از حافظه استفاده کنید:
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);
}
}
Batch Conversion برای چندین فایل
پردازش کل دایرکتوری های فایل های 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}");
}
}
}
}
ارتباط با React Frontend
هنگامی که API شما به JSON باز می گردد، مصرف آن در React ساده است:
// 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>
);
}
بهترین شیوهها
هنگام تبدیل DICOM به JSON برای برنامه های وب، این نکات را در نظر بگیرید:
- آنونیسم قبل از تبدیل: همیشه اطلاعات قابل شناسایی بیمار را حذف کنید تا داده های DICOM را از طریق API های وب افشا کنید.
- استفاده از روش های غیرقابل همگام سازی: برای برنامه های وب، از سریالی سازی غیرمستقیم برای جلوگیری از مسدود کردن سیم ها استفاده کنید.
- Cache داده های تبدیل شده: اگر همان فایل های DICOM اغلب درخواست می شود، خروجی JSON را ذخیره کنید.
- فایلهای ورودی را تأیید کنید: بررسی کنید که فایل های بارگذاری شده قبل از پردازش معتبر هستند.
- تجارت با داده های باینری با دقت:بزرگ پیکسل باید به صورت جداگانه یا از پاسخ های JSON حذف شود
نتیجه گیری
تبدیل فایل های DICOM به JSON داده های تصویربرداری پزشکی را برای توسعه وب مدرن باز می کند. با Aspose.Medical برای .NET، شما به راحتی می توانید مجموعه های داده DIKOM را به PS3.18 مطابقت دارد، APIs REST را ایجاد کنید و با چارچوب های جاوا اسکریپت ادغام کنید. نمونه های در این راهنمای پایه ای برای ساختن مخاطبان مبتنی بر وب، پورتال های بیمار و پلتفرم های اطلاعات مراقبت های بهداشتی ارائه می دهد.
برای کسب اطلاعات بیشتر در مورد گزینه های سریال سازی DICOM JSON، به بایگانی برچسب ها: اسناد پزشکی.