Ứng dụng chăm sóc sức khỏe hiện đại ngày càng dựa vào các giao diện dựa trên web để xem và quản lý dữ liệu hình ảnh y tế. Chuyển đổi tệp DICOM sang JSON cho phép sự tích hợp không ngừng với JavaScript frameworks, REST APIs, và nền tảng đám mây. Hướng dẫn này cho bạn thấy làm thế nào để chuyển đổi C# từ Dicom sang json bằng cách sử dụng Aspose.medical cho .NET.
Tại sao chuyển đổi DICOM sang JSON?
DICOM (Digital Imaging and Communications in Medicine) là định dạng tiêu chuẩn cho hình ảnh y tế, nhưng cấu trúc nhị phân của nó làm cho nó khó khăn để làm việc với các ứng dụng web.
- Suy hợp với JavaScript: JSON có nguồn gốc từ trình duyệt web và các khung frontend như React, Vue và Angular
- REST API tích hợp: JSON là tiêu chuẩn thực tế cho các API web hiện đại
- Lưu trữ cơ sở dữ liệu**: NoSQL Databases like MongoDB store JSON documents natively
- Cách đọc của con người: JSON dễ kiểm tra và trượt so với DICOM nhị phân
Tiêu chuẩn DICOM PS3.18 xác định một đại diện JSON cho dữ liệu DIKOM, đảm bảo tính tương tác giữa các hệ thống chăm sóc sức khỏe.
Thiết lập dự án .NET của bạn
Đầu tiên, cài đặt Aspose.Medical cho .NET và thiết lập giấy phép đo:
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 sang JSON Conversion
Cách đơn giản nhất để chuyển đổi tệp DICOM sang 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 cho Debugging
Trong quá trình phát triển, định dạng JSON là dễ dàng hơn để đọc và phá vỡ:
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;
}
Sử dụng Tag Keywords thay vì Hex Codes
Theo mặc định, DICOM JSON sử dụng mã nhãn hexadecimal. Để có thể đọc được hơn, hãy dùng tên từ khóa:
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;
}
Xây dựng REST API Endpoint
Dưới đây là cách tạo một điểm kết thúc ASP.NET Core mà chuyển đổi tệp DICOM được tải lên sang 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);
}
}
Stream-Based Serialization cho các tệp lớn
Đối với các tệp DICOM lớn, hãy sử dụng chuỗi dựa trên dòng để giảm sử lượng bộ nhớ:
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 cho Multiple Files
Thực hiện toàn bộ thư mục của các tệp 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}");
}
}
}
}
Kết hợp với React Frontend
Một khi API của bạn trở lại JSON, tiêu thụ nó trong React là đơn giản:
// 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>
);
}
Thực hành tốt nhất
Khi chuyển đổi DICOM sang JSON cho các ứng dụng web, hãy nhớ những lời khuyên này:
- Anonymous before converting: Luôn xóa thông tin xác định bệnh nhân trước khi tiết lộ dữ liệu DICOM thông qua web APIs
- ** Sử dụng phương pháp async**: Đối với các ứng dụng web, sử dụng serialization không đồng bộ để tránh chặn dây
- Cache dữ liệu chuyển đổi: Nếu cùng các tập tin DICOM được yêu cầu thường xuyên, cache JSON output
- Đánh giá các tệp nhập: Kiểm tra rằng các tập tin được tải lên là hợp lệ DICOM trước khi xử lý
- Hướng dẫn dữ liệu nhị phân cẩn thận: Dữ liệu pixel lớn nên được xử lý riêng biệt hoặc loại trừ từ phản ứng JSON
Kết luận
Chuyển đổi các tệp DICOM sang JSON mở ra dữ liệu hình ảnh y tế cho sự phát triển web hiện đại. Với Aspose.Medical cho .NET, bạn có thể dễ dàng phân loại các tập tin DIKOM vào PS3.18-tùy chỉnh JSon, xây dựng APIs REST, và tích hợp với các khung JavaScript. Các ví dụ trong hướng dẫn này cung cấp một nền tảng cho việc tạo ra các trình xem DIM dựa trên web, các cổng thông tin bệnh nhân và các cơ sở data chăm sóc sức khỏe.
Để biết thêm thông tin về các tùy chọn phân phối DICOM JSON, hãy truy cập Aspose.Dữ liệu y tế.
More in this category
- Chuẩn bị DICOM Datasets cho AI và Machine Learning với Aspose.Medical
- Hồ sơ riêng tư tùy chỉnh phù hợp với DICOM Anonymization cho Chính sách Bệnh viện của bạn
- Tại sao DICOM Anonymization quan trọng đối với HIPAA và GDPR trong dòng công việc .NET
- Xây dựng một DICOM Anonymization Microservice trong ASP.NET Core
- Lưu DICOM Metadata trong SQL và NoSQL Databases với C#