Cara menyesuaikan output DICOM JSON dengan DicomJsonSerializerOptions

Cara menyesuaikan output DICOM JSON dengan DicomJsonSerializerOptions

Tutorial ini menunjukkan bagaimana untuk menyesuaikan output serialisasi DICOM JSON menggunakan DicomJsonSerializerOptions dalam C#. Customization memungkinkan Anda untuk mengontrol format kunci jSON, termasuk metadata tambahan, dan menangani nilai numerik sesuai dengan kebutuhan integrasi Anda.

Mengapa mengadaptasi output JSON?

Sistem berbeda mungkin memerlukan format JSON yang berbeda. penyesuaian memungkinkan:

  • Menggunakan kata kunci yang dapat dibaca oleh manusia bukannya angka tag
  • Termasuk nama tag untuk dokumentasi
  • Memeriksa bagaimana nilai-nilai numerik diwakili
  • Memenuhi persyaratan sistem pihak ketiga khusus

Persyaratan: Persiapan Lingkungan

  • Menginstal Visual Studio atau IDE .NET yang kompatibel.
  • Mencipta aplikasi .NET 8 baru.
  • Instal Aspose.Medical dari NuGet Package Manager.

Pilihan serialisasi yang tersedia

PilihandeskripsiImpact
UseKeywordsAsJsonKeysGunakan kata kunci DICOM bukannya angka tag sebagai kunci JSON"PatientName" vs "00100010"
WriteKeywordTermasuk medan kata kunci di setiap objek tagAdds "keyword": "PatientName"
WriteNameTermasuk nama medan dalam setiap objek tagAdds "name": "Patient's Name"
NumberHandlingPerwakilan Nilai NumerikNombor sebagai string atau angka JSON yang sebenarnya

Panduan langkah demi langkah untuk menyesuaikan output JSON

Langkah 1: Instalasi Aspose.Medical

Tambahkan perpustakaan Aspose.Medical ke proyek Anda menggunakan NuGet.

Install-Package Aspose.Medical

Langkah 2: Menyertakan ruang nama yang diperlukan

Tambahkan referensi ke ruang nama yang diperlukan dalam kode Anda.

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

Langkah 3: Mencipta Instance Options

Membuat A DicomJsonSerializerOptions Contohnya untuk mengkonfigurasi pengaturan.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Langkah 4: Mengatur opsi

Tetapkan pilihan yang diinginkan untuk output JSON Anda.

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

Langkah 5: Serialisasikan dengan Opsi

Beralih pilihan ke metode Serialize.

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

Langkah 6: Simpan output tersuai

Simpan atau gunakan JSON tersuai.

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

Contoh kode lengkap dengan semua opsi

Berikut adalah contoh lengkap yang menunjukkan semua pilihan penyesuaian:

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

Perbandingan format output

Pengeluaran default (format PS3.18 standar)

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

Dengan UseKeywordsAsJsonKeys = benar

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

dengan WriteKeyword dan WritName = benar

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

Dengan NumberHandling = WriteAsString

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

Dengan NumberHandling = AllowReadingFromString♰ WriteAsNumber

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

Gunakan contoh kasus

Dokumentasi yang dapat dibaca oleh manusia

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

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

Untuk PS3.18 Layanan Web Kompatibel

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

Untuk JavaScript Frontend Integrasi

DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Easier to work with in JS
    NumberHandling = JsonNumberHandling.AllowReadingFromString  // Native numbers
};

string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);

Untuk penyimpanan database

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

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

Pertimbangan penting

Peringatan Interoperabilitas

Opsi non-standar mungkin melanggar kompatibilitas dengan beberapa parsers 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();

Rekomendasi untuk pematuhan

Ketika pematuhan DICOM PS3.18 diperlukan, gunakan pengaturan default:

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

Serialisasi Berbasis Stream dengan Opsi

Untuk file besar, gunakan serialisasi berbasis 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);
}

Informasi Tambahan

  • Opsi tersuai mempengaruhi serialisasi dan deserialisasi - memastikan opsi yang konsisten saat mengelilingi data.
  • dan yang WriteName Opsi menambahkan nama tag DICOM yang dapat dibaca oleh manusia yang meningkatkan ukuran JSON tetapi meningkatkan pembacaan.
  • Beberapa sistem pihak ketiga mungkin memerlukan format JSON tertentu - periksa dokumentasi mereka sebelum memilih opsi.

Kesimpulan

Tutorial ini telah menunjukkan bagaimana untuk menyesuaikan output serialisasi DICOM JSON dalam C# menggunakan Aspose.Medical.Dengan mengkonfigurasi DicomJsonSerializerOptions, Anda dapat mengadaptasi format jSON untuk memenuhi persyaratan integrasi spesifik sambil menyeimbangkan kebutuhan pembacaan, ukuran, dan interoperabilitas.

 Indonesia