DicomJsonSerializerオプションでDICOM JSONの出力をカスタマイズする方法
DicomJsonSerializerオプションでDICOM JSONの出力をカスタマイズする方法
このチュートリアルでは、C# で DicomJsonSerializerOptions を使用して DICOM JSON シリアリゼーションの出力をカスタマイズする方法を示しています。
なぜJSON出力をカスタマイズするのか?
さまざまなシステムは異なる JSON フォーマットを必要とする可能性があります。
- タグ番号の代わりに人間読みやすいキーワードを使用する
- タグ名を含むドキュメンタリー
- 数値がどのように表現されるかを確認する
- 特定の第三者システム要件を満たす
原題: Preparing the Environment
- Visual Studio または 互換性のある .NET IDE を設定します.
- 新しい .NET 8 コンソールアプリケーションプロジェクトを作成します。
- NuGet Package Manager から Aspose.Medical をインストールします。
シリアル化オプション
| オプション | 説明 | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | JSONキーとしてタグ番号の代わりにDICOMキーワードを使用する | "PatientName" VS "00100010" |
WriteKeyword | 各タグオブジェクトにキーワードフィールドを含む | Adds "keyword": "PatientName" |
WriteName | 各タグオブジェクトに名称フィールドを含む | Adds "name": "Patient's Name" |
NumberHandling | コントロール数値代表 | ストレッチまたは実際のJSON番号としての数字 |
JSON 出力をカスタマイズするためのステップアップガイド
ステップ1:インストール Aspose.Medical
NuGet を使用してプロジェクトに Aspose.Medical ライブラリを追加します。
Install-Package Aspose.Medicalステップ2:必要な名称スペースを含む
あなたのコードに必要な名称スペースへの参照を追加します.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;ステップ3:オプションインスタンスを作成する
Aを作る DicomJsonSerializerOptions 設定を設定する例です。
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();ステップ4:オプションの設定
あなたのJSON出力のための望ましいオプションを設定します。
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;ステップ5:オプションをシリアル化する
選択肢を Serialize メソッドに移動します。
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);ステップ6:カスタマイズされた出力を保存する
保存またはカスタマイズされた JSON を使用します。
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");すべてのオプションを含む完全なコードサンプル
以下は、すべてのカスタマイズオプションを示す完全な例です:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;
// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true,
NumberHandling = JsonNumberHandling.WriteAsString
};
// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);
// Save output
File.WriteAllText("fully_customized.json", json);
Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);出力形式の比較
デフォルト出力(標準 PS3.18 フォーマット)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}使用キーワードAsJsonKeys = true
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}・WriteKeyword と WriteName = 真実
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}ナンバーハンドリング = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}タイトル(英名):With NumberHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}例を用いるケース
人間読みやすい文書
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);PS3.18 コンプライアントウェブサービス
// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = false, // Use tag numbers
WriteKeyword = false,
WriteName = false,
NumberHandling = JsonNumberHandling.WriteAsString
};
string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);JavaScript フロントエンド統合
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);データベースストレージ
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);重要考慮事項
互換性警告
非標準オプションは、いくつかの DICOM パッサーとの互換性を破る可能性があります:
// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true // Not PS3.18 compliant
};
// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();遵守に関する推奨事項
DICOM PS3.18 の遵守が必要な場合は、デフォルト設定を使用します。
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsオプションによるストリームベースのセリアリズム
大型ファイルでは、ストリームベースのシリアリズムを使用します。
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
DicomFile dcm = DicomFile.Open("large_scan.dcm");
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true
};
using (FileStream fs = File.Create("large_customized.json"))
{
DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}追加情報
- カスタマイズされたオプションは、セリアリゼーションとデスリアリティの両方に影響を与えます - データを回転する際に一貫した選択肢を確保します。
- The
WriteNameオプションは、人間が読むDICOMタグ名を追加し、JSONサイズを増やすが、読みやすさを向上させます。 - いくつかの第三者システムは、特定のJSONフォーマットを必要とする可能性があります - オプションを選択する前にその文書を確認します。
結論
This tutorial has demonstrated how to customize DICOM JSON serialization output in C# using Aspose.Medical. DicomJsonSerializerOptions を設定することで、特定の統合要件を満たし、読みやすさ、サイズ、および互換性のニーズをバランス付けるために、JSON フォーマットを調整することができます。