Hvordan man opretter en tilpasset DICOM-anonymiseringsprofil fra CSV, JSON eller XML
Denne tutorial viser, hvordan man opretter tilpassede DICOM anonymiseringsprofiler ved hjælp af CSV, JSON eller XML-filer i C#. Custom profiler giver dig mulighed for at definere præcis, hvilke tags der skal fjernes, erstattes eller bevares i henhold til din institutionens specifikke privatlivspolitik.
Hvorfor oprette personlige profiler?
Fordefinerede DICOM PS3.15 profiler kan ikke opfylde alle institutionelle krav. Tilpassede profiler giver dig mulighed for:
- Opbevar specifikke institutionelle identifikatorer for intern sporbarhed
- Anvend organisationspecifik privatlivsregler
- Opfylde unikke reguleringsmæssige krav i din jurisdiktion
Tag Aktioner forklaret
Følgende handlinger kan anvendes til DICOM tags:
| Action | Code | Beskrivelse |
|---|---|---|
| Delete | D | Fjern taggen helt fra dataset |
| Zero | Z | Udskift værdien med en tom eller nul værdi |
| Remove | X | Fjern, hvis der er (lignende til fjerne) |
| Keep | K | Bevar den oprindelige værdi uændret |
| Clean | C | Rengør værdien ved at fjerne identificerende oplysninger |
| Udskiftning af UID | U | Udskiftning af en ny genereret UID |
Forside: Forberedelse af miljøet
- Indstill Visual Studio eller ethvert kompatibelt .NET IDE.
- Skab et nyt .NET 8 applikationsprojekt.
- Installere Aspose.Medical fra NuGet Package Manager.
- Forbered din brugerdefinerede profilfil.
Step-by-step guide til at oprette tilpassede profiler
Trin 1: Installation af Aspose.Medical
Tilføj Aspose.Medicinsk bibliotek til dit projekt ved hjælp af NuGet.
Install-Package Aspose.MedicalTrin 2: Skab en CSV-profildefinition
Skab en CSV-fil med tagmønstre og handlinger. Hver linje angiver en tag og dens handling.
- profil.csv på: *
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=“Kopierer kode”
<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>
Denne profil:
- Zeros patient navn og ID
- Fjern fødselsdato
- Kæmper patient sex
- Udskift Study, Series og SOP Instance UIDs
- Fjerner institutionens oplysninger
- Cleans undersøgelse beskrivelse
Trin 3: Skab en JSON Profile Definition (Alternativ)
Skab en JSON-fil med de samme tagdefinitioner.
- Profil af 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" }
]Trin 4: Skab en XML-profildefinition (alternativ)
Skab en XML-fil med de samme tagdefinitioner.
- Profiler i 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>Trin 5: Lade din personlige profil op
Lad den tilpassede profil op ved hjælp af den passende metode til dit filformat.
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
);Trin 6: Anvende den tilpassede profil
Skab en Anonymiser med den opladte profil og anvende den til DICOM-filer.
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");Fuld kodeksempel med CSV-profil
Her er et komplet eksempel ved hjælp af en CSV-baseret 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!");Praktiske scenarier eksempler
Scenario 1: Retain Institution ID for intern sporing
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);KScenario 2: Udskift alle UID’er, mens du bevarer relationer
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);KScenario 3: Maximum privatliv for ekstern deling
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);XValidering: Test din personlige profil
Altid validerer brugerdefinerede profiler før produktionsanvendelse:
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 filvej
Hvis filen ikke kan findes:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid tag mønster eller handling
Sørg for at tagmønstre følger formatet (GGGG,EEEE) hvor GGGG er gruppen og EEEE er elementet i hexadecimal. gyldige handlinger er: D, Z, X, K, C, U.
Best Practices for Custom Profiles
- Version Control: Lagre profilfiler i versionskontrol for at spore ændringer over tid.
- Dokumentation: Tilføj kommentarer, der forklarer, hvorfor specifikke handlinger blev valgt for hver tag.
- Testing: Validerer profiler med testdata, før du ansøger om at producere DICOM-filer.
- Backup: Altid holde backup af originale profilfiler.
- Review: Regelmæssigt gennemgå profiler for at sikre, at de stadig opfylder reguleringsmæssige krav.
Yderligere information
- Overveje at oprette flere profiler til forskellige brugssager (intern deling, ekstern forskning osv.).
- Dokument, hvis profil blev brugt til anonymisering af filer til revisionssyfte.
- JSON og XML-formater giver bedre struktur til komplekse profiler med nestede definitioner.
Konklusion
Denne tutorial har vist, hvordan man opretter tilpassede DICOM anonymisering profiler ved hjælp af CSV, JSON, eller XML filer i C# med Aspose.Medical.