Jak vytvořit přizpůsobený profil anonymizace DICOM z CSV, JSON nebo XML

Jak vytvořit přizpůsobený profil anonymizace DICOM z CSV, JSON nebo XML

Tento tutoriál ukazuje, jak vytvořit přizpůsobené profily anonymizace DICOM pomocí souborů CSV, JSON nebo XML v C#. Přizpěvný profil vám umožní přesně definovat, které značky by měly být odstraněny, nahrazeny nebo uchovávány v souladu s konkrétními zásadami ochrany soukromí vaší instituce.

Proč vytvářet přizpůsobené profily?

Předdefinované profily DICOM PS3.15 nemusí splňovat všechny institucionální požadavky.

  • Udržujte specifické institucionální identifikátory pro interní sledovatelnost
  • Použijte organizační pravidla ochrany soukromí
  • Splnění jedinečných regulačních požadavků ve vaší jurisdikci

Aktivity vysvětlené

Následující akce lze použít na tagy DICOM:

AkceKódPopis
VymazatDOdstranit značku zcela z databáze
nulováZVýměna hodnoty za prázdnou nebo nulovou hodnotu
OdstranitXOdstranit, pokud je k dispozici (podobně jako odstranit)
KeepKUdržujte původní hodnotu nezměněnou
CleanCČištění hodnoty odstraněním identifikačních informací
Změna UIDUnahradit novým generovaným UID

Předpoklady: Příprava životního prostředí

  • Nastavení Visual Studio nebo jakéhokoli kompatibilního .NET IDE.
  • Vytvořte nový projekt aplikace .NET 8 konzole.
  • Instalace aplikace Aspose.Medical z programu NuGet Package Manager.
  • Připravte si vlastní profilovou definici.

Krok za krokem Návod k vytváření personalizovaných profilů

Krok 1: Instalace Aspose.Medical

Přidejte do svého projektu knihovnu Aspose.Medicine pomocí aplikace NuGet.

Install-Package Aspose.Medical

Krok 2: Vytvoření definice CSV profilu

Vytvořte soubor CSV se značkami a akcemi.Každá řada specifikuje značku a její akce.

• profil.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

<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=“Kopírování kódu”

<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>

Tento profil:

  • Jméno a ID pacienta Zeros
  • Odstranit datum narození
  • Pacientský sex
  • Náhrada Study, série a SOP Instance UIDs
  • Vymazání informací o instituci
  • Čistý popis studia

Krok 3: Vytvořte definici profilu JSON (alternativní)

Vytvořte soubor JSON se stejnými definicemi značky.

• Profil 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" }
]

Krok 4: Vytvoření definice profilu XML (alternativní)

Vytvořte soubor XML se stejnými definicemi značky.

• Profil 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>

Krok 5: Stáhněte si personalizovaný profil

Stáhněte si přizpůsobený profil pomocí vhodné metody pro váš formát souboru.

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
);

Krok 6: Použijte přizpůsobený profil

Vytvořte anonymizátor s nabitým profilem a aplikujte ho na soubory DICOM.

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");

Kompletní příklad kódu s CSV profilem

Zde je kompletní příklad pomocí přizpůsobeného profilu založeného na CSV:

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!");

Praktické příklady scénáře

Scénář 1: Retain Institution ID pro interní sledování

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

Scénář 2: Nahradit všechny UID při zachování vztahů

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

Scénář 3: Maximální soukromí pro vnější sdílení

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

Validace: Testování vašeho individuálního profilu

Vždy ověřte přizpůsobené profily před použitím výroby:

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

Invalidní soubor

Pokud se profilový soubor nenajde:

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

Invalid Tag Pattern nebo Akce

Ujistěte se, že šablony značky následují formát (GGGG,EEEE) kde GGGG je skupina a EEEE je prvek v hexadecimal. Validní akce jsou: D, Z, X, K, C, U.

Nejlepší postupy pro personalizované profily

  • Version Control: Uložte soubory profilu ve verzi ovládacího prvku pro sledování změn v průběhu času.
  • Dokumentace: Přidejte komentáře, které vysvětlují, proč byly pro každou značku vybrány konkrétní akce.
  • Testování: Validujte profily s testovacími údaji před aplikací na výrobu souborů DICOM.
  • Backup: Vždy uchovávejte zálohování původních profilových souborů.
  • Review: Pravidelně přezkoumává profily, aby zajistila, že stále splňují regulační požadavky.

Další informace

  • Zvažte vytvoření více profilů pro různé případy použití (vnitřní sdílení, externí výzkum atd.).
  • Dokument, který profil byl použit při anonymizaci souborů pro účely auditu.
  • Formáty JSON a XML poskytují lepší strukturu pro komplexní profily s definicemi.

závěr

Tento tutoriál ukázal, jak vytvořit přizpůsobené profily anonymizace DICOM pomocí souborů CSV, JSON nebo XML v C# s Aspose.Medical.

 Čeština