Како конвертовати многе ДИКОМ датотеке у јединствену ЈСОН Ареј
Овај туториал показује како конвертовати многе ДИКОМ датотеке у једну ЈСОН реду користећи Ц#. Овај приступ је идеалан за инжењере података који треба да извозе МЕТАДАТАДАНЕ ДИХОМ-а за аналитичке алате, податке базе, или податак цеви.
Предности извоза JSON Array
Bulk Data Processing:- Увозити више ДИКОМ записи у базе података у једној операцији.
Аналитичари су спремни:- JSON радије се могу директно наплатити у Python, Spark или складиштења података.
- компактни излаз *:- Јединствена датотека која садржи све метадане олакшава управљање подацима.
Принципи: Припрема за животну средину
- Инсталирајте Visual Studio или било који компатибилан .NET IDE.
- Креирање новог .NET 8 апликационог пројекта конзоле.
- Инсталирајте Aspose.Medical из менаџера пакета NuGet.
- Припремите фасциклу која садржи више ДИКОМ датотека.
Корак по корак водич за конверзију више ДИКОМ датотека у ЈСОН Ареј
Корак 1: Инсталирајте Aspose.Medical
Додајте Аппосе.Медицинска библиотека у свој пројекат користећи НуГет.
Install-Package Aspose.MedicalКорак 2: Укључите неопходне имена
Додајте референце на потребне имена простора у вашем коду.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Корак 3: Преузмите више ДИКОМ датотека
Преузмите ДИКОМ датотеке из фасцикла у колекцију.
string inputFolder = @"C:\DicomStudies";
string[] dicomPaths = Directory.GetFiles(inputFolder, "*.dcm");
List<DicomFile> dicomFiles = new();
foreach (string path in dicomPaths)
{
dicomFiles.Add(DicomFile.Open(path));
}Корак 4: Екстрактирајте датотеку
Изградите низ објеката Dataset из преузетих датотека.
Dataset[] datasets = dicomFiles
.Select(dcm => dcm.Dataset)
.ToArray();Корак 5: Серијализација на JSON Array
Коришћење DicomJsonSerializer.Serialize у складу са датумом.
string jsonArray = DicomJsonSerializer.Serialize(datasets, writeIndented: true);Корак 6: Сачувајте JSON Array
Sačuvajte JSON array na datoteku.
File.WriteAllText("dicom_studies.json", jsonArray);
Console.WriteLine($"Exported {datasets.Length} DICOM datasets to JSON array.");Потпуни код Пример
Ево комплетног примера који показује како конвертовати више ДИКОМ датотека у ЈСОН распон:
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
Izlazak JSON array izgleda ovako:
[
{
"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"] }
}
]Обрада великих података са ЛИНК-ом
За боље управљање меморијом са великим сетовима података, користите ЛИНК пројекције:
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 у Аналитичке алате
Python Пример
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 датова.
- Stream Output: Koristite serijalizaciju koja se temelji na toku za veoma velike radove.
- Подесите датотеке: Уверите се да су објекти ДицомФиле уклоњени након извлачења сета података.
// 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 array format je idealan za masovni uvoz u NoSQL baze podataka.
- Размислите о компресирању великих JSON датотека за ефикасност складиштења.
- За стриминг сценарије, размотрите да уместо тога користите НДЈСОН (ново линирани ЈСОН) формат.
Закључак
Овај туториал вам је показао како да конвертујете више ДИКОМ датотека у једну ЈСОН реду у Ц# користећи Аппосе.Медицал. Овај приступ омогућава ефикасан извоз масовних података за аналитике, увоз база подаци и интеграцију цеви подата.