Linkr
Accueil Ressources Outils Documentation Blog Démo
EN
  • Qu'est-ce que Linkr ?
  • Modes de déploiement
  • Démarrage rapide
  • Installation locale
  • Avec Docker
  • Installation manuelle
  • Client-only
  • Votre premier projet
  • Linkr dans un EDS
  • Espaces de travail et projets
  • Le pipeline de données
  • Entités et partage
  • Versioning et collaboration
  • Vue d'ensemble
  • Projets
  • Wiki
  • Plugins
  • Membres et rôles
  • Paramètres
  • Schémas
  • Obtenir et explorer
  • Mapping
  • Bases de données
  • Sous-bases dérivées
  • Qualité des données
  • Catalogue de données
  • Construire et publier
  • Anonymiser
  • Collections de scripts SQL
  • Pipelines ETL
  • Construire et exécuter
  • Générer les scripts
  • Présentation
  • Projets d'alignement
  • Vue d'ensemble
  • Concepts cibles
  • Éditeur d'alignements
  • Suggestions
  • Agent IA
  • Évaluation
  • Export
  • Vue d'ensemble
  • Bases de données
  • Concepts
  • Cohortes
  • Construire
  • Résultats, SQL et rapport
  • Données individuelles
  • Pipeline
  • Jeux de données
  • IDE
  • Applications web
  • Versioning
  • Vue d'ensemble
  • Onglets et widgets
  • Widgets intégrés
  • Widgets d'analyse
  • Cartes de contrôle (SPC)
  • Questionnaires et eCRF
  • Code R et Python
  • Filtres, paramètres et export
  • Vue d'ensemble
  • Mode présentation
  • Exporter un rapport
  • Agents
  • Serveur MCP
  • Skills
  • Import et export
  • Versioning git
  • Catalogue communautaire
  • Publier du contenu
  • Installation en production
  • Configuration
  • Authentification et permissions
  • Fichiers sur le serveur
  • Sauvegarde et restauration
  • Contribuer au code
  • Glossaire
  • Raccourcis clavier
  • Notes de version
Documentation Entrepôt de données Anonymiser

Anonymiser un catalogue

Seuil d'anonymisation, masquage secondaire, perturbation des effectifs et audit de divulgation : ce qui protège un catalogue de données avant sa publication.

En résumé

Avant de publier un catalogue de données, l’onglet Anonymisation le protège en trois couches : un seuil masque les cellules comptant trop peu de patients, un masquage secondaire empêche de les retrouver par soustraction, et une perturbation optionnelle rend chaque effectif approché. Un audit de divulgation vérifie ensuite, à partir des seuls fichiers publiés, qu’aucune cellule masquée ne se déduit.

Client Disponible en mode client-only — tout fonctionne dans le navigateur, sans backend. Backend Disponible avec le backend FastAPI.

Pourquoi un seuil ne suffit pas

Une cellule « 2 patients, néonatologie, mars 2024 » n’est pas une statistique, c’est une désignation : quelqu’un qui connaît le service retrouvera ces deux enfants. Le seuil l’élimine.

Mais un catalogue publie aussi des totaux — tous services confondus, toutes périodes confondues — et des tableaux qui se recoupent. Si le total de mars 2024 est publié, et que tous les services sauf la néonatologie le sont aussi, la cellule masquée se retrouve par une soustraction. Plus un catalogue a de croisements, plus ces recoupements se multiplient. Les sections ci-dessous décrivent comment Linkr les ferme.

Le seuil

demo.linkr.interhop.org
Seuil d'anonymisation
Seuil
10
Mode
Afficher « < seuil »
Perturbation (±)
3
Lancer
1 284
Cellules sous le seuil
7 % des cellules
611
Cellules masquées pour les protéger
3 % des cellules
2 140
Concepts affichés « < seuil »
38 % des concepts
90%
Cellules publiées
L'onglet Anonymisation : le seuil, le mode et la perturbation, puis, une fois lancés, l'effet des réglages — les cellules masquées, les concepts touchés et la part des cellules qui restent publiées.

Seuil fixe le nombre minimum de patients par cellule — 10 est une valeur courante. Toute cellule en dessous est masquée : elle ne porte aucun nombre dans aucun fichier publié.

