Accès chercheurs
Les tables, avec tout ce qu’il faut pour les relire
Chercheur, journaliste, partenaire : voici ce que nous construisons à partir des bases publiques, table par table. Chaque table porte son millésime, sa licence, le fichier ou l’API dont elle sort, la commande qui la reconstruit, et un dictionnaire où chaque colonne dit sa source, son unité et sa dérivation. Vous n’avez pas à nous croire sur parole : vous pouvez refaire le calcul.
Export produit le 17 septembre 2026. 9 tables, 146 colonnes documentées. Produit par Santeflex — src/intelligence/exports.py (sprint I12).
Les tables
Le nombre de lignes est celui du fichier écrit, pas une estimation. Une table que la chaîne n’a pas pu construire est nommée ici avec sa raison : elle n’est jamais présentée comme vide.
| Table | Lignes | Colonnes | Millésime | Licence |
|---|---|---|---|---|
| Événements réglementairesregulatory_events | 76 | 22 | construit le : 17 septembre 2026 · version des paramètres : 17 septembre 2026 · lignes déclarées par le magasin : 76 | Santeflex — Licence Ouverte 2.0 (structure et résumés) |
| OpenMedic — série nationale annuelleopenmedic_national_yearly | 7 | 10 | millésimes : 2019 · 2020 · 2021 · 2022 · 2023 · 2024 · 2025 · magasin construit le : 16 septembre 2026 · présentations de référence : 12 486 | Licence Ouverte 1.0 |
| OpenMedic — série annuelle par classe ATC niveau 1openmedic_atc1_yearly | 98 | 11 | millésimes : 2019 · 2020 · 2021 · 2022 · 2023 · 2024 · 2025 · magasin construit le : 16 septembre 2026 | Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments) |
| Pénétration des génériques par moléculegeneric_penetration | 387 | 8 | premier millésime : 2019 · dernier millésime : 2025 · magasin construit le : 16 septembre 2026 | Licence Ouverte 1.0 |
| Fiches médicament par présentationdrug_records | 12 486 | 38 | millésime Open MEDIC : 2025 · millésime précédent : 2024 · magasin construit le : 16 septembre 2026 · lignes déclarées par le magasin : 12 486 · sources du magasin : BDPM CIS/CIP/GENER/HAS_SMR/HAS_ASMR/Dispo_Spec (ANSM), OpenMedic (Assurance Maladie), regulatory_events.json | Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments) |
| DREES — dépenses de santé et restes à charge (tranche publiée)drees_rac_published | 172 456 | 10 | jeu de données : depenses-de-sante-et-restes-a-charge · dernière modification à la source : 13 avril 2026 · millésimes : 2017 · 2021 · 2023 · magasin construit le : 16 septembre 2026 · lignes du cube complet : 1 234 682 | Licence Ouverte 2.0 |
| Open DAMIR — table par spécialité de l'exécutantdamir_specialties | 27 | 17 | premier mois : janvier 2024 · dernier mois : décembre 2025 · mois couverts : 24 · lexique des codes : github.com | Licence Ouverte 1.0 |
| Accès aux soins — comptages de praticiens par département et spécialitéaccess_annuaire | 2 134 | 23 | instantanés : 16 septembre 2026 · magasin source construit le : 12 septembre 2026 · version de correspondance : cnam_liste_ps_v1 | Licence Ouverte 2.0 |
| FINESS — établissements recensés par département et groupe de catégoriesfiness_establishments | 1 027 | 7 | instantanés : 16 septembre 2026 · magasin source construit le : 10 septembre 2026 | Licence Ouverte 1.0 |
Les 9 tables demandées à la chaîne d’export ont toutes été écrites à ce millésime.
Chaque table, en détail
Ouvrez une fiche pour lire son millésime, sa provenance, sa méthode, ses limites, la commande qui la reconstruit et son dictionnaire de colonnes.
Événements réglementaires
regulatory_events
Un événement par changement réglementaire suivi : ce qui change, à partir de quand, avec quel statut, pour qui, quels paramètres et quels textes il porte, et où il a été lu.
76 lignes · 22 colonnes documentées · Santeflex — Licence Ouverte 2.0 (structure et résumés)
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 76 lignes
- Colonnes
- 22
- construit le
- 17 septembre 2026
- version des paramètres
- 17 septembre 2026
- lignes déclarées par le magasin
- 76
- origine
- fichier
- chemin dans le dépôt
- src/config/regulatory_events.json
- construit par
- scripts/build_regulatory_events.py
- path_relative_to
- repo
- Licence
- Santeflex — Licence Ouverte 2.0 (structure et résumés)La structuration, le regroupement et les résumés sont notre travail et sont diffusés sous Licence Ouverte 2.0, avec attribution à Santeflex. Les textes cités restent sous leur propre régime (Légifrance / JORF, ameli.fr, service-public.fr, communiqués ministériels) : chaque ligne porte ses URL, à citer avec elle. Aucune source n'endosse Santeflex.
- Fichiers écrits
- regulatory_events.csv — 66,4 ko (66 448 octets)sha256 03919f6e88d1ba31862447a9f312c6d07b400bc1c8bc6dfbaacc1e4eff85113b
- regulatory_events.json — 107,4 ko (107 422 octets)sha256 d9f89ea1ce9b1249c8438a914e6f6d954e4dd4259a7bc0093a707300bb1787b0
Méthode
Le magasin est construit par scripts/build_regulatory_events.py à partir de trois entrées : les textes légaux de l'ingestion (un événement par texte, daté par sa date d'effet), chaque entrée d'historique datée du fichier de paramètres qu'aucun texte ne couvre (regroupée par source et par date d'effet), et l'overlay curé à la main (événements proposés, débattus, calendaires, et surcharges de thème, de périmètre, de parties prenantes). Règles : un statut « en vigueur » suppose une référence légale officielle ; un texte publié mais non applicable est « adopté » ; un événement sans source est une erreur de validation ; rien n'est déduit du silence. Le fichier est versionné et relu en diff comme les paramètres.
Ce que la table dit, et ce qu’elle ne dit pas
- 8 avertissement(s) de validation à la construction du magasin (statut « en vigueur » appuyé sur une source de presse) ; ils sont listés dans src/config/regulatory_events.json, champ _meta.warnings.
Sources amont
- Légifrance / JORF et sources officielles citées ligne par ligne · régime propre à chaque texte
- src/config/regulatory_params.json (paramètres datés) et LEGAL_TEXTS · Santeflex
Reconstruire la table depuis la source
python scripts/build_regulatory_events.py python scripts/build_exports.py --out <dir> --tables regulatory_events
Citer cette table
Santeflex, « Événements réglementaires » (regulatory_events), export du 17 septembre 2026, 76 lignes. Licence : Santeflex — Licence Ouverte 2.0 (structure et résumés). D’après Légifrance / JORF et sources officielles citées ligne par ligne ; src/config/regulatory_params.json (paramètres datés) et LEGAL_TEXTS. https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| id | Identifiant de l'événement | string | — | regulatory_events.json : events[].id | date d'effet + abrégé de la source, construit par le script de build |
| title_fr | Titre | string | — | regulatory_events.json : events[].title_fr | composé du libellé du paramètre ou du texte et de sa date d'effet en français |
| theme | Thème | string | — | regulatory_events.json : events[].theme | dix thèmes fermés ; déduit du préfixe de l'identifiant de paramètre, sauf surcharge curée |
| kind | Nature | string | — | regulatory_events.json : events[].kind | parameter_change, new_rule, rule_removed, deadline ou calendar |
| status | Statut | string | — | regulatory_events.json : events[].status | colonne brute, aucune dérivation |
| status_fr | Statut (français) | string | — | intelligence.events.STATUS_FR | traduction du statut ; aucun autre calcul |
| engine_applicable | Applicable par le moteur de calcul | boolean | — | intelligence.events.ENGINE_STATUSES | vrai si le statut est in_force, adopted ou decree_pending ; les statuts proposed et debated n'alimentent jamais un calcul |
| announced_on | Date d'annonce | date | — | regulatory_events.json : events[].announced_on | colonne brute, aucune dérivation |
| effective_from | Date d'entrée en vigueur | date | — | regulatory_events.json : events[].effective_from | colonne brute, aucune dérivation |
| effective_to | Date de fin d'effet | date | — | regulatory_events.json : events[].effective_to | colonne brute, aucune dérivation |
| scope_population | Population visée | string | — | regulatory_events.json : events[].scope.population | valeurs jointes par « ; » |
| scope_other | Autres clés de périmètre | string | — | regulatory_events.json : events[].scope | les clés de périmètre autres que population, en JSON |
| stakeholders | Parties prenantes | string | — | regulatory_events.json : events[].stakeholders | déduit des préfixes des paramètres portés, sauf surcharge curée ; joint par « ; » |
| params | Paramètres portés | string | — | regulatory_events.json : events[].params | identifiants de src/config/regulatory_params.json, joints par « ; » |
| replaces | Paramètres repris d'un événement antérieur | string | — | regulatory_events.json : events[].replaces | paires « identifiant de paramètre = identifiant de l'événement remplacé », jointes par « ; » : pour chaque paramètre porté, l'événement dont il reprend la valeur ; vide quand l'événement ne remplace rien |
| confidence | Niveau de confiance de la source | string | — | regulatory_events.json : events[].confidence | official, press ou analysis |
| derived_from | Origine de la construction | string | — | regulatory_events.json : events[].derived_from | dit laquelle des trois entrées a produit l'événement (texte légal, paramètre daté, overlay curé) |
| legal_refs_titles | Titres des références légales | string | — | regulatory_events.json : events[].legal_refs[].title | joints par « ; » |
| legal_refs_urls | URL des références légales | string | — | regulatory_events.json : events[].legal_refs[].url | jointes par « ; » |
| sources_urls | URL des sources consultées | string | — | regulatory_events.json : events[].sources[].url | jointes par « ; » |
| sources_retrieved_on | Dates de consultation des sources | string | — | regulatory_events.json : events[].sources[].retrieved_on | jointes par « ; » |
| summary_fr | Résumé | string | — | regulatory_events.json : events[].summary_fr | valeurs des paramètres portés, mises en français, suivies des notes de l'entrée d'historique |
OpenMedic — série nationale annuelle
openmedic_national_yearly
Un point par millésime OpenMedic : boîtes, remboursé, base de remboursement, lignes de consommants, taux réalisé et part générique nationale.
7 lignes · 10 colonnes documentées · Licence Ouverte 1.0
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 7 lignes
- Colonnes
- 10
- millésimes
- 2019 · 2020 · 2021 · 2022 · 2023 · 2024 · 2025
- magasin construit le
- 16 septembre 2026
- présentations de référence
- 12 486
- origine
- fichier
- chemin dans le dépôt
- open_medic_trends.db
- table lue
- cip13_year + cip13_ref
- construit par
- scripts/build_open_medic_trends.py
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 1.0
- Fichiers écrits
- openmedic_national_yearly.csv — 701 octetssha256 777a0e44c93d9766b42e4f03f85450ba88c1ed17a81c56d88d81c7796e6107de
- openmedic_national_yearly.json — 5,5 ko (5 499 octets)sha256 2b73d07fd3d04f8de68b99ac53773635a96193a602d6d464ea2fa6c17b949ce2
Méthode
Assurance Maladie — Open MEDIC, marginal national par CIP13 (Licence Ouverte 1.0) ; sommes par présentation et par année ; ATC et statut générique lus sur le millésime courant ; variation = (N − N−k) / N−k ; part générique = boîtes des présentations marquées génériques / boîtes des présentations dont le statut est connu.
Ce que la table dit, et ce qu’elle ne dit pas
- La première année de la série n'a pas d'évolution annuelle : les colonnes boxes_yoy_pct et reimbursement_yoy_pct y sont « non renseignées », jamais zéro.
Sources amont
- Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) · Licence Ouverte 1.0
Reconstruire la table depuis la source
python scripts/build_open_medic_trends.py --years 2019-2025 --out data/open_medic_trends.db python scripts/build_exports.py --out <dir> --tables openmedic_national_yearly
Citer cette table
Santeflex, « OpenMedic — série nationale annuelle » (openmedic_national_yearly), export du 17 septembre 2026, 7 lignes. Licence : Licence Ouverte 1.0. D’après Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments). https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| year | Millésime | year | année | open_medic_trends.db : cip13_year.year | année du fichier OpenMedic (NB_<année>_cip13.CSV.gz) |
| boxes | Boîtes remboursées | integer | boîtes | open_medic_trends.db : cip13_year.boxes | somme sur toutes les présentations du millésime |
| reimbursement_eur | Montant remboursé | number | euros | open_medic_trends.db : cip13_year.reimbursement | somme sur toutes les présentations |
| base_eur | Base de remboursement | number | euros | open_medic_trends.db : cip13_year.base | somme sur toutes les présentations |
| people_lines | Lignes de consommants | integer | lignes | open_medic_trends.db : cip13_year.beneficiaries | somme des consommants par présentation : une personne consommant deux présentations compte deux fois, ce n'est pas un effectif de personnes |
| realised_rate_pct | Taux de remboursement réalisé | number | % | open_medic_trends.db : cip13_year | remboursé / base × 100 |
| generic_share_pct | Part des génériques dans les boîtes | number | % | open_medic_trends.db : cip13_year JOIN cip13_ref.is_generic | boîtes des présentations marquées génériques / boîtes des présentations dont le statut générique est connu × 100 |
| generic_status_coverage_pct | Couverture du statut générique | number | % | open_medic_trends.db : cip13_year JOIN cip13_ref | boîtes dont le statut générique est connu / boîtes totales × 100 ; dit sur quelle part du millésime la part générique est calculée |
| boxes_yoy_pct | Évolution des boîtes sur un an | number | % | open_medic_trends.db : cip13_year.boxes | (boîtes N − boîtes N−1) / boîtes N−1 × 100 ; non renseigné pour la première année de la série |
| reimbursement_yoy_pct | Évolution du remboursé sur un an | number | % | open_medic_trends.db : cip13_year.reimbursement | (remboursé N − remboursé N−1) / remboursé N−1 × 100 ; non renseigné pour la première année |
OpenMedic — série annuelle par classe ATC niveau 1
openmedic_atc1_yearly
Un point par classe thérapeutique (ATC niveau 1) et par millésime OpenMedic.
98 lignes · 11 colonnes documentées · Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments)
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 98 lignes
- Colonnes
- 11
- millésimes
- 2019 · 2020 · 2021 · 2022 · 2023 · 2024 · 2025
- magasin construit le
- 16 septembre 2026
- origine
- fichier
- chemin dans le dépôt
- open_medic_trends.db
- table lue
- cip13_year JOIN cip13_ref
- construit par
- scripts/build_open_medic_trends.py
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments)Les volumes et les montants viennent d'OpenMedic (Licence Ouverte 1.0). La colonne atc_level_1_label porte les libellés de la classification ATC de niveau 1 tels que l'OMS et la BDPM les écrivent : ils relèvent du régime des données publiques ANSM/HAS et doivent être cités comme tels. Rien n'est rediffusé sous une licence plus permissive que son entrée : republier la colonne de libellés sans mentionner ce régime ne serait pas conforme.
- Fichiers écrits
- openmedic_atc1_yearly.csv — 10,0 ko (10 023 octets)sha256 0a44179fee2c36c0abda9b6221ca59ed5816b2f44ba787c5376443c2e2c84726
- openmedic_atc1_yearly.json — 36,7 ko (36 718 octets)sha256 45168f83b16b1b0cbf5ff5be9a09f46283c444c91c10bec2d301e8ca5da00f22
Méthode
Assurance Maladie — Open MEDIC, marginal national par CIP13 (Licence Ouverte 1.0) ; sommes par présentation et par année ; ATC et statut générique lus sur le millésime courant ; variation = (N − N−k) / N−k ; part générique = boîtes des présentations marquées génériques / boîtes des présentations dont le statut est connu. Périmètre : présentations du millésime courant portant ce code ATC.
Ce que la table dit, et ce qu’elle ne dit pas
- Périmètre de chaque classe : les présentations du millésime courant qui portent ce code ATC niveau 1 ; une présentation sans code ATC dans la référence n'est comptée dans aucune classe, donc la somme des classes est inférieure au total national.
- Les libellés de niveau 1 sont ceux de la classification ATC (OMS/BDPM) et non la chaîne du fichier OpenMedic, dont l'octet accentué est corrompu à ce niveau.
Sources amont
- Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) · Licence Ouverte 1.0
- Classification ATC (libellés de niveau 1, OMS / BDPM) · Données publiques ANSM/HAS (base de données publique des médicaments)
Reconstruire la table depuis la source
python scripts/build_open_medic_trends.py --years 2019-2025 --out data/open_medic_trends.db python scripts/build_exports.py --out <dir> --tables openmedic_atc1_yearly
Citer cette table
Santeflex, « OpenMedic — série annuelle par classe ATC niveau 1 » (openmedic_atc1_yearly), export du 17 septembre 2026, 98 lignes. Licence : Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments). D’après Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) ; Classification ATC (libellés de niveau 1, OMS / BDPM). https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| atc_level_1 | Code ATC niveau 1 | string | — | open_medic_trends.db : cip13_ref.atc_level_1 | colonne brute, aucune dérivation |
| atc_level_1_label | Classe thérapeutique | string | — | intelligence.trends.ATC1_LABELS (libellés OMS/BDPM) | le libellé du fichier OpenMedic porte un octet accentué corrompu à ce niveau ; la liste fermée des quatorze classes ATC1 est utilisée à la place, aucun libellé n'est inventé |
| year | Millésime | year | année | open_medic_trends.db : cip13_year.year | colonne brute, aucune dérivation |
| presentations | Présentations | integer | présentations | open_medic_trends.db : cip13_year | nombre de CIP13 de la classe ayant une ligne cette année |
| boxes | Boîtes remboursées | integer | boîtes | open_medic_trends.db : cip13_year.boxes | somme sur les présentations de la classe |
| reimbursement_eur | Montant remboursé | number | euros | open_medic_trends.db : cip13_year.reimbursement | somme sur les présentations de la classe |
| base_eur | Base de remboursement | number | euros | open_medic_trends.db : cip13_year.base | somme sur les présentations de la classe |
| people_lines | Lignes de consommants | integer | lignes | open_medic_trends.db : cip13_year.beneficiaries | somme des consommants par présentation, pas un effectif de personnes |
| generic_share_pct | Part des génériques dans les boîtes | number | % | open_medic_trends.db : cip13_ref.is_generic | boîtes des présentations génériques de la classe / boîtes de la classe × 100 |
| boxes_yoy_pct | Évolution des boîtes sur un an | number | % | open_medic_trends.db : cip13_year.boxes | (N − N−1) / N−1 × 100 ; non renseigné pour la première année de la classe |
| reimbursement_yoy_pct | Évolution du remboursé sur un an | number | % | open_medic_trends.db : cip13_year.reimbursement | (N − N−1) / N−1 × 100 ; non renseigné pour la première année de la classe |
Pénétration des génériques par molécule
generic_penetration
Part des génériques dans les boîtes, au premier et au dernier millésime, pour chaque molécule (ATC niveau 5) dont la référence contient à la fois un princeps et un générique. Table complète, sans seuil ni troncature.
387 lignes · 8 colonnes documentées · Licence Ouverte 1.0
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 387 lignes
- Colonnes
- 8
- premier millésime
- 2019
- dernier millésime
- 2025
- magasin construit le
- 16 septembre 2026
- origine
- fichier
- chemin dans le dépôt
- open_medic_trends.db
- table lue
- cip13_year JOIN cip13_ref
- construit par
- scripts/build_open_medic_trends.py
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 1.0
- Fichiers écrits
- generic_penetration.csv — 21,1 ko (21 066 octets)sha256 6b6fc057490812dace67da4e562089cb427d8deb529ebbe534ecaf3c46c65125
- generic_penetration.json — 93,6 ko (93 557 octets)sha256 0673751f8995f40611472f687b6134b352b1ad619174df79376009d4aeea14c3
Méthode
Assurance Maladie — Open MEDIC, marginal national par CIP13 (Licence Ouverte 1.0) ; sommes par présentation et par année ; ATC et statut générique lus sur le millésime courant ; variation = (N − N−k) / N−k ; part générique = boîtes des présentations marquées génériques / boîtes des présentations dont le statut est connu.
Ce que la table dit, et ce qu’elle ne dit pas
- Table complète : toutes les molécules (ATC5) dont la référence du millésime 2025 contient à la fois au moins un princeps et au moins un générique, sans seuil de volume et sans troncature. Les pages publiques n'en montrent que les 20 plus fortes hausses et baisses au-dessus de 500 000 boîtes : ces classements sont un extrait de cette table, jamais un total.
- Le statut générique est lu sur le millésime courant et appliqué aux deux années : une présentation devenue générique entre les deux millésimes est comptée comme générique dans les deux.
Sources amont
- Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) · Licence Ouverte 1.0
Reconstruire la table depuis la source
python scripts/build_open_medic_trends.py --years 2019-2025 --out data/open_medic_trends.db python scripts/build_exports.py --out <dir> --tables generic_penetration
Citer cette table
Santeflex, « Pénétration des génériques par molécule » (generic_penetration), export du 17 septembre 2026, 387 lignes. Licence : Licence Ouverte 1.0. D’après Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments). https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| atc_level_5 | Code ATC niveau 5 (molécule) | string | — | open_medic_trends.db : cip13_ref.atc_level_5 | colonne brute, aucune dérivation |
| atc_level_5_label | Molécule | string | — | open_medic_trends.db : cip13_ref.atc_level_5_label | libellé du fichier OpenMedic, non réécrit |
| year_from | Premier millésime comparé | year | année | open_medic_trends.db : cip13_year.year | première année présente dans la base |
| generic_share_from_pct | Part générique au premier millésime | number | % | open_medic_trends.db : cip13_year JOIN cip13_ref.is_generic | boîtes génériques / boîtes de la molécule cette année-là × 100 |
| year_to | Dernier millésime comparé | year | année | open_medic_trends.db : cip13_year.year | dernière année présente dans la base |
| generic_share_to_pct | Part générique au dernier millésime | number | % | open_medic_trends.db : cip13_year JOIN cip13_ref.is_generic | boîtes génériques / boîtes de la molécule cette année-là × 100 |
| delta_pts | Évolution de la part générique | number | points de % | open_medic_trends.db | part au dernier millésime − part au premier ; non renseigné si l'une des deux parts manque |
| boxes_last | Boîtes au dernier millésime | integer | boîtes | open_medic_trends.db : cip13_year.boxes | somme des boîtes de la molécule au dernier millésime, pour pondérer la lecture |
Fiches médicament par présentation
drug_records
Une ligne par présentation (CIP13) du millésime OpenMedic courant : produit, prix et taux (BDPM), groupe générique et princeps, SMR propre ou hérité, dépense, consommants, rangs, évolution annuelle, bulletin ANSM et événements réglementaires. Données agrégées publiques, aucune donnée personnelle.
12 486 lignes · 38 colonnes documentées · Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments)
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 12 486 lignes
- Colonnes
- 38
- millésime Open MEDIC
- 2025
- millésime précédent
- 2024
- magasin construit le
- 16 septembre 2026
- lignes déclarées par le magasin
- 12 486
- sources du magasin
- BDPM CIS/CIP/GENER/HAS_SMR/HAS_ASMR/Dispo_Spec (ANSM), OpenMedic (Assurance Maladie), regulatory_events.json
- origine
- fichier
- chemin dans le dépôt
- drug_intel.db
- table lue
- drug_intel
- construit par
- scripts/build_drug_intel.py
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments)Table dérivée : les jointures BDPM × OpenMedic, l'héritage du SMR depuis le princeps et les rangs sont notre travail. Les colonnes restent sous la licence de leur source, colonne par colonne (voir le dictionnaire). Rien n'est rediffusé sous une licence plus permissive que son entrée.
- Fichiers écrits
- drug_records.csv — 5,1 Mo (5 070 341 octets)sha256 af0a37daf16757a426a904b21cb637a1ce73fcf91edabda146eac418b254f4d6
- drug_records.json — 14,3 Mo (14 349 202 octets)sha256 548763425d21d1033a8220059658e8cc1286627b4a51b7245638a1cfb6dbb439
Méthode
BDPM (ANSM) : dénomination, présentation, prix et taux publics, groupes génériques, avis HAS (SMR/ASMR), bulletins de disponibilité ; OpenMedic (Assurance Maladie) : boîtes, remboursé, base, consommants du dernier millésime et du précédent ; SMR hérité du princeps du groupe générique quand la présentation n'a pas d'avis propre ; rang = position par remboursé (ou boîtes) parmi les présentations du millésime.
Ce que la table dit, et ce qu’elle ne dit pas
- Table agrégée par présentation (CIP13) : aucune donnée personnelle. « people » est un nombre de lignes de consommants du fichier OpenMedic national, pas un effectif de personnes identifiables.
- Le SMR peut être hérité du princeps du groupe générique : smr_source vaut alors « princeps » et smr_from_cis donne le CIS qui porte l'avis.
Sources amont
- Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) · Licence Ouverte 1.0
- ANSM — base de données publique des médicaments (CIS, CIS_CIP, CIS_GENER, CIS_HAS_SMR, CIS_HAS_ASMR, CIS_CIP_Dispo_Spec) · Données publiques ANSM/HAS (base de données publique des médicaments)
- Santeflex — événements réglementaires (table regulatory_events) · Santeflex — curation propre
Reconstruire la table depuis la source
python scripts/build_open_medic_trends.py --years 2019-2025 --out data/open_medic_trends.db python scripts/build_drug_intel.py --out data/drug_intel.db python scripts/build_exports.py --out <dir> --tables drug_records
Citer cette table
Santeflex, « Fiches médicament par présentation » (drug_records), export du 17 septembre 2026, 12 486 lignes. Licence : Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments). D’après Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) ; ANSM — base de données publique des médicaments (CIS, CIS_CIP, CIS_GENER, CIS_HAS_SMR, CIS_HAS_ASMR, CIS_CIP_Dispo_Spec) ; Santeflex — événements réglementaires (table regulatory_events). https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| cip13 | Code CIP13 de la présentation | string | — | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.cip13 | colonne brute, aucune dérivation |
| cis | Code CIS de la spécialité | string | — | BDPM (ANSM) : CIS_CIP_bdpm.txt | rattaché au CIP13 par le fichier CIS_CIP |
| name | Dénomination | string | — | BDPM (ANSM) : CIS_bdpm.txt | dénomination du CIS ; à défaut, le libellé du fichier OpenMedic |
| presentation | Libellé de présentation | string | — | BDPM (ANSM) : CIS_CIP_bdpm.txt | colonne brute, aucune dérivation |
| atc_level_1 | Code ATC niveau 1 | string | — | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_ref.atc_level_1 | colonne brute, aucune dérivation |
| atc_level_5 | Code ATC niveau 5 | string | — | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_ref.atc_level_5 | colonne brute, aucune dérivation |
| atc_level_5_label | Molécule | string | — | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_ref.atc_level_5_label | colonne brute, aucune dérivation |
| is_generic | Présentation générique | boolean | — | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_ref.is_generic | statut générique du millésime OpenMedic courant |
| group_id | Identifiant du groupe générique | string | — | BDPM (ANSM) : CIS_GENER_bdpm.txt | colonne brute, aucune dérivation |
| group_label | Libellé du groupe générique | string | — | BDPM (ANSM) : CIS_GENER_bdpm.txt | colonne brute, aucune dérivation |
| princeps_name | Princeps du groupe | string | — | BDPM (ANSM) : CIS_GENER_bdpm.txt | extrait du libellé du groupe (partie après « - », avant la première virgule) |
| smr | Service médical rendu | string | — | BDPM (ANSM) : CIS_HAS_SMR_bdpm.txt | avis le plus récent du CIS, ou de son princeps (voir smr_source) |
| smr_level | Niveau de SMR normalisé | string | — | src/intelligence — table SMR_LEVEL | important / modere / faible / insuffisant, à partir du libellé HAS ; vide si le libellé n'est pas l'un des quatre |
| smr_date | Date de l'avis SMR | date | — | BDPM (ANSM) : CIS_HAS_SMR_bdpm.txt | colonne brute, aucune dérivation |
| smr_source | Origine du SMR | string | — | construit | « own » quand la spécialité porte l'avis, « princeps » quand il est hérité du princeps du groupe générique |
| smr_from_cis | CIS ayant fourni le SMR hérité | string | — | BDPM (ANSM) : CIS_GENER_bdpm.txt | renseigné seulement quand smr_source = princeps |
| asmr | Amélioration du service médical rendu | string | — | BDPM (ANSM) : CIS_HAS_ASMR_bdpm.txt | avis le plus récent du CIS |
| rate_pct | Taux de remboursement affiché | number | % | BDPM (ANSM) : CIS_CIP_bdpm.txt | taux public de la présentation, hors exonération |
| price_eur | Prix | number | euros | BDPM (ANSM) : CIS_CIP_bdpm.txt | colonne brute, aucune dérivation |
| price_ttc_eur | Prix TTC | number | euros | BDPM (ANSM) : CIS_CIP_bdpm.txt | colonne brute, aucune dérivation |
| honoraire_eur | Honoraire de dispensation | number | euros | BDPM (ANSM) : CIS_CIP_bdpm.txt | colonne brute, aucune dérivation |
| boxes | Boîtes remboursées | integer | boîtes | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.boxes | millésime courant (colonne year) |
| reimbursement_eur | Montant remboursé | number | euros | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.reimbursement | millésime courant |
| base_eur | Base de remboursement | number | euros | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.base | millésime courant |
| people | Lignes de consommants | integer | lignes | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.beneficiaries | consommants de cette présentation au millésime courant ; pas un effectif de personnes |
| year | Millésime OpenMedic | year | année | open_medic_trends.db (OpenMedic, Assurance Maladie) : meta.year | colonne brute, aucune dérivation |
| boxes_prev | Boîtes au millésime précédent | integer | boîtes | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.boxes | millésime précédent ; vide si la présentation n'y figure pas |
| boxes_yoy_pct | Évolution des boîtes sur un an | number | % | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.boxes | (N − N−1) / N−1 × 100 |
| reimbursement_yoy_pct | Évolution du remboursé sur un an | number | % | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.reimbursement | (N − N−1) / N−1 × 100 |
| spend_rank | Rang par montant remboursé | integer | rang | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.reimbursement | position parmi toutes les présentations du millésime, 1 = la plus remboursée |
| boxes_rank | Rang par boîtes | integer | rang | open_medic_trends.db (OpenMedic, Assurance Maladie) : cip13_year.boxes | position parmi toutes les présentations du millésime, 1 = la plus vendue |
| dispo_code | Code du bulletin de disponibilité | string | — | BDPM (ANSM) : CIS_CIP_Dispo_Spec.txt | bulletin le plus récent du CIS |
| dispo_label | Statut de disponibilité | string | — | BDPM (ANSM) : CIS_CIP_Dispo_Spec.txt | colonne brute, aucune dérivation |
| dispo_since | Début du bulletin | date | — | BDPM (ANSM) : CIS_CIP_Dispo_Spec.txt | colonne brute, aucune dérivation |
| dispo_updated | Mise à jour du bulletin | date | — | BDPM (ANSM) : CIS_CIP_Dispo_Spec.txt | colonne brute, aucune dérivation |
| dispo_url | Lien du bulletin ANSM | string | — | BDPM (ANSM) : CIS_CIP_Dispo_Spec.txt | colonne brute, aucune dérivation |
| dispo_active | Bulletin actif | boolean | — | BDPM (ANSM) : CIS_CIP_Dispo_Spec.txt | vide quand la présentation ne porte aucun bulletin : « non renseigné », jamais « disponible » |
| events | Événements réglementaires touchant la présentation | string | — | src/config/regulatory_events.json | identifiants d'événements attachés par niveau de SMR au moment du build, joints par « ; » |
DREES — dépenses de santé et restes à charge (tranche publiée)
drees_rac_published
Le cube DREES des montants moyens par consommant et des taux de recours, restreint aux combinaisons que les lecteurs du produit renvoient : sexe « _Ensemble » et C2S « _Ensemble », toutes années, variables, postes, classes d'âge, ALD et échantillons.
172 456 lignes · 10 colonnes documentées · Licence Ouverte 2.0
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 172 456 lignes
- Colonnes
- 10
- jeu de données
- depenses-de-sante-et-restes-a-charge
- dernière modification à la source
- 13 avril 2026
- millésimes
- 2017 · 2021 · 2023
- magasin construit le
- 16 septembre 2026
- lignes du cube complet
- 1 234 682
- origine
- fichier
- chemin dans le dépôt
- drees_rac.db
- table lue
- rac (vue)
- construit par
- scripts/build_drees_rac_db.py
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 2.0
- Fichiers écrits
- drees_rac_published.csv — 23,3 Mo (23 321 819 octets)sha256 16f97bec63d4fd91ad0e31cf87293f59597abc1efd6178c760f8797622531a61
- drees_rac_published.json — 54,5 Mo (54 483 124 octets)sha256 826378f9eef65c5aa2b828f1cf49381219f21410d54d70384dcff400582891dd
Méthode
Source : DREES, données ouvertes (data.drees.solidarites-sante.gouv.fr, Licence Ouverte 2.0). Les jeux retenus sont copiés tels quels à chaque changement de leur date de mise à jour (champ « modified » du portail) ; les libellés sont ceux du portail, aucun n'est réécrit. Le cube « Dépenses de santé et restes à charge » est chargé dans une base locale et interrogé par croisement exact des dimensions (année, variable, poste, classe d'âge, sexe, ALD, C2S, échantillon) ; une combinaison absente est « non renseignée », jamais zéro. Chaque chiffre cite le jeu, son millésime et sa date de mise à jour.
Ce que la table dit, et ce qu’elle ne dit pas
- Tranche publiée : sexe = « _Ensemble » et C2S = « _Ensemble », soit toutes les combinaisons (année × variable × poste × classe d'âge × ALD × échantillon) que les lecteurs du produit renvoient pour la population générale — 172456 lignes sur les 1234682 du cube. Les ventilations par sexe et par statut C2S existent dans le cube et ne sont pas dans cet export ; elles se reconstruisent avec la même commande et s'interrogent par GET /api/intel/drees/rac/lookup.
- Les libellés (variable, poste, classe d'âge, ALD, C2S, échantillon) sont les chaînes du portail DREES, y compris leurs accents manquants, et ne sont jamais réécrits.
- Une combinaison absente du cube n'a pas de ligne : elle est « non renseignée », jamais zéro. La variable « RAC après AMO » n'existe qu'au millésime 2017.
Sources amont
- DREES — Dépenses de santé et restes à charge · Licence Ouverte 2.0
Reconstruire la table depuis la source
python scripts/build_drees_rac_db.py --out data/drees_rac.db python scripts/build_exports.py --out <dir> --tables drees_rac_published
Citer cette table
Santeflex, « DREES — dépenses de santé et restes à charge (tranche publiée) » (drees_rac_published), export du 17 septembre 2026, 172 456 lignes. Licence : Licence Ouverte 2.0. D’après DREES — Dépenses de santé et restes à charge. https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| annee | Millésime | year | année | drees_rac.db : rac.annee (colonne annee de l'export) | colonne brute, aucune dérivation |
| variable | Variable | string | — | drees_rac.db : rac.variable | chaîne du portail DREES, non réécrite (neuf variables) |
| poste | Poste de soins | string | — | drees_rac.db : rac.poste | chaîne du portail DREES, non réécrite (29 postes, dont « _Total ») |
| classe_d_age | Classe d'âge | string | — | drees_rac.db : rac.classe_d_age | chaîne du portail ; « _Ensemble » = toutes classes |
| sexe | Sexe | string | — | drees_rac.db : rac.sexe | constante « _Ensemble » dans cet export ; les ventilations par sexe ne sont pas exportées |
| ald | Affection de longue durée | string | — | drees_rac.db : rac.ald | chaîne du portail : Oui, Non ou « _Ensemble » |
| c2s | Complémentaire santé solidaire | string | — | drees_rac.db : rac.c2s | constante « _Ensemble » dans cet export ; les ventilations C2S ne sont pas exportées |
| echantillon | Échantillon de dépense | string | — | drees_rac.db : rac.echantillon | déciles de dépense, top 5 %, top 1 % ou « _Total » ; chaînes du portail |
| valeur | Valeur | number | euros par consommant (montants moyens) ; % pour « Taux de recours » | drees_rac.db : rac.valeur | valeur publiée par la DREES pour la combinaison ; une combinaison absente n'a pas de ligne et n'est pas zéro |
| nombre_de_consommants | Nombre de consommants | integer | consommants | drees_rac.db : rac.nombre_de_consommants | effectif publié derrière la moyenne |
Open DAMIR — table par spécialité de l'exécutant
damir_specialties
Actes, base, remboursé, payé et dépassement par spécialité de l'exécutant sur les mois de flux chargés, avec le taux de dépassement et les parts exonérée, ALD et C2S du montant payé.
27 lignes · 17 colonnes documentées · Licence Ouverte 1.0
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 27 lignes
- Colonnes
- 17
- premier mois
- janvier 2024
- dernier mois
- décembre 2025
- mois couverts
- 24
- lexique des codes
- https://github.com/SGMAP-AGD/DAMIR/blob/master/OpenDamir/documentation/Lexique%20open-DAMIR.xls
- origine
- api
- lu le
- 17 septembre 2026
- construit par
- scripts/build_open_damir_db.py (sur le serveur qui sert l'API)
- Licence
- Licence Ouverte 1.0Les libellés de codes viennent des nomenclatures officielles republiées par Etalab/SGMAP (lexique open-DAMIR) et sont cités tels quels ; un code sans libellé chargé est exporté avec label vide et label_loaded = false.
- Fichiers écrits
- damir_specialties.csv — 3,8 ko (3 792 octets)sha256 a473d043863e3f2a02683de3ed206de6514efd4f80d80f732fadd26b4e5d8b65
- damir_specialties.json — 17,7 ko (17 684 octets)sha256 6c7b59fe6fbbd4d8c0a27e5a4b777bbad52979185b90fa585b0a24c5f41b8dd3
Méthode
Source : Assurance Maladie, Open DAMIR (open-data-assurance-maladie.ameli.fr, Licence Ouverte 1.0), fichiers mensuels de flux de remboursement tous régimes. Chaque fichier est lu une fois et sommé sur six clés (spécialité de l'exécutant PSE_SPE_SNDS, secteur public/privé PRS_PPU_SEC, région de résidence BEN_RES_REG, nature de prestation PRS_NAT, motif d'exonération EXO_MTF, top C2S BEN_CMU_TOP) : nombre d'actes, quantités, base de remboursement, montant remboursé, montant payé et montant du dépassement (PRS_DEP_MNT) ; les lignes correctives négatives sont conservées. Taux de dépassement = dépassement / base × 100 (absent si la base est nulle). Parts exonérée, ALD et C2S = part du montant payé dont le motif d'exonération (classes du lexique) ou le top C2S le porte. Les libellés des codes viennent des nomenclatures officielles citées dans le lexique ; un code sans libellé est affiché tel quel. La spécialité de l'exécutant ne s'applique qu'aux médecins : le code 0 (non renseigné) porte les pharmacies, laboratoires, auxiliaires médicaux, transports et établissements. Le mois est le mois de traitement (FLX_ANN_MOI), pas le mois de soins. Périmètre : hors la majeure partie des prestations hospitalières du secteur public ; ni secteur conventionnel, ni département, ni délai.
Ce que la table dit, et ce qu’elle ne dit pas
- Le magasin local open_damir.db est absent de cet environnement : la table a été lue sur l'API publique Santeflex, qui la calcule sur les mois construits sur son volume. Les chiffres sont ceux du serveur, pas d'un calcul local ; la commande de reproduction reconstruit les mois à partir des fichiers de l'Assurance Maladie.
- La spécialité de l'exécutant ne s'applique qu'aux médecins : le code « 0 » (non renseigné) porte les pharmacies, laboratoires, auxiliaires médicaux, transports et établissements. Ce n'est pas une spécialité et son taux de dépassement ne se lit pas comme tel.
- Le mois est le mois de traitement (FLX_ANN_MOI), pas le mois de soins ; les lignes correctives négatives sont conservées.
Sources amont
Reconstruire la table depuis la source
python scripts/build_open_damir_db.py --backfill-missing --max 24 --from-month 202401 python scripts/build_exports.py --out <dir> --tables damir_specialties
Citer cette table
Santeflex, « Open DAMIR — table par spécialité de l'exécutant » (damir_specialties), export du 17 septembre 2026, 27 lignes. Licence : Licence Ouverte 1.0. D’après Assurance Maladie — Open DAMIR (dépenses d'assurance maladie interrégimes) ; Lexique open-DAMIR (nomenclatures CNAMTS diffusées avec le jeu Open DAMIR, republiées par Etalab / SGMAP-AGD). https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| month_from | Premier mois de traitement | month | AAAAMM | open_damir.db : months.month (ou champ months de l'API) | plus ancien mois additionné |
| month_to | Dernier mois de traitement | month | AAAAMM | open_damir.db : months.month (ou champ months de l'API) | plus récent mois additionné |
| months_count | Nombre de mois additionnés | integer | mois | open_damir.db : months (ou champ months de l'API) | dit sur combien de mois la ligne est sommée ; la série n'est pas continue par construction |
| region | Région de résidence (code) | string | — | open_damir.db : damir.BEN_RES_REG | vide = France entière (aucun filtre de région) |
| region_label | Région de résidence | string | — | lexique open-DAMIR : BEN_RES_REG | vide quand aucune région n'est demandée ou quand le lexique ne porte pas le code |
| pse_spe_snds | Code spécialité de l'exécutant | string | — | open_damir.db : damir.PSE_SPE_SNDS | clé d'agrégation du fichier mensuel |
| label | Spécialité de l'exécutant | string | — | lexique open-DAMIR : PSE_SPE_SNDS | libellé officiel du code ; vide quand le lexique ne le porte pas — aucun libellé n'est inventé |
| label_loaded | Libellé chargé | boolean | — | lexique open-DAMIR | faux quand le code est affiché sans libellé |
| acts | Nombre d'actes | number | actes | open_damir.db : SUM(PRS_ACT_NBR) | somme sur les mois retenus ; les lignes correctives négatives sont conservées |
| base_eur | Base de remboursement | number | euros | open_damir.db : SUM(PRS_REM_BSE) | somme sur les mois retenus |
| reimbursed_eur | Montant remboursé | number | euros | open_damir.db : SUM(PRS_REM_MNT) | somme sur les mois retenus |
| paid_eur | Montant payé | number | euros | open_damir.db : SUM(PRS_PAI_MNT) | somme sur les mois retenus |
| overrun_eur | Montant de dépassement | number | euros | open_damir.db : SUM(PRS_DEP_MNT) | somme sur les mois retenus |
| overrun_rate_pct | Taux de dépassement | number | % | open_damir.db | dépassement / base × 100 ; non renseigné si la base est nulle |
| exonerated_share_pct | Part exonérée du montant payé | number | % | open_damir.db : EXO_MTF (classes du lexique) | montant payé dont le motif d'exonération appartient aux classes exonérantes / montant payé × 100 |
| ald_share_pct | Part ALD du montant payé | number | % | open_damir.db : EXO_MTF (classe ald_related du lexique) | montant payé dont le motif d'exonération est lié à une ALD / montant payé × 100 |
| c2s_share_pct | Part C2S du montant payé | number | % | open_damir.db : BEN_CMU_TOP | montant payé porté par un bénéficiaire au top C2S / montant payé × 100 |
Accès aux soins — comptages de praticiens par département et spécialité
access_annuaire
Comptages issus des instantanés datés de l'annuaire santé de la CNAM : praticiens recensés, répartition par secteur conventionnel, option tarifaire OPTAM, carte Vitale et densité pour 100 000 habitants. COMPTAGES UNIQUEMENT.
2 134 lignes · 23 colonnes documentées · Licence Ouverte 2.0
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 2 134 lignes
- Colonnes
- 23
- instantanés
- 16 septembre 2026
- magasin source construit le
- 12 septembre 2026
- version de correspondance
- cnam_liste_ps_v1
- origine
- instantanés
- chemin dans le dépôt
- snapshots/annuaire
- construit par
- intelligence.snapshots.snapshot_annuaire (job hebdomadaire)
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 2.0Licence lue sur la page du jeu, pas déduite d'un autre de nos fichiers : https://www.data.gouv.fr/datasets/annuaire-sante-ameli (jeu 68e51e04c4258097a201a3cc, organisation « Caisse nationale de l'Assurance Maladie »), champ « license » de l'API data.gouv.fr = « lov2 », c'est-à-dire la Licence Ouverte 2.0 — attribution, sans partage à l'identique (relevé le 2026-09-17). Une version antérieure de cet export déclarait l'ODbL et son partage à l'identique : c'était une obligation que la source n'impose pas, et elle est retirée. Les comptages dérivés sont donc diffusés sous Licence Ouverte 2.0, avec attribution à la CNAM. Vérifier la page du jeu avant toute rediffusion.
- Fichiers écrits
- access_annuaire.csv — 304,0 ko (303 982 octets)sha256 0684cd977d552d3c2808b746ad10790555f0bdab4478cd7d1cb695cd2e446247
- access_annuaire.json — 1,4 Mo (1 403 919 octets)sha256 2bf6ea296d430261e916c2e30fdda6caabf51a3a088421f04b1c9ff553b2db17
Méthode
Comptage des praticiens recensés dans l'annuaire santé Ameli (CNAM, export hebdomadaire « liste des PS », Licence Ouverte 2.0), agrégé à chaque build en instantané daté par département × libellé de spécialité × code secteur × option tarifaire × carte Vitale (version de correspondance cnam_liste_ps_v1). Le département est formé des deux premiers caractères du code postal : la Corse apparaît en « 20 » (2A et 2B réunis), tous les codes postaux 97xxx en « 97 » (départements d'outre-mer 971, 972, 973, 974, 976, mais aussi Saint-Pierre-et-Miquelon 975, Saint-Barthélemy 977 et Saint-Martin 978), rapportés pour la densité à la population des cinq seuls départements d'outre-mer : la densité « 97 » est donc une borne haute, légèrement surestimée. « 98 » (Monaco et collectivités du Pacifique) est ignoré pour la densité, les codes postaux absents ou invalides ('', 00, 99) sont écartés. Le code secteur est lu tel que l'export l'écrit : '1' = secteur 1, '3' = secteur 2 (l'export code le secteur 2 en 3, étude S7), '' et '0' = non conventionné ou non applicable, tout autre code ('2', 137 lignes au niveau national) est compté à part sous « autre » sans être attribué. Une spécialité du dictionnaire Santeflex couvre un ou plusieurs libellés CNAM résolus avec la même règle que la recherche de praticiens (correspondance sur mots entiers) ; les libellés couverts sont cités avec chaque série. « Conventionnés » = secteur 1 + secteur 2 ; les parts secteur 1, secteur 2 et OPTAM (option tarifaire commençant par OPTAM) sont rapportées aux conventionnés, la part carte Vitale à l'ensemble des praticiens recensés. La densité = praticiens recensés / population du département × 100 000, calculée seulement quand la population est chargée (INSEE, populations légales servies par geo.api.gouv.fr, millésime indiqué dans la source) et jamais estimée. Une évolution compare le premier et le dernier instantané disponibles, cite les deux dates et les deux valeurs, et n'est jamais extrapolée ; avec un seul point, aucune évolution n'est affirmée. Les établissements viennent des instantanés FINESS (une ligne par département × catégorie) ; la démographie nationale annuelle vient des jeux DREES cités avec leur date de mise à jour. Ces chiffres décrivent l'offre recensée, ni un délai ni une disponibilité.
Ce que la table dit, et ce qu’elle ne dit pas
- COMPTAGES UNIQUEMENT. Le fichier « liste des professionnels de santé » de la CNAM nomme des personnes ; aucune ligne nominative ne sort de l'application. Cet export reprend exactement le GRAIN des pages publiques de l'observatoire — département × spécialité du dictionnaire × date d'instantané — mais pas leur COUVERTURE : les pages publient les départements les plus peuplés, cet export couvre les 97 départements que l'instantané porte, dont les plus ruraux.
- Petits effectifs supprimés. Une cellule n'est publiée que si son total atteint 3 praticiens et qu'aucun de ses comptages ne vaut 1 ou 2 : un tel comptage décrirait une personne identifiable, et n'en retirer que le comptage en cause le rendrait par soustraction des autres — c'est donc toute la cellule qui est supprimée, total compris. Un comptage nul, lui, est publié : zéro dit « aucun de ceux-là » et ne décrit personne. Sur ce grain — département × spécialité × date d'instantané — un comptage de 1 ou 2 praticiens dirait le secteur, l'option tarifaire et la carte Vitale d'une personne identifiable. Ces cellules sont exportées avec supprime_petit_effectif = true, renseigne = true (l'instantané porte bien des lignes) et des comptages « non renseigné » — jamais zéro. 682 ligne(s) sur 2134 sont dans ce cas. Le total du département n'est donc pas la somme des lignes publiées.
- Une combinaison sans ligne dans l'instantané est exportée avec renseigne = false et des comptages nuls : « non renseigné », jamais zéro.
- Le département vient des deux premiers caractères du code postal : « 20 » réunit 2A et 2B, « 97 » réunit les codes postaux 97xxx (dont 975, 977 et 978, qui ne sont pas au dénominateur de population), « 98 » n'a pas de densité.
- Le code secteur est celui de l'export : « 1 » = secteur 1, « 3 » = secteur 2 (l'export code le secteur 2 en 3), « » et « 0 » = non conventionné ou non applicable ; tout autre code est compté à part sous « autre » et n'est pas attribué.
Sources amont
- CNAM — annuaire santé, liste des professionnels de santé · Licence Ouverte 2.0
- INSEE — populations légales, servies par geo.api.gouv.fr (découpage administratif) · Licence Ouverte 2.0 (Etalab, données INSEE)
Reconstruire la table depuis la source
python -c "import sys; sys.path.insert(0,'src'); from intelligence import snapshots; print(snapshots.run_weekly_snapshots())" python scripts/build_exports.py --out <dir> --tables access_annuaire
Citer cette table
Santeflex, « Accès aux soins — comptages de praticiens par département et spécialité » (access_annuaire), export du 17 septembre 2026, 2 134 lignes. Licence : Licence Ouverte 2.0. D’après CNAM — annuaire santé, liste des professionnels de santé ; INSEE — populations légales, servies par geo.api.gouv.fr (découpage administratif). https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| date | Date de l'instantané | date | — | DATA_DIR/snapshots/annuaire/<date>.csv.gz | jour où l'agrégat daté a été écrit |
| dep | Département (code) | string | — | annuaire CNAM : deux premiers caractères du code postal | « 20 » réunit la Corse (2A et 2B), « 97 » tous les codes postaux 97xxx, « 98 » Monaco et le Pacifique ; codes postaux absents ou invalides écartés |
| departement | Département | string | — | src/config/population_departements.json : nom | nom servi par geo.api.gouv.fr ; vide quand le département n'y figure pas |
| specialty_key | Clé de spécialité Santeflex | string | — | src/config/specialty_dictionary.json | clé de notre dictionnaire, pas une nomenclature |
| specialty_label | Spécialité | string | — | src/config/specialty_dictionary.json | nom d'affichage de notre dictionnaire |
| specialites_norm | Libellés CNAM couverts | string | — | annuaire CNAM : colonne specialite_norm | libellés de l'export effectivement additionnés, résolus par correspondance sur mots entiers, joints par « ; » ; dit exactement ce que le comptage recouvre |
| mapping_version | Version de correspondance | string | — | intelligence.snapshots.ANNUAIRE_MAPPING_VERSION | version de la lecture des codes de l'export CNAM |
| renseigne | Combinaison renseignée | boolean | — | instantané annuaire | faux quand l'instantané ne porte aucune ligne pour ce département et ces libellés : les comptages sont alors vides, « non renseigné », jamais zéro |
| supprime_petit_effectif | Comptage supprimé (petit effectif) | boolean | — | intelligence.exports.SMALL_CELL_THRESHOLD | vrai quand le total de la cellule est sous 3 praticiens OU quand l'un de ses comptages vaut 1 ou 2 — un sous-comptage de 1 ou 2 décrit une personne même sous un total élevé, et le retirer seul le rendrait par soustraction : toute la cellule est donc vidée, total compris. Les comptages et les parts sont alors vides alors même que renseigne reste vrai ; une cellule vide n'est jamais zéro, et un comptage nul, lui, est publié |
| total | Praticiens recensés | integer | praticiens | instantané annuaire : somme de count | somme des lignes du département pour ces libellés |
| conventionnes | Praticiens conventionnés | integer | praticiens | instantané annuaire : secteur_code | secteur 1 + secteur 2 |
| secteur_1 | Secteur 1 | integer | praticiens | instantané annuaire : secteur_code = '1' | colonne brute, aucune dérivation |
| secteur_2 | Secteur 2 | integer | praticiens | instantané annuaire : secteur_code = '3' | l'export CNAM code le secteur 2 en « 3 » (étude S7) |
| non_conventionne | Non conventionnés ou non applicable | integer | praticiens | instantané annuaire : secteur_code vide ou '0' | colonne brute, aucune dérivation |
| autre | Autre code secteur | integer | praticiens | instantané annuaire : tout autre secteur_code | codes non attribués (notamment « 2 ») comptés à part, jamais reversés dans le secteur 2 |
| optam | Praticiens en option tarifaire OPTAM | integer | praticiens | instantané annuaire : option_tarifaire | lignes dont l'option tarifaire commence par OPTAM |
| carte_vitale | Praticiens acceptant la carte Vitale | integer | praticiens | instantané annuaire : carte_vitale = '1' | colonne brute, aucune dérivation |
| share_secteur_1_pct | Part du secteur 1 | number | % | instantané annuaire | secteur 1 / conventionnés × 100 |
| share_secteur_2_pct | Part du secteur 2 | number | % | instantané annuaire | secteur 2 / conventionnés × 100 |
| share_optam_pct | Part OPTAM | number | % | instantané annuaire | OPTAM / conventionnés × 100 |
| share_carte_vitale_pct | Part acceptant la carte Vitale | number | % | instantané annuaire | carte Vitale / praticiens recensés × 100 |
| population | Population du département | integer | habitants | src/config/population_departements.json : value | somme des populations légales des communes servies par geo.api.gouv.fr ; vide quand absente |
| density_per_100k | Densité | number | praticiens pour 100 000 habitants | instantané annuaire et population_departements.json | praticiens recensés / population × 100 000 ; jamais estimée, vide quand la population manque ; la densité « 97 » est une borne haute (le dénominateur ne couvre que les cinq DOM) |
FINESS — établissements recensés par département et groupe de catégories
finess_establishments
Comptages d'établissements sanitaires et médico-sociaux issus des instantanés datés du cache FINESS, par département et groupe de catégories.
1 027 lignes · 7 colonnes documentées · Licence Ouverte 1.0
Millésime, provenance, méthode, dictionnaire des colonnes →
- Lignes
- 1 027 lignes
- Colonnes
- 7
- instantanés
- 16 septembre 2026
- magasin source construit le
- 10 septembre 2026
- origine
- instantanés
- chemin dans le dépôt
- snapshots/finess
- construit par
- intelligence.snapshots.snapshot_finess (job hebdomadaire)
- path_relative_to
- data_dir
- Licence
- Licence Ouverte 1.0
- Fichiers écrits
- finess_establishments.csv — 86,6 ko (86 636 octets)sha256 535153f7ec4ec479c7097c83c9b36b98a083b2887a438fee7da41dbb69069254
- finess_establishments.json — 244,5 ko (244 458 octets)sha256 7d184cab222d641ad899e9f2fdf6590badbe80135f4d15d84f826699ae800ebd
Méthode
Comptage d'établissements recensés dans FINESS (fichier national des établissements sanitaires et sociaux, extraction data.gouv.fr, Licence Ouverte 1.0), agrégé à chaque build en instantané daté par département × regroupement de catégories × catégorie (colonnes dept_code, categorie_group, categorie de l'extraction), puis additionné ici par département × regroupement. Ce sont des établissements, jamais des personnes. Les codes départementaux de FINESS diffèrent de ceux de l'annuaire : la Corse y est en 2A et 2B (réunies ici sous « 20 ») et l'outre-mer porte une lettre (9A, 9B, …), réuni sous « 97 » ; les codes FINESS effectivement additionnés sont cités avec chaque comptage, de sorte que le périmètre est lisible. Le regroupement de catégories est la chaîne écrite par FINESS, jamais réécrite : c'est la clé d'agrégation. Le nom d'affichage à côté est le nôtre (data_hub.finess.GROUP_LABELS) ; sans correspondance il reprend la chaîne FINESS telle quelle et le drapeau de libellé chargé est faux — aucun libellé n'est inventé pour un code. Un regroupement absent d'un instantané est « non renseigné », jamais zéro. Une évolution exige deux instantanés datés, cite les deux dates et les deux valeurs, et n'est jamais extrapolée. Ces comptages décrivent l'offre recensée dans le répertoire, ni une capacité, ni une activité, ni une disponibilité.
Ce que la table dit, et ce qu’elle ne dit pas
- Comptage d'établissements, jamais de personnes.
- Les codes départementaux de FINESS diffèrent de ceux de l'annuaire : la Corse est en 2A et 2B (réunis ici sous « 20 »), l'outre-mer porte une lettre (9A, 9B, …) et est réuni sous « 97 » ; la colonne finess_dept_codes donne les codes FINESS effectivement additionnés.
- Une catégorie absente d'un instantané est « non renseignée » (count vide), jamais zéro.
- Un groupe de catégories dont le libellé n'est pas chargé est exporté tel quel avec label_loaded = false : aucun libellé n'est inventé pour un code.
Sources amont
- FINESS — fichier national des établissements sanitaires et sociaux · Licence Ouverte 1.0
Reconstruire la table depuis la source
python -c "import sys; sys.path.insert(0,'src'); from intelligence import snapshots; print(snapshots.run_weekly_snapshots())" python scripts/build_exports.py --out <dir> --tables finess_establishments
Citer cette table
Santeflex, « FINESS — établissements recensés par département et groupe de catégories » (finess_establishments), export du 17 septembre 2026, 1 027 lignes. Licence : Licence Ouverte 1.0. D’après FINESS — fichier national des établissements sanitaires et sociaux. https://www.santeflex.com/observatoire/donnees/
Dictionnaire des colonnes
| Colonne | Libellé | Type | Unité | Source | Dérivation |
|---|---|---|---|---|---|
| date | Date de l'instantané | date | — | DATA_DIR/snapshots/finess/<date>.csv.gz | jour où l'agrégat daté a été écrit |
| dep | Département (code Santeflex) | string | — | instantané FINESS : dept_code | code à deux caractères aligné sur l'annuaire : « 20 » pour la Corse, « 97 » pour l'outre-mer |
| finess_dept_codes | Codes départementaux FINESS additionnés | string | — | instantané FINESS : dept_code | codes réellement sommés (2A, 2B, 9A…), joints par « ; » ; dit exactement ce que le comptage recouvre |
| categorie_group | Regroupement de catégories FINESS | string | — | instantané FINESS : categorie_group, colonne 21 de l'extraction FINESS (libellé du regroupement de catégories d'établissements) | chaîne écrite par FINESS, non réécrite ; c'est la clé de regroupement |
| categorie_group_label | Nom d'affichage Santeflex du regroupement | string | — | src/data_hub/finess.py : GROUP_LABELS | nom d'affichage que nous donnons au regroupement (« Hôpital public (CH/CHU) » pour « Centres Hospitaliers ») : c'est notre libellé, pas celui de FINESS, qui est dans categorie_group ; sans correspondance la colonne reprend categorie_group tel quel |
| label_loaded | Nom d'affichage disponible | boolean | — | src/data_hub/finess.py : GROUP_LABELS | faux quand le regroupement n'a pas de nom d'affichage et est repris tel quel : aucun libellé n'est inventé |
| count | Établissements recensés | integer | établissements | instantané FINESS : count | somme des lignes du groupe pour les codes départementaux retenus ; vide quand l'instantané ne porte pas ce groupe pour ce département — « non renseigné », jamais zéro |
Les formats
Un format que nous ne servons pas est écrit ici, avec la raison : vous ne perdrez pas une journée à le chercher.
CSV — servi
RFC 4180, UTF-8 sans BOM, séparateur virgule, fin de ligne LF. Un champ vide signifie « non renseigné » et ne doit pas être lu comme zéro.JSON — servi
les mêmes lignes sous « rows », précédées de la table, de sa licence, de son millésime, de sa provenance et de son dictionnaire de colonnes ; une valeur absente y est écrite null, jamais une chaîne vide, et ne doit pas être lue comme zéro.PARQUET — non servi
pyarrow n'est pas installé dans cet environnement et ne figure pas dans requirements.txt : le format Parquet n'est pas proposé. Pour obtenir du Parquet : `pip install pyarrow` puis `python scripts/build_exports.py --format parquet`.Ce qui n’est pas publié, et pourquoi
Une page qui ne dit pas ce qu’elle retient ne vaut pas grand-chose.
Aucune donnée personnelle ne sort de l’application, jamais. L’annuaire de l’Assurance Maladie nomme des professionnels de santé : nous n’en exportons que des comptages, au niveau d’agrégation que les pages publiques de l’observatoire publient déjà — un département, une spécialité, une date d’instantané. Les lignes nominatives restent dans le fichier source, que la CNAM publie elle-même et que vous pouvez aller chercher chez elle. Du côté des remboursements, nous ne rediffusons aucune ligne de soin : Open DAMIR nous sert à calculer des agrégats mensuels par spécialité, et c’est cet agrégat qui est publié. Rien de ce que nos utilisateurs nous confient — documents, ordonnances, conversations, carnet — n’entre dans une table d’export : ces tables sont construites à partir de sources publiques, et seulement de sources publiques. La raison est simple : sur une grille assez fine, des comptages redeviennent des personnes, et une licence ouverte sur une base ne nous autorise jamais à publier ce qui n’y était pas.
Chaque table dit aussi, dans ses propres notes, ce qu’elle laisse de côté : la tranche du cube DREES effectivement publiée et les ventilations qui n’y sont pas, le niveau d’agrégation de l’annuaire, les lignes d’une liste que les pages publiques montrent en extrait et qui ne sont pas un total. Ces notes sont sur la fiche de chaque table, pas ici en résumé.
La règle, telle que la chaîne d’export l’applique
Aucune donnée personnelle. Les tables issues de l'annuaire de la CNAM, qui nomme des professionnels, ne contiennent que des comptages agrégés, au grain des pages publiques (département × spécialité × date d'instantané) ; la couverture, elle, est plus large que celle des pages. Une cellule n'est publiée que si son total atteint 3 praticiens et qu'aucun de ses comptages ne vaut 1 ou 2 : un tel comptage décrirait une personne identifiable, et n'en retirer que le comptage en cause le rendrait par soustraction des autres — c'est donc toute la cellule qui est supprimée, total compris. Un comptage nul, lui, est publié : zéro dit « aucun de ceux-là » et ne décrit personne. La ligne supprimée le dit avec supprime_petit_effectif.Comment citer
Une ligne prête à copier est attachée à chaque table, sur sa fiche.
Citez la table par son titre et son nom technique, avec la date de l’export que vous avez utilisé et son nombre de lignes : deux exports du même nom à deux dates ne portent pas les mêmes chiffres. Citez aussi la source amont sous sa propre licence — nos jointures et notre curation sont à nous, les données publiques restent à leurs producteurs, et aucun d’eux n’endosse Santeflex.
Exemple, pour la table « Événements réglementaires »
Santeflex, « Événements réglementaires » (regulatory_events), export du 17 septembre 2026, 76 lignes. Licence : Santeflex — Licence Ouverte 2.0 (structure et résumés). D’après Légifrance / JORF et sources officielles citées ligne par ligne ; src/config/regulatory_params.json (paramètres datés) et LEGAL_TEXTS. https://www.santeflex.com/observatoire/donnees/
Une table redistribuée garde la licence de son entrée : jamais une plus permissive, jamais une plus restrictive que ce que la source accorde. Vérifiez la page du jeu de données amont avant toute rediffusion.
Les tables dont la licence demande une explication
- regulatory_events — Santeflex — Licence Ouverte 2.0 (structure et résumés) : La structuration, le regroupement et les résumés sont notre travail et sont diffusés sous Licence Ouverte 2.0, avec attribution à Santeflex. Les textes cités restent sous leur propre régime (Légifrance / JORF, ameli.fr, service-public.fr, communiqués ministériels) : chaque ligne porte ses URL, à citer avec elle. Aucune source n'endosse Santeflex.
- openmedic_atc1_yearly — Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments) : Les volumes et les montants viennent d'OpenMedic (Licence Ouverte 1.0). La colonne atc_level_1_label porte les libellés de la classification ATC de niveau 1 tels que l'OMS et la BDPM les écrivent : ils relèvent du régime des données publiques ANSM/HAS et doivent être cités comme tels. Rien n'est rediffusé sous une licence plus permissive que son entrée : republier la colonne de libellés sans mentionner ce régime ne serait pas conforme.
- drug_records — Licence Ouverte 1.0 (OpenMedic) et Données publiques ANSM/HAS (base de données publique des médicaments) : Table dérivée : les jointures BDPM × OpenMedic, l'héritage du SMR depuis le princeps et les rangs sont notre travail. Les colonnes restent sous la licence de leur source, colonne par colonne (voir le dictionnaire). Rien n'est rediffusé sous une licence plus permissive que son entrée.
- damir_specialties — Licence Ouverte 1.0 : Les libellés de codes viennent des nomenclatures officielles republiées par Etalab/SGMAP (lexique open-DAMIR) et sont cités tels quels ; un code sans libellé chargé est exporté avec label vide et label_loaded = false.
- access_annuaire — Licence Ouverte 2.0 : Licence lue sur la page du jeu, pas déduite d'un autre de nos fichiers : https://www.data.gouv.fr/datasets/annuaire-sante-ameli (jeu 68e51e04c4258097a201a3cc, organisation « Caisse nationale de l'Assurance Maladie »), champ « license » de l'API data.gouv.fr = « lov2 », c'est-à-dire la Licence Ouverte 2.0 — attribution, sans partage à l'identique (relevé le 2026-09-17). Une version antérieure de cet export déclarait l'ODbL et son partage à l'identique : c'était une obligation que la source n'impose pas, et elle est retirée. Les comptages dérivés sont donc diffusés sous Licence Ouverte 2.0, avec attribution à la CNAM. Vérifier la page du jeu avant toute rediffusion.
Demander l’accès
Les fichiers ne sont pas encore servis en téléchargement libre : ils sont produits par la chaîne d’export, et envoyés sur demande.
Écrivez-nous
Dites-nous qui vous êtes, quelle table vous voulez, pour quel travail, et sous quel format parmi ceux servis. C’est tout ce dont nous avons besoin : nous ne demandons ni pièce justificative, ni engagement sur ce que vous publierez. Une petite équipe répond, généralement sous 24 h ouvrées.
contact@santeflex.com →C’est l’adresse « presse et partenaires » de la page contact, où figurent aussi les autres points d’entrée. Le site n’héberge aucun formulaire : rien n’est collecté ici, et votre demande arrive par courriel, chez nous.
Ce que vous recevrez
- Les fichiers de la ou des tables demandées (CSV, JSON), tels que la chaîne les écrit.
- Le manifeste : millésime, provenance, licence, méthode, dictionnaire de colonnes et empreinte sha256 de chaque fichier — de quoi vérifier que vous lisez bien ce que nous avons écrit.
- Les commandes de reconstruction, pour refaire la table depuis la source publique sans passer par nous.
La chaîne est publique dans le dépôt : python scripts/build_exports.py --out data/exports --site-manifest site/data/observatoire/exports.json. Les tables sont reconstruites à chaque mise à jour des données : demandez le millésime dont vous avez besoin.
Les sources amont, telles que les tables les déclarent
- Légifrance / JORF et sources officielles citées ligne par ligne · régime propre à chaque texte
- src/config/regulatory_params.json (paramètres datés) et LEGAL_TEXTS · Santeflex
- Assurance Maladie — Open MEDIC (base complète des dépenses de médicaments) · Licence Ouverte 1.0
- Classification ATC (libellés de niveau 1, OMS / BDPM) · Données publiques ANSM/HAS (base de données publique des médicaments)
- ANSM — base de données publique des médicaments (CIS, CIS_CIP, CIS_GENER, CIS_HAS_SMR, CIS_HAS_ASMR, CIS_CIP_Dispo_Spec) · Données publiques ANSM/HAS (base de données publique des médicaments)
- Santeflex — événements réglementaires (table regulatory_events) · Santeflex — curation propre
- DREES — Dépenses de santé et restes à charge · Licence Ouverte 2.0
- Assurance Maladie — Open DAMIR (dépenses d'assurance maladie interrégimes) · Licence Ouverte 1.0
- Lexique open-DAMIR (nomenclatures CNAMTS diffusées avec le jeu Open DAMIR, republiées par Etalab / SGMAP-AGD) · Licence Ouverte 1.0
- CNAM — annuaire santé, liste des professionnels de santé · Licence Ouverte 2.0
- INSEE — populations légales, servies par geo.api.gouv.fr (découpage administratif) · Licence Ouverte 2.0 (Etalab, données INSEE)
- FINESS — fichier national des établissements sanitaires et sociaux · Licence Ouverte 1.0
Méthode
Chaque colonne porte sa source, son millésime et sa licence ; une valeur absente est « non renseignée », jamais zéro ; un code sans libellé chargé est exporté tel quel avec label_loaded = false ; aucune donnée personnelle ne sort de l'application — l'annuaire de la CNAM nomme des personnes, seuls des comptages sont exportés, au grain des pages publiques (département × spécialité × date). Une cellule n'est publiée que si son total atteint 3 praticiens et qu'aucun de ses comptages ne vaut 1 ou 2 : un tel comptage décrirait une personne identifiable, et n'en retirer que le comptage en cause le rendrait par soustraction des autres — c'est donc toute la cellule qui est supprimée, total compris. Un comptage nul, lui, est publié : zéro dit « aucun de ceux-là » et ne décrit personne.
L'observatoire ne publie que des comptages agrégés : aucun praticien n'y est nommé, aucune donnée personnelle n'y entre. Chaque chiffre porte sa source et son millésime ; une table absente est signalée comme non disponible avec la raison, jamais comme un zéro ; aucune évolution n'est affirmée sans deux points datés.
Santeflex décrit les portes du système, les règles et les montants ; jamais l’opportunité d’un soin ni la conduite d’un traitement — c’est votre médecin, ou le 15, qui en juge.
Prêt à savoir ce que vous paierez vraiment ?
Bêta gratuite. Chaque montant cite sa source publique — et vos retours décident de la suite.
- Gratuit, sans attente
- Chaque taux cite sa source
- Conforme RGPD
- Sans engagement