DICOM JSON'u Dataset veya DicomFile'e nasıl geri dönüştürürsünüz

DICOM JSON'u Dataset veya DicomFile'e nasıl geri dönüştürürsünüz

Bu öğretici, DICOM JSON’u C# kullanarak Dataset veya DicomFile nesnelerine geri nasıl deserialize edeceğinizi gösterir. bu yetenek, veritabanlarında kaydedilen veya web APIs’ten alınan DIKOM verilerini yeniden yapılandırmanız gerektiğinde gereklidir.

JSON Deserializasyonun Faydaları

  • **Data Yeniden Yapılandırma ** :- DICOM dosyalarını JSON’dan, veritabanlarında kaydedilir.

    • API Geliştirme * :- Web hizmetlerinden JSON olarak alınan DICOM verilerini işler.
    • Çerçeve işleme yöntemi:- Serialize JSON, modify, sonra deserialize back to DICOM.

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.

Deserializasyon seçenekleri

DicomJsonSerializer çeşitli deşerilizasyon yöntemleri sağlar:

YöntemInputçıkışKullanım Olayları
DeserializeJSON ÇerçeveDataset?JSON’dan tek veri kümesi
DeserializeFileJSON ÇerçeveDicomFile?DICOM dosyasını meta info ile tamamlayın
DeserializeListJSON Array ÇizgisiDataset[]?JSON array’den çok sayıda veri kümesi

DICOM JSON’u Deserialize etmek 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;

Adım 3: JSON içeriğini okuyun

Bir dosyadan veya değişkenten JSON içeriğini okuyun.

string jsonText = File.ReadAllText("patient_scan.json");

Adım 4: Dataset’e Deserialize

Kullanımı Deserialize Bir Dataset nesnesinin yeniden yapılandırılması.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Adım 5: Dataset ile çalışın

Yeniden yapılandırılmış veri kümesine erişmek ve manipüle etmek.

if (dataset != null)
{
    Console.WriteLine("Dataset successfully reconstructed from JSON.");
    // Work with the dataset...
}

Adım 6: DICOM’a geri kaydedin (opsiyonel)

Yeni bir DicomFile oluşturun ve diske kaydedin.

if (dataset != null)
{
    DicomFile newDcm = new DicomFile(dataset);
    newDcm.Save("reconstructed.dcm");
}

Etiket Arşivi: Deserialize Single Dataset

İşte tek bir veri seti nasıl deşerialleştirileceğini gösteren tam bir örnek:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read JSON from file
string jsonText = File.ReadAllText("patient_scan.json");

// Deserialize to Dataset
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

if (dataset != null)
{
    Console.WriteLine("Dataset successfully deserialized!");
    
    // Create a new DicomFile with the dataset
    DicomFile newDcm = new DicomFile(dataset);
    
    // Save to DICOM format
    newDcm.Save("reconstructed_scan.dcm");
    Console.WriteLine("Saved to reconstructed_scan.dcm");
}
else
{
    Console.WriteLine("Failed to deserialize JSON.");
}

Deserialize Complete DicomFile Hakkında

JSON dosya meta bilgileri içerdiğinde, kullanın DeserializeFile:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read JSON that includes file meta information
string jsonFileText = File.ReadAllText("complete_dicom.json");

// Deserialize to complete DicomFile
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonFileText);

if (dicomFile != null)
{
    Console.WriteLine("DicomFile successfully deserialized!");
    dicomFile.Save("reconstructed_complete.dcm");
}

Deserialize JSON Array to Multiple Dataset

JSON ile çalışırken, birden fazla veri kümesi içeren çekirdekler:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Read JSON array
string jsonArrayText = File.ReadAllText("multiple_studies.json");

// Deserialize to Dataset array
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonArrayText);

if (datasets != null)
{
    Console.WriteLine($"Deserialized {datasets.Length} datasets.");
    
    // Save each dataset as a separate DICOM file
    for (int i = 0; i < datasets.Length; i++)
    {
        DicomFile dcm = new DicomFile(datasets[i]);
        dcm.Save($"study_{i:D3}.dcm");
    }
    
    Console.WriteLine("All datasets saved successfully!");
}

