DICOM JSON を Dataset または DicomFile に戻す方法

DICOM JSON を Dataset または DicomFile に戻す方法

このチュートリアルでは、DICOM JSONをデータセットまたはDicomFileオブジェクトに戻す方法を示しています C#を使用してこの機能は、データベースに保存されたJSONからDIKOMデータを再構築する必要がある場合、またはWeb APIsから受け取った場合に不可欠です。

JSON Deserialization の利点

  • ●データ再構築*:- データベースに保存された JSON から DICOM ファイルを復元します。

  • ・API統合*:- ウェブサービスから JSON として受け取った DICOM データを処理します。

  • ・「Round-Trip Processing」- JSONにシリアリズムを変更し、DICOMに再現します。

原題: Preparing the Environment

  • Visual Studio または 互換性のある .NET IDE を設定します.
  • 新しい .NET 8 コンソールアプリケーションプロジェクトを作成します。
  • NuGet Package Manager から Aspose.Medical をインストールします。

解散オプションの理解

DicomJsonSerializerは、さまざまな消化方法を提供しています:

メソッドInput出力使用ケース
DeserializeJSON ストレッチDataset?JSONの単一データセット
DeserializeFileJSON ストレッチDicomFile?メタ情報でDICOMファイルを完了
DeserializeListJSON アレイ ストリートDataset[]?JSON アレイの複数のデータセット

「DICOM JSON」をデセリアル化するためのステップ・アンド・ガイド

ステップ1:インストール Aspose.Medical

NuGet を使用してプロジェクトに Aspose.Medical ライブラリを追加します。

Install-Package Aspose.Medical

ステップ2:必要な名称スペースを含む

あなたのコードに必要な名称スペースへの参照を追加します.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

ステップ3: JSON コンテンツを読む

JSON コンテンツをファイルまたは変数から読む。

string jsonText = File.ReadAllText("patient_scan.json");

ステップ4:データセットにデセリアル化

利用 Deserialize データセットのオブジェクトを再構築する。

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

ステップ5:データセットで作業

再構築されたデータセットへのアクセスと操作

if (dataset != null)
{
    Console.WriteLine("Dataset successfully reconstructed from JSON.");
    // Work with the dataset...
}

ステップ6:Save Back to DICOM(オプション)

新しいDicomFileを作成し、ディスクに保存します。

if (dataset != null)
{
    DicomFile newDcm = new DicomFile(dataset);
    newDcm.Save("reconstructed.dcm");
}

完全なコード例:単一データセットをデセリアル化する

以下は、単一のデータセットをデセリアル化する方法を示す完全な例です。

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read JSON from file
string jsonText = File.ReadAllText("patient_scan.json");

// Deserialize to Dataset
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

if (dataset != null)
{
    Console.WriteLine("Dataset successfully deserialized!");
    
    // Create a new DicomFile with the dataset
    DicomFile newDcm = new DicomFile(dataset);
    
    // Save to DICOM format
    newDcm.Save("reconstructed_scan.dcm");
    Console.WriteLine("Saved to reconstructed_scan.dcm");
}
else
{
    Console.WriteLine("Failed to deserialize JSON.");
}

完璧なDicomFile

JSON がファイルメタ情報を含む場合、 DeserializeFile:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read JSON that includes file meta information
string jsonFileText = File.ReadAllText("complete_dicom.json");

// Deserialize to complete DicomFile
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonFileText);

if (dicomFile != null)
{
    Console.WriteLine("DicomFile successfully deserialized!");
    dicomFile.Save("reconstructed_complete.dcm");
}

JSON Array を複数のデータセットにダウンロード

JSON で作業する際には、複数のデータセットを含むリリース:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read JSON array
string jsonArrayText = File.ReadAllText("multiple_studies.json");

// Deserialize to Dataset array
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonArrayText);

