Aplikasi kesehatan modern semakin bergantung pada antarmuka berbasis web untuk melihat dan mengelola data gambar medis. Konversi file DICOM ke JSON memungkinkan integrasi tanpa wayar dengan kerangka JavaScript, APIs REST, dan platform awan. Panduan ini menunjukkan kepada Anda bagaimana untuk mengkonversi DIKOM menjadi J SON dalam C# menggunakan Aspose.Medical untuk .NET.
Mengapa mengubah DICOM menjadi JSON?
DICOM (Digital Imaging and Communications in Medicine) adalah format standar untuk gambar medis, tetapi struktur binernya membuatnya sulit untuk bekerja dengan dalam aplikasi web.
- Kompatibilitas JavaScript: JSON berasal dari browser web dan framework frontend seperti React, Vue, dan Angular
- Integrasi REST API: JSON adalah standar de facto untuk APIs web modern
- ** Penyimpanan database**: NoSQL database seperti MongoDB menyimpan dokumen JSON secara asli
- Bacaan manusia: JSON mudah untuk memeriksa dan membuang dibandingkan dengan DICOM biner
Standar DICOM PS3.18 mendefinisikan representasi JSON untuk data DIKOM, memastikan interoperabilitas di seluruh sistem perawatan kesehatan.
Mengatur proyek .NET Anda
Pertama, instal Aspose.Medical untuk .NET dan mengkonfigurasi lisensi yang diukur:
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");
Konversi DICOM ke JSON
Cara paling mudah untuk mengkonversi file DICOM ke 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 untuk Debugging
Selama pengembangan, format JSON lebih mudah untuk membaca dan membongkar:
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;
}
Menggunakan kata kunci tag bukannya kode hex
Secara default, DICOM JSON menggunakan kode tag hexadecimal. Untuk output yang lebih mudah dibaca, gunakan nama kata kunci:
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;
}
Membangun REST API Endpoint
Berikut adalah cara membuat titik akhir ASP.NET Core yang mengkonversi file DICOM yang dimuat naik ke 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);
}
}
Serialisasi Berbasis Stream untuk File Besar
Untuk file DICOM yang besar, gunakan serialisasi berbasis arus untuk mengurangi penggunaan memori:
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 untuk Multi File
Memproses seluruh direktori file 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}");
}
}
}
}
Mengintegrasikan dengan React Frontend
Setelah API Anda kembali ke JSON, menggunakannya dalam React adalah sederhana:
// 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>
);
}
Praktik Terbaik
Ketika menukar DICOM ke JSON untuk aplikasi web, ingat tips ini:
- Anonim sebelum konversi: Selalu menghapus informasi yang dapat diidentifikasi pasien sebelum mendedahkan data DICOM melalui web APIs
- Metode Async digunakan: Untuk aplikasi web, gunakan serialisasi asynchronous untuk menghindari memblokir tali
- Cache data terkonversi: Jika file DICOM yang sama sering diminta, cache output JSON
- Validate input files: Periksa apakah file yang diunggah adalah valid DICOM sebelum pemrosesan
- Mengendalikan data biner dengan hati-hati: Data piksel besar harus diproses secara terpisah atau dikecualikan dari respons JSON
Kesimpulan
Mengkonversi file DICOM ke JSON membuka data visual medis untuk pengembangan web modern. Dengan Aspose.Medical untuk .NET, Anda dapat dengan mudah serialisasikan set data Dicom ke PS3.18-kompatibel JSon, membangun APIs REST, dan mengintegrasikan dengan kerangka JavaScript. Contoh dalam panduan ini memberikan dasar untuk membangun web-based DIKOM penonton, portal pasien, serta platform data kesehatan.
Untuk informasi lebih lanjut tentang opsi serialisasi DICOM JSON, kunjungi Aspose.Dokumen Perubatan.
More in this category
- Membangun Microservice Anonim DICOM di ASP.NET Core
- Mengapa Anonimitas DICOM Penting untuk HIPAA dan GDPR dalam aliran kerja .NET
- Persiapan DICOM Dataset untuk AI dan Machine Learning dengan Aspose.Medical
- Profil privasi tersuai yang menyesuaikan anonimitas DICOM dengan kebijakan rumah sakit Anda
- Menyimpan Metadata DICOM dalam database SQL dan NoSQL dengan C#