om <- arrow::open_dataset(path)lab_reg <- tibble::tribble(~BEN_REG, ~region,5, "DROM", 11, "Île-de-France", 24, "Centre-Val de Loire", 27, "Bourgogne-Franche-Comté",28, "Normandie", 32, "Hauts-de-France", 44, "Grand Est", 52, "Pays de la Loire", 53, "Bretagne",75, "Nouvelle-Aquitaine", 76, "Occitanie", 84, "Auvergne-Rhône-Alpes",93, "Provence-Alpes-Côte d'Azur et Corse", 99, "Inconnue")lab_age <- tibble::tribble(~age, ~tranche, 0, "0-19 ans", 20, "20-59 ans", 60, "60 ans et +", 99, "Inconnu")lab_sexe <- tibble::tribble(~sexe, ~sexe_lib, 1, "Hommes", 2, "Femmes", 9, "Inconnu")tot <- om |>summarise(lignes =n(), boites =sum(BOITES), rem =sum(REM), bse =sum(BSE)) |>collect()
Open Medic recense les médicaments délivrés en pharmacie de ville et remboursés par l’Assurance maladie (tous régimes, France entière) en 2025, croisés par classe ATC, présentation (code CIP13), âge (3 tranches), sexe, région de résidence du bénéficiaire et spécialité du prescripteur. Le fichier compte 1 873 062 lignes, pour 27,4 Md€ remboursés (base de remboursement : 31,4 Md€, soit un taux moyen de 87,3%) et 2 327 millions de boîtes.
Note
Les accents des libellés (l_ATC*, l_cip13) sont perdus dans le CSV d’origine (remplacés par ?). Les montants sont en euros ; le champ exclut la rétrocession hospitalière et les médicaments délivrés à l’hôpital.
Dépense par grande classe thérapeutique (ATC1 / ATC2)
Code
om |>group_by(ATC1, l_ATC1) |>summarise(rem =sum(REM), bse =sum(BSE)) |>collect() |>ungroup() |>mutate(l =paste0(ATC1, " — ", str_to_sentence(l_ATC1))) |>barh(l, rem) +labs(title ="Montant remboursé par groupe anatomique principal (ATC1), 2025")
Code
om |>group_by(ATC2, l_ATC2) |>summarise(rem =sum(REM)) |>collect() |>ungroup() |>slice_max(rem, n =20) |>mutate(l =paste0(ATC2, " — ", str_to_sentence(str_trunc(l_ATC2, 55)))) |>barh(l, rem) +labs(title ="Les 20 sous-groupes thérapeutiques (ATC2) les plus remboursés")
om |>group_by(CIP13, l_cip13) |>summarise(rem =sum(REM)) |>collect() |>ungroup() |>slice_max(rem, n =20) |>mutate(l =str_to_sentence(str_trunc(l_cip13, 50))) |>barh(l, rem, fill = col2) +labs(title ="Les 20 présentations (CIP13) les plus remboursées")
Le taux de remboursement moyen (REM / BSE) varie fortement d’une classe à l’autre : il reflète les taux de prise en charge (100 %, 65 %, 30 %, 15 %) des vignettes de médicaments.
Code
om |>group_by(ATC2, l_ATC2) |>summarise(rem =sum(REM), bse =sum(BSE)) |>collect() |>ungroup() |>filter(rem >1e8) |>mutate(taux = rem / bse, l =paste0(ATC2, " — ", str_to_sentence(str_trunc(l_ATC2, 50)))) |>barh(l, taux, fmt = pct, fill ="#8e6cb8") +labs(title ="Taux de remboursement moyen, sous-groupes > 100 M€ remboursés")
Qui consomme ? Âge, sexe, région
Code
om |>group_by(age, sexe) |>summarise(rem =sum(REM)) |>collect() |>ungroup() |>left_join(lab_age, by ="age") |>left_join(lab_sexe, by ="sexe") |>filter(sexe %in%1:2) |>ggplot(aes(tranche, rem, fill = sexe_lib)) +geom_col(position ="dodge") +scale_y_continuous(labels = mdd) +scale_fill_manual(values =c(Hommes = col1, Femmes = col2)) +labs(x =NULL, y =NULL, fill =NULL, title ="Montant remboursé par tranche d'âge et sexe") + theme_cnam
Les 60 ans et plus concentrent près de 60 % du remboursé (les 20-59 ans un tiers, les moins de 20 ans 7 %) : le fichier ne donne pas de populations, on ne calcule donc pas de dépense par habitant (voir la base de population INSEE).
Code
om |>group_by(BEN_REG) |>summarise(rem =sum(REM)) |>collect() |>ungroup() |>left_join(lab_reg, by ="BEN_REG") |>mutate(region =coalesce(region, "Inconnue")) |>barh(region, rem) +labs(title ="Montant remboursé par région de résidence du bénéficiaire")
Les prescripteurs salariés (essentiellement hospitaliers : traitements de ville prescrits à l’hôpital, dont les médicaments innovants très coûteux — tafamidis, apixaban, aflibercept… en tête des substances) pèsent près de la moitié du remboursé (49 %), devant les généralistes libéraux (31 %).
Dans le fichier 2025 TOP_GEN est numérique (0 = sans objet, 9 = inconnu). Le code 1 pèse 46 % des boîtes mais seulement 16 % du remboursé (médicaments peu chers, profil typique des génériques) ; le code 4 8 % des boîtes et 12 % du remboursé. La correspondance exacte des codes est à confirmer avec le lexique Open Medic.
Source
Caisse nationale de l’Assurance Maladie (Cnam) — Open Medic (data.ameli.fr), base complète 2025. Conversion Excel → Parquet : cnam.R (dossier data/cnam).