現代の医療アプリケーションは、医療イメージデータを閲覧および管理するためのウェブベースのインターフェイスにますます依存しています. DICOM ファイルを JSON に変換すると、JavaScript フレームワーク、REST APIs およびクラウド プラットフォームとの無制限の統合が可能になります. このガイドでは、Aspose.Medical for .NET を使用して C# で Dicom から Json をコンバータする方法を示しています。
なぜDICOMをJSONに変換するのか?
DICOM(Digital Imaging and Communications in Medicine)は医療イメージの標準形式ですが、そのバイナリー構造は、Webアプリケーションで働くことを困難にします。
- JavaScript互換性:JSONは、React、Vue、Angularなどのウェブブラウザやフロントエンドフレームワークに先立っています。
- REST API 統合: JSON は現代の Web API のデフォルト標準です。
- データベースストレージ: モンゴDB のような NoSQL データベルトは JSON ドキュメントを本質的に保存します。
- 人間の読みやすさ:JSONはバイナリーDICOMに比べて簡単に検査およびデビューできます。
DICOM PS3.18 は、DICOME データの JSON 表現を定義し、医療システム間の互換性を確保します。
あなたの .NET プロジェクトの設定
まず、Aspose.Medical for .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
開発中、フォーマットされた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 はヘクサデシマルタグコードを使用します. より読みやすい出力のために、キーワード名を使用してください:
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 エンドポイントの構築
アップロードされた DICOM ファイルを JSON に変換する ASP.NET Core エンドポイントを作成する方法は以下の通りです。
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 との統合
あなたの 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 に変換する際には、以下のヒントを覚えておいてください。
- 変換前に匿名化する: Web API を介して DICOM データを暴露する前に、常に患者を識別できる情報を削除します。
- Async メソッドを使用する:Web アプリケーションでは、ブロックラインを避けるために、asynchronous serialization を使用します。
- Cache converted data:同じ DICOM ファイルが頻繁に要求される場合は、JSON 出力をキャッシュします。
- 入力ファイルを有効にする: 処理前にアップロードされたファイルが DICOM 有効であることを確認する
- バイナリーデータを慎重に処理する:大型ピクセルデータは別々に処理されるか、JSONの回答から排除されるべきです。
結論
DICOM ファイルを JSON に変換すると、現代のウェブ開発のための医療イメージデータが開きます. .NET のための Aspose.Medical を使用して、あなたは簡単に PS3.18 を満たす JSO データセットをシリアリズムし、REST APIs を作成し,JavaScript フレームワークと統合することができます. このガイドの例は、Web ベースの Dicom 視聴者、患者 ポータル、および医療データ プラットフォームを構築するための基礎を提供します。
DICOM JSON シリアリゼーションのオプションに関する詳細については、 メディカル・ドキュメンタリー.