Како креирати прилагођени профил за анонимизацију ДИКОМ-а из ЦСВ, ЈСОН или КСМЛ

Како креирати прилагођени профил за анонимизацију ДИКОМ-а из ЦСВ, ЈСОН или КСМЛ

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

Зашто креирати персонализоване профиле?

Предефинисани ДИЦОМ ПС3.15 профили можда не одговарају свим институционалним захтевима.

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

Tag akcije objašnjeno

Следеће акције се могу применити на ознаке ДИКОМ-а:

ActionCodeОпис
DeleteDУклоните ознаку у потпуности из сета података
ZeroZЗамените вредност празном или нуленом вредношћу
RemoveXУклоните ако постоји (слично као уклонити)
KeepKСачувајте оригиналну вредност непромењеном
CleanCЧишћење вредности уклањањем идентификационе информације
Замена за УИДUЗамена новог генерисаног УИД-а

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

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

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

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

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

Install-Package Aspose.Medical

Корак 2: Успостављање дефиниције ЦСВ профила

Креирајте ЦСВ датотеку са означним обрасцима и акцијама. свака линија одређује ознаку и његову акцију.

  • Профил. цсв :*
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0010,0030);X
(0010,0040);K
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0080);D
(0008,0081);D
(0008,1030);C

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Копирање кода”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

Овај профил:

  • Име и идентификација пацијента ЗЕРОС-а
  • Уклоните датум рођења
  • Пацијентски секс
  • Замена студије, серије и СОП инстанце УИД-а
  • Избрисање институционалне информације
  • Чисти опис студије

Корак 3: Креирање дефиниције JSON профила (алтернативна)

Креирајте JSON датотеку са истим дефиницијама ознака.

  • Профил .json :*
[
  { "TagPattern": "(0010,0010)", "Action": "Z" },
  { "TagPattern": "(0010,0020)", "Action": "Z" },
  { "TagPattern": "(0010,0030)", "Action": "X" },
  { "TagPattern": "(0010,0040)", "Action": "K" },
  { "TagPattern": "(0020,000D)", "Action": "U" },
  { "TagPattern": "(0020,000E)", "Action": "U" },
  { "TagPattern": "(0008,0018)", "Action": "U" },
  { "TagPattern": "(0008,0080)", "Action": "D" },
  { "TagPattern": "(0008,0081)", "Action": "D" },
  { "TagPattern": "(0008,1030)", "Action": "C" }
]

Корак 4: Креирање дефиниције КСМЛ профила (алтернатива)

Креирајте КСМЛ датотеку са истим дефиницијама ознака.

  • Профил .xml :*
<?xml version="1.0" encoding="utf-8"?>
<ConfidentialityProfile>
  <TagAction TagPattern="(0010,0010)" Action="Z" />
  <TagAction TagPattern="(0010,0020)" Action="Z" />
  <TagAction TagPattern="(0010,0030)" Action="X" />
  <TagAction TagPattern="(0010,0040)" Action="K" />
  <TagAction TagPattern="(0020,000D)" Action="U" />
  <TagAction TagPattern="(0020,000E)" Action="U" />
  <TagAction TagPattern="(0008,0018)" Action="U" />
  <TagAction TagPattern="(0008,0080)" Action="D" />
  <TagAction TagPattern="(0008,0081)" Action="D" />
  <TagAction TagPattern="(0008,1030)" Action="C" />
</ConfidentialityProfile>

Корак 5: Преузмите прилагођени профил

Преузмите прилагођени профил користећи одговарајућу методу за ваш формат датотеке.

using Aspose.Medical.Dicom.Anonymization;

// Load from CSV
ConfidentialityProfile profileFromCsv = ConfidentialityProfile.LoadFromCsvFile(
    "profile.csv", 
    ConfidentialityProfileOptions.All
);

// Or load from JSON
ConfidentialityProfile profileFromJson = ConfidentialityProfile.LoadFromJsonFile(
    "profile.json", 
    ConfidentialityProfileOptions.All
);

