Mentre que els perfils de confidencialitat predefinits DICOM PS3.15 cobreixen molts casos d’ús, les institucions sanitàries sovint tenen requisits de privacitat únics. En aquest guia, aprendreu com dissenyar perfells d’anonimatització personalitzats DIKOM** que s’ajusten a les polítiques específiques de la vostra organització.

Taula de continguts

Per què es necessiten perfils personalitzats

Els perfils de confidencialitat predefinits proporcionen una base sòlida, però no poden satisfer totes les exigències institucionals. Potser necessiteu profils personalitzats quan l’organització requereix la retenció d’identificadors institucionals específics per a la traçabilitat interna, mentre que encara anonimitza les dades dels pacients. Algunes col·laboracions de recerca poden necessitar determinades demografies preservades mentre elimina els identificadors directes. Els fluxos de treball de qualitat interns poden requerir informació del dispositiu que el perfil estàndard eliminaria.

Els perfils personalitzats li donen control precís sobre quines etiquetes DICOM es modifiquen i com, permetent el compliment amb les seves polítiques de governança de dades específiques.

Comprendre els patrons de etiquetes i les accions

Les etiquetes DICOM s’identifiquen per grups i nombres d’elements en el format (GGGG,EEEE). Per exemple, el nom del pacient és (0010,0010) i l’identificació del pacient és (010.0020). Els perfils personalitzats especificen patrons que coincideixen amb aquestes etiquetas i les accions a aplicar.

Les accions disponibles inclouen D (Delete) que elimina la etiqueta completament del conjunt de dades, Z (Zero)** que reemplaça el valor amb un valor buit o zero-llongada; X (Remove)* que remove la tag si present similar a Delete; K (Keep) que conserva el seu valor original sense canviar, C (Clean), que neteja el preu mitjançant l’eliminació de la informació identificadora contextualment, i **U (Replace with UID) ** que substitueix per un identificador únic nou generat.

Seleccionar l’acció correcta depèn del seu cas d’ús. Utilitzar D o X per a les etiquetes que mai s’haurien de presentar en una sortida anònima. utilitzar Z quan la etiqueta ha de existir, però hauria de ser buida. fer servir K per als etiquets que voleu guardar exactament. Fer servir C pels camps de text que puguin contenir identificadors incorporats.

Creació de perfils personalitzats

Els perfils personalitzats es poden definir en tres formats. triar el que millor s’adapta al seu flux de treball.

El format CSV

CSV és el format més senzill, ideal per a perfils senzills:

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

Aquest perfil nul·la el nom i ID del pacient, elimina la data de naixement, manté el sexe i la demografia dels pacients, reemplaça tots els UIDs, esborra la informació de la institució i neteja les descripcions.

El format JSON

JSON proporciona una millor estructura per a perfils complexos amb metadades:

{
  "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" }
  ]
}

Formats XML

XML és preferit per a entorns amb eines XML existents:

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

Carregar perfils personalitzats en codi

Carregar perfils personalitzats en la seva aplicació .NET és senzill:

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

Exemples d’escenari del món real

Escenari 1: Assegurança de qualitat interna

Retenir la informació d’institució i dispositiu per al seguiment intern mentre anonimitza les dades del pacient:

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

Escenari 2: Col·laboració de recerca externa

Anonimització màxima amb demografies conservades per a estudis de població:

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

Escenari 3: Coordinació d’estudis multi-site

Substituir UIDs mentre conserva les relacions d’estudi per a la connexió de dades:

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

Validació i proves

Sempre valideu els perfils personalitzats abans del llançament de la producció:

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

Després de l’execució de la validació, obre els arxius anònims en un visualitzador DICOM i verificar que les etiquetes esperades es modifiquen correctament, es conserven els etiquets conservats, els UIDs es reemplacen adequadament i no es queden dades sensibles en els camps netejats.

La conclusió

Els perfils de confidencialitat personalitzats li donen la flexibilitat per implementar l’anonimatització de DICOM que coincideix precisament amb les polítiques de privacitat de la seva institució. Si vostè necessita mantenir identificadors específics per a ús intern, conservar demografies per la investigació, o aplicar la màxima anonimatzació per al compartir extern, els profils personals ho fan possible.

Les recomanacions clau inclouen la documentació de les vostres opcions de perfil per a finalitats d’auditoria, el control de versions de fitxers de profil per rastrejar els canvis, la prova de perfils abans de l’ús de la producció, i la revisió de profils periòdicament a mesura que els requisits evolucionen.

Per a més informació sobre l’anonimatització de DICOM i la API d’Aspose.Medical, visiteu el DocumentacióTemplates per a escenaris de perfil comuns estan disponibles a la secció d’exemples.

More in this category