Hogyan készítsünk egy személyre szabott DICOM anonimizációs profilot a CSV, JSON vagy XML-ről
Ez az útmutató azt mutatja, hogyan kell létrehozni a személyre szabott DICOM névtelenítő profilok segítségével CSV, JSON, vagy XML fájlokat a C#. Az egyéni profillal lehetővé teszi, hogy pontosan meghatározza, mely címkéket kell eltávolítani, helyettesíteni vagy megőrizni az intézmény sajátos adatvédelmi politikájának megfelelően.
Miért kell személyre szabott profilokat létrehozni?
Az alapértelmezett DICOM PS3.15 profilok nem felelnek meg az összes intézményi követelménynek.
- Konkrét intézményi azonosítók megőrzése a belső nyomonkövethetőséghez
- Szervezeti adatvédelmi szabályok alkalmazása
- Egyedi szabályozási követelményeknek való megfelelés a joghatóságodban
Tag akciók magyarázata
A következő lépések alkalmazhatók a DICOM címkékre:
| Action | Code | leírása |
|---|---|---|
| Delete | D | Távolítsa el a címkét teljesen az adatkészletből |
| Zero | Z | Az értéket üres vagy nulla értékkel helyettesítjük |
| Remove | X | Eltávolítsa, ha jelen van (hasonló a törléshez) |
| Keep | K | Az eredeti érték megőrzése változatlan |
| Clean | C | Tisztítsa meg az értéket az azonosító információk eltávolításával |
| cserélje ki az UID-t | U | Új generált UID cseréje |
Előfeltételek: a környezet előkészítése
- A Visual Studio vagy bármely kompatibilis .NET IDE beállítása.
- Hozzon létre egy új .NET 8 konzol alkalmazási projektet.
- Telepítse az Aspose.Medical-t a NuGet csomagkezelőből.
- Készítsd el a profil definíciófájlt.
Lépésről lépésre útmutató személyre szabott profilok létrehozásához
1. lépés: Install Aspose.Medical
Add hozzá az Aspose.Medical könyvtárat a projekthez a NuGet használatával.
Install-Package Aspose.Medical2. lépés: Hozzon létre egy CSV profil definíciót
Hozzon létre egy CSV fájlt címkével és cselekvésekkel.Minden vonal egy címkét és annak tevékenységét írja elő.
** profil.csv címkével ellátva: *
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íciós kód”
<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>
Ez a profil:
- Zeros beteg neve és azonosítója
- Születési dátum eltávolítása
- A páciens szex
- A tanulmány, a sorozat és a SOP Instance UID-k helyettesítése
- Eltávolítsa az intézmény információit
- Tiszta tanulmány leírása
3. lépés: Hozzon létre egy JSON profil definíciót (alternatív)
Hozzon létre egy JSON fájlt ugyanazokkal a címkével.
- profil és 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. lépés: XML profil definíció létrehozása (alternatív)
Hozzon létre egy XML fájlt ugyanazokkal a címkével.
• XML profil: *
<?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. lépés: Töltse le a profilját
Töltse le a személyre szabott profilot a megfelelő módszerrel a fájlformátumhoz.
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. lépés: A személyre szabott profil alkalmazása
Hozzon létre egy Anonymizálót a feltöltött profilmal, és alkalmazza a DICOM fájlokra.
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");Tökéletes kódmintát CSV profilmal
Íme egy teljes példa egy CSV-alapú személyre szabott profil használatával:
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!");Praktikus forgatókönyvek példái
1. forgatókönyv: Tartsa be az intézmény azonosítóját belső nyomon követéshez
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);K2. forgatókönyv: A kapcsolatok megőrzése közben cserélje ki az összes UID-t
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K3. forgatókönyv: Maximális magánélet a külső megosztáshoz
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álás: tesztelje az Ön profilját
Mindig érvényesítse a beállított profilokat a gyártás előtt:
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
Invalid fájl útvonal
Ha a profilfájl nem található:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid Tag Pattern vagy cselekvés
Győződjön meg róla, hogy a tag minták kövessék a formátumot (GGGG,EEEE) ahol a GGGG a csoport és az EEEE a hexadecimal elem. érvényes akciók: D, Z, X, K, C, U.
Legjobb módszerek az egyéni profilokhoz
- Version Control: A profilfájlok tárolása a verziós vezérlésben a változások idővel történő nyomon követéséhez.
- Dokumentáció: Hozz megjegyzéseket, amelyek megmagyarázzák, hogy miért választották ki az egyes címkéket.
- Testing: A DICOM fájlok előállítására való alkalmazás előtt ellenőrizze a profilokat tesztadatokkal.
- Backup: Mindig tartsa az eredeti profilfájlok biztonsági mentését.
- Review: A profilokat rendszeresen felülvizsgáljuk annak biztosítása érdekében, hogy továbbra is megfeleljenek a szabályozási követelményeknek.
További információk
- Tekintse meg a különböző felhasználási esetekhez szükséges több profil létrehozását (belső megosztás, külső kutatás stb.).
- Dokumentum, amelynek profilját a fájlokat könyvvizsgálat céljából anonimizálva használták.
- A JSON és az XML formátumok jobb szerkezetet kínálnak a bonyolult profilok számára.
következtetések
Ez a kézikönyv megmutatta, hogyan kell létrehozni személyre szabott DICOM névtelenítési profilok segítségével CSV, JSON, vagy XML fájlokat C# Aspose.Medical.A személyes profilokat a rugalmasságot, hogy végre az intézmény-specifikus adatvédelmi politikák, miközben fenntartja a megfelelést az egészségügyi előírások.