چگونه برای سفارشی سازی خروجی DICOM JSON با DicomJsonSerializerOptions

چگونه برای سفارشی سازی خروجی DICOM JSON با DicomJsonSerializerOptions

این راهنمای نشان می دهد که چگونه برای سفارشی سازی خروجی سریالی سازی DICOM JSON با استفاده از DicomJsonSerializerOptions در C#. تنظیمات به شما امکان کنترل فرمت های کلیدی jSON، شامل متا داده های اضافی، و مدیریت ارزش های عددی با توجه به نیازهای ادغام خود را.

چرا خروجی JSON را سفارشی کنیم؟

سیستم های مختلف ممکن است نیاز به فرمت های JSON مختلف داشته باشند.

  • استفاده از کلمات کلیدی قابل خواندن به جای اعداد برچسب
  • شامل نام برچسب برای مستندات
  • بررسی نحوه نشان دادن ارزش های عددی
  • پاسخگویی به نیازهای سیستم های شخص ثالث

برچسب ها: آماده سازی محیط زیست

  • Visual Studio یا هر IDE .NET سازگار را نصب کنید.
  • ایجاد یک برنامه جدید .NET 8 کنسول.
  • نصب Aspose.Medical از NuGet Package Manager.

گزینه های سریالی سازی در دسترس

OptionتوصیفImpact
UseKeywordsAsJsonKeysاستفاده از کلمات کلیدی DICOM به جای برچسب اعداد به عنوان کلیدهای JSON"PatientName" vs "00100010"
WriteKeywordشامل میدان کلمات کلیدی در هر موضوع برچسبAdds "keyword": "PatientName"
WriteNameشامل میدان نام در هر موضوع برچسبAdds "name": "Patient's Name"
NumberHandlingنظارت بر ارزش عددیاعداد به عنوان نوارها یا ارقام JSON واقعی

راهنمای گام به گام برای سفارشی سازی خروجی JSON

مرحله اول: نصب Aspose.Medical

کتابخانه Aspose.Medical را به پروژه خود با استفاده از NuGet اضافه کنید.

Install-Package Aspose.Medical

مرحله دوم: فضای نام مورد نیاز را شامل کنید

ارجاعات را به فضاهای نام مورد نیاز در کد خود اضافه کنید.

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

مرحله سوم: گزینه ها را ایجاد کنید

ایجاد A DicomJsonSerializerOptions برای تنظیم تنظیمات استفاده کنید.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

مرحله چهارم: گزینه ها را تنظیم کنید

گزینه های مورد نظر را برای خروجی JSON خود تنظیم کنید.

options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;

مرحله پنجم: گزینه ها را جدی بگیرید

گزینه ها را به روش 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"]
  }
}

با نوشتن کلمه و نوشته نام = درست

{
  "00100010": {
    "vr": "PN",
    "keyword": "PatientName",
    "name": "Patient's Name",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  }
}

نوشته هایی با برچسب: WriteAsString

{
  "00280010": {
    "vr": "US",
    "Value": ["512"]
  }
}

در این مطلب به چند نکته می پردازیم که باید به آن توجه داشته باشیم.

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

جاوا اسکریپت Frontend Integration

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

اطلاعات اضافی

  • گزینه های سفارشی بر هر دو serialization و deserialisation تاثیر می گذارد - اطمینان حاصل کنید که گزینه ها در هنگام ردیابی داده ها سازگار هستند.
  • در این WriteName گزینه نام های برچسب DICOM قابل خواندن انسان را اضافه می کند که اندازه JSON را افزایش می دهد اما خواندنی را بهبود می بخشد.
  • برخی از سیستم های شخص ثالث ممکن است نیاز به فرمت های خاص JSON داشته باشند - قبل از انتخاب گزینه ها، اسناد خود را بررسی کنید.

نتیجه گیری

این آموزش نشان داده است که چگونه برای سفارشی سازی خروجی سریالی سازی DICOM JSON در C# با استفاده از Aspose.Medical.با تنظیم DicomJsonSerializerOptions، شما می توانید فرمت GSON را برای برآورده کردن نیازهای یکپارچه سازی خاص در حالی که تعادل خواندن، اندازه و نیاز به تعامل تنظیم کنید.

 فارسی