{
  "study": {
    "slug": "medicare-part-b-procedure-price-variation-2026",
    "title": "Same procedure, different price: Medicare Part B charge variation, 2024",
    "standfirst": "For the same Medicare Part B procedure, in the same care setting, providers bill wildly different amounts: across 997 high-volume procedure-and-setting groups in 2024, the 90th-percentile provider charged a median 3.6× what the 10th-percentile provider charged for the identical service. For a hip replacement, billed by 8,164 surgeons, the spread reaches 16×.",
    "desk": "financial-distress",
    "article_type": "Original Research",
    "published": "2026-06-14",
    "issue": 72,
    "doi": "10.5072/fonteum/medicare-part-b-procedure-price-variation-2026",
    "url": "https://fonteum.com/research/medicare-part-b-procedure-price-variation-2026",
    "methodology_version": "medicare-physician-service/v1"
  },
  "data_as_of": "2026-06-14",
  "datasets": [
    {
      "slug": "cms-medicare-physician-service",
      "name": "CMS Medicare Physician & Other Practitioners",
      "publisher": "CMS — Medicare Physician & Other Practitioners, by Provider and Service",
      "upstream_url": null
    }
  ],
  "key_findings": [
    {
      "number": "3.6×",
      "finding": "median ratio between the 90th- and 10th-percentile provider's submitted charge for the same procedure in the same setting, across 997 high-volume Part B groups in 2024",
      "dataset": "cms-medicare-physician-service"
    },
    {
      "number": "715 of 997",
      "finding": "high-volume procedure-and-setting groups where the 90th-percentile provider billed at least 3× the 10th-percentile provider for the same code — and 995 of 997 ran at least 2×",
      "dataset": "cms-medicare-physician-service"
    },
    {
      "number": "16.3×",
      "finding": "the spread for a total hip replacement (CPT 27130), billed by 8,164 surgeons in the facility setting — $1,007 at the 10th-percentile provider vs $16,370 at the 90th, for the identical procedure",
      "dataset": "cms-medicare-physician-service"
    },
    {
      "number": "3.4×",
      "finding": "the national service-weighted submitted-charge-to-Medicare-allowed multiple for non-drug Part B services — $352.2B billed against $103.1B allowed across 1.2M providers",
      "dataset": "cms-medicare-physician-service"
    }
  ],
  "faqs": [
    {
      "q": "Why do providers charge different amounts for the same Part B procedure?",
      "a": "Submitted charges are list prices each provider sets on its own fee schedule — there is no national price for what a provider bills. Across 997 high-volume procedure-and-setting groups in 2024, the 90th-percentile provider billed a median 3.6× what the 10th-percentile provider billed for the identical code. The charge reflects each practice's markup, not the cost of care or what Medicare allows."
    },
    {
      "q": "Does the patient or Medicare pay these different charges?",
      "a": "No. Medicare pays its own administratively set allowed amount regardless of what a provider charges, so the wide charge spread does not change Medicare's payment. Charges still matter: they anchor out-of-network and self-pay bills, and they are the list price an uninsured patient is first billed before any discount is applied."
    },
    {
      "q": "Which Part B procedure has the widest provider-to-provider charge spread?",
      "a": "Among high-volume codes with a stable base, orthopedic surgery leads: a total hip replacement (CPT 27130) ran $1,007 at the 10th-percentile surgeon and $16,370 at the 90th in 2024 — a 16.3× spread across 8,164 surgeons. Arthroscopic shoulder procedures cluster just as high, from 15× to 20×."
    },
    {
      "q": "How much does a Medicare office visit vary across providers?",
      "a": "For an established-patient office visit at a moderate level (CPT 99214) — the single most common Part B service, billed by 450,513 providers in 2024 — the 10th-percentile provider billed $160, the median $255, and the 90th-percentile $416. That is a 2.6× spread. Routine office visits are among the tightest-priced services Medicare covers."
    },
    {
      "q": "Is this the same as the gap between charges and what Medicare pays?",
      "a": "No — they are two different gaps. The charge-to-allowed gap is how far one provider's charge sits above Medicare's allowed amount: 3.4× on average across all non-drug Part B services in 2024. This study measures the provider-to-provider spread: how far providers differ from each other on the same code in the same setting."
    },
    {
      "q": "Why does this study pin the place of service?",
      "a": "The same code is billed differently in a facility than in an office, and global-versus-professional-component splits widen the gap further. Pooling settings inflates the spread — cataract removal looks like 35× pooled but is 4.7× within the facility setting. We treat each provider-code-setting cell as one observation so the spread reflects pricing, not setting mix."
    },
    {
      "q": "What program year and source does this cover?",
      "a": "Calendar year 2024, the most recent annual release of the CMS Medicare Physician & Other Practitioners by Provider and Service public-use file, snapshotted 2026-06-14. The query resolves the latest available data_year at run time, so the figures advance automatically when CMS publishes the next annual file."
    }
  ],
  "citation": {
    "apa": "Fonteum Research. (2026, June 14). Same procedure, different price: Medicare Part B charge variation, 2024. Fonteum Research, Issue 72. https://doi.org/10.5072/fonteum/medicare-part-b-procedure-price-variation-2026",
    "url": "https://fonteum.com/research/medicare-part-b-procedure-price-variation-2026"
  },
  "reproducible_sql": "-- Medicare Part B PROCEDURE price variation — fully reproducible query.\n--\n-- Question: for the SAME outpatient/physician procedure (HCPCS code), in the\n-- SAME care setting, how widely do providers differ in what they bill? We\n-- measure the provider-to-provider spread of average submitted charge — the\n-- 10th / median / 90th percentile across providers and the 90/10 ratio — plus\n-- the per-procedure submitted-charge-to-Medicare-allowed multiple.\n--\n-- This is the OUTPATIENT / Part B companion to the inpatient DRG charge-\n-- variation study: there the unit is a hospital × MS-DRG; here it is a\n-- provider (NPI) × HCPCS code × place of service.\n--\n-- Source:\n--   public.medicare_physician_service — CMS \"Medicare Physician & Other\n--     Practitioners — by Provider and Service\" public-use file. One row per\n--     provider (NPI) × HCPCS code × place of service × data_year. public, read-only. Snapshot ingested 2026-06-14; program year 2024 (the\n--     most recent annual release). 9,781,673 rows · 1,207,473 providers ·\n--     6,471 HCPCS codes · 2 places of service (F = facility, O = office /\n--     non-facility). License: US-Government-Works (17 U.S.C. §105).\n--\n-- Grain note: each row is one provider's AVERAGE submitted charge for that\n-- code in that setting. CMS suppresses any provider-code cell with fewer than\n-- 11 beneficiaries; those rows are absent from the file — never imputed.\n-- avg_submitted_charge is a provider average, not a per-claim figure.\n--\n-- One observation = one (NPI, HCPCS, place_of_service) cell. We pin place of\n-- service into the grain because facility vs office (non-facility) billing\n-- and global-vs-professional-component splits otherwise inflate the spread\n-- (e.g. cataract removal pools to 35x across settings but is 4.7x within the\n-- facility setting). Percentiles are computed ACROSS PROVIDERS, unweighted —\n-- the question is dispersion across providers, not the per-service average.\n--\n-- Drug codes (hcpcs_drug_indicator = true) are excluded throughout — a drug's\n-- charge tracks its acquisition cost, not procedure pricing discretion.\n--\n-- High-volume universe: code × setting cells billed by >=1,000 providers\n-- (997 cells, 8.76M of 9.0M non-drug rows) so each percentile is stable.\n--\n-- \"Most recent program year\" is resolved at query time, never hard-coded.\n\nWITH latest AS (\n  SELECT max(data_year) AS yr FROM public.medicare_physician_service\n),\nbase AS (\n  SELECT npi,\n         hcpcs_code,\n         hcpcs_description,\n         place_of_service,\n         avg_submitted_charge::numeric    AS sc,   -- provider avg submitted charge\n         avg_medicare_allowed_amt::numeric AS al   -- provider avg Medicare allowed amt\n  FROM public.medicare_physician_service\n  WHERE data_year = (SELECT yr FROM latest)\n    AND hcpcs_drug_indicator = false               -- procedures only, not drugs\n    AND avg_submitted_charge IS NOT NULL\n    AND avg_medicare_allowed_amt IS NOT NULL\n),\nper_cell AS (\n  SELECT\n    hcpcs_code,\n    place_of_service,\n    max(hcpcs_description)                                          AS descr,\n    count(*)                                                        AS providers,\n    round(percentile_cont(0.1) WITHIN GROUP (ORDER BY sc)::numeric) AS p10,\n    round(percentile_cont(0.5) WITHIN GROUP (ORDER BY sc)::numeric) AS median_charge,\n    round(percentile_cont(0.9) WITHIN GROUP (ORDER BY sc)::numeric) AS p90,\n    round((percentile_cont(0.9) WITHIN GROUP (ORDER BY sc)\n          / nullif(percentile_cont(0.1) WITHIN GROUP (ORDER BY sc), 0))::numeric, 1)\n                                                                    AS p90_p10_ratio,\n    round((percentile_cont(0.5) WITHIN GROUP (ORDER BY sc)\n          / nullif(percentile_cont(0.5) WITHIN GROUP (ORDER BY al), 0))::numeric, 1)\n                                                                    AS charge_to_allowed\n  FROM base\n  GROUP BY hcpcs_code, place_of_service\n),\nhi_vol AS (                                  -- the 997-cell high-volume universe\n  SELECT * FROM per_cell WHERE providers >= 1000\n)\n\n-- ============================================================================\n-- (1) Headline: how wide is the spread across the high-volume universe?\n--     The median cell's 90/10 charge ratio is the lead figure (3.60x).\n-- ============================================================================\nSELECT\n  count(*)                                                               AS cells_qualifying,\n  round(percentile_cont(0.25) WITHIN GROUP (ORDER BY p90_p10_ratio), 2)  AS p25_ratio,\n  round(percentile_cont(0.5)  WITHIN GROUP (ORDER BY p90_p10_ratio), 2)  AS median_ratio,\n  round(percentile_cont(0.75) WITHIN GROUP (ORDER BY p90_p10_ratio), 2)  AS p75_ratio,\n  count(*) FILTER (WHERE p90_p10_ratio >= 2)                             AS cells_ge_2x,\n  count(*) FILTER (WHERE p90_p10_ratio >= 3)                             AS cells_ge_3x,\n  count(*) FILTER (WHERE p90_p10_ratio >= 5)                             AS cells_ge_5x\nFROM hi_vol;\n--  cells p25  median p75  ge_2x ge_3x ge_5x\n--  997   2.91 3.60   4.60 995   715   199\n\n-- ============================================================================\n-- (2) The spread on the most COMMON services — same code + setting, priced\n--     across providers. (Ranked by provider count; the study's first table.)\n-- ============================================================================\nSELECT hcpcs_code, place_of_service, descr, providers,\n       p10, median_charge, p90, p90_p10_ratio, charge_to_allowed\nFROM hi_vol\nWHERE (hcpcs_code, place_of_service) IN\n      (('99214','O'),('99213','O'),('99204','O'),('99223','F'),('99215','O'),\n       ('G0439','O'),('93000','O'),('70450','F'),('66984','F'))\nORDER BY providers DESC;\n--  99214 O Established office visit, moderate   450,513  160   255   416  2.6  2.1\n--  99213 O Established office visit, low        420,108  110   178   295  2.7  2.1\n--  99204 O New office visit, moderate           210,166  239   368   585  2.4  2.3\n--  99223 F Initial hospital care, high          140,863  316   497   915  2.9  3.0\n--  99215 O Established office visit, high        127,124  225   379   637  2.8  2.2\n--  G0439 O Annual wellness visit, subsequent     106,701  163   260   407  2.5  2.1\n--  93000 O Routine ECG, 12-lead                   68,322   32    58   106  3.4  4.2\n--  70450 F CT scan, head/brain, no contrast       19,414  123   182   485  4.0  4.8\n--  66984 F Cataract removal w/ lens               10,370  970  2000  4515  4.7  3.8\n\n-- ============================================================================\n-- (3) The WIDEST-variation procedures — same universe, ranked by 90/10 ratio,\n--     restricted to non-drug CPT codes with a non-trivial 10th percentile\n--     (p10 >= 50) so a handful of nominal component-only charges cannot blow\n--     up the ratio.\n-- ============================================================================\nSELECT hcpcs_code, place_of_service, descr, providers, p10, median_charge, p90, p90_p10_ratio\nFROM hi_vol\nWHERE hcpcs_code ~ '^[0-9]'        -- numeric CPT (drops misc/unclassified \"J\"-style codes)\n  AND p10 >= 50\nORDER BY p90_p10_ratio DESC\nLIMIT 8;\n--  29828 F Biceps tenodesis, arthroscopic           1,081   787  3103  16000  20.3\n--  29824 F Distal clavicle excision, arthroscopic   1,247   660  2313  11175  16.9\n--  29823 F Shoulder debridement, arthroscopic       1,715   578  2287   9585  16.6\n--  27130 F Hip replacement, total                   8,164  1007  4212  16370  16.3\n--  29827 F Rotator cuff repair, arthroscopic        3,374  1000  3575  15782  15.8\n--  63048 F Spine laminectomy, additional segment    2,722   213   740   3298  15.5\n--  23472 F Total shoulder replacement               4,023  1092  4440  16513  15.1\n--  29826 F Shoulder decompression, arthroscopic     2,425   261  1150   3879  14.9\n\n-- ============================================================================\n-- (3b) Device-inclusive implant codes run higher still — the device\n--      acquisition cost is folded into the submitted charge.\n-- ============================================================================\nSELECT hcpcs_code, place_of_service, descr, providers, p10, median_charge, p90, p90_p10_ratio\nFROM hi_vol\nWHERE hcpcs_code IN ('63685','33285')\nORDER BY p90_p10_ratio DESC;\n--  33285 F Insertion of cardiac rhythm monitor        1,424  188  345  17673  93.9\n--  63685 F Spinal neurostimulator generator/receiver  1,202  796 2243  72203  90.7\n\n-- ============================================================================\n-- (4) The OTHER gap — national submitted-charge-to-Medicare-allowed multiple\n--     (a different axis: charge-vs-allowed, service-weighted across every\n--     non-drug Part B line). Included to separate it from the provider-to-\n--     provider spread above.\n-- ============================================================================\nSELECT\n  round(sum(avg_submitted_charge   * total_services)\n      / nullif(sum(avg_medicare_allowed_amt * total_services), 0), 2) AS sw_submitted_to_allowed,\n  round(sum(avg_medicare_allowed_amt * total_services)\n      / nullif(sum(avg_medicare_payment_amt * total_services), 0), 2) AS sw_allowed_to_paid,\n  count(DISTINCT npi)                                                 AS providers,\n  round(sum(total_services))                                          AS services,\n  round(sum(avg_submitted_charge    * total_services) / 1e9, 1)       AS submitted_billions,\n  round(sum(avg_medicare_allowed_amt * total_services) / 1e9, 1)      AS allowed_billions\nFROM public.medicare_physician_service\nWHERE data_year = (SELECT yr FROM latest)\n  AND hcpcs_drug_indicator = false\n  AND avg_submitted_charge IS NOT NULL\n  AND avg_medicare_allowed_amt IS NOT NULL;\n--  sw_submitted_to_allowed sw_allowed_to_paid providers  services       submitted_B allowed_B\n--  3.41                    1.28               1,207,305  1,605,743,071  352.2       103.1",
  "license": "U.S. Government Works (federal sources; 17 U.S.C. §105)",
  "generated_by": "Fonteum — https://fonteum.com",
  "notes": "Aggregate, source-traced figures frozen to the snapshot above. Reproduce by running reproducible_sql against the cited federal dataset; no per-entity records are included."
}
