Kako stvoriti prilagođeni DICOM anonimni profil iz CSV, JSON ili XML
Ovaj tutorial pokazuje kako stvoriti prilagođene profile anonimnosti DICOM-a pomoću CSV, JSON ili XML datoteka u C#. Prilagođeni profili omogućuju vam da točno definirate koje oznake treba ukloniti, zamijeniti ili zadržati u skladu s posebnim politikama privatnosti vaše institucije.
Zašto napraviti prilagođene profile?
Predefinirani DICOM PS3.15 profili možda ne zadovoljavaju sve institucionalne zahtjeve.
- Održavanje specifičnih institucionalnih identifikacija za unutarnju praćenost
- Primjenjujte pravila privatnosti posebne za organizaciju
- Usklađivanje jedinstvenih regulatornih zahtjeva u vašoj jurisdikciji
Tag akcije objašnjeno
Sljedeće mjere mogu se primjenjivati na DICOM oznake:
| Action | Code | Opis |
|---|---|---|
| Delete | D | Uklanjanje oznake u potpunosti iz zbirke podataka |
| Zero | Z | Zamijenite vrijednost praznom ili nula vrijednošću |
| Remove | X | Uklanjanje ako je prisutno (sličan uklanjanju) |
| Keep | K | Održavanje originalne vrijednosti nepromijenjene |
| Clean | C | Čišćenje vrijednosti uklanjanjem identifikacijskih informacija |
| Zamjena s UID | U | Zamjena s novim generiranim UID-om |
Predviđanja: Priprema za okoliš
- Sastavite Visual Studio ili bilo koji kompatibilni .NET IDE.
- Stvorite novi .NET 8 konzol aplikacijski projekt.
- Instalirajte Aspose.Medical iz upravitelja paketa NuGet.
- Pripremite svoj prilagođeni profil definicije datoteke.
Korak po korak vodič za stvaranje prilagođenih profila
Korak 1: Instalirati Aspose.Medical
Dodajte Aspose.Medical knjižnicu u svoj projekt pomoću NuGeta.
Install-Package Aspose.MedicalKorak 2: Stvorite definiciju CSV profila
Stvorite CSV datoteku s oznakama i akcijama. svaka linija određuje oznaku i njezinu akciju.
- Profil i 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=“kopiranje koda”
<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>
Ovaj profil:
- Zeros ime i identifikacija pacijenta
- Uklanjanje datuma rođenja
- Pacijentski seks
- Umjesto studija, serije i SOP instance UID-a
- Uklanjanje institucijskih informacija
- Čišćenje studija opis
Korak 3: Stvorite definiciju JSON profila (alternativno)
Stvorite JSON datoteku s istim definicijama oznake.
- Profil.json i dalje: *
[
{ "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" }
]Korak 4: Kreirajte definiciju XML profila (alternativna)
Stvorite XML datoteku s istim definicijama oznake.
- 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>Korak 5: Preuzmite prilagođeni profil
Preuzmite prilagođeni profil pomoću odgovarajuće metode za vaš format datoteke.
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
);Korak 6: Primijenite prilagođeni profil
Stvorite Anonimizator s preuzimanim profilom i primijenite ga na DICOM datoteke.
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");Cjeloviti primjer koda s CSV profilom
Ovdje je potpuni primjer pomoću prilagođenog profila koji se temelji na CSV-u:
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!");Primjeri praktičnog scenarija
Scenarij 1: zadržavanje institucijskog ID-a za unutarnje praćenje
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);KScenarij 2: Zamijenite sve UID-ove dok održavate odnose
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);KScenarij 3: Maksimalna privatnost za vanjsko dijeljenje
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);XValidacija: testiranje vašeg personaliziranog profila
Uvijek provjerite prilagođene profile prije upotrebe proizvodnje:
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
Invalidni put datoteke
Ako se profilni datoteka ne može pronaći:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid Tag Pattern ili akcija
Sigurna oznaka uzoraka slijede formatu (GGGG,EEEE) gdje je GGGG skupina i EEEE je element u hexadecimal. valjane akcije su: D, Z, X, K, C, U.
Najbolje prakse za prilagođene profile
- Version Control: Skladišite datoteke profila u verziji za praćenje promjena s vremenom.
- Dokumentacija: Dodajte komentare koji objašnjavaju zašto su za svaku oznaku odabrane određene akcije.
- Testing: Validirati profile s testnim podacima prije podnošenja zahtjeva za proizvodnju DICOM datoteke.
- Backup: Uvijek sačuvajte kopiju originalnih profilnih datoteka.
- Review: Periodično pregledavanje profila kako bi se osiguralo da i dalje ispunjavaju regulatorne zahtjeve.
Dodatne informacije
- Razmislite o stvaranju više profila za različite slučajeve korištenja ( unutarnje dijeljenje, vanjske istraživanja, itd.).
- Dokument koji je profil koristio za anonimizaciju datoteka u svrhu revizije.
- JSON i XML formati pružaju bolju strukturu za složene profile s nestiranim definicijama.
zaključak
Ovaj tutorial je pokazao kako stvoriti prilagođene DICOM anonimizacije profila pomoću CSV, JSON, ili XML datoteke u C# s Aspose.Medical.