Kā izveidot personalizētu DICOM anonimizācijas profilu no CSV, JSON vai XML
Šajā apmācībā parādās, kā izveidot personalizētus DICOM anonimizācijas profilus, izmantojot CSV, JSON vai XML failus C#. personalizētie profili ļauj precīzi noteikt, kuras tags jānoņem, jāaizstāj vai jāuzglabā saskaņā ar jūsu institūcijas īpašo privātuma politiku.
Kāpēc izveidot personalizētus profilus?
Predefinēti DICOM PS3.15 profili var neatbilst visām institucionālajām prasībām.
- Uzglabāt konkrētus institucionālos identifikatorus iekšējai izsekojamībai
- Pielietojiet organizācijas specifiskos privātuma noteikumus
- Atbilst unikālajām regulatīvajām prasībām jūsu jurisdikcijā
Tag Akcijas izskaidrots
Šie pasākumi var tikt piemēroti DICOM tags:
| Action | Code | Description |
|---|---|---|
| Delete | D | Izņemt etiķeti pilnībā no datu kopas |
| Zero | Z | Aizstāt vērtību ar tukšu vai nulles vērtības |
| Remove | X | Izņemt, ja pastāv (līdzīgi kā dzēst) |
| Keep | K | saglabāt sākotnējo vērtību nemainīgu |
| Clean | C | Noslēdziet vērtību, noņemot identificējošo informāciju |
| Aizstāt ar UID | U | Aizstāt ar jaunu ģenerēto UID |
Priekšnoteikumi: Vides sagatavošana
- Iestatīt Visual Studio vai jebkuru saderīgu .NET IDE.
- Izveidojiet jaunu .NET 8 konsoles lietojumprogrammu projektu.
- Instalējiet Aspose.Medical no NuGet Package Manager.
- Sagatavojiet savu personalizēto profila definīcijas failu.
Pakāpeniski ceļvedis, lai izveidotu personalizētus profilus
1. solis: instalēt Aspose.Medical
Pievienojiet Aspose.Medicīnas bibliotēku savam projektam, izmantojot NuGet.
Install-Package Aspose.Medical2. solis: izveidot CSV profila definīciju
Izveidojiet CSV failu ar etiķetes modeļiem un darbībām. katra līnija nosaka etiķi un tā darbību.
** profils.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=“Kopijas kods”
<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 profils:
- Zeros pacienta vārds un identifikācija
- Izslēdz dzimšanas datumu
- Pacientu sekss
- Aizstāj Study, Series un SOP Instance UID
- Izdzēš iestādes informāciju
- Cleans pētījuma apraksts
3. solis: izveidojiet JSON profila definīciju (alternatīvu)
Izveidojiet JSON failu ar tām pašām etiķetes definīcijām.
- profils.jsons ir: *
[
{ "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. solis: izveidojiet XML profila definīciju (alternatīvu)
Izveidojiet XML failu ar tādiem pašiem etiķetes definīcijām.
- 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>5. solis: Lejupielādēt personalizēto profilu
Lejupielādējiet pielāgotu profilu, izmantojot atbilstošu metodi jūsu faila formātā.
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. solis: Pielietojiet personalizēto profilu
Izveidojiet anonimizatoru ar lādēto profilu un piemērojiet to DICOM failiem.
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");Pilns koda piemērs ar CSV profilu
Šeit ir pilns piemērs, izmantojot CSV balstītu personalizēto profilu:
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!");Praktiskā scenārija piemēri
1. scenārijs: Iestādes ID saglabāšana iekšējai uzraudzībai
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);K2. scenārijs: aizstāt visus UID, saglabājot attiecības
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K3. scenārijs: Maksimālais privātums ārējai dalībai
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ācija: Jūsu personalizētā profila pārbaude
Vienmēr validējiet pielāgotus profilus pirms ražošanas lietošanas:
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
Invalīdu failu maršruts
Ja profila failu nevar atrast:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid Tag Pattern vai rīcība
Pārliecinieties, ka etiķetes veidnes seko formātā (GGGG,EEEE) kur GGGG ir grupa un EEEE ir hexadecimal elements. derīgas darbības ir: D, Z, X, K, C, U.
Labākās prakses personalizētiem profiliem
- Version Control: Uzglabājiet profilu failus versijas kontrolē, lai laika gaitā izsekotu izmaiņas.
- Dokumentācija: Pievienojiet komentārus, kas izskaidro, kāpēc katrai marķējumam tika izvēlēti konkrēti pasākumi.
- Testēšana: validējiet profili ar testēšanas datiem pirms pieteikšanās DICOM failu ražošanai.
- Backup: Vienmēr saglabā oriģinālu profila failus.
- Review: Periodiski pārskatiet profili, lai pārliecinātos, ka tie joprojām atbilst regulatīvajām prasībām.
Papildu informācija
- Apsveriet vairāku profilu izveidi dažādiem lietojuma gadījumiem (interna dalīšana, ārējie pētījumi utt.).
- Dokuments, kuru profils tika izmantots, anonimizējot failus revīzijas nolūkos.
- JSON un XML formāti piedāvā labāku struktūru sarežģītiem profiliem ar nested definīcijām.
Conclusion
Šis tutorial ir parādījis, kā izveidot pielāgotus DICOM anonimizācijas profili, izmantojot CSV, JSON vai XML failus C# ar Aspose.Medical.