Làm thế nào để tùy chỉnh DICOM JSON Output với DicomJsonSerializerOptions

Làm thế nào để tùy chỉnh DICOM JSON Output với DicomJsonSerializerOptions

Hướng dẫn này cho thấy làm thế nào để tùy chỉnh DICOM JSON serialization output bằng cách sử dụng DicomJsonSerializerOptions trong C#. Customization cho phép bạn kiểm soát các định dạng chìa khóa JSon, bao gồm thêm metadata, và xử lý các giá trị số theo yêu cầu tích hợp của bạn.

Tại sao tùy chỉnh JSON output?

Các hệ thống khác nhau có thể yêu cầu định dạng JSON khác. tùy chỉnh cho phép:

  • Sử dụng từ khóa dễ đọc của con người thay vì thẻ số
  • Include tag names for tài liệu
  • Kiểm tra cách các giá trị số được đại diện
  • đáp ứng các yêu cầu hệ thống cụ thể của bên thứ ba

Chủ đề: Chuẩn bị môi trường

  • Cài đặt Visual Studio hoặc bất kỳ IDE .NET tương thích nào.
  • Tạo một dự án ứng dụng .NET 8 mới.
  • Cài đặt Aspose.Medical từ NuGet Package Manager.

Các tùy chọn Serialization có sẵn

Lựa chọnMô tảImpact
UseKeywordsAsJsonKeysSử dụng từ khóa DICOM thay vì thẻ số như khóa JSON"PatientName" vs "00100010"
WriteKeywordThêm trường từ khóa trong mỗi mục tagAdds "keyword": "PatientName"
WriteNameThêm tên trường trong mỗi mục tagAdds "name": "Patient's Name"
NumberHandlingKiểm soát đại diện giá trị sốSố như sợi hoặc số JSON thực tế

Hướng dẫn từng bước để tùy chỉnh JSON output

Bước 1: Cài đặt Aspose.Medical

Thêm thư viện Aspose.Medical vào dự án của bạn bằng NuGet.

Install-Package Aspose.Medical

Bước 2: Thêm các không gian tên cần thiết

Thêm tham chiếu đến các không gian tên cần thiết trong mã của bạn.

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

Bước 3: Tạo tùy chọn

Tạo A DicomJsonSerializerOptions Ví dụ để thiết lập cài đặt.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Bước 4: Thiết lập các tùy chọn

Thiết lập các tùy chọn mong muốn cho kết quả JSON của bạn.

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

Bước 5: Tập trung với các tùy chọn

Chuyển các tùy chọn sang phương pháp Serialize.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

Bước 6: Save the Custom Output

Lưu hoặc sử dụng JSON tùy chỉnh.

File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");

Mẫu mã đầy đủ với tất cả các tùy chọn

Dưới đây là một ví dụ đầy đủ cho thấy tất cả các tùy chọn tùy chỉnh:

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

So sánh định dạng output

Định dạng PS3 (Standard PS3.18 Format)

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

Với UseKeywordsAsJsonKeys = thực

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

Với WriteKeyword và WriteName = true

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

Với NumberHandling = WriteAsString

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

Với NumberHandling = AllowReadingFromString♰ WriteAsNumber

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

Sử dụng ví dụ trường hợp

Tài liệu dễ đọc của con người

DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true
};

string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);

Đối với PS3.18 Dịch vụ web phù hợp

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

Giới thiệu về 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);

Để lưu trữ Database

DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Better for querying
    WriteKeyword = false,          // Reduce storage size
    WriteName = false
};

string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);

Quan trọng xem xét

Cảnh báo tương tác

Các tùy chọn không chuẩn có thể phá vỡ sự tương thích với một số 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();

khuyến nghị tuân thủ

Khi tuân thủ DICOM PS3.18 được yêu cầu, hãy sử dụng cài đặt mặc định:

// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm);  // No custom options

Stream-Based Serialization với Options

Đối với các tệp lớn, sử dụng series dựa trên 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);
}

Thông tin bổ sung

  • Các tùy chọn tùy chỉnh ảnh hưởng đến cả serialization và deserialisation - đảm bảo các lựa chọn nhất quán khi đi vòng dữ liệu.
  • của The WriteName Tùy chọn thêm tên thẻ DICOM có thể đọc bởi con người mà tăng kích thước JSON nhưng cải thiện khả năng đọc.
  • Một số hệ thống bên thứ ba có thể yêu cầu định dạng JSON cụ thể - kiểm tra tài liệu của họ trước khi chọn các tùy chọn.

Kết luận

Hướng dẫn này đã chứng minh làm thế nào để tùy chỉnh DICOM JSON serialization output trong C# bằng cách sử dụng Aspose.Medical.Bằng cách cấu hình DicomJsonSerializerOptions, bạn có thể điều chỉnh định dạng JSon để đáp ứng các yêu cầu tích hợp cụ thể trong khi cân bằng nhu cầu đọc, kích thước và tương tác.

 Tiếng Việt