Etiket Arşivi: serialize, modify, deserialize

Bir yaygın kullanım vakası, DICOM verilerini JSON aracılığıyla değiştirmektir:

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

// Load original DICOM file
DicomFile original = DicomFile.Open("original.dcm");

// Serialize to JSON
string json = DicomJsonSerializer.Serialize(original, writeIndented: true);

// Parse JSON for modification (using System.Text.Json)
using JsonDocument doc = JsonDocument.Parse(json);
// ... modify JSON as needed ...

// Deserialize back to Dataset
Dataset? modifiedDataset = DicomJsonSerializer.Deserialize(json);

if (modifiedDataset != null)
{
    DicomFile modifiedDcm = new DicomFile(modifiedDataset);
    modifiedDcm.Save("modified.dcm");
}

Database Storage ile çalışmak

Deserialize DICOM JSON bir veritabanından alınan:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Simulating retrieval from database
string jsonFromDatabase = GetDicomJsonFromDatabase("patient_123");

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonFromDatabase);

if (dataset != null)
{
    // Process the reconstructed dataset
    DicomFile dcm = new DicomFile(dataset);
    dcm.Save("from_database.dcm");
    Console.WriteLine("DICOM file reconstructed from database JSON.");
}

// Simulated database retrieval method
string GetDicomJsonFromDatabase(string patientId)
{
    // In real implementation, this would query your database
    return File.ReadAllText($"database_cache/{patientId}.json");
}

Web Uygulamaları için Async Deserialization

ASP.NET Core uygulamaları için async yöntemlerini kullanın:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

// Async deserialization from stream
public async Task<Dataset?> DeserializeFromStreamAsync(Stream jsonStream)
{
    Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(jsonStream);
    return dataset;
}

// Usage in ASP.NET Core controller
[HttpPost("import")]
public async Task<IActionResult> ImportDicomJson()
{
    Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(Request.Body);
    
    if (dataset != null)
    {
        // Process the dataset
        return Ok("DICOM data imported successfully");
    }
    
    return BadRequest("Invalid DICOM JSON");
}

Troubleshooting

Kötü niyetli JSON

Her zaman try-catch bloklarında deserializasyon içine girin:

try
{
    Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
    if (dataset == null)
    {
        Console.WriteLine("Deserialization returned null - check JSON format.");
    }
}
catch (JsonException ex)
{
    Console.WriteLine($"JSON parsing error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Deserialization error: {ex.Message}");
}

Sıkıştırılmış JSON

Büyük JSON dosyaları için, tam içerik okunur emin olun:

// Use ReadAllText for complete file content
string completeJson = File.ReadAllText("large_dicom.json");

// Verify JSON is complete (basic check)
if (!completeJson.TrimEnd().EndsWith("}") && !completeJson.TrimEnd().EndsWith("]"))
{
    Console.WriteLine("Warning: JSON may be truncated.");
}

Versiyon uyumluluğu

JSON’un serializatörün uyumlu bir versiyonu ile oluşturulduğundan emin olun. yanıltılmış versiyonlar deserializasyon başarısızlığına neden olabilir.

Ek Bilgiler

  • Deserialize veri setleri, orijinal JSON’a yerleştirilmediği sürece piksel verileri içermez.
  • Üretim kullanımı için, deserializasyon öncesi JSON girişinin doğru doğrulamasını uygulayın.
  • Çoğu zaman erişilen veriler için deserialized veri seti caching düşünün.

Sonuç

Bu öğretici, DICOM JSON’u C#‘da Dataset veya DicomFile nesnelerine Aspose.Medical kullanılarak nasıl deserialize edeceğini göstermiştir.Bu yetenek, yuvarlak yolda DIKOM verileri işleme ve jSON tabanlı depolama ve API sistemleri ile kabız bir entegrasyon sağlar.

 Türkçe