Le Mode règle le cas de la liste des concepts :

  • Afficher « < seuil » — les concepts utilisés par moins de patients que le seuil restent listés, avec « < 10 » à la place de leur effectif. Le lecteur sait que le concept existe dans l’entrepôt.
  • Retirer le concept — ils disparaissent de la liste.

Dans les croisements, les cellules sous le seuil sont toujours masquées, quel que soit le mode.

Le masquage secondaire

Pour qu’une cellule masquée ne se retrouve pas par soustraction, Linkr masque d’autres cellules du même groupe — on parle de suppression secondaire. Sur la page publiée, toutes les cellules masquées sont hachurées : celles sous le seuil affichent « < 10 », celles masquées pour les protéger affichent « masqué » — elles ont assez de patients, mais sont cachées pour protéger une petite cellule voisine.

Vue
demo.linkr.interhop.org
Patients par service × période
Service2021202220232024
Réanimation412438451397
Pédiatrie9688masqué102
Néonatologie22masqué< 1019
Cardiologie205231219244
La néonatologie compte 4 patients en 2023 : la cellule est masquée, et deux voisines le sont aussi, sur sa ligne et sa colonne, pour qu'aucune soustraction ne la retrouve. Le sélecteur au-dessus reproduit l'aperçu de l'onglet Publier, qui montre, barré, l'effectif caché — jamais les fichiers publiés.

Deux règles s’ajoutent à la règle classique « jamais une seule cellule masquée par ligne » :

  • La somme compte aussi. Deux petites cellules masquées ensemble ne se protègent pas si leur total se calcule : 3 patients cachés en deux cellules, c’est encore 3 patients. Les cellules masquées d’un groupe doivent donc peser, ensemble, au moins le seuil — sinon une cellule de plus est masquée.
  • Un total masqué n’est pas un total caché. Un total masqué dans un tableau peut se retrouver dans un autre (le total général, par exemple). Linkr protège donc aussi les groupes dont le total est masqué.

La perturbation

Même bien masquées, des tables qui se recoupent laissent parfois deviner une cellule à quelques unités près : l’attaquant ne connaît pas l’effectif, mais sait qu’il est entre 1 et 3. Perturbation (±) ferme ce reste : chaque effectif publié bouge d’au plus cette valeur. Le réglage est à 0 par défaut, ce qui publie les effectifs exacts. ±3 est une bonne valeur.

Le bruit n’est pas tiré au hasard à chaque publication. Il est fixé par les patients de la cellule — la méthode des clés de cellule, celle qu’Eurostat recommande pour les recensements :

  • La même cellule reçoit toujours le même bruit. Republier le catalogue, ou en publier un autre sur la même base, ne permet pas de moyenner le bruit pour l’annuler.
  • Une soustraction ne donne plus qu’un ordre de grandeur. Chaque terme porte son propre bruit ; la différence de deux effectifs bruités n’est connue qu’à quelques unités près.
  • Le seuil s’applique aux vrais effectifs. Une cellule masquée l’est avant tout bruit, et une cellule publiée n’affiche jamais moins que le seuil.

La page publiée l’explique dans son onglet Infos, et un chiffre clé qui additionne plusieurs cellules perturbées y est précédé de « ≈ ».

Des chiffres approchés, c'est assez pour un catalogue

Un catalogue dit à une équipe si votre entrepôt vaut la peine d’être sollicité : environ 1 200 patients avec une ventilation mécanique en 2023, c’est la réponse qu’elle cherche, pas 1 203. Les effectifs exacts sur une question précise relèvent d’une étude de faisabilité, avec les cohortes.

Recalculez les catalogues calculés avant la perturbation

Le bruit se calcule à partir des patients de chaque cellule, que le calcul du catalogue enregistre. Un catalogue calculé avec une version antérieure de Linkr n’a pas ces données : son bruit est tiré de la cellule elle-même. Il reste stable d’une publication à l’autre, mais deux publications faites avant et après une mise à jour de l’entrepôt pourraient l’annuler. Recalculez le catalogue depuis l’onglet Configuration avant de publier avec une perturbation.

Voir l’impact des réglages