if (datasets != null)
{
    Console.WriteLine($"Deserialized {datasets.Length} datasets.");
    
    // Save each dataset as a separate DICOM file
    for (int i = 0; i < datasets.Length; i++)
    {
        DicomFile dcm = new DicomFile(datasets[i]);
        dcm.Save($"study_{i:D3}.dcm");
    }
    
    Console.WriteLine("All datasets saved successfully!");
}

ラウンド・トリップ 例: Serialize, Modify, Deserialize

一般的な使用ケースは、JSONを通じてDICOMデータを変更することです。

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json;

// Load original DICOM file
DicomFile original = DicomFile.Open("original.dcm");

// Serialize to JSON
string json = DicomJsonSerializer.Serialize(original, writeIndented: true);

// Parse JSON for modification (using System.Text.Json)
using JsonDocument doc = JsonDocument.Parse(json);
// ... modify JSON as needed ...

// Deserialize back to Dataset
Dataset? modifiedDataset = DicomJsonSerializer.Deserialize(json);

if (modifiedDataset != null)
{
    DicomFile modifiedDcm = new DicomFile(modifiedDataset);
    modifiedDcm.Save("modified.dcm");
}

データベースストレージの作業

Deserialize DICOM JSON データベースから取り出された:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Simulating retrieval from database
string jsonFromDatabase = GetDicomJsonFromDatabase("patient_123");

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonFromDatabase);

if (dataset != null)
{
    // Process the reconstructed dataset
    DicomFile dcm = new DicomFile(dataset);
    dcm.Save("from_database.dcm");
    Console.WriteLine("DICOM file reconstructed from database JSON.");
}

// Simulated database retrieval method
string GetDicomJsonFromDatabase(string patientId)
{
    // In real implementation, this would query your database
    return File.ReadAllText($"database_cache/{patientId}.json");
}

ウェブアプリケーションのためのAsync Deserialization

ASP.NET Core アプリケーションでは、Async メソッドを使用します。

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Async deserialization from stream
public async Task<Dataset?> DeserializeFromStreamAsync(Stream jsonStream)
{
    Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(jsonStream);
    return dataset;
}

// Usage in ASP.NET Core controller
[HttpPost("import")]
public async Task<IActionResult> ImportDicomJson()
{
    Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(Request.Body);
    
    if (dataset != null)
    {
        // Process the dataset
        return Ok("DICOM data imported successfully");
    }
    
    return BadRequest("Invalid DICOM JSON");
}

Troubleshooting

マルフォーマットJSON

常に try-catch ブロックに deserialization を巻き込む:

try
{
    Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
    if (dataset == null)
    {
        Console.WriteLine("Deserialization returned null - check JSON format.");
    }
}
catch (JsonException ex)
{
    Console.WriteLine($"JSON parsing error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Deserialization error: {ex.Message}");
}

トラックバック JSON

大きい JSON ファイルの場合、完全なコンテンツが読まれていることを確認してください:

// Use ReadAllText for complete file content
string completeJson = File.ReadAllText("large_dicom.json");

// Verify JSON is complete (basic check)
if (!completeJson.TrimEnd().EndsWith("}") && !completeJson.TrimEnd().EndsWith("]"))
{
    Console.WriteLine("Warning: JSON may be truncated.");
}

バージョン兼容性

JSON がシリアリザーの互換性のあるバージョンで生成されたことを確認します。

追加情報

  • デセリアル化されたデータセットには、オリジナルの JSON に組み込まれた場合を除き、ピクセルデータは含まれません。
  • 生産用には、消化前に JSON 入力の適切な認証を実施します。
  • 頻繁にアクセスするデータのためのデセリウムデータセットのキャッシュを検討します。

結論

このチュートリアルでは、DICOM JSONをDatasetまたはDicomFileのオブジェクトにC#でデセリアル化する方法を示しています Aspose.Medical を使用してこの機能は、JSON ベースのストレージおよび API システムと無線の統合を可能にします。

 日本語