การแปลงไฟล์ 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