Health care expenditure by financing scheme - hlth_sha11_hf

Data - Eurostat

Info

Last observation: 2025 (N = 1412)

First observation: 1992 (N = 144)

Last data update: 14 aoû 2026, 21:13. Last compile: 18 aoû 2026, 01:24

Structure

Ex: Government schemes and compulsory contributory health care financing schemes (% of GDP)

Code
hlth_sha11_hf |>
  filter(geo %in% c("FR", "DE", "IT"),
         # HF1: Government schemes and compulsory contributory health care financing schemes
         icha11_hf == "HF1",
         # PC_GDP: Percentage of gross domestic product (GDP)
         unit == "PC_GDP") |>
  
  year_to_enddate() |>
  mutate(values = values/100) |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(0, 60, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

Financing Schemes: France

Government, Voluntary Insurance, Out-of-Pocket (% of GDP)

Code
hlth_sha11_hf |>
  filter(geo == "FR",
         icha11_hf %in% c("HF1", "HF2", "HF3"),
         unit == "PC_GDP") |>

  year_to_enddate() |>
  ggplot() + geom_line(aes(x = date, y = values/100, color = Icha11_hf)) +
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(0, 60, 1),
                     labels = scales::percent_format(accuracy = 1))

Latest Year: Health Expenditure per Inhabitant (All Financing Schemes)

Code
latest_year <- hlth_sha11_hf |>
  filter(icha11_hf == "TOT_HF", unit == "EUR_HAB", !is.na(values)) |>
  summarise(m = max(time)) |>
  pull(m)

hlth_sha11_hf |>
  filter(time == latest_year,
         geo %in% c("FR", "DE", "IT", "ES", "NL"),
         icha11_hf == "TOT_HF",
         unit == "EUR_HAB") |>
  select(geo, Geo, values) |>
  arrange(-values) |>
  print_table_conditional()
geo Geo values
DE Germany 6327.98
NL Netherlands 6295.67
FR France 4833.59
IT Italy 3158.69