आधुनिक स्वास्थ्य देखभाल अनुप्रयोग चिकित्सा छवि डेटा को देखने और प्रबंधित करने के लिए वेब-आधारित इंटरफ़ेस पर अधिक से अधिक भरोसा करते हैं. DICOM फ़ाइलों को JSON में परिवर्तित करना जावास्क्रिप्ट फ्रेमवर्क, REST एपीआई, और क्लाउड प्लेटफार्मों के साथ अनौपचारिक एकीकरण की अनुमति देता है. यह गाइड आपको दिखाता है कि कैसे Aspose.Medical का उपयोग करके C# में DIKOM को बदलना.

क्यों DICOM को JSON में परिवर्तित करें?

DICOM (डिजिटल इमेजिंग और मेडिसिन में संचार) चिकित्सा छवि के लिए मानक प्रारूप है, लेकिन इसकी द्विआधारी विकल्प संरचना इसे वेब अनुप्रयोगों में काम करना चुनौतीपूर्ण बनाती है।

  • JavaScript संगतता: JSON वेब ब्राउज़रों और frontend फ्रेमवर्क जैसे React, Vue, और Angular के लिए मूल है
  • REST API एकीकरण: JSON आधुनिक वेब एपीआई के लिए डिफ़ॉल्ट मानक है
  • डेटाबेस स्टोरेज: MongoDB जैसे NoSQL डेटाबास JSON दस्तावेजों को मूल रूप से संग्रहीत करते हैं
  • मानव पढ़ने योग्य: JSON द्विआधारी विकल्प DICOM की तुलना में आसानी से जांच और डिबग करने के लिए है

DICOM PS3.18 मानक डीआईसीओएम डेटा के लिए एक JSON प्रतिनिधित्व को परिभाषित करता है, जिससे स्वास्थ्य देखभाल प्रणालियों के बीच बातचीत सुनिश्चित की जाती है।

अपने .NET प्रोजेक्ट को स्थापित करें

सबसे पहले, .NET के लिए Aspose.Medical स्थापित करें और मापा लाइसेंस सेट करें:

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");

JSON रूपांतरण के लिए मूल DICOM

एक 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;
    }
}

Debugging के लिए Pretty-Print JSON

विकास के दौरान, प्रारूपित 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 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 कोर अंत बिंदु बनाने का तरीका है जो अपलोड किए गए 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 के साथ एकीकरण

एक बार जब आपका एपीआई 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 डेटा को प्रदर्शित करते समय रोगी की पहचान योग्य जानकारी हटा दें
  • Async विधियों का उपयोग करें: वेब अनुप्रयोगों के लिए, तारों को अवरुद्ध करने से बचने में asynchronous serialization का इस्तेमाल करें
  • कैश परिवर्तित डेटा: यदि एक ही DICOM फ़ाइल को अक्सर मांगा जाता है, तो JSON आउटपुट का कैश करें
  • ** इनपुट फ़ाइलों को सत्यापित करें**: प्रसंस्करण से पहले यह सुनिश्चित करें कि अपलोड किए गए फाइल DICOM के लिए वैध हैं
  • बाइनरी डेटा को सावधानीपूर्वक संसाधित करें: बड़े पिक्सेल डेटे को अलग-अलग या JSON प्रतिक्रियाओं से बाहर किया जाना चाहिए

Conclusion

DICOM फ़ाइलों को JSON में परिवर्तित करना आधुनिक वेब विकास के लिए चिकित्सा छवि डेटा खोलता है. Aspose.Medical के साथ .NET, आप आसानी से PS3.18-संबंधित जेएसओएन में डीआईसीओएम डाटा सेट को सीरियल कर सकते हैं, REST एपीआई बनाते हैं और जावास्क्रिप्ट फ्रेमवर्क में एकीकृत करते हैं. इस दिशानिर्देश में उदाहरण वेब-आधारित डिकॉम दर्शकों, रोगी पोर्टलों, और स्वास्थ्य देखभाल सूचना प्लेटफार्मों का निर्माण करने का एक आधार प्रदान करता है।

DICOM JSON श्रृंखला विकल्पों के बारे में अधिक जानकारी के लिए, देखें मेडिकल दस्तावेज - Medical Documentation.

More in this category