تعتمد تطبيقات الرعاية الصحية الحديثة بشكل متزايد على واجهات الويب لمشاهدة وإدارة بيانات الصورة الطبية.تحويل ملفات DICOM إلى JSON يسمح بالتكامل السليم مع إطارات جافا سكريبت و REST APIs ومنصات السحابة.هذا الدليل يظهر لك كيفية تحويل C# إلى DIKOM باستخدام Aspose.Medical for .NET.
لماذا تحويل DICOM إلى JSON؟
DICOM (الصور الرقمية والاتصالات في الطب) هو النموذج القياسي للصور الطبية، ولكن هيكلها الثنائي يجعل من الصعب العمل معها في تطبيقات الويب.
- ** متوافقة مع JavaScript**: JSON مأخوذة من متصفحات الويب والإطارات الأمامية مثل React وVue وAngular
- تكامل REST API: JSON هو المعيار الفعلي لـ APIs الويب الحديثة
- تخزين قاعدة البيانات: قواعد بيانات NoSQL مثل MongoDB تخزن مستندات JSON أصلية
- القراءة البشرية: JSON سهلة الفحص والتفريغ مقارنة مع DICOM الثنائي
يحدد المعيار DICOM PS3.18 تمثيل JSON لبيانات DIKOM ، مما يضمن التفاعل بين أنظمة الرعاية الصحية.
إعداد مشروع .NET الخاص بك
أولاً، قم بتثبيت Aspose.Medical for .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;
}
استخدام الكلمات المفتاحية بدلاً من الرموز الهيكس
بشكل افتراضي ، تستخدم 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;
}
بناء نقطة النهاية لـ REST 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);
}
}
بتش تحويل الملفات المتعددة
معالجة السجلات الكاملة من ملفات 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 من خلال APIs الويب
- استخدام أساليب غير متزامنة: في تطبيقات الويب، استخدم التسلسل غير المتزامن لتجنب حجب السلاسل.
- تخزين البيانات التي تم تحويلها: إذا طلبت نفس الملفات DICOM في كثير من الأحيان، تخزون JSON الناتج
- تأكيد ملفات الإدخال: تحقق من أن الملفات التي تم تحميلها صالحة DICOM قبل المعالجة
- معالجة البيانات الثنائية بعناية: يجب التعامل مع بيانات البكسل الكبيرة بشكل منفصل أو محظور من ردود JSON
استنتاجات
تحويل ملفات DICOM إلى JSON يفتح بيانات الصورة الطبية لتطوير الويب الحديث.مع Aspose.Medical ل .NET، يمكنك بسهولة تصنيف مجموعات البيانات Dicom إلى PS3.18-موافقة JSon، وبناء REST APIs، وتكاملها مع إطارات JavaScript.
للحصول على مزيد من المعلومات حول خيارات التسلسل DICOM JSON، يرجى زيارة الوسوم - الوثائق الطبية.
More in this category
- إعداد مجموعات DICOM للذكاء الاصطناعي والتعلم الآلي مع Aspose.Medical
- بناء خدمة DICOM Anonymization Microservice في ASP.NET Core
- لماذا يهم DICOM المجهول لـ HIPAA و GDPR في تدفقات العمل .NET
- ملفات تعريف الخصوصية المخصصة التي تتكيف مع سياسات المستشفى الخاصة بك
- تخزين بيانات DICOM في قواعد البيانات SQL و NoSQL باستخدام C#