У той час як заздалегідь визначені профілі конфіденційності DICOM PS3.15 охоплюють багато випадків використання, заклади охорони здоров’я часто мають унікальні вимоги до приватності. У цьому керівництві ви дізнаєтеся, як дизайн персоналізованих профілів анонімації DIKOM, які збігаються з конкретними політиками вашої організації.

Таблиця контенту

Чому потрібні персоналізовані профілі

Заздалегідь визначені профілі конфіденційності забезпечують міцну основу, але вони можуть не відповідати всім інституційним вимогам. Ви можете потребувати персоналізованих профілів, коли ваша організація вимагає зберігання певних інституційних ідентифікаторів для внутрішньої відстеження, а також анонімності даних пацієнта. Деякі дослідницькі співробітництва можуть вимагати певної демографії, збереженої під час видалення прямих ідентометрів. Внутрішні потоки роботи з забезпечення якості можуть затребувати інформацію про пристрій, що стандартні профіли будуть видалені. Крім того, регіональні регламенти можуть зобов’язувати конкретну обробку деяких елементів даних.

Налаштувані профілі дають вам точний контроль над тим, які знаки DICOM змінюються і як, що дозволяє дотримуватися ваших конкретних правил управління даними.

Поняття шаблонів та дій {# розуміння-таг-патрин і дій}

Етикетки DICOM ідентифікуються груповими та елементарними номерами у форматі (GGGG,EEEE). Наприклад, Пацієнтське ім’я (0010,0010) і ІД Пацієнта ( 0010.0020).

До наявних дій відносяться D (Delete), що видаляє тег повністю з набору даних, **Z (Zero), який замінює вартість порожньою або нульовою довжиною, X (Remove), яка видаляє теґу, якщо присутній схожий на видалення, •K (Keep) , яка зберігає оригінальну вартість без змін, ●C (Clean), яка очищає цінність шляхом усунення ідентифікаційної інформації контекстуально, і **U (Замінювати з UID)*.

Вибір правильної дії залежить від вашого випадку використання. Використовуйте D або X для тегів, які ніколи не повинні з’являтися в анонімному виході. використовуйте Z, коли тег повинен існувати, але він повинен бути порожнім. Користуйте K для знаків ви хочете точно зберегти. користуйтеся C для текстових полів, що можуть містити вбудовані ідентифікатори.

Створення персональних профілів

Налаштування профілів можна визначити у трьох форматах. виберіть той, який найкраще підходить для вашого робочого потоку.

формат CSV

CSV - це найпростіший формат, ідеальний для простих профілів:

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
(0008,103E);C
(0010,1010);K
(0010,1030);K

Цей профіль нулює прізвище і ідентифікатор пацієнта, видаляє дату народження, зберігає статеві та демографічні дані пацієнтів, замінює всі УІД, виключає інформацію про інституцію та очищає описи.

Формат JSON

JSON забезпечує кращу структуру для складних профілів з метаданими даними:

{
  "profileName": "Hospital Research Profile",
  "version": "1.0",
  "description": "Custom profile for research data sharing",
  "actions": [
    { "TagPattern": "(0010,0010)", "Action": "Z", "Comment": "Patient Name" },
    { "TagPattern": "(0010,0020)", "Action": "Z", "Comment": "Patient ID" },
    { "TagPattern": "(0010,0030)", "Action": "X", "Comment": "Birth Date" },
    { "TagPattern": "(0010,0040)", "Action": "K", "Comment": "Patient Sex" },
    { "TagPattern": "(0020,000D)", "Action": "U", "Comment": "Study Instance UID" },
    { "TagPattern": "(0020,000E)", "Action": "U", "Comment": "Series Instance UID" },
    { "TagPattern": "(0008,0018)", "Action": "U", "Comment": "SOP Instance UID" },
    { "TagPattern": "(0008,0080)", "Action": "D", "Comment": "Institution Name" },
    { "TagPattern": "(0008,0081)", "Action": "D", "Comment": "Institution Address" },
    { "TagPattern": "(0008,1030)", "Action": "C", "Comment": "Study Description" }
  ]
}

Формат XML

XML улюблений для середовищ з існуючим XML-інструментом:

<?xml version="1.0" encoding="utf-8"?>
<ConfidentialityProfile name="Hospital Research Profile" version="1.0">
  <Description>Custom profile for research data sharing</Description>
  <TagActions>
    <TagAction TagPattern="(0010,0010)" Action="Z">Patient Name</TagAction>
    <TagAction TagPattern="(0010,0020)" Action="Z">Patient ID</TagAction>
    <TagAction TagPattern="(0010,0030)" Action="X">Birth Date</TagAction>
    <TagAction TagPattern="(0010,0040)" Action="K">Patient Sex</TagAction>
    <TagAction TagPattern="(0020,000D)" Action="U">Study Instance UID</TagAction>
    <TagAction TagPattern="(0020,000E)" Action="U">Series Instance UID</TagAction>
    <TagAction TagPattern="(0008,0018)" Action="U">SOP Instance UID</TagAction>
    <TagAction TagPattern="(0008,0080)" Action="D">Institution Name</TagAction>
    <TagAction TagPattern="(0008,0081)" Action="D">Institution Address</TagAction>
    <TagAction TagPattern="(0008,1030)" Action="C">Study Description</TagAction>
  </TagActions>
</ConfidentialityProfile>

Завантажити персоналізовані профілі в коді

Завантаження персоналізованих профілів у вашій програмі .NET є простим:

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

// Load from CSV
ConfidentialityProfile csvProfile = ConfidentialityProfile.LoadFromCsvFile(
    "profiles/hospital_research.csv",
    ConfidentialityProfileOptions.All
);

// Load from JSON
ConfidentialityProfile jsonProfile = ConfidentialityProfile.LoadFromJsonFile(
    "profiles/hospital_research.json",
    ConfidentialityProfileOptions.All
);

// Load from XML
ConfidentialityProfile xmlProfile = ConfidentialityProfile.LoadFromXmlFile(
    "profiles/hospital_research.xml",
    ConfidentialityProfileOptions.All
);

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

// Anonymize files
DicomFile dcm = DicomFile.Open("patient_study.dcm");
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);
anonymizedDcm.Save("anonymized_study.dcm");

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

