Kaip sukurti pritaikytą DICOM anonimiškumo profilį iš CSV, JSON ar XML
Šis mokymas rodo, kaip sukurti pritaikytus DICOM anonimiškumo profilius naudojant CSV, JSON ar XML failus C#. Pritaikyti profiliai leidžia tiksliai apibrėžti, kurios žymės turėtų būti pašalintos, pakeistos arba išsaugotos pagal konkrečią jūsų įstaigos privatumo politiką.
Kodėl reikia sukurti pritaikytus profilius?
Iš anksto apibrėžti DICOM PS3.15 profiliai gali neatitikti visų institucinių reikalavimų.
- Išsaugoti konkrečius institucinius identifikatorius vidaus atsekamumui
- Taikykite organizacijos-specifines privatumo taisykles
- Atitinka unikalius reguliavimo reikalavimus jūsų jurisdikcijoje
Veiksmai paaiškinti
Šie veiksmai gali būti taikomi DICOM žymėms:
| Action | Code | Description |
|---|---|---|
| Delete | D | Visiškai pašalinti etiketę iš duomenų rinkinio |
| Zero | Z | Vertę pakeiskite tuščią arba nulinę vertę. |
| Remove | X | Pašalinti, jei esate (pavyzdžiui, panašus į Pašalinti) |
| Keep | K | Išsaugokite originalią vertę nepakeista |
| Clean | C | Išvalyti vertę pašalinant identifikuojančią informaciją |
| Pakeiskite UID | U | Pakeiskite naują sukurtą UID |
Žymos archyvas: paruošti aplinką
- Įdiegti „Visual Studio“ arba bet kokį suderinamą .NET IDE.
- Sukurkite naują .NET 8 konsolės programos projektą.
- Įdiegti Aspose.Medical iš NuGet paketų valdytojo.
- Paruoškite savo pritaikytą profilio apibrėžimo failą.
Žingsnis po žingsnio, kaip sukurti pritaikytus profilius
1 žingsnis: įdiegti Aspose.Medical
Pridėti Aspose.Medicinos biblioteką į savo projektą naudojant NuGet.
Install-Package Aspose.Medical2 žingsnis: sukurkite CSV profilio apibrėžimą
Sukurkite CSV failą su žymėjimo pavyzdžiais ir veiksmais. Kiekviena eilutė nurodo ženklą ir jo veiksmus.
- Pranešimas apie CV: *
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=“Kopijuoti kodą”
<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>
Šis profilis:
- Zeros paciento vardas ir tapatybė
- Pašalinti gimimo datą
- Pacientų seksas
- Studijos, serijos ir SOP instance UID pakeitimas
- Ištrina institucijos informaciją
- Mokslinių tyrimų aprašymas
3 žingsnis: sukurkite JSON profilio apibrėžimą (alternatyvią)
Sukurkite JSON failą su tuo pačiu žymėjimo apibrėžimu.
Žymos archyvas: 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 žingsnis: XML profilio apibrėžimas (alternatyvus)
Sukurkite XML failą su tuo pačiu žymėjimo apibrėžimu.
• XML profilis: *
<?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 žingsnis: atsisiųskite pritaikytą profilį
Atsisiųskite pritaikytą profilį naudodami tinkamą jūsų failų formato metodą.
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 žingsnis: Įdiegti pritaikytą profilį
Sukurkite Anonymizatorių su įkeltu profilu ir taikykite jį DICOM failams.
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");Išsamus kodo pavyzdys su CSV profiliu
Štai pilnas pavyzdys, naudojant CSV pagrindu pritaikytą profilį:
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!");Praktiniai scenarijų pavyzdžiai
1 scenarijus: išlaikyti institucijos ID vidiniam stebėjimui
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);K2 scenarijus: pakeisti visus UID išlaikant santykius
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K3 scenarijus: maksimalus privatumas išoriniam pasidalijimui
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);XValidavimas: išbandykite savo asmeninį profilį
Visada patvirtinkite pritaikytus profilius prieš naudojant gamybą:
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
Neteisingas failo kelias
Jei profilio failą negalima rasti:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid Tag Pattern arba Veiksmas
Įsitikinkite, kad pažymėjimo modeliai sekia formatą (GGGG,EEEE) kur GGGG yra grupė ir EEEE yra elementas hexadecimal. galiojantys veiksmai yra: D, Z, X, K, C, U.
Geriausios praktikos pritaikytam profiliui
- Versijos kontrolė: Profilo failus saugokite versijos valdyme, kad laikui bėgant stebėtumėte pokyčius.
- Dokumentacija: Pridėkite komentarus, paaiškinančius, kodėl kiekvienam žymui buvo pasirinkti konkretūs veiksmai.
- Testing: Įvertinkite profilius su bandymų duomenimis prieš kreipdamiesi į DICOM failus.
- Backup: visada saugokite originalių profilio failų atsargines kopijas.
- Apžvalga: Reguliariai peržiūrėkite profilį, kad jie vis dar atitiktų reguliavimo reikalavimus.
Papildoma informacija
- Apsvarstykite įvairių profilių kūrimą skirtingiems naudojimo atvejams (vidinis pasidalijimas, išoriniai tyrimai ir tt).
- Dokumentas, kurio profilis buvo naudojamas anonimizuojant failus audito tikslais.
- JSON ir XML formatai siūlo geresnę struktūrą sudėtingoms profiliams, turintiems apibrėžtį.
Conclusion
Šis mokymas parodė, kaip sukurti pritaikytus DICOM anonimiškumo profilius naudojant CSV, JSON ar XML failus C# su Aspose.Medical.