كيفية تخصيص إخراج DICOM JSON مع DicomJsonSerializerOptions

كيفية تخصيص إخراج DICOM JSON مع DicomJsonSerializerOptions

يظهر هذا الدليل كيفية تخصيص إخراج التصنيف DICOM JSON باستخدام DicomJsonSerializerOptions في C#. تتيح لك التكيف التحكم في تنسيقات مفاتيح jSON ، وتشمل بيانات معدنية إضافية ، والتعامل مع القيم الرقمية وفقًا لمتطلبات الاندماج الخاصة بك.

لماذا تخصيص JSON Output؟

قد تتطلب أنظمة مختلفة تنسيقات JSON مختلفة.التخصيص يسمح:

  • استخدام الكلمات المفتاحية القابلة للقراءة بدلاً من الأرقام
  • إدراج أسماء العلامات للمستندات
  • التحقق من كيفية تمثيل القيم الرقمية
  • تلبية متطلبات نظام طرف ثالث محددة

المعايير: إعداد البيئة

  • إعداد Visual Studio أو أي .NET IDE متوافق.
  • إنشاء مشروع تطبيقات .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 Output

الخطوة 1: تثبيت Aspose.Medical

إضافة مكتبة Aspose.Medical إلى مشروعك باستخدام NuGet.

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;

الخطوة الخامسة: تسلسل الخيارات

انتقل الخيارات إلى طريقة 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"]
  }
}

مع UseKeywordsAsJsonKeys = صحيح

{
  "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" }]
  }
}

مع NumberHandling = WriteAsString

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

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

معلومات إضافية

  • الخيارات المخصصة تؤثر على كل من التسلسل والتسلسل - ضمان خيارات متسقة عند تسلسل البيانات.
  • و هو WriteName يضيف الخيار أسماء العلامات DICOM القابلة للقراءة للإنسان والتي تزيد من حجم JSON ولكنها تحسن القراءة.
  • قد تتطلب بعض أنظمة الأطراف الثالثة تنسيقات JSON محددة - استعرض وثيقتهم قبل اختيار الخيارات.

استنتاجات

وقد أظهرت هذه الدليل كيفية تخصيص إخراج التصنيف DICOM JSON في C# باستخدام Aspose.Medical. من خلال تكوين DicomJsonSerializerOptions، يمكنك تكييف تنسيق jSON لتلبية متطلبات التكامل المحددة مع توازن احتياجات القراءة والحجم والتفاعل.

 عربي