Míg előre meghatározott DICOM PS3.15 titoktartási profilok fedezik sok használati eseteket, egészségügyi intézmények gyakran egyedülálló adatvédelmi követelményeket. Ebben az útmutatóban megtanulják, hogyan kell tervezni a személyre szabott dicom anonimizációs profilokat, amelyek összhangban vannak a szervezet sajátos politikájával.

Tartalmak táblája

Miért van szükség személyre szabott profilokra?

Az előre meghatározott titoktartási profilok szilárd alapot biztosítanak, de nem teljesítenek az összes intézményi követelményt. Szükséged lehet a személyre szabott profilokra, amikor a szervezetnek belső nyomonkövethetőség érdekében bizonyos intézményes azonosítókat kell tartania, miközben továbbra is névteleníti a páciens adatait. Néhány kutatási együttműködésnek meg kell őriznie egyes demográfiákat a közvetlen azonosítók eltávolításakor. A belső minőségbiztosítási munkafolyamatok olyan eszközinformációt igényelhetnek, amelyeket a szabványos profillák törölnének.

A személyre szabott profilok pontos ellenőrzést biztosítanak arról, hogy melyik DICOM címkék módosulnak, és hogyan, lehetővé téve az Ön konkrét adatkezelési politikájának betartását.

Megértése Tag minták és akciók

A DICOM címkéket a csoport és az elem számai azonosítják a formátumban (GGGG,EEEE). Például a beteg neve (0010,0010) és a páciens azonosítója ( 0010.0020).

A rendelkezésre álló intézkedések közé tartozik a D (Delete), amely teljesen eltávolítja a címkét az adatkészletből, **Z (Zero)**, ami helyettesíti az értéket egy üres vagy nulla hosszúságú értékkel, X (Remove), aki törli a jelölést, ha jelen van, hasonlóan a Delete-hez, *K (Keep), amely megőrzi az eredeti értéket változatlanul,**C (Clean).

A megfelelő lépés kiválasztása az Ön használati esetétől függ. Használja a D vagy X címkéket, amelyek soha nem jelennek meg névtelen kimenetelben. Helyezze a Z-t, amikor a címke létezik, de üresnek kell lennie. Ha a K címkeket pontosan szeretné megőrizni. A C-et a beépített azonosítókat tartalmazó szöveges mezőkhez használja.

Hozzon létre személyre szabott profilokat

A személyre szabott profilokat három formátumban lehet meghatározni. Válassza ki azt, amely a legjobban illeszkedik a munkafolyamathoz.

CSV formátum

A CSV a legegyszerűbb formátum, ideális az egyszerű profilokhoz:

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

Ez a profil zerozza a beteg nevét és azonosítóját, eltávolítja a születési dátumot, megtartja a páciens szexjét és demográfiáját, helyettesíti az összes UID-t, törli az intézmény információit, és tisztítja az leírásokat.

JSON formátum

A JSON jobb szerkezetet biztosít a komplex metaadat-profilok számára:

{
  "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 formátum

Az XML a meglévő XML eszközökkel rendelkező környezetek számára előnyben részesül:

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

Hozzáférhető profilok letöltése kódban

A .NET alkalmazásban használt profilok letöltése egyszerű:

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

Valódi forgatókönyv példái

1. forgatókönyv: belső minőségbiztosítás

Tartsa az intézmény és a készülék információit a belső nyomon követéshez, miközben névteleníti a páciens adatait:

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

2. forgatókönyv: Külső kutatási együttműködés

Maximális névtelenítés fenntartott demográfiával a népességvizsgálatokhoz:

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

3. forgatókönyv: Többoldalú tanulmányi koordináció

Változtassa ki az UID-eket, miközben megőrzi a tanulmányi kapcsolatokat az adatkapcsolathoz:

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

Validáció és tesztelés

Mindig érvényesítse a felhasznált profilokat a gyártás elindítása előtt:

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

Az érvényesítés futtatása után nyissa meg az anonimizált fájlokat a DICOM nézőn, és ellenőrizze, hogy a várt címkék megfelelően módosulnak, a megőrzött címkéket megtartják, az UID-eket helyesen helyettesítik és az érzékeny adatok nem maradnak tisztított mezőkben.

A következtetés

A személyre szabott adatvédelmi profilok rugalmasan alkalmazzák a DICOM névtelenítését, amely pontosan összhangban van az intézmény adatkezelési politikájával. függetlenül attól, hogy sajátos azonosítókat kell megőriznie belső felhasználásra, a demográfiát kutatás céljából meg kell őrizni, vagy a külső megosztáshoz maximális anonimizációt kell alkalmazni.

A kulcsfontosságú ajánlások közé tartozik a profilválasztás dokumentálása könyvvizsgálati célokra, a változások nyomon követésére szolgáló verziós profilfájlok ellenőrzése, profilok alaposan tesztelése a gyártás használatát megelőzően, és a követelmények fejlődésével rendszeresen felül kell vizsgálni a profilt.

További információkért a DICOM névtelenítéséről és az Aspose.Medical API-ról, látogasson el a DokumentációTemplomok a közös profil forgatókönyvek elérhetőek a példa szakaszban.

More in this category