Mens prædefinerede DICOM PS3.15 fortrolighedsprofiler dækker mange brugs tilfælde, sundhedsinstitutioner ofte har unikke privatlivskrav. I denne vejledning, vil du lære, hvordan design tilpassede DIKOM anonymisering profiler, der er i overensstemmelse med din organisations specifikke politikker. Vi vil dække tag mønstre, handlinger, og levere malerier i CSV, JSON og XML formater.

Tabellen af indhold

Hvorfor tilpassede profiler er nødvendige

Fordefinerede fortrolighedsprofiler giver et solidt fundament, men de kan ikke opfylde alle institutionelle krav. Du kan have brug for tilpassede profiler, når din organisation kræver opbevaring af specifikke institutionsidentifikatorer for intern sporbarhed, mens stadig anonymiserer patientdata. Nogle forskningssamarbejde kan behøve visse demografier bevaret samtidig med fjernelse af direkte identifikatører. Interne kvalitetssikring arbejdsprocesser kan kræve enhedoplysninger, som standardprofiler vil fjernes. Derudover kan regionale forordninger bestemme specifik håndtering af bestemte dataelementer.

Tilpassede profiler giver dig nøjagtig kontrol over, hvilke DICOM-tegn ændres og hvordan, hvilket gør det muligt at overholde dine specifikke dataforvaltningspolitikker.

Forstå Tag Patterns og Aktioner

DICOM-tegn er identificeret af gruppe- og elementnummer i formatet (GGGG,EEEE). For eksempel er Patient navn (0010,0010) og patient ID er ( 0010.0020). Custom profiler angiver mønstre, der matcher disse tags og handlinger til at anvende.

De tilgængelige handlinger omfatter D (Delete), der fjerner tagget fuldt ud fra dataset, **Z (Zero)**, som erstattes med et tomt eller nul-længde værdi, X (Remove), hvor taggen fjernes, hvis der er lignende til Delete, K (Keep), der bevarer det oprindelige værdier uændret,**C (Clean), hvilket rengjør værdien ved at fjerne identifierende informationer kontekstuelt, og **U (Replace with UID).

Vælg den rigtige handling afhænger af din brug. Brug D eller X for tag, der aldrig bør vises i anonymiseret udgang. brug Z, når tagen skal eksistere, men skal være tom. bruge K for tags, du ønsker at bevare nøjagtigt. bruger C for tekstfelter, som kan indeholde indbyggede identifikatorer.

Opbygning af brugerdefinerede profiler

Tilpassede profiler kan defineres i tre formater.Vælg den, der passer bedst til dit arbejdsproces.

CSV format

CSV er det nemmeste format, ideelt til enkle profiler:

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
(0008,103E);C
(0010,1010);K
(0010,1030);K

Denne profil zeros patient navn og ID, fjerner fødselsdato, bevarer patientens køn og demografi, erstattet alle UID’er, sletter institutionens oplysninger og renser beskrivelser.

JSON format

JSON giver bedre struktur til komplekse profiler med metadata:

{
  "profileName": "Hospital Research Profile",
  "version": "1.0",
  "description": "Custom profile for research data sharing",
  "actions": [
    { "TagPattern": "(0010,0010)", "Action": "Z", "Comment": "Patient Name" },
    { "TagPattern": "(0010,0020)", "Action": "Z", "Comment": "Patient ID" },
    { "TagPattern": "(0010,0030)", "Action": "X", "Comment": "Birth Date" },
    { "TagPattern": "(0010,0040)", "Action": "K", "Comment": "Patient Sex" },
    { "TagPattern": "(0020,000D)", "Action": "U", "Comment": "Study Instance UID" },
    { "TagPattern": "(0020,000E)", "Action": "U", "Comment": "Series Instance UID" },
    { "TagPattern": "(0008,0018)", "Action": "U", "Comment": "SOP Instance UID" },
    { "TagPattern": "(0008,0080)", "Action": "D", "Comment": "Institution Name" },
    { "TagPattern": "(0008,0081)", "Action": "D", "Comment": "Institution Address" },
    { "TagPattern": "(0008,1030)", "Action": "C", "Comment": "Study Description" }
  ]
}

XML formater

XML er foretrukket for miljøer med eksisterende XML-værktøjer:

<?xml version="1.0" encoding="utf-8"?>
<ConfidentialityProfile name="Hospital Research Profile" version="1.0">
  <Description>Custom profile for research data sharing</Description>
  <TagActions>
    <TagAction TagPattern="(0010,0010)" Action="Z">Patient Name</TagAction>
    <TagAction TagPattern="(0010,0020)" Action="Z">Patient ID</TagAction>
    <TagAction TagPattern="(0010,0030)" Action="X">Birth Date</TagAction>
    <TagAction TagPattern="(0010,0040)" Action="K">Patient Sex</TagAction>
    <TagAction TagPattern="(0020,000D)" Action="U">Study Instance UID</TagAction>
    <TagAction TagPattern="(0020,000E)" Action="U">Series Instance UID</TagAction>
    <TagAction TagPattern="(0008,0018)" Action="U">SOP Instance UID</TagAction>
    <TagAction TagPattern="(0008,0080)" Action="D">Institution Name</TagAction>
    <TagAction TagPattern="(0008,0081)" Action="D">Institution Address</TagAction>
    <TagAction TagPattern="(0008,1030)" Action="C">Study Description</TagAction>
  </TagActions>