Après avoir changé le seuil, le mode ou la perturbation, Lancer applique les réglages et en montre l’effet, sous les réglages :

  • Cellules sous le seuil et Cellules masquées pour les protéger — ce que chaque masquage retire.
  • Concepts affichés « < seuil » (ou Concepts perdus, en mode Retirer le concept).
  • Cellules publiées et Patients des cellules publiées — ce qui reste visible.
  • Impact par croisement — le même bilan, tableau par tableau.

Un croisement dont la plupart des cellules sont masquées n’informe plus personne : mieux vaut élargir sa granularité — le trimestre plutôt que le mois, des groupes de services plutôt que chaque unité — ou le décocher dans l’onglet Configuration.

L’audit de divulgation

L’Audit de divulgation, en bas de l’onglet, se met à la place de quelqu’un de l’extérieur qui n’aurait que les fichiers publiés. Chaque total publié donne une équation — ce total est la somme de ses cellules — et les tableaux sont reliés par les totaux qu’ils partagent. L’audit résout ces systèmes, en tenant compte de la perturbation, et liste les cellules masquées qu’il parvient à cerner :

  • leurs patients encadrés entre 1 et le seuil moins un — la divulgation que le seuil devait empêcher ;
  • leurs hospitalisations, séjours en unité ou enregistrements retrouvés à 2 près.
demo.linkr.interhop.org
Audit de divulgationRelancer
2 cellules masquées voient leurs patients encadrés entre 1 et 9.1 effectif masqué de séjours ou d'enregistrements est retrouvé à 2 près.La perturbation les ferme : à ±3, une soustraction ne donne plus qu'un ordre de grandeur. Retirer les croisements en cause, ou relever le seuil, aussi.
CroisementCelluleEffectifDéduit
Concept × PériodeFurosémide · 2022Patients2 – 7
Concept × PériodeFurosémide · 2022Enregistrements11
Service × Tranche d'âgePédiatrie · 10–19Patients1 – 5

Audité en 47 s : 2 316 systèmes, 58 904 inconnues, bruit ±0.

L'audit d'un catalogue publié sans perturbation : deux cellules masquées voient leurs patients cernés, et une leurs enregistrements. Pour chacune, le croisement, la cellule, l'effectif en cause et ce que l'audit en a déduit.

Lancer l’audit le démarre ; comme le calcul, il continue si vous changez d’onglet, et Arrêter l’interrompt. Le résultat est conservé avec les résultats du catalogue : un bandeau vert quand aucune cellule n’est cernée, rouge sinon, avec un tableau d’exemples — le croisement, la cellule, l’effectif en cause et ce que l’audit en a déduit.

Quand l’audit trouve des cellules exposées, trois leviers les ferment : la perturbation (à ±3, une soustraction ne donne plus qu’un ordre de grandeur), retirer les croisements en cause, ou relever le seuil.

Relancez l'audit après chaque changement

Un audit vaut pour les réglages et les résultats qu’il a vérifiés. Si vous changez un réglage d’anonymisation ou recalculez le catalogue, il est signalé comme périmé : relancez-le avant de publier.

Ce que l'audit garantit, et ce qu'il ne garantit pas

L’audit ne se trompe pas sur ce qu’il trouve : ce qu’il déduit, un attaquant le peut aussi. Il n’est pas exhaustif pour autant — un outil qui résoudrait toutes les tables d’un seul tenant pourrait parfois cerner davantage. Un audit vide, avec une perturbation de ±3, est une bonne assurance ; ce n’est pas une garantie mathématique.

Pour aller plus loin

  • Construire et publier un catalogue — variables, croisements, calcul et publication.
  • Cohortes — pour des effectifs exacts sur une question précise.
  • Publier du contenu — diffuser au-delà de votre établissement.
PrécédentConstruire et publierSuivantCollections de scripts SQL

Produit

  • Accueil
  • Démo

Ressources

  • Documentation
  • Ressources
  • Outils
  • Blog

Communauté

  • Code source Framagit
  • Code source Github

À propos

  • InterHop.org
  • Contact

2021–2026 InterHop — CC BY-NC-SA 4.0 (site) · GPLv3 (logiciel)