Anonymisierung - Fuenfgeld/DMA2024TeamB GitHub Wiki

Anonymisierung von Patientendaten

Die Anonymisierung von Patientendaten ist ein wichtiger Schutzmechanismus, um die Privatsphäre und Vertraulichkeit von individuellen Gesundheitsdaten zu gewährleisten. Dieser Prozess wird in unserem Daten-Warehouse durchgeführt, um sicherzustellen, dass sensible Informationen geschützt sind.

Warum Anonymisierung?

  • Datenschutz: Schutz der persönlichen Informationen von Patienten.
  • Compliance: Einhaltung von Datenschutzbestimmungen und gesetzlichen Vorschriften.
  • Forschung: Sicherstellung, dass Forschungsdaten verwendet werden können, ohne die Privatsphäre zu gefährden.

Durchführung der Anonymisierung

1. Verbindung zur Datenbank herstellen

Die Verbindung zur Datenbank wird hergestellt, um auf die erforderlichen Tabellen zuzugreifen.

conn = sqlite3.connect(db_path) if conn is not None: cursor = conn.cursor() else: print("Verbindung fehlgeschlagen. Bitte überprüfen!")

2. Extraktion von Patienten-IDs

Die IDs der Patienten, die anonymisiert werden sollen, werden aus den entsprechenden Tabellen extrahiert.

cursor.execute("SELECT Id from d_Patients;") d_Patients_ids = cursor.fetchall()

3. Erstellung eines Anonymisierungs-Dictionarys

Ein Dictionary wird erstellt, das die Zuordnung von alten Patienten-IDs zu neuen anonymisierten IDs enthält.`

anonymized_Patients_ids = {} for ids in d_Patients_ids: anonymized_patients_ids[ids[0]] = hashlib.sha256(f"{ids[0]}={random.random()}".encode()).hexdigest()

4. Durchführung der Anonymisierung

Die IDs in den relevanten Tabellen werden durch die neuen anonymisierten IDs ersetzt.

d_Patients_table_df = d_Patients_table_df.replace({"Id": anonymized_patients_ids})

5. Überprüfung und Validierung

Die pseudonymisierten Daten werden auf ihre Integrität und Genauigkeit überprüft, um sicherzustellen, dass der Anonymisierungsprozess erfolgreich war.

d_Patients_table_df_noid = d_Patients_table_df.drop(columns=["Id"]) d_Patients_hashes = hash_pandas_object(d_patients_table_df_noid) print("Checksumme d_Patients: ", d_Patients_hashes.sum())

6. Aktualisierung der Datenbank

Die veränderten, anonymisierten Tabellen werden in die Datenbank zurückgeschrieben.

F_BreastCancerQoL_df = F_BreastCancerQoL_df.replace({"PatientId": anonymized_patients_ids})

Überprüfung

Nach der Anonymisierung werden verschiedene Überprüfungen durchgeführt, um sicherzustellen, dass die Integrität der Daten erhalten bleibt.

  • Überprüfung durch Checksummen.
  • Vergleich vorher/nachher, um sicherzustellen, dass die Anzahl der Datensätze gleich geblieben ist.

F_BreastCancerQoL_df_noid = F_BreastCancerQoL_df.drop(columns=["PatientId"]) F_BreastCancerQoL_hashes = hash_pandas_object(F_BreastCancerQoL_df_noid) print("Checksumme F_BreastCancerQoL: ", F_BreastCancerQoL_hashes.sum())

Weiterführende Informationen

Der vollständige Code zum Anonymisierungsprozess liegt ab unter: Anonymisierungs-Colab-Book.