</ConfidentialityProfile>

Lader tilpassede profiler i kode

Laden af brugerdefinerede profiler i din .NET-applikation er simpel:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load from CSV
ConfidentialityProfile csvProfile = ConfidentialityProfile.LoadFromCsvFile(
    "profiles/hospital_research.csv",
    ConfidentialityProfileOptions.All
);

// Load from JSON
ConfidentialityProfile jsonProfile = ConfidentialityProfile.LoadFromJsonFile(
    "profiles/hospital_research.json",
    ConfidentialityProfileOptions.All
);

// Load from XML
ConfidentialityProfile xmlProfile = ConfidentialityProfile.LoadFromXmlFile(
    "profiles/hospital_research.xml",
    ConfidentialityProfileOptions.All
);

// Create anonymizer with custom profile
Anonymizer anonymizer = new(csvProfile);

// Anonymize files
DicomFile dcm = DicomFile.Open("patient_study.dcm");
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);
anonymizedDcm.Save("anonymized_study.dcm");

Console.WriteLine("Anonymization completed with custom profile!");

Eksempler på real-world scenario

Scenario 1: intern kvalitetssikring

Opbevar institution og enhedsinformation til intern sporing samtidig med anonymisering af patientdata:

TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0010,0030);X
(0008,0080);K
(0008,0081);K
(0008,1010);K
(0008,1090);K
(0018,1000);K

Scenario 2: Eksterne forskningssamarbejde

Maksimal anonymisering med bevaret demografi for befolkningsstudier:

TagPattern;Action
(0010,0010);X
(0010,0020);X
(0010,0030);X
(0010,0040);K
(0010,1010);K
(0010,1020);K
(0010,1030);K
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0080);X
(0008,0081);X
(0008,1030);X
(0008,103E);X

Scenario 3: Multi-Site-studie koordinering

Udskift UID’er, mens du bevarer undersøgelsesrelationer for dataforbindelse:

TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K
(0020,0010);K
(0020,0011);K
(0020,0013);K

Validering og test

Altid validerer brugerdefinerede profiler før produktionsanlægget:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

string profilePath = "profiles/custom_profile.csv";
string testDataFolder = "test_samples";
string outputFolder = "validation_output";

// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    profilePath,
    ConfidentialityProfileOptions.All
);

Anonymizer anonymizer = new(profile);
Directory.CreateDirectory(outputFolder);

// Process test files
string[] testFiles = Directory.GetFiles(testDataFolder, "*.dcm");
int successCount = 0;
int failCount = 0;

foreach (string filePath in testFiles)
{
    try
    {
        DicomFile dcm = DicomFile.Open(filePath);
        DicomFile anonymized = anonymizer.Anonymize(dcm);
        
        string outputPath = Path.Combine(outputFolder, Path.GetFileName(filePath));
        anonymized.Save(outputPath);
        
        Console.WriteLine($"✓ {Path.GetFileName(filePath)}");
        successCount++;
    }
    catch (Exception ex)
    {
        Console.WriteLine($"✗ {Path.GetFileName(filePath)}: {ex.Message}");
        failCount++;
    }
}

Console.WriteLine($"\nValidation Summary:");
Console.WriteLine($"  Succeeded: {successCount}");
Console.WriteLine($"  Failed: {failCount}");
Console.WriteLine($"\nReview output files in: {outputFolder}");

Efter validering skal du åbne de anonymiserede filer i en DICOM-sensor og verificere, at forventede tag er ændret korrekt, bevarede tags er opbevaret, UID’er er korrekt erstattet, og ingen følsomme data forbliver i rensede felter.

Konklusionen er

Tilpassede fortrolighedsprofiler giver dig fleksibilitet til at implementere DICOM anonymisering, der præcis matcher din institution’s privatlivspolitik. Uanset om du har brug for at opbevare specifikke identifikatorer til intern brug, beholde demografier til forskning, eller anvende maksimal anonymisation til ekstern deling, tilpaste profiler gør det muligt.

De vigtigste anbefalinger omfatter dokumentering af dine profilvalg til revisionsformål, versionskontrol profiler for at spore ændringer, test profiler grundigt før produktion brug, og revidering profiler periodisk som kravene udvikler sig.

For mere information om DICOM anonymisering og Aspose.Medical API, besøg DokumentationTempler til almindelige profil scenarier er tilgængelige i eksempler sektionen.

More in this category