How we compare medical prices honestly—and why most comparisons are wrong
Every price in this system has an explicit statement of what's inside and a completeness score (0.0–1.0). Before comparing a US price to an international price, we measure completeness:
NOT_COMPARABLEFor each procedure, we define the complete episode of care—every component a patient must pay for, regardless of who bills it or in which country.
| Component | Weight | Typical Cost | US Code |
|---|---|---|---|
| Surgeon fee | 20% | $3,500–$6,000 | CPT 27447 |
| Facility charge | 45% | $9,000–$18,000 | MS-DRG 469/470 |
| Anesthesia | 8% | $1,200–$2,400 | CPT 01402 |
| Implant device | 15% | $4,000–$8,000 | — |
| Pre-op workup | 3% | $400–$800 | — |
| Post-op physio | 4% | $1,200–$3,000 | — |
| Inpatient nights | 5% | $2,000–$4,000 | — |
| Total | 1.00 (100%) | ||
Sources: CMS Inpatient Hospital Prospective Payment System (IPPS), 2024; U.S. News & World Report cost survey, 2023; Journal of Arthroplasty (Slover et al., 2016).
Weights are used only to compute completeness scores. We never impute a missing price component. If a price observation includes only facility_fee (0.45) but not surgeon (0.20), the completeness score is 0.45. The comparison engine will flag it as NOT_COMPARABLE if it conflicts with a more complete international quote.
if abs(completeness(us) - completeness(intl)) > 0.15:comparison.status = "NOT_COMPARABLE"comparison.savings = None
| Price Side | Components Included | Completeness Score | Status |
|---|---|---|---|
| US Hospital MRF | Facility only | 0.45 | NOT_COMPARABLE |
| Mexico (Hospital Ángeles) | Facility + surgeon + anesthesia + implant + physio | 0.85 | |
| Completeness gap: |0.45 − 0.85| = 0.40 | > 0.15 threshold | ||
When completeness scores are similar enough (gap ≤ 0.15), we compute savings as a range, never a point estimate:
| Price Side | Low | High | Completeness |
|---|---|---|---|
| US (avg) | $2,100 | $3,500 | 0.90 |
| Thailand (Samitivej) | $1,200 | $2,200 | 0.92 |
| Savings low | 1 − ($2,200 / $2,100) = −4.8% (intl actually higher in worst case) | ||
| Savings high | 1 − ($1,200 / $3,500) = 65.7% (intl better in best case) | ||
| Result: Savings range −5% to 66% (Wide range reflects uncertainty; negative savings means Thailand may cost more) |
|||
Every price observation has an observation_date—when the price was valid, not when we scraped it. Prices > 18 months old are marked stale: true and excluded from headline comparisons by default.
The maintainer of this system is based in Roatán, Honduras (Próspera jurisdiction). This may create conflicts of interest regarding Central American facilities. Any page featuring a Honduran or Central American facility carries this disclosure at the top.
All data is committed to git. To reproduce any number on this site:
data/observations/*.jsonl for raw observationsontology/canonical_bundles/*.yaml for bundle definitions and weightsetl/comparison_engine.py for comparison logicdata/adapters/cache/ to see the original website content