Bibliothèque d’outils de pseudonymisation d’attributs et de clichés radiographiques contenus dans les fichiers DICOM

Gitlab

Lien vers le repo : Gitlab

Partager

Objectifs de l’algorithme

Outils de pseudonymisation / anonymisation

La bibliothèque Python deidcm propose des outils de pseudonymisation de fichiers DICOM. Cette pseudonymisation consiste en deux étapes : la pseudonymisation des attributs basée sur un référentiel d’actions à effectuer pour chaque attribut et la suppression des textes présents sur les clichés radiographiques à l’aide d’un procédé de reconnaissance optique de caractères (OCR). Cet ensemble d’outils a été développé dans le contexte du projet deep.piste, étude visant à évaluer l’apport de l’IA dans le programme de Dépistage Organisé du Cancer du Sein (DOCS) français. deidcm a été conçu pour traiter les fichiers DICOM ayant la modalité MG (Mammographie). Cependant, la bibliothèque peut être utilisée pour des fichiers DICOM de modalités différentes.

Auteur(s)

Start-up
William MADIÉ
Start-up
Francisco ORCHARD

Domaine médical

Cancers
Radiologie et imagerie médicale

Méthodologie

Pour construire la bibliothèque deidcm, nous avons été confronté à de nombreux défis, le premier étant l’étendue, la complexité et l’hétérogénéité du standard DICOM. En effet, il existe de très nombreuses recommandations formulées par la NEMA (National Electrical Manufacturers Association), responsable du standard, concernant la pseudonymisation de fichiers DICOM. Nous avons choisi une approche dite best effort qui garantit le filtrage des données sensibles aussi bien dans les attributs que sur les clichés radiographiques même si elle ne respecte pas complètement les préconisations du standard.

Langage de programmation

Python

Données utilisées

Données d'application

Données d’imagerie
Données tabulaires
Texte libre

En amont de la mise en open source de la bibliothèque deidcm, nous avons construit nos outils en travaillant majoritairement sur les mammographies du CRCDC-Occitanie dans le cadre de l’étude Deep.piste. Nous avons aussi pu tester ces outils sur d’autres jeux de données pseudonymisés et publics comme The Chinese Mammography Database (CMMD): An online mammography database with biopsy confirmed types for machine diagnosis of breast Cui, Chunyan; Li Li; Cai, Hongmin; Fan, Zhihao; Zhang, Ling; Dan, Tingting; Li, Jiao; Wang, Jinghua. (2021).

Validation

Validé

Le performance de la pseudonymisation par OCR a été évaluée lors du projet deep.piste. Pour cela, nous avons utilisé des mammographies préalablement sélectionnées pour s’assurer qu’elles ne comportent aucun texte. Nous avons ensuite généré des chaînes de caractères aléatoires sur ces mammographies avec les paramètres suivants : 

- Une mammographies peut contenir entre 1 et 10 chaînes - Une chaîne peut contenir entre 1 et 10 lettres
- Différentes polices peuvent être utilisées comme FreeMono ou Arial 
- Différentes tailles de texte possibles 
- Différents niveaux de floutage possibles 
- Nombre de répétition pour chaque test définis en amont 

Le processus d’évaluation consiste en 4 métriques : 

Vrai Positif : Nombre de fois où la liste des mots auto-générés est identique à la liste des mots détectés. 

Faux Négatif : Nombre de fois où la liste des mots auto-générés n’est pas identique à la liste des mots détectés. 

Faux Positif : Nombre de fois où l’image ne contient aucun mot auto-généré alors que la liste des mots détectés n’est pas vide. 

Vrai Négatif : Nombre de fois où l’image ne contient aucun mot auto-généré alors que la liste des mots détectés est vide. 

Précision : Précision =Vrai Positif / (Vrai Positif + Faux Positif) 

Recall : Recall =Vrai Positif / (Vrai Positif + Faux Négatif) 

F1 Score : F1 Score = (2 * Précision * Recall) / (Precision + Recall) 

Pour vérifier si un mot identifié correctement, une comparaison stricte entraîne une performance dégradée dans nos conditions de tests. En effet, la détection OCR est un processus qui s’appuie sur le dictionnaire de la langue cible. 

Dans notre cas, l’utilisation de chaînes de caractères aléatoires réduit les performances de notre test en interchangeant des lettres comme les “l” avec les “i” ou les “1”. Sans la possibilité de s’aider de mots français proches (voir ci-dessous), cela diminue la précision du résultat. Pour pallier ce problème, nous avons implémenté l’algorithme de Levenshtein pour comparer les chaînes de caractères générées et celles détectées. Cela permet d’avoir un test plus proche de ce que l’on souhaite véritablement : savoir si toutes les zones de texte ont bien été repérées.

image

Les résultats suivants ont été obtenus par notre processus d’évaluation sur un fichier DICOM. 368 mots ont été générés durant les itérations successives. Sur ces 368 mots, 359 ont été reconnus correctement :

Mesures par test

Image avec texteImage sans texte
Vrai PositifFaux NégatifFaux PositifVrai Négatif
69303

Mesures globales

PrecisionRecallF1_ScoreAccuracy
1.01.01.00.96

Date de dernière mise à jour

Il s’agit de la version 0.0.3 publiée en juin 2024

Maintenance

Ad-hoc (en fonction des remontées de problèmes, suggestions)

Maintenu par Epiconcept et l’équipe data HDH (w.madie@epiconcept.fr, f.orchard@epiconcept.fr)

Comment installer l’algorithme ?

La bibliothèque deidcm est disponible dans l’index PyPI. Pour installer la dernière version, il suffit d’exécuter la commande pip install deidcm depuis un terminal.

Pour plus de détails sur l’installation de la bibliothèque, Epiconcept maintient une documentation utilisateur disponible à cette adresse : https://epiconcept-paris.github.io/deidcm/pages/quickstart/

Comment utiliser l’algorithme ?

Pour les personnes intéressées par le fonctionnement du projet, il existe différents modules : 

1. Le module deidcm.dicom.deid_mammogram qui contient toutes les fonctions dédiées à la pseudonymisation des attributs DICOM et des clichés radiographiques. 
2. deidcm.dicom.dicom2df qui contient la fonction dicom2df permettant de convertir un fichier DICOM en DataFrame pandas. 
3. Le module deidcm.dicom.df2dicom qui contient la fonction df2dicom permettant de convertir un dataframe pandas en fichier PNG (cliché radiographique) et CSV (attributs de chaque fichier DICOM) 

Pour plus de détails sur le fonctionnement de la bibliothèque, Epiconcept maintient une documentation utilisateur disponible à cette adresse : https://epiconcept-paris.github.io/deidcm/

Contributions

Nous acceptons les contributions externes. Le repository GitHub du projet est disponible à l’adresse suivante : https://github.com/Epiconcept-Paris/deidcm 

1. Pour des corrections mineures comme des bugs ou des évolutions simples, le contributeur peut directement effectuer une Pull Request sur le repository GitHub du projet. 
2. Pour des changements plus importants, il est conseillé au contributeur d’ouvrir d’abord une Issue afin de discuter et valider le changement avec nous.

Crédits

Francisco ORCHARD, f.orchard@epiconcept.fr, https://github.com/forchard 
William MADIE, w.madie@epiconcept.fr, https://github.com/williammadie

Licence et conditions d’utilisation

MIT License 
Copyright 2020 Epiconcept 

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.