چگونه چندین فایل DICOM را به یک مجموعه JSON تبدیل کنیم

چگونه چندین فایل DICOM را به یک مجموعه JSON تبدیل کنیم

این آموزش نشان می دهد که چگونه به تبدیل چندین فایل DICOM به یک مجموعه JSON با استفاده از C#. این رویکرد ایده آل برای مهندسان داده است که نیاز به صادرات متادیت های DIKOM برای ابزارهای تجزیه و تحلیل، پایگاه داده، و یا لوله های داده.

مزایای JSON Array Export

  • ** پردازش داده های جمعی** :- واردات چندین رکورد DICOM به پایگاه داده در یک عملیات.

  • *آموزش آماده است:- ریشه های JSON می توانند به طور مستقیم به Python، Spark یا انبار داده ها بارگذاری شوند.

    • خروجی کامپکت* :- یک فایل که شامل تمام متا داده ها است، مدیریت داده را آسان تر می کند.

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

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

راهنمای گام به گام برای تبدیل چندین فایل DICOM به JSON Array

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

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

Install-Package Aspose.Medical

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

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

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

مرحله 3: بارگذاری فایل های چندگانه DICOM

دانلود فایل های DICOM از یک پوشه به یک مجموعه.

string inputFolder = @"C:\DicomStudies";
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");

List<DicomFile> dicomFiles = new();
foreach (string path in dicomPaths)
{
    dicomFiles.Add(DicomFile.Open(path));
}

مرحله چهارم: استخراج Dataset Array

ایجاد مجموعه ای از اشیاء Dataset از فایل های بارگذاری شده.

Dataset[] datasets = dicomFiles
    .Select(dcm => dcm.Dataset)
    .ToArray();

مرحله پنجم: به JSON Array بروید

استفاده DicomJsonSerializer.Serialize با Dataset Array .

string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);

مرحله 6 : JSON Array را ذخیره کنید

JSON را به یک فایل ذخیره کنید.

File.WriteAllText("dicom_studies.json", jsonArray);
Console.WriteLine($"Exported {datasets.Length} DICOM datasets to JSON array.");

کد کامل نمونه

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

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

string inputFolder = @"C:\DicomStudies";
string outputFile = "dicom_studies.json";

// Get all DICOM files
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");
Console.WriteLine($"Found {dicomPaths.Length} DICOM files.");

// Load all files
List<DicomFile> dicomFiles = new();
foreach (string path in dicomPaths)
{
    try
    {
        dicomFiles.Add(DicomFile.Open(path));
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Skipping invalid file: {Path.GetFileName(path)}");
    }
}

// Build dataset array
Dataset[] datasets = dicomFiles
    .Select(dcm => dcm.Dataset)
    .ToArray();

// Serialize to JSON array
string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);

// Save to file
File.WriteAllText(outputFile, jsonArray);

Console.WriteLine($"Successfully exported {datasets.Length} datasets to {outputFile}");

نمونه JSON Array Output

محصول JSON به این شکل به نظر می رسد:

[
  {
    "00080005": { "vr": "CS", "Value": ["ISO_IR 100"] },
    "00100010": { "vr": "PN", "Value": [{ "Alphabetic": "DOE^JOHN" }] },
    "00100020": { "vr": "LO", "Value": ["12345"] }
  },
  {
    "00080005": { "vr": "CS", "Value": ["ISO_IR 100"] },
    "00100010": { "vr": "PN", "Value": [{ "Alphabetic": "SMITH^JANE" }] },
    "00100020": { "vr": "LO", "Value": ["67890"] }
  }
]

پردازش داده های بزرگ با LINQ

برای مدیریت بهتر حافظه با مجموعه داده های بزرگ، از پیش بینی های LINQ استفاده کنید:

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

string inputFolder = @"C:\LargeDicomArchive";
string outputFile = "large_export.json";

// Process files lazily to manage memory
Dataset[] datasets = Directory.GetFiles(inputFolder, "*.dcm")
    .Select(path => 
    {
        try
        {
            return DicomFile.Open(path).Dataset;
        }
        catch
        {
            return null;
        }
    })
    .Where(ds => ds != null)
    .ToArray()!;

string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);
File.WriteAllText(outputFile, jsonArray);

Console.WriteLine($"Exported {datasets.Length} datasets.");

اضافه کردن گزارش پیشرفت

برای بازی های بزرگ، گزارش پیشرفت را اضافه کنید:

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

string inputFolder = @"C:\DicomStudies";
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");

List<Dataset> datasets = new();
int processed = 0;
int total = dicomPaths.Length;

foreach (string path in dicomPaths)
{
    try
    {
        DicomFile dcm = DicomFile.Open(path);
        datasets.Add(dcm.Dataset);
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error: {Path.GetFileName(path)} - {ex.Message}");
    }
    
    processed++;
    if (processed % 100 == 0 || processed == total)
    {
        Console.WriteLine($"Progress: {processed}/{total} ({processed * 100 / total}%)");
    }
}

string jsonArray = DicomJsonSerializer.Serialize(datasets.ToArray(), writeIndented: true);
File.WriteAllText("export.json", jsonArray);

Console.WriteLine($"Export complete: {datasets.Count} datasets.");

وارد کردن JSON Array به ابزارهای تجزیه و تحلیل

پایتون نمونه

import json
import pandas as pd

# Load the exported JSON array
with open('dicom_studies.json', 'r') as f:
    dicom_data = json.load(f)

# Convert to DataFrame for analysis
df = pd.json_normalize(dicom_data)
print(df.head())

ورود به MongoDB

// Using mongoimport
// mongoimport --db medical --collection studies --jsonArray --file dicom_studies.json

تفکر حافظه

هنگامی که با مجموعه های داده بسیار بزرگ کار می کنید:

  • فرآیند در بسته ها: فایل ها را به بسته های 100 تا 500 فایل تقسیم کنید.
  • ** خروجی جریان**: از سریالی سازی مبتنی بر جریان برای ریشه های بسیار بزرگ استفاده کنید.
  • نمایش فایل ها: اطمینان حاصل کنید که اشیاء DicomFile پس از استخراج مجموعه داده ها از بین می روند.
// Batch processing example
int batchSize = 100;
string[] allFiles = Directory.GetFiles(inputFolder, "*.dcm");
int batchNumber = 0;

for (int i = 0; i < allFiles.Length; i += batchSize)
{
    string[] batch = allFiles.Skip(i).Take(batchSize).ToArray();
    Dataset[] datasets = batch
        .Select(path => DicomFile.Open(path).Dataset)
        .ToArray();
    
    string batchJson = DicomJsonSerializer.Serialize(datasets, writeIndented: true);
    File.WriteAllText($"batch_{batchNumber++}.json", batchJson);
}

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

  • فرمت مجموعه JSON ایده آل برای واردات جمعی به پایگاه داده های NoSQL است.
  • در نظر گرفتن فشرده سازی فایل های بزرگ JSON برای بهره وری ذخیره سازی.
  • برای سناریوهای پخش، به جای استفاده از فرمت NDJSON (Newline Delimited JSON) در نظر بگیرید.

نتیجه گیری

این آموزش به شما نشان داده است که چگونه چندین فایل DICOM را به یک مجموعه JSON در C# با استفاده از Aspose.Medical تبدیل کنید.این رویکرد امکان صادرات داده های جمعی موثر برای تجزیه و تحلیل، واردات پایگاه داده و ادغام خط لوله داده را فراهم می کند.

 فارسی