DicomJson ile DICOM JSON çıkışı nasıl özelleştirilirSerializerOptions

DicomJson ile DICOM JSON çıkışı nasıl özelleştirilirSerializerOptions

Bu öğretici, DicomJsonSerializerOptions’i kullanarak DICOM JSON serializasyon çıkışını nasıl özelleştireceğinizi gösterir.C#‘da Özelleştirme, JSon anahtar biçimlerini kontrol etmenizi sağlar, ek metadata içerir ve entegrasyon gereksinimlerine göre sayısal değerleri ele alabilirsiniz.

Neden JSON çıkışını özelleştirmeliyiz?

Farklı sistemler farklı JSON biçimleri gerektirebilir. özelleştirme izin verir:

  • Etiket sayısı yerine insan okunabilir anahtar kelimeleri kullanın
  • Belgelendirme için etiket isimleri dahil
  • Sayısal değerlerin nasıl temsil edildiğini kontrol etmek
  • Üçüncü taraf sistem gereksinimlerini karşılamak

Etiket Arşivi: çevreyi hazırlamak

  • Visual Studio veya herhangi bir uyumlu .NET IDE ayarlayın.
  • Yeni bir .NET 8 konsol uygulama projesi oluşturun.
  • Aspose.Medical’ı NuGet Paket Yöneticisi’nden kurun.

Serializasyon seçenekleri mevcut

seçeneğiAçıklamaImpact
UseKeywordsAsJsonKeysEtiket sayısı yerine DICOM anahtar kelimeleri kullanın"PatientName" vs "00100010"
WriteKeywordHer etiket nesnesinde anahtar kelime alanı içerirAdds "keyword": "PatientName"
WriteNameHer etiket nesnesine isim alanı ekleyinAdds "name": "Patient's Name"
NumberHandlingKontrol sayısal değer temsilciliğiÇizgiler veya gerçek JSON numaraları olarak sayılar

JSON çıkışını özelleştirmek için adım adım rehber

Adım 1: Aspose.Medical yükleme

Projenize Aspose.Medical kütüphanesini NuGet kullanarak ekleyin.

Install-Package Aspose.Medical

2. Adım: İhtiyacınız olan alanları içerir

Kodunuzda gerekli isim alanlarına referanslar ekleyin.

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

3. Adım: Seçenekler oluşturun

oluşturmak a DicomJsonSerializerOptions Örneğin ayarları oluşturmak için.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Adım 4: Seçenekleri ayarlayın

JSON çıkışınız için istediğiniz seçenekleri ayarlayın.

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

Adım 5: Seçenekler ile serialize edin

Seçenekleri serialize yöntemine geçin.

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

Adım 6: Özelleştirilmiş çıkış kaydetme

Özelleştirilmiş JSON’u kaydedin veya kullanın.

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

Tüm seçenekler ile tam kod örneği

İşte tüm özelleştirme seçeneklerini gösteren tam bir örnek:

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

çıkış biçimleri karşılaştırma

Standart çıkış (PS3.18 formatında)

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

KullanımKeywordsAsJsonKeys = Gerçek

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

Yazma kelimesi ve yazma adı = gerçek

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

Sayısı ile işleme = WriteAsString

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

Sayısı ile İşlem = AllowReadingFromString♰ WriteAsNumber

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

örnek örnekleri kullanın

İnsan okunabilir belgeler için

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

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

PS3.18 Uygun Web Hizmetleri

// 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 entegrasyonu için

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

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

Database depolama için

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

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

Önemli Görüşler

İşbirliği uyarısı

Standart olmayan seçenekler bazı DICOM parserleri ile uyumluluğu bozabilir:

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

Uyumluluk için tavsiyeler

DICOM PS3.18 uyumluluğu gerektirdiğinde, varsayılan ayarları kullanın:

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

Opsiyonlar ile akış tabanlı serializasyon

Büyük dosyalar için, akış tabanlı serializasyon kullanın:

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

Ek Bilgiler

  • Özelleştirilmiş seçenekler hem serializasyon hem de deserializasyonu etkiler - yuvarlak sürüş verileri sırasında tutarlı seçimler sağlar.
  • The için WriteName Seçenek, insan okunabilir DICOM etiket adlarını eklenir, bu da JSON boyutunu arttırır, ancak okuma olasılığını artırır.
  • Bazı üçüncü taraf sistemleri belirli JSON biçimleri gerektirebilir - seçenekleri seçmeden önce belgelerini inceleyin.

Sonuç

Bu öğretici, Aspose.Medical kullanılarak C#‘da DICOM JSON serializasyon çıkışını nasıl özelleştireceğinizi göstermiştir.DicomJsonSerializerOptions’ı yapılandırarak, belirli bir entegrasyon gereksinimlerini karşılamak için jSON biçimini ayarlayabilir ve aynı zamanda okunabilirlik, boyut ve işbirliği ihtiyaçlarını dengeleyebilirsiniz.

 Türkçe