← All experiments

What ten million health complaints say about Colombia's health system

Colombia's health regulator publishes its complaint data one month at a time, in workbooks whose layout keeps changing. I rebuilt the full record from 2014 to 2026, loaded 10.2 million individual complaints into one database, and tested whether government takeovers of insurers changed the complaint trend.

  • Data
  • Health

Updated19 Jun 2026

The problem

Colombia's Superintendencia Nacional de Salud (Supersalud, the national health regulator) registers every PQRD: peticiones, quejas, reclamos y denuncias, the complaints and information requests people file about their health care. I wanted the long series: how many complaints there are, what they are about, and whether the government's takeovers of health insurers (EPS, the entidades promotoras de salud that run the insurance system) changed anything.

What was out there

The regulator's public page shows only the current month's report. Each workbook is cumulative for its year, the files come in three different layouts between 2014 and 2026, and the most complete 2019 file covers only January to May. The rate column in the official tables changes scale from year to year, so it cannot be compared. The complaint reasons were reclassified in July 2023, from six top-level categories to four. Record-level data exist on a separate ArcGIS portal, as 12 large CSV files in two schema generations.

What I built

Two independent data sources, checked against each other. The first is a tidy monthly series of the published tables from 2014 to 2026, with 11 breakdowns: type, risk level, channel, department, department capital, reason, insurer by regime and other supervised entities. The second is a DuckDB warehouse of 10,246,947 individual complaints from 2017 to 2025, with demographics, municipality codes and ICD-10 diagnosis codes. On top of them sit a reason crosswalk, an event study of the insurer takeovers and a set of charts in Spanish.

Line chart of health complaints (PQRD) in Colombia from 2014 to 2026, in total and per million insurance affiliates, rising from 693 thousand in 2014 to 3.67 million in 2025
Complaints rose more than fivefold from 2014 to 2025, and the rate per affiliate rose almost as fast.
Nine small line charts, one per insurer taken over by the government, comparing its complaints per million affiliates with never-intervened insurers from 2019 to 2025, each labelled with its growth difference against the control
Each intervened insurer is aligned to its own takeover date: five grew more slowly than the control afterwards and four grew faster.
Monthly line chart of Sanitas complaints per million affiliates against the national average excluding Sanitas, January 2023 to late 2025, with the April 2024 takeover and the June 2025 return marked
Sanitas moved with the national average, with no visible break when it was taken over or when it was returned.

Equipment

How I built it

  1. Pulled the full archive through the public SharePoint search API behind the regulator's page (130 statistical workbooks) and kept the latest file of each year, which holds the whole year.
  2. Wrote a parser that finds the month-header rows and maps the 11 tables by position across three format eras (2014 to 2018, 2019 to 2021, 2022 to 2026), with a separate template for 2023, the year the reasons were split.
  3. Downloaded the 12 record-level files (about 5.9 GB of CSV) from the regulator's ArcGIS open data portal and loaded them into DuckDB, unifying two schema generations and different delimiters.
  4. Mapped old and new reason categories onto stable themes, and tested the share of each theme at the July 2023 boundary.
  5. Recomputed complaint rates from counts and affiliates, then aligned each intervened insurer to its own takeover date and compared it with never-intervened insurers over the same years.
  6. Had Codex and Agy research the takeover dates independently and critique the charts; both agreed on every date.

Results

  • The microdata match the published totals exactly, month by month, in every full year checked (2017 and 2022 to 2025).
  • PQRD (complaints plus information requests) rose 5.3 times, from 692,997 in 2014 to 3,673,605 in 2025, and 4.5 times per million insurance affiliates.
  • Access barriers (care that is delayed or denied) rose from 79.1% of complaints in 2017 to 92.5% in 2025.
  • With the classification held constant, access complaints were 83.2% of the total from August 2018 to July 2022 and 87.2% from August 2022 to June 2023, after the change of government. At the July 2023 reclassification the share moved from 89.4% to 89.5%, so the rise is not an artifact of the new categories.
  • Of nine intervened insurers, five saw complaint rates grow more slowly than never-intervened insurers after their own takeover and four grew faster. Nueva EPS, the largest (11.7 million affiliates in 2025), went from 264 to 443 complaints per 10,000 affiliates: a 68% rise, 13 percentage points more than the control's 55%.
  • Sanitas was taken over in April 2024 and returned to private control by the Constitutional Court in June 2025. Its share of national complaints was 13.2% before, 12.7% during and 12.1% after the takeover, with no level shift at either switch.

What I learned

Never trust a published rate whose scale moves between years. Recompute it from the counts and the denominators.

Staggered events need a staggered design. A first cut that lumped the two April 2024 takeovers into one before-and-after comparison said the interventions made complaints worse. Aligning each insurer to its own date showed a mixed result, driven by one very large insurer.

When a classification changes, check the boundary before reading a trend across it. Here the access share barely moved at the break (89.4% to 89.5%), which is what made the cross-era comparison defensible.

Lab notes

  1. I replaced a single before-and-after cut with an event study that aligns each intervened insurer to its own takeover date. Codex and Agy checked the dates independently and critiqued the charts, and I revised them.

  2. I mapped the old and new complaint reasons onto stable themes across the July 2023 reclassification, and drew the foundational chart of complaints per million affiliates, 2014 to 2026.

  3. I found the full complaint archive behind the Supersalud page through its public search API, parsed one workbook per year from 2014 to 2026, and loaded 10,246,947 record-level complaints into a DuckDB warehouse that matches the published monthly totals.

© 2026 Johnattan García-Ruiz Last updated