چگونه DICOM JSON را به Dataset یا DicomFile بازگردانیم

چگونه DICOM JSON را به Dataset یا DicomFile بازگردانیم

این راهنمای نشان می دهد که چگونه DICOM JSON را با استفاده از C# به اشیاء Dataset یا DicomFile بازگردانید.این قابلیت ضروری است زمانی که شما نیاز به بازسازی داده های دیکوم از Json ذخیره شده در پایگاه داده ها یا دریافت شده از API های وب دارید.

مزایای JSON Deserialization

  • ** بازسازی داده ها** :- بازگرداندن فایل های DICOM از JSON ذخیره شده در پایگاه داده.

  • تولید API :- پردازش داده های DICOM دریافت شده به عنوان JSON از خدمات وب.

  • *تجزیه و تحلیل مسیر گرد :- به JSON سریالی کنید، آن را تغییر دهید و سپس به DICOM بازگردید.

برچسب ها: آماده سازی محیط زیست

  • Visual Studio یا هر IDE .NET سازگار را نصب کنید.
  • ایجاد یک برنامه جدید .NET 8 کنسول.
  • نصب Aspose.Medical از NuGet Package Manager.

آشنایی با گزینه های Deserialization

DicomJsonSerializer روش های مختلف تخلیه را ارائه می دهد:

روشInputخروجمورد استفاده
Deserializeدانلود JSON StringDataset?مجموعه ای از داده های JSON
DeserializeFileدانلود JSON StringDicomFile?تکمیل فایل DICOM با اطلاعات متا
DeserializeListJSON آرری stringDataset[]?مجموعه داده های چندگانه از JSON Array

راهنمای گام به گام برای تخریب DICOM JSON

مرحله اول: نصب Aspose.Medical

کتابخانه Aspose.Medical را به پروژه خود با استفاده از NuGet اضافه کنید.

Install-Package Aspose.Medical

مرحله دوم: فضای نام مورد نیاز را شامل کنید

ارجاعات را به فضاهای نام مورد نیاز در کد خود اضافه کنید.

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

مرحله سوم: محتوای JSON را بخوانید

محتوای JSON را از یک فایل یا متغیر بخوانید.

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

مرحله چهارم: از بین بردن داده ها

استفاده Deserialize برای بازسازی یک دایرکتوری

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

مرحله پنجم: کار با داده ها

دسترسی و دستکاری مجموعه داده های بازسازی شده.

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

مرحله 6: ذخیره مجدد به DICOM (اختیاری)

یک DicomFile جدید ایجاد کنید و آن را به دیسک ذخیره کنید.

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

کد کامل نمونه: Deserialize Single Dataset

در اینجا یک مثال کامل نشان می دهد که چگونه به تخریب یک مجموعه داده:

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

دانلود کامل DicomFile

هنگامی که JSON شما شامل اطلاعات متا فایل، استفاده از 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 به چندین مجموعه داده

در هنگام کار با JSON ریشه های حاوی مجموعه های داده چندگانه:

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

برچسب های ارشیو: Serialize, Modify, Deserialize

یک مورد استفاده رایج این است که داده های DICOM را از طریق JSON تغییر دهید:

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

کار با ذخیره سازی پایگاه داده

Deserialize DICOM JSON به دست آمده از یک پایگاه داده:

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

Async Deserialization برای برنامه های وب

برای برنامه های ASP.NET Core از روش های async استفاده کنید:

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

استفاده از نرم افزار JSON

همیشه در بلوک های try-catch دگرگونی کنید:

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

دانلود بازی Truncated JSON

برای فایل های بزرگ JSON، مطمئن شوید که محتوای کامل خوانده می شود:

// 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.");
}

نسخه سازگاری

اطمینان حاصل کنید که JSON با یک نسخه سازگار از سریالیز ایجاد شده است. نسخه های نادرست می تواند منجر به شکست های سریال سازی شود.

اطلاعات اضافی

  • مجموعه های داده ناشناخته شامل داده های پیکسل نیستند مگر اینکه در JSON اصلی نصب شده باشد.
  • برای استفاده از تولید، قبل از تخلیه، اعتبار مناسب ورودی JSON را اجرا کنید.
  • در نظر داشته باشید که مجموعه های داده های تخلیه شده را برای داده هایی که به طور مکرر به آن دسترسی دارند، ذخیره کنید.

نتیجه گیری

این آموزش نشان داده است که چگونه DICOM JSON را به بازگرداندن به Dataset یا DicomFile اشیاء در C# با استفاده از Aspose.Medical. این قابلیت امکان پردازش داده های دایکوم را فراهم می کند و یکپارچه سازی بی سیم با سیستم های ذخیره سازی و API مبتنی بر jSON.

 فارسی