การแปลงไฟล์ DICOM ไปยัง JSON ช่วยให้การบูรณาการได้อย่างราบรื่นกับเฟรม JavaScript, APIs REST และแพลตฟอร์มคลาวด์ คู่มือนี้แสดงให้เห็นว่าวิธีการแปลง Dicom ไปเป็น Json ใน C# โดยใช้ Aspose.Medical สําหรับ .NET
ทําไมแปลง DICOM ไปยัง JSON
DICOM (Digital Imaging and Communications in Medicine) เป็นรูปแบบมาตรฐานสําหรับภาพทางการแพทย์ แต่โครงสร้างไบนารีของมันทําให้มันยากที่จะทํางานกับในแอพเว็บ JSON มีข้อดีหลายสําหรับการพัฒนาเว็บ:
- การเข้ากันได้ของ JavaScript: JSON เป็นต้นกําเนิดของเว็บเบราว์เซอร์และ frameworks frontend เช่น React, Vue และ Angular
- การบูรณาการ API REST: JSON เป็นมาตรฐาน de facto สําหรับ APIs เว็บสมัยใหม่
- การจัดเก็บข้อมูล: NoSQL ฐานข้อมูลเช่น MongoDB เก็บเอกสาร JSON โดยธรรมชาติ
- ความสามารถในการอ่านของมนุษย์: JSON เป็นเรื่องง่ายที่จะตรวจสอบและลบเมื่อเทียบกับ DICOM คู่
มาตรฐาน DICOM PS3.18 กําหนดการแสดงผล JSON สําหรับข้อมูล DIKOM เพื่อให้แน่ใจว่ามีการทํางานร่วมกันระหว่างระบบการดูแลสุขภาพ
สร้างโครงการ .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;
}
}
Pretty-Print 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 Keywords แทน Hex Codes
โดยเริ่มต้น 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;
}
สร้าง REST API Endpoint
นี่คือวิธีการสร้าง ASP.NET Core endpoint ที่แปลงไฟล์ 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);
}
}
การจัดเรียงตาม Stream สําหรับไฟล์ขนาดใหญ่
สําหรับไฟล์ 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
- ใช้วิธีการ async: สําหรับการใช้งานเว็บใช้การจัดเรียงแบบ Asynchronous เพื่อหลีกเลี่ยงการบล็อกสาย
- Cache Data Converted: ถ้าไฟล์ DICOM ที่เดียวกันจะถูกขออย่างแพร่หลาย cache JSON output
- การรับรองไฟล์ input: ตรวจสอบว่าไฟล์ที่อัปโหลดถูกต้อง DICOM ก่อนการประมวลผล
- การจัดการข้อมูลไบนารีอย่างระมัดระวัง: ข้อมูล pixel ขนาดใหญ่ควรดําเนินการแยกต่างหากหรือยกเลิกจากการตอบสนอง JSON
ข้อสรุป
การแปลงไฟล์ DICOM ไปยัง JSON จะเปิดข้อมูลภาพทางการแพทย์สําหรับการพัฒนาเว็บที่ทันสมัย ด้วย Aspose.Medical สําหรับ .NET คุณสามารถจัดเรียงชุดข้อมูล DIKOM ได้อย่างง่ายดายไปกับ PS3.18-JSON สร้าง APIs REST และบูรณาการกับสกรู JavaScript ตัวอย่างในคู่มือนี้ให้พื้นฐานสําหรับการสร้างผู้ชม DIDOM ที่อยู่บนเว็บพอร์ตผู้ป่วยและแพลตฟอร์มข้อมูลสุขภาพ
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการจัดอันดับ DICOM JSON เยี่ยมชม Aspose.เอกสารทางการแพทย์.
More in this category
- การเตรียม DICOM Datasets สําหรับ AI และ Machine Learning ด้วย Aspose.Medical
- ทําไม DICOM Anonymization เป็นสิ่งสําคัญสําหรับ HIPAA และ GDPR ใน .NET Workflows
- โปรไฟล์ความเป็นส่วนตัวที่กําหนดเองปรับแต่ง DICOM Anonymization เพื่อนโยบายโรงพยาบาลของคุณ
- สร้าง DICOM Anonymization Microservice ใน ASP.NET Core
- การจัดเก็บข้อมูล DICOM ในฐานข้อมูล SQL และ NoSQL ด้วย C#