Hvordan lage en tilpasset DICOM-anonymiseringsprofil fra CSV, JSON eller XML
Denne veiledningen viser hvordan du oppretter tilpassede DICOM-anonymiseringsprofiler ved hjelp av CSV, JSON eller XML-filer i C#. Personlige profiler lar deg definere nøyaktig hvilke tags som skal fjernes, erstattes eller bevares i henhold til institusjonens spesifikke personvernerklæringer.
Hvorfor lage personlig profil?
Forhåndsdefinerte DICOM PS3.15-profiler kan ikke oppfylle alle institusjonelle krav.
- Oppbevar spesifikke institusjonelle identifikatorer for intern sporbarhet
- Bruk organisasjonsspesifikke personvernregler
- Oppfylle unike regulatoriske krav i din jurisdiksjon
Tag aksjoner forklart
Følgende handlinger kan brukes til DICOM-tagger:
| Action | Code | Description |
|---|---|---|
| Delete | D | Fjern etiketten helt fra datasettet |
| Zero | Z | Endre verdien med et tomt eller null verdi |
| Remove | X | Fjern hvis det er til stede (lik som fjerne) |
| Keep | K | Oppbevar den opprinnelige verdien endret |
| Clean | C | Rengjør verdien ved å fjerne identifiserende informasjon |
| Utskiftes med UID | U | Utskift med en ny generert UID |
Forutsetninger: Å forberede miljøet
- Installer Visual Studio eller noe kompatibelt .NET IDE.
- Skap et nytt .NET 8 konsolapplikasjon prosjekt.
- Installere Aspose.Medical fra NuGet Package Manager.
- Forbered din tilpassede profil definisjon fil.
Step-by-step guide for å lage tilpassede profiler
Steg 1: Installere Aspose.Medical
Legg til Aspose.Medical Library til prosjektet ditt ved hjelp av NuGet.
Install-Package Aspose.MedicalSteg 2: Lag en CSV-profildefinisjon
Skap en CSV-fil med tagmuster og handlinger. Hver linje angir et tag og dens handling.
** profil.csv er: *
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 koden”
<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 profilen:
- Zeros pasient navn og ID
- Fjern fødselsdato
- Keeps pasient sex
- Kompletter Study, Series og SOP Instance UIDs
- Fjerner institusjonsinformasjon
- Cleans studiebeskrivelse
Trinn 3: Lag en JSON profildefinisjon (alternativ)
Lag en JSON-fil med de samme definisjonene.
- Profiler av 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" }
]Steg 4: Lag en XML profildefinisjon (alternativ)
Lag en XML-fil med de samme definisjonene.
- Profil og 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>Steg 5: Last ned personlig profil
Last ned den tilpassede profilen ved hjelp av den egnede metoden for filformatet.
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
);Steg 6: Bruk den tilpassede profilen
Lag en Anonymiser med den lastede profilen og bruk 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");Komplett kodeksempel med CSV-profil
Her er et komplett eksempel ved hjelp av en CSV-basert tilpasset 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!");Praktisk scenario eksempler
Scenario 1: Retain Institution ID for intern sporing
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);KScenario 2: Bytt ut alle UID mens du opprettholder relasjoner
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);KScenario 3: Maksimal 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: Testing av din personlige profil
Alltid validerer tilpassede profiler før produksjon bruk:
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 File Path
Hvis profilfilen ikke kan bli funnet:
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 mø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.
Beste praksis for tilpassede profiler
- Version Control: Lagre profilfiler i versjonskontroll for å spore endringer over tid.
- Dokumentasjon: Legg til kommentarer som forklarer hvorfor spesifikke handlinger ble valgt for hver tag.
- Testing: Validerer profiler med testdata før du bruker DICOM-filer.
- Backup: Altid lagre sikkerhetskopier av originale profilfiler.
- Review: Regelmessig gjennomgå profiler for å sikre at de fortsatt oppfyller regulatoriske krav.
Ytterligere informasjon
- Tenk på å skape flere profiler for ulike brukssaker (intern deling, ekstern forskning, etc.).
- Dokumenter som profilen ble brukt til å anonymisere filer for revisjonsformål.
- JSON og XML-formater gir bedre struktur for komplekse profiler med nestede definisjoner.
Conclusion
Denne veiledningen har vist hvordan du oppretter tilpassede DICOM-anonymiseringsprofiler ved hjelp av CSV, JSON eller XML-filer i C# med Aspose.Medical.