Како прилагодити DICOM JSON излаз са DicomJsonSerializerOptions

Како прилагодити DICOM JSON излаз са DicomJsonSerializerOptions

Овај туториал показује како да прилагодите излаз серијализације ДИЦОМ ЈСОН користећи ДицомЈсонСериализаторОпције у Ц#. Прилагођавање вам омогућава да контролишете Кључне формати ЈССОН-а, укључујући додатне метадане и управљате бројним вредностима према вашим захтевима за интеграцију.

Зашто прилагодити JSON излаз?

Различити системи могу захтевати различите JSON формате.

  • Коришћење људско-читаних кључних речи уместо таг бројева
  • Укључујући ознаке имена за документацију
  • Проверите како се представљају бројне вредности
  • Одређивање специфичних системских захтева треће стране

Принципи: Припрема за животну средину

  • Инсталирајте Visual Studio или било који компатибилан .NET IDE.
  • Креирање новог .NET 8 апликационог пројекта конзоле.
  • Инсталирајте Aspose.Medical из менаџера пакета NuGet.

Доступне опције за серијализацију

OptionОписImpact
UseKeywordsAsJsonKeysKoristite ključne reči DICOM umesto oznake kao JSON ključeve"PatientName" ВС "00100010"
WriteKeywordУкључите поље за кључне речи у сваком објекту ознакаAdds "keyword": "PatientName"
WriteNameУкључите име поља у сваки објекат ознакаAdds "name": "Patient's Name"
NumberHandlingКонтрола бројне вредностиБројеви као нијансе или стварни ЈСОН број

Корак по корак водич за прилагођавање JSON излаза

Корак 1: Инсталирајте Aspose.Medical

Додајте Аппосе.Медицинска библиотека у свој пројекат користећи НуГет.

Install-Package Aspose.Medical

Корак 2: Укључите неопходне имена

Додајте референце на потребне имена простора у вашем коду.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;

Корак 3: Креирање опције инстанце

Креирајте А DicomJsonSerializerOptions Пример је да се конфигуришу подешавања.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Корак 4: Конфигурисање опција

Поставите жељене опције за ваш JSON излаз.

options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;

Корак 5: Серијализација са опцијама

Преузмите опције на методу Серијализације.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

Корак 6: Сачувајте прилагођени излаз

Сачувајте или користите прилагођену JSON.

File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");

Потпуни пример кода са свим опцијама

Ево комплетног примера који показује све опције за прилагођавање:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;

// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true,
    NumberHandling = JsonNumberHandling.WriteAsString
};

// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

// Save output
File.WriteAllText("fully_customized.json", json);

Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);

Поређење излазних формата

Дефинисани излаз (Стандардни ПС3.18 формат)

{
  "00100010": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

Sa UseKeywordsAsJsonKeys = istinita

{
  "PatientName": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "PatientID": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

Писање и писање = истинито

{
  "00100010": {
    "vr": "PN",
    "keyword": "PatientName",
    "name": "Patient's Name",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  }
}

Sa brojomHandling = WriteAsString

{
  "00280010": {
    "vr": "US",
    "Value": ["512"]
  }
}

Са БројемСлужбе = ДозвољавањеРедактирањеФромСтринг и ПисањеСброј

{
  "00280010": {
    "vr": "US",
    "Value": [512]
  }
}

Koristite primere slučaja

За људско-читајућу документацију

DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true
};

string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);

За ПС3.18 компатибилне веб услуге

// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = false,  // Use tag numbers
    WriteKeyword = false,
    WriteName = false,
    NumberHandling = JsonNumberHandling.WriteAsString
};

string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);

За JavaScript Frontend интеграцију

DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Easier to work with in JS
    NumberHandling = JsonNumberHandling.AllowReadingFromString  // Native numbers
};

string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);

За складиштење базе података

DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Better for querying
    WriteKeyword = false,          // Reduce storage size
    WriteName = false
};

string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);

Важни размишљања

Upozorenje o interoperabilnosti

Нестандардне опције могу прекинути компатибилност са неким ДИЦОМ пасерима:

// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true  // Not PS3.18 compliant
};

// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();

Препорука за усклађеност

Kada je potrebna usklađenost sa DICOM PS3.18, koristite privremene postavke:

// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm);  // No custom options

Серијализација на основу струје са опцијама

За велике датотеке, користите серијализацију засновану на току:

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

DicomFile dcm = DicomFile.Open("large_scan.dcm");

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true
};

using (FileStream fs = File.Create("large_customized.json"))
{
    DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}

Додатне информације

  • Прилагођене опције утичу и на сериализацију и десеријализацију - обезбеђују конзистентне могућности приликом циркулације података.
  • У том WriteName Опција додаје људско-читане имена ознака ДИКОМ који повећава величину ЈСОН-а, али побољшава читавост.
  • Неки системи трећих страна могу захтевати специфичне JSON формате - прегледајте њихову документацију пре него што изаберете опције.

Закључак

Овај туториал је показао како да прилагодите излаз серијализације ДИЦОМ ЈСОН у Ц # користећи Аппосе.Медицал. Конфигурисањем ДицомЈСонСеријализаторОпција, можете подесити ЈСОН формат да задовољи специфичне захтеве интеграције док уравнотежујете читавост, величину и потребе за интерактивности.

 Српски