Nonprofit hospitals report charity care to two federal regulators. The numbers don't match.
Yale New Haven Hospital told the IRS it provided $113.1M in financial assistance for its fiscal year ending September 2023, and told Medicare $35.6M in charity care for the same year, on a comparable ~$4.1B expense base. Large gaps like this are far from rare.
By Chris Betz · · public-domain data, MIT-licensed code
Every nonprofit hospital in the United States reports the cost of the free and discounted care it gives patients who can't pay to two different federal regulators — for two different purposes, on two different forms:
To the IRS, on Schedule H of Form 990 — the "financial assistance at cost" line (Part I, line 7a) — which documents the community benefit that helps justify the hospital's tax exemption. And to CMS, on Worksheet S-10 of the Medicare Cost Report — the "cost of charity care" line — which feeds Medicare's uncompensated-care (DSH) payments. Two different regulatory purposes, but both lines are meant to capture the same underlying thing: what it cost to treat patients who couldn't pay.
They are supposed to describe the same activity. For a lot of hospitals, they don't come close.
The gap, for hospitals where the comparison is clean
Comparing these two numbers naïvely is a trap. The biggest raw differences come from artifacts: a single 990 can cover a dozen hospitals reported under one name, and the two forms often cover fiscal years that are 12 months apart. So I filtered down to the hospitals where the comparison is genuinely apples-to-apples — a single reporting facility, both filings covering the same fiscal year, both numbers above $1M, and the two forms reporting a comparable total-expense base (within 5%). I also compare like with like: the net figure on each side — Schedule H line 7a column (e), net of offsetting revenue, against the S-10 cost of charity care net of partial patient payments — so this isn't a gross-versus-net illusion.
99 hospitals clear that bar for tax year 2022. Among them, 22 reported charity-care numbers to the two regulators that differ by more than 50%. Every one of them, plotted against the line where the two filings would agree:
Each dot is one of the 99 hospitals where the two filings are cleanly comparable — single facility, periods ending within a month of each other, both figures at least $1M, and total expenses within 5%. A hospital reporting the same cost to both regulators sits on the diagonal; 22 sit far enough off it that the two figures differ by more than half. Both axes are log-scaled. Hover any dot for the hospital and its two figures. Sources: CMS HCRIS Worksheet S-10 (FY2023) and IRS Form 990 Schedule H (TY2022).
A sample of the largest differences:
Hospital
Told the IRS
Told CMS
Difference
%
Yale New Haven Hospital
$113.1M
$35.6M
−$77.5M
69%
Tampa General Hospital
$51.0M
$102.4M
+$51.3M
50%
Greenwich Hospital
$23.6M
$4.0M
−$19.6M
83%
Baptist Medical Center (Jacksonville)
$34.8M
$52.6M
+$17.8M
34%
Western Regional Medical Center
$1.1M
$18.1M
+$16.9M
94%
Lawrence & Memorial Hospital
$21.1M
$4.8M
−$16.3M
77%
Cook Children's Medical Center
$11.3M
$26.8M
+$15.5M
58%
Bayfront Health St. Petersburg
$4.4M
$17.6M
+$13.2M
75%
The full ranked index of all 99, and a searchable lookup of all 1,295 systems, is at troveproject.com/hospitals. The IRS figure for each hospital links to its actual 990 on ProPublica so you can check it yourself. (Figures are rounded to $0.1M; differences are computed from the exact values.)
Notice something in that list: Yale New Haven, Greenwich, and Lawrence & Memorial — plus Bridgeport, just outside the top eight — are all part of Yale New Haven Health. Several hospitals in one system, all showing large same-direction gaps. That's exactly what you'd expect when a system applies one financial-assistance policy and one Schedule H costing method across all its hospitals: a methodological signature, not evidence that any one hospital did something wrong. But it's the kind of pattern the index surfaces that a single filing never would — a reason to ask a system how it costs financial assistance, not to assume the answer.
A gap is not an accusation
This is the part that matters, and it's why the tool leads with the source documents. A difference between these two numbers does not mean a hospital did anything wrong, and it is not evidence of fraud.
The two forms genuinely define and cost charity care differently: where the line falls between "charity care," "bad debt," and "contractual allowance"; how uninsured discounts are classified; and the cost-to-charge methods each form permits. On top of that, the reliability of S-10 charity-care reporting has been questioned for years — MedPAC has repeatedly flagged S-10 data quality — so in many cases the gap is simply that one figure, often the S-10 side, is incompletely reported. (A few children's and specialty hospitals bill so little Medicare that they file no Medicare cost report at all, or an S-10 with almost nothing in it — so a near-zero S-10 should be treated as suspect, not as a real zero.)
None of this is secret. That the S-10 and Schedule H charity-care figures diverge is a well-documented reporting inconsistency, not a novel finding: the GAO has noted there is no standard definition of uncompensated care across federal programs (GAO-16-568) and has separately scrutinized Schedule H reporting (GAO-20-679); the Congressional Research Service laid out the differing Medicare and IRS charity-care definitions (2018); and health-services researchers have compared the two sources (Zare et al., Health Services Research, 2022). What hasn't existed is a fast way to check it for a specific hospital, with a link to both filings. That's the whole point of this tool: not to accuse, but to make a known inconsistency legible — one hospital at a time.
Why I built it
The raw data is public but punishing. CMS ships the Medicare Cost Reports as headerless, 100,000-row "long-skinny" CSVs. The IRS publishes 990s as XML inside bulk ZIP files. Lining up a single hospital's two charity-care numbers means parsing both, matching CCNs to EINs, and reconciling fiscal calendars — hours of work per hospital. trove does that parsing and joining once, for everyone, and publishes the result as clean tables plus a Claude Code skill you can ask questions in plain English.
Data: CMS HCRIS Worksheet S-10 (FY2023) × IRS Form 990 Schedule H (TY2022), joined via the Community Benefit Insight CCN↔EIN crosswalk. Method and every caveat: summary · ranked index: charity_care_gap_index_2022.md · all code MIT-licensed at github.com/cbetz/trove.