Làm thế nào để Deserialize DICOM JSON trở lại Dataset hoặc DicomFile

Làm thế nào để Deserialize DICOM JSON trở lại Dataset hoặc DicomFile

Hướng dẫn này cho thấy làm thế nào để deserialize DICOM JSON trở lại Dataset hoặc DicomFile đối tượng bằng cách sử dụng C#. Khả năng này là cần thiết khi bạn cần để xây dựng lại dữ liệu DIKOM từ J SON được lưu trữ trong cơ sở data hoặc nhận từ web APIs.

Lợi ích của JSON Deserialization

    • Dữ liệu tái tạo *:- Khôi phục lại các tệp DICOM từ JSON được lưu trữ trong cơ sở dữ liệu.
    • Phân tích API:- Xử lý DICOM dữ liệu nhận được như JSON từ các dịch vụ web.
    • Phân phối vòng tròn *:- Serialize to JSON, modify, then deserialize back to DICOM.

Chủ đề: Chuẩn bị môi trường

  • Cài đặt Visual Studio hoặc bất kỳ IDE .NET tương thích nào.
  • Tạo một dự án ứng dụng .NET 8 mới.
  • Cài đặt Aspose.Medical từ NuGet Package Manager.

Hiểu các tùy chọn Deserialization

DicomJsonSerializer cung cấp các phương pháp giải phóng khác nhau:

Phương phápInputXuấtSử dụng Case
DeserializeĐánh giá JSON stringDataset?Bộ dữ liệu đơn từ JSON
DeserializeFileĐánh giá JSON stringDicomFile?Hoàn thành DICOM file với meta info
DeserializeListĐánh giá JSON Array StringDataset[]?Nhiều bộ dữ liệu từ JSON array

Hướng dẫn từng bước để Deserialize DICOM JSON

Bước 1: Cài đặt Aspose.Medical

Thêm thư viện Aspose.Medical vào dự án của bạn bằng NuGet.

Install-Package Aspose.Medical

Bước 2: Thêm các không gian tên cần thiết

Thêm tham chiếu đến các không gian tên cần thiết trong mã của bạn.

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

Bước 3: Đọc nội dung JSON

Đọc nội dung JSON từ một tệp hoặc biến thể.

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

Bước 4: Deserialize to Dataset

Sử dụng Deserialize để xây dựng lại một đối tượng Dataset.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Bước 5: Làm việc với Dataset

Truy cập và thao túng bộ dữ liệu được xây dựng lại.

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

Bước 6: Save Back to DICOM (tùy chọn)

Tạo một DicomFile mới và lưu vào đĩa.

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

Mẫu mã đầy đủ: Deserialize Single Dataset

Dưới đây là một ví dụ đầy đủ cho thấy làm thế nào để deserialize một bộ dữ liệu duy nhất:

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

Đánh giá về Complete DicomFile

Khi JSON của bạn bao gồm dữ liệu meta, sử dụng 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 đến nhiều tập tin dữ liệu

Khi làm việc với JSON rays chứa nhiều tập dữ liệu:

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

Lời bài hát: Serialize, Modify, Deserialize

Một trường hợp sử dụng phổ biến là sửa đổi dữ liệu DICOM thông qua 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");
}

Làm việc với Database Storage

Deserialize DICOM JSON thu được từ một cơ sở dữ liệu:

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 cho các ứng dụng web

Đối với các ứng dụng ASP.NET Core, sử dụng các phương pháp 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

Chế độ xử lý JSON

Luôn bao gồm sự biến mất trong các khối 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}");
}

Hướng dẫn cài đặt Truncated JSON

Đối với các tệp JSON lớn, đảm bảo nội dung đầy đủ được đọc:

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

Phiên bản tương thích

Hãy chắc chắn rằng JSON được tạo ra với một phiên bản tương thích của serializer. Phiên bản không phù hợp có thể gây ra thất bại deserialization.

Thông tin bổ sung

  • Các tập tin dữ liệu trần gian không bao gồm các dữ kiện pixel trừ khi nó được tích hợp trong JSON ban đầu.
  • Đối với việc sử dụng sản xuất, thực hiện xác thực thích hợp của input JSON trước khi deserialization.
  • Hãy xem xét caching các tập tin dữ liệu trục trặc cho thông tin được truy cập thường xuyên.

Kết luận

Hướng dẫn này đã chứng minh làm thế nào để deserialize DICOM JSON trở lại Dataset hoặc DicomFile đối tượng trong C# bằng cách sử dụng Aspose.Medical. Khả năng này cho phép việc xử lý dữ liệu vòng tròn và tích hợp không dây với các hệ thống lưu trữ dựa trên json và API.

 Tiếng Việt