Hvordan lage en tilpasset DICOM-anonymiseringsprofil fra CSV, JSON eller XML

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:

ActionCodeDescription
DeleteDFjern etiketten helt fra datasettet
ZeroZEndre verdien med et tomt eller null verdi
RemoveXFjern hvis det er til stede (lik som fjerne)
KeepKOppbevar den opprinnelige verdien endret
CleanCRengjør verdien ved å fjerne identifiserende informasjon
Utskiftes med UIDUUtskift 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.Medical

Steg 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);K

Scenario 2: Bytt ut alle UID mens du opprettholder relasjoner

TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K

Scenario 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);X

Validering: 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.

 Norsk