Ako vytvoriť prispôsobený profil anonymizácie DICOM z CSV, JSON alebo XML
Tento tutoriál ukazuje, ako vytvoriť prispôsobené profily anonymizácie DICOM pomocou súborov CSV, JSON alebo XML v C#. Custom profiles vám umožňujú presne definovať, ktoré značky by mali byť odstránené, nahradené alebo zachované v súlade s konkrétnymi politikami ochrany osobných údajov vašej inštitúcie.
Prečo vytvárať personalizované profily?
Preddefinované profily DICOM PS3.15 nemusí spĺňať všetky inštitucionálne požiadavky.
- Udržiavať špecifické inštitucionálne identifikátory pre vnútornú sledovateľnosť
- Uplatňujte pravidlá súkromia špecifické pre organizáciu
- Spĺňa jedinečné regulačné požiadavky vo vašej jurisdikcii
Tag Akcie vysvetlené
Nasledujúce akcie sa môžu použiť na značky DICOM:
| Action | Code | Popis |
|---|---|---|
| Delete | D | Odstráňte značku úplne z databázy |
| Zero | Z | nahradiť hodnotu prázdnou alebo nulovou hodnotou |
| Remove | X | Odstrániť, ak je prítomný (podobné ako odstránenie) |
| Keep | K | Udržujte pôvodnú hodnotu nezmenenú |
| Clean | C | Vyčistite hodnotu odstránením identifikačných informácií |
| nahradiť UID | U | nahradiť novým generovaným UID |
Predpoklady: Príprava životného prostredia
- Nastaviť Visual Studio alebo akýkoľvek kompatibilný .NET IDE.
- Vytvorte nový projekt aplikácie .NET 8 konzoly.
- Inštalovať Aspose.Medical z NuGet Package Manager.
- Pripravte svoj vlastný profil definície súboru.
Krok za krokom sprievodca vytváraním prispôsobených profilov
Krok 1: Inštalácia Aspose.Medical
Pridajte do projektu Aspose.Medicínska knižnica pomocou NuGet.
Install-Package Aspose.MedicalKrok 2: Vytvorenie definície CSV profilu
Vytvorte súbor CSV s značkovými vzormi a akciami.Každá čiara špecifikuje značku a jej akciu.
- 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írovanie 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:
- Názov a identifikácia pacienta Zeros
- Odstrániť dátum narodenia
- Pre pacienta sex
- nahrádza štúdium, sériu a SOP Instance UID
- Odstráni informácie o inštitúcii
- Čistý popis štúdie
Krok 3: Vytvorenie definície profilu JSON (alternatívne)
Vytvorte súbor JSON s rovnakými definíciami 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: Vytvorenie definície profilu XML (alternatívne)
Vytvorte súbor XML s rovnakými definíciami 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: Stiahnite si vlastný profil
Stiahnite si vlastný profil pomocou vhodnej metódy pre váš formát súboru.
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: Aplikujte vlastný profil
Vytvorte anonymizátor s nahraným profilom a aplikujte ho na súbory 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ý príklad kódu s profilom CSV
Tu je úplný príklad pomocou personalizované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!");Príklady praktického scenára
Scenár 1: Udržať inštitúciu ID pre vnútorné sledovanie
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);KScenár 2: Nahrať všetky UID pri zachovaní vzťahov
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);KScenár 3: Maximálna súkromie pre externé zdieľanie
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);XValidácia: Testovanie vášho personalizovaného profilu
Vždy overte prispôsobené profily pred 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á súborová cesta
Ak sa profilový súbor nenachádza:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid Tag Pattern alebo Akcia
Uistite sa, že šablóny značky nasledujú formát (GGGG,EEEE) kde GGGG je skupina a EEEE je prvok v hexadecimal. Validné akcie sú: D, Z, X, K, C, U.
Najlepšie postupy pre personalizované profily
- Version Control: Uložte súbory profilu v verzii ovládania na sledovanie zmien v priebehu času.
- Dokumentácia: Pridajte komentáre vysvetľujúce, prečo boli pre každú značku vybrané konkrétne akcie.
- Testovanie: Validujte profily s testovanými údajmi pred aplikáciou na výrobu súborov DICOM.
- Backup: Vždy uchovávať zálohovanie originálnych profilových súborov.
- Review: Pravidelne preskúmať profily, aby sa zabezpečilo, že stále spĺňajú regulačné požiadavky.
Dodatočné informácie
- Zvážte vytvorenie viacerých profilov pre rôzne prípady použitia (vnútorné zdieľanie, externé výskumy atď.).
- Dokument, ktorý profil bol použitý pri anonymizácii súborov na účely auditu.
- JSON a XML formáty ponúkajú lepšiu štruktúru pre komplexné profily s neštandardnými definíciami.
Záver
Tento tutoriál ukázal, ako vytvoriť prispôsobené profily anonymizácie DICOM pomocou súborov CSV, JSON alebo XML v C# s Aspose.Medical.