Medan fördefinierade DICOM PS3.15 sekretessprofiler täcker många användningsområden, hälso- och sjukvårdsinstitut har ofta unika integritetskrav. I den här guiden lär du dig hur man design skräddarsydda DIKOM anonymiseringsprofiler som matchar din organisations specifika policyer. Vi kommer att täcka tagmönster, åtgärder och ge mallar i CSV, JSON och XML-format.

Tabell av innehåll

Varför anpassade profiler behövs

Fördefinierade sekretessprofiler ger en solid grund, men de kan inte tillgodose alla institutionella krav. Du kan behöva anpassade profiler när din organisation kräver behållande av specifika institutionella identifierare för intern spårbarhet medan fortfarande anonymiserar patientdata. Vissa forskningssamarbetningar kanske behöver vissa demografier bevaras samtidigt som du tar bort direkta identifikatorer. Interna kvalitetssäkring arbetsflöden kan kräva enhetsinformation som standardprofilerna skulle ta bort. Dessutom kan regionala föreskrifter behålla specifik hantering av vissa dataelement.

Anpassade profiler ger dig exakt kontroll över vilka DICOM-taggar som ändras och hur, vilket möjliggör överensstämmelse med dina specifika datahanteringspolitiker.

Förstå Tag Patterns och Handlingar

DICOM-taggar identifieras av grupp- och elementnummer i formatet (GGGG,EEEE). Till exempel är Patientnamn (0010,0010) och Patients ID är (00000020). Anpassade profiler anger mönster som matchar dessa taggar och åtgärder att tillämpa.

De tillgängliga åtgärderna inkluderar D (Delete) som tar bort taggen helt från dataset, Z (Zero)** som ersätter värdet med ett tomt eller noll-längdvärde, X (Remove)** som avlägsnar etiketten om närvarande liknar Delete, K (Keep) som bevarar originalvärdet oförändrat,**C (Clean), som rengör värden genom att ta bort identifierande information sammanhängande, och **U (Blocka med UID).

Att välja rätt åtgärd beror på din användningssituation. Använd D eller X för taggar som aldrig ska visas i anonymiserad utgång. använd Z när taggen måste finnas men bör vara tom. använda K för tags du vill behålla exakt. använder C för textfält som kan innehålla inbyggda identifierare.

Skapa anpassade profiler

Anpassade profiler kan definieras i tre format. Välj den som bäst passar din arbetsflöde.

CSV format

CSV är det enklaste formatet, idealiskt för enkla 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

Denna profil zeros patientnamn och ID, tar bort födelsedatum, behåller patientens kön och demografi, ersätter alla UID, raderar institutionell information och rengör beskrivningar.

JSON format

JSON ger bättre struktur för komplexa 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 format

XML är föredraget för miljöer med befintlig XML-verktyg:

<?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>

Ladda upp anpassade profiler i kod

Ladda upp anpassade profiler i din .NET-applikation är enkelt:

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!");

Exempel på verkliga världsscenarier

Scenario 1: Intern kvalitetssäkring

Behåll institution och enhetsinformation för intern spårning samtidigt som du anonymiserar 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: Extern forskningssamarbete

Maximal anonymisering med bevarad demografi för 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 Study Coordination

Ersätt UID samtidigt som du bibehåller studier relationer för dataanslutning:

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 och testning

Validerar alltid anpassade profiler före produktionsanläggning:

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, öppna de anonymiserade filerna i en DICOM-sökare och verifiera att förväntade taggar ändras korrekt, behållna tagg bevaras, UID ersätts ordentligt och inga känsliga data förblir i rensade fält.

Slutsatser från #conclusion

Anpassade sekretessprofiler ger dig flexibilitet att genomföra DICOM-anonymisering som exakt matchar din institutionens integritetspolicy. Oavsett om du behöver behålla specifika identifierare för intern användning, bevara demografier för forskning, eller tillämpa maximal anonymisering för extern delning gör anpassad profiler det möjligt.

Viktiga rekommendationer inkluderar att dokumentera dina profilval för revisionssyfte, versionskontroll profiler för att spåra förändringar, testa profiler noggrant före produktionsanvändning, och granskning av profiler periodiskt som krav utvecklas.

För mer information om DICOM anonymisering och Aspose.Medical API, besök DokumentationTemplater för vanliga profileringsscenarier finns i exempelavsnittet.

More in this category