Dépenses d’hospitalisation — hôpitaux publics et cliniques privées (juillet 2026)

Données - Assurance Maladie (Cnam)

Code
source(here::here("_rinit.R"))
invisible(Sys.setlocale("LC_TIME", "fr_FR.UTF-8"))
# cd ~/iCloud/website/data/cnam; /usr/local/bin/R -e 'quarto::quarto_render("risque_hospitalisation.qmd")'
# (données : Rscript --vanilla cnam.R)

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE,
                      fig.width = 9, fig.height = 5.5, dpi = 150)
library(dplyr); library(tidyr); library(ggplot2); library(stringr)

path <- here::here("data", "cnam", "risque_hospitalisation.parquet")
d <- arrow::read_parquet(path)

mdd <- scales::label_number(scale = 1e-9, suffix = " Md€", accuracy = 0.1, big.mark = " ", decimal.mark = ",")
mde <- scales::label_number(scale = 1e-6, suffix = " M€", accuracy = 1, big.mark = " ", decimal.mark = ",")
pct <- scales::label_percent(accuracy = 0.1, decimal.mark = ",")
nb  <- scales::label_number(big.mark = " ", decimal.mark = ",")

theme_cnam <- theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", size = 13), plot.title.position = "plot",
        plot.subtitle = element_text(colour = "grey35"),
        panel.grid.minor = element_blank(), legend.position = "bottom")
col1 <- "#1b7f79"; col2 <- "#c0392b"

# barres horizontales triées
barh <- function(df, lab, val, fmt = mdd, fill = col1, ...) {
  df |>
    mutate(.l = forcats::fct_reorder({{ lab }}, {{ val }})) |>
    ggplot(aes(.l, {{ val }})) +
    geom_col(fill = fill, ...) +
    geom_text(aes(label = fmt({{ val }})), hjust = -0.08, size = 3) +
    coord_flip() +
    scale_y_continuous(labels = fmt, expand = expansion(mult = c(0, 0.2))) +
    labs(x = NULL, y = NULL) + theme_cnam
}
Code
h <- d
tot <- h |> filter(poste == "TOTAL")

Dépenses d’hospitalisation de l’assurance maladie, cumul à fin juillet 2026 comparé au même cumul 2025, en euros : hôpitaux publics et cliniques privées (dont honoraires des praticiens et frais d’hospitalisation). Total : 68,1 Md€ contre 64,6 Md€ un an plus tôt, soit 5,5%.

Code
h |> transmute(Poste = if_else(is.na(parent), poste, paste0("   dont ", str_to_lower(poste))),
               `Cumul 2026` = cumul_2026, `Cumul 2025` = cumul_2025, Évolution = evolution) |>
  gt::gt() |> gt::fmt_number(matches("^Cumul"), decimals = 0, sep_mark = " ") |>
  gt::fmt_percent(Évolution, decimals = 1) |> gt::tab_options(table.width = "100%")
Poste Cumul 2026 Cumul 2025 Évolution
Dépenses des hôpitaux publics 53 259 821 837 49 940 935 654 6.6%
Dépenses des cliniques privées 14 875 264 204 14 652 490 298 1.5%
dont honoraires des praticiens 3 975 362 300 3 935 190 098 1.0%
dont frais d'hospitalisation 10 899 901 904 10 717 300 200 1.7%
TOTAL 68 135 086 041 64 593 425 952 5.5%
Code
h |> filter(is.na(parent), poste != "TOTAL") |>
  pivot_longer(c(cumul_2025, cumul_2026), names_to = "an", values_to = "v") |>
  mutate(an = str_remove(an, "cumul_")) |>
  ggplot(aes(poste, v, fill = an)) + geom_col(position = "dodge") +
  geom_text(aes(label = mdd(v)), position = position_dodge(0.9), vjust = -0.4, size = 3.5) +
  scale_y_continuous(labels = mdd, expand = expansion(mult = c(0, .12))) +
  scale_fill_manual(values = c(`2025` = "grey65", `2026` = col1)) +
  labs(x = NULL, y = NULL, fill = "Cumul à fin juillet", title = "Hôpitaux publics et cliniques privées") + theme_cnam

La dépense des hôpitaux publics (6,6%) progresse plus de quatre fois plus vite que celle des cliniques privées (1,5%) : l’essentiel de la hausse de la dépense d’hospitalisation vient du secteur public. Les hôpitaux publics représentent 78,2% du total.

Source

Caisse nationale de l’Assurance Maladie (Cnam) — Cnam (SNDS) — Dépenses par type de risque, résultats à fin juillet 2026, onglet « Dépenses hospitalisation ». Conversion Excel → Parquet : cnam.R (dossier data/cnam).