วิธีการปรับแต่ง DICOM JSON Output ด้วย DicomJsonSerializerOptions

วิธีการปรับแต่ง DICOM JSON Output ด้วย DicomJsonSerializerOptions

การฝึกอบรมนี้แสดงให้เห็นถึงวิธีการปรับแต่งผลกําเนิด DICOM JSON โดยใช้ DicomJsonSerializerOptions ใน C# การปรับตัวช่วยให้คุณสามารถควบคุมรูปแบบหลัก JSO ได้แก่ metadata เพิ่มเติม และจัดการค่าดิจิตอลตามความต้องการการรวมของคุณ

ทําไมปรับแต่ง JSON Output?

ระบบต่างๆอาจต้องการรูปแบบ JSON ที่แตกต่างกัน การปรับแต่งช่วยให้:

  • ใช้คําหลักที่สามารถอ่านได้โดยมนุษย์แทนที่หมายเลขแท็ก
  • รวมชื่อแท็กสําหรับเอกสาร
  • ตรวจสอบวิธีการแสดงค่าดิจิตอล
  • การตอบสนองความต้องการเฉพาะของระบบบุคคลที่สาม

ข้อกําหนด: การเตรียมสิ่งแวดล้อม

  • ติดตั้ง Visual Studio หรือ IDE .NET ที่เข้ากันได้ใด ๆ.
  • สร้างโครงการการใช้งาน .NET 8 ใหม่
  • ติดตั้ง Aspose.Medical จาก NuGet Package Manager

ตัวเลือกการจัดอันดับที่มีอยู่

OptionคําอธิบายImpact
UseKeywordsAsJsonKeysใช้คําหลัก DICOM แทนหมายเลขเป็นคีย์ JSON"PatientName" VS "00100010"
WriteKeywordรวม field keyword ในแต่ละแท็กวัตถุAdds "keyword": "PatientName"
WriteNameรวม field name ในแต่ละแท็กวัตถุ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;

ขั้นตอนที่ 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"]
  }
}

ด้วย UseKeywordsAsJsonKeys = จริง

{
  "PatientName": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "PatientID": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

ด้วย WriteKeyword และ WritName = จริง

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

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 parsers บางส่วน:

// 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

การจัดเรียงตามการไหลด้วยตัวเลือก

สําหรับไฟล์ขนาดใหญ่ใช้การจัดเรียงตาม Stream:

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

ข้อมูลเพิ่มเติม

  • ตัวเลือกที่กําหนดเองมีผลกระทบทั้งการจัดเรียงและการ dezerialization - ให้ตัวเลือกอย่างสม่ําเสมอเมื่อข้อมูลหมุน
  • อะไร WriteName ตัวเลือกเพิ่มชื่อแท็ก DICOM ที่สามารถอ่านได้โดยมนุษย์ซึ่งเพิ่มขนาด JSON แต่ปรับปรุงความสามารถในการอ่าน
  • บางระบบบุคคลที่สามอาจต้องการรูปแบบ JSON ที่เฉพาะเจาะจง - ดูเอกสารของพวกเขาก่อนที่จะเลือกตัวเลือก

ข้อสรุป

การฝึกอบรมนี้ได้แสดงให้เห็นว่าวิธีการปรับแต่งผลกําเนิด DICOM JSON ใน C# โดยใช้ Aspose.Medical โดยการกําหนดค่า DicomJsonSerializerOptions คุณสามารถปรับรูปแบบ JSon เพื่อตอบสนองความต้องการการรวมที่เฉพาะเจาะจงในขณะที่สมดุลความสามารถในการอ่านขนาดและความต้องการในการทํางานร่วมกัน

 แบบไทย