كيفية إزالة DICOM JSON مرة أخرى إلى Dataset أو DicomFile

كيفية إزالة DICOM JSON مرة أخرى إلى Dataset أو DicomFile

يظهر هذا الدليل كيفية إزالة DICOM JSON مرة أخرى إلى Dataset أو DicomFile الكائنات باستخدام C#. هذه القدرة أمر بالغ الأهمية عندما تحتاج إلى إعادة بناء بيانات DIKOM من jSON المخزنة في قواعد البيانات أو التي تم الحصول عليها من APIs الويب.

فوائد JSON Deserialization

    • إعادة تدوير البيانات *:- استعادة ملفات DICOM من JSON المخزنة في قواعد البيانات.
    • إدماج API * :- معالجة البيانات DICOM التي تم الحصول عليها كJSON من خدمات الويب.
  • ** معالجة الطريق المستدير** :- تسلسل إلى JSON، وتعديل، ثم تسلس مرة أخرى إلى DICOM.

المعايير: إعداد البيئة

  • إعداد Visual Studio أو أي .NET IDE متوافق.
  • إنشاء مشروع تطبيقات .NET 8 الجديد.
  • قم بتثبيت Aspose.Medical من NuGet Package Manager.

فهم خيارات التفريغ

يوفر DicomJsonSerializer أساليب التفريغ المختلفة:

الطريقةInputالخروجاستخدام الحالة
DeserializeJSON سلاسلDataset?مجموعة بيانات واحدة من JSON
DeserializeFileJSON سلاسلDicomFile?إكمال ملف DICOM مع meta info
DeserializeListJSON أريج شريطDataset[]?مجموعة بيانات متعددة من JSON Array

دليل خطوة بخطوة لتفكيك DICOM JSON

الخطوة 1: تثبيت Aspose.Medical

إضافة مكتبة Aspose.Medical إلى مشروعك باستخدام NuGet.

Install-Package Aspose.Medical

الخطوة 2: إدراج المساحات المطلوبة

إضافة الإشارات إلى المساحات الاسمية المطلوبة في رمزك.

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

الخطوة 3: اقرأ المحتوى JSON

اقرأ محتوى JSON من ملف أو متغير.

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

الخطوة الرابعة: إزالة البيانات

استخدام Deserialize إعادة بناء كائن Dataset.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

الخطوة 5: العمل مع مجموعة البيانات

الوصول والتلاعب بمجموعة البيانات التي تم إعادة بناءها.

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 مجموعة بيانات واحدة

وهنا مثال كامل يظهر كيفية إزالة مجموعة بيانات واحدة:

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

إزالة 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
{
    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}");
}

التعامل مع 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.هذه القدرة تسمح بمعالجة بيانات DIKOM على مدار الطريق والتكامل اللامبالاة مع أنظمة التخزين القائمة على jSON و API.

 عربي