Comment désertifier DICOM JSON Retour à Dataset ou DicomFile

Comment désertifier DICOM JSON Retour à Dataset ou DicomFile

Ce tutoriel démontre comment désérialiser DICOM JSON vers les objets Dataset ou DicomFile en utilisant C#. Cette capacité est essentielle lorsque vous avez besoin de reconstruire les données DicOM de jSON stockées dans les bases de données ou reçues des APIs Web.

Les avantages de la désertification JSON

    • Récupération de données * :- Récupérer les fichiers DICOM de JSON stockés dans les bases de données.
    • L’intégration API :- Traitement des données DICOM reçues en tant que JSON des services Web.
    • Traitement de la route* :- Sérialiser à JSON, modifier, puis désertifier à DICOM.

Étiquette : Préparer l’environnement

  • Configurez Visual Studio ou tout IDE .NET compatible.
  • Créer un nouveau projet d’application pour la console .NET 8.
  • Installez Aspose.Medical à partir du NuGet Package Manager.

Comprendre les options de désertification

Le DicomJsonSerializer fournit différentes méthodes de désertification:

MetodoInputLa sortieUtiliser le cas
DeserializeRégime JSONDataset?Unité de données JSON
DeserializeFileRégime JSONDicomFile?Complète le fichier DICOM avec meta info
DeserializeListJSON array stringDataset[]?Plusieurs données de JSON Array

Guide pas à pas pour désertifier DICOM JSON

Étape 1 : Installer Aspose.Medical

Ajoutez la bibliothèque Aspose.Medical à votre projet en utilisant NuGet.

Install-Package Aspose.Medical

Étape 2 : Inclure les espaces de nom nécessaires

Ajoutez des références aux espaces de nom requis dans votre code.

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

Étape 3 : Lire le contenu JSON

Lire le contenu JSON à partir d’un fichier ou de la variable.

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

Étape 4 : Desérialiser à Dataset

Utiliser Deserialize reconstruire un objet de Dataset.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Étape 5: Travailler avec le Dataset

Accès et manipulation des données reconstruites.

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

Étape 6 : Réservez à DICOM (optionnel)

Créer un nouveau DicomFile et sauvegarder sur le disque.

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

Exemple de code complet: Desérialiser un ensemble de données unique

Voici un exemple complet démontrant comment désertifier un seul ensemble de données:

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

Découvrir Complete DicomFile

Lorsque votre JSON contient des données de fichiers, utilisez 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");
}

Désérialiser JSON Array à plusieurs données

Lorsque vous travaillez avec JSON, les rayons contiennent plusieurs ensembles de données :

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

Exemple de tournée : sérialiser, modifier, désertifier

Un cas d’utilisation courant est de modifier les données DICOM via 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");
}

Travailler avec le stockage de base de données

Deserialiser DICOM JSON obtenu à partir d’une base de données :

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 Deserialisation pour les applications Web

Pour les applications ASP.NET Core, utilisez les méthodes 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

Traitement malformé JSON

Toujours enveloppez la désertification dans les blocs de tentative:

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

Travailler avec JSON

Pour les grands fichiers JSON, assurez-vous que le contenu complet est lu :

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

Version de compatibilité

Assurez-vous que le JSON a été généré avec une version compatible du sérialisateur. Les versions incorrectes peuvent causer des échecs de désérialisation.

Informations supplémentaires

  • Les ensembles de données désérialisés ne comprennent pas les données pixel sauf si elles ont été intégrées dans le JSON original.
  • Pour l’utilisation de la production, mettre en œuvre la validation appropriée des entrées JSON avant la désertification.
  • Considérons le caching des données désérialisées pour les données fréquemment accessibles.

Conclusion

Ce tutoriel a démontré comment désérialiser DICOM JSON de retour à Dataset ou DicomFile objets en C# en utilisant Aspose.Medical. Cette capacité permet le traitement de données de circuit et l’intégration sans fil avec les systèmes de stockage et d’API basés sur jSON.

 Français