Сценарій реального світу {#real world-scenario-examples}

Сценарій 1: Внутрішнє забезпечення якості

Зберігати інформацію про інститут і пристрій для внутрішнього відстеження при анонімності даних пацієнта:

TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0010,0030);X
(0008,0080);K
(0008,0081);K
(0008,1010);K
(0008,1090);K
(0018,1000);K

Сценарій 2: Зовнішня науково-дослідна співпраця

Максимальна анонімність з збереженою демографією для досліджень населення:

TagPattern;Action
(0010,0010);X
(0010,0020);X
(0010,0030);X
(0010,0040);K
(0010,1010);K
(0010,1020);K
(0010,1030);K
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0080);X
(0008,0081);X
(0008,1030);X
(0008,103E);X

Сценарій 3: Координація багатосторонніх досліджень

Замінити UID при збереженні дослідницьких відносин для підключення даних:

TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K
(0020,0010);K
(0020,0011);K
(0020,0013);K

Валідація та тестування

Завжди підтверджуйте персоналізовані профілі до запуску виробництва:

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

string profilePath = "profiles/custom_profile.csv";
string testDataFolder = "test_samples";
string outputFolder = "validation_output";

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

Anonymizer anonymizer = new(profile);
Directory.CreateDirectory(outputFolder);

// Process test files
string[] testFiles = Directory.GetFiles(testDataFolder, "*.dcm");
int successCount = 0;
int failCount = 0;

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

Console.WriteLine($"\nValidation Summary:");
Console.WriteLine($"  Succeeded: {successCount}");
Console.WriteLine($"  Failed: {failCount}");
Console.WriteLine($"\nReview output files in: {outputFolder}");

Після запуску валідації відкрийте анонімні файли в дисплеї DICOM і переконайтеся, що очікувані теги змінюються правильно, зберігаються збережені знаки, UID правильно замінюється, і ніяких чутливих даних не залишається в очищених полях.

Завершення (завтрачення)

Пристосовані профілі конфіденційності дають вам гнучкість для впровадження анонімності DICOM, яка точно відповідає політиці приватності вашої організації. Незалежно від того, чи потрібно зберігати конкретні ідентифікатори для внутрішнього використання, зберегти демографію для досліджень, або застосовувати максимальну анонимність для зовнішнього обміну, персоналізовані профилі роблять це можливим.

Ключові рекомендації включають документацію ваших виборів профілю для аудиторських цілей, контроль версії профільних файлів для відстеження змін, ретельно перевіряти профілі перед виробничим використанням, а також періодично переглядати профилі, оскільки вимоги розвиваються.

Для отримання додаткової інформації про анонімність DICOM та АПІ Aspose.Medical, відвідайте ДокументаціяШаблони для загальних профільних сценаріїв доступні в розділі прикладів.

More in this category