PriceOS Methodology

How we compare medical prices honestly—and why most comparisons are wrong

1. The Central Problem

⚠️ Most medical tourism comparisons are wrong.
They divide a bundle by a line item and print a savings percentage. A Cancún hospital quotes $12,000 for "knee replacement" (implant + surgeon + facility + 3 nights + physio). A US MRF gives you a facility DRG rate, a surgeon CPT, and an anesthesia CPT—separately, from different files, sometimes different entities. Dividing one by the other produces a number that is wrong and confidently presented.

Why bundles matter

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:

✓ This rule is the feature. A NOT_COMPARABLE result is more useful than a wrong savings percentage.

2. Canonical Bundles (Episode of Care)

For 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.

Example: Total Knee Arthroplasty (TKA)

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).

Why weights matter

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.

3. Completeness Scoring (The Honest Rule)

Hard Rule (enforced in code, not in documentation):

if abs(completeness(us) - completeness(intl)) > 0.15:
    comparison.status = "NOT_COMPARABLE"
    comparison.savings = None

Example comparison: TKA in Mexico vs. US

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
Why this result is a feature, not a bug:
We could hide this complexity, divide $12,000 by $18,000, and print "33% savings." Instead, we report NOT_COMPARABLE and show exactly what's missing on each side. This is the single thing that distinguishes this resource from every lead-gen site in the market.

4. When Comparisons Are Possible: Savings Ranges

When completeness scores are similar enough (gap ≤ 0.15), we compute savings as a range, never a point estimate:

savings_low = 1 − (intl_high / us_low)
savings_high = 1 − (intl_low / us_high)

Example: Cataract surgery (comparable bundles)

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)

5. Data Sources & Provenance

US Data

International Data

6. Staleness & Recency

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.

7. What This System Does Not Do

8. Conflict of Interest Disclosure

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.

9. How to Audit This

All data is committed to git. To reproduce any number on this site:

  1. Check data/observations/*.jsonl for raw observations
  2. Check ontology/canonical_bundles/*.yaml for bundle definitions and weights
  3. Check etl/comparison_engine.py for comparison logic
  4. Verify citations in this document against original sources
  5. Check cached documents in data/adapters/cache/ to see the original website content
✓ A hostile reader can reconstruct every number on this site from the repository alone. That's the standard.