// Or load from XML
ConfidentialityProfile profileFromXml = ConfidentialityProfile.LoadFromXmlFile(
    "profile.xml", 
    ConfidentialityProfileOptions.All
);

Корак 6: Применити прилагођени профил

Креирајте Анонимизатор са преузетим профилом и примените га на ДИКОМ датотеке.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    "profile.csv", 
    ConfidentialityProfileOptions.All
);

// Create anonymizer with custom profile
Anonymizer anonymizer = new(profile);

// Load and anonymize DICOM file
DicomFile dcm = DicomFile.Open("patient_study.dcm");
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);
anonymizedDcm.Save("anonymized_study.dcm");

Потпуни пример кода са ЦСВ профилом

Ево комплетног примера користећи прилагођени профил заснован на ЦСВ-у:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load custom confidentiality profile from CSV
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    "hospital_privacy_profile.csv",
    ConfidentialityProfileOptions.All
);

// Create anonymizer with the custom profile
Anonymizer anonymizer = new(profile);

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

// Anonymize using custom profile
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);

// Save result
anonymizedDcm.Save("anonymized_scan.dcm");

Console.WriteLine("Anonymization completed with custom profile!");

Примери практичног сценарија

Сценарио 1: задржати ИД институције за унутрашње праћење

TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);K

Сценарио 2: Замена свих УИД-а док се одржавају односи

TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K

Сценарио 3: Максимална приватност за спољну дељење

TagPattern;Action
(0010,0010);X
(0010,0020);X
(0010,0030);X
(0010,0040);X
(0008,0080);X
(0008,0081);X
(0008,1030);X
(0008,103E);X

Валидација: Тестирање вашег персонализованог профила

Увек валидирајте прилагођене профиле пре употребе производње:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    "test_profile.csv",
    ConfidentialityProfileOptions.All
);

Anonymizer anonymizer = new(profile);

// Test with sample files
string[] testFiles = Directory.GetFiles("test_samples", "*.dcm");

foreach (string filePath in testFiles)
{
    try
    {
        DicomFile dcm = DicomFile.Open(filePath);
        DicomFile anonymized = anonymizer.Anonymize(dcm);
        
        string outputPath = Path.Combine("test_output", Path.GetFileName(filePath));
        anonymized.Save(outputPath);
        
        Console.WriteLine($"✓ Processed: {Path.GetFileName(filePath)}");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"✗ Failed: {Path.GetFileName(filePath)} - {ex.Message}");
    }
}

Console.WriteLine("\nValidation complete. Review output files in DICOM viewer.");

Troubleshooting

Инвалид датотеке Пут

Ако се профил не може наћи:

string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
    Console.WriteLine($"Profile file not found: {profilePath}");
    return;
}

Инвалид Таг образац или акција

Обезбедите ознаке обрасца следећи формат (GGGG,EEEE) gde je GGGG grupa i EEEE je element u hexadecimal. Validna akcija su: D, Z, X, K, C, U.

Најбоља пракса за прилагођене профиле

  • Версион Контрол: Складиштете датотеке профила у контролу верзије како бисте пратили промене током времена.
  • Документација: Додајте коментаре који објашњавају зашто су одређене акције изабране за сваку ознаку.
  • Тестирање: Валидирајте профиле са тестовим подацима пре него што се пријавите за производњу ДИКОМ датотека.
  • Backup: Uvek sačuvajte kopiju originalnih profila.
  • ** Преглед**: периодично прегледати профиле како би се осигурало да они и даље испуњавају регулаторне захтеве.

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

  • Размотрите стварање више профила за различите случајеве коришћења (унутрашње дељење, спољне истраживања, итд.).
  • Документ чији је профил коришћен приликом анонимизације датотека у сврху ревизије.
  • JSON и XML формати пружају бољу структуру за сложене профиле са нежним дефиницијама.

Закључак

Овај туториал је показао како да креирате прилагођене ДИЦОМ анонимне профиле користећи ЦСВ, ЈСОН, или КСМЛ датотеке у Ц# са Асписе.Медицински.

 Српски