Medicare Advantage, Part D, Medicaid

Medicare PFS Conversion Factor (by effective period)

medicare_silver.medicare_conversion_factor·live·dim·annual·Medicare Physician Fee Schedule (PFS)
Rows
27
Columns
25
History
2020 to 2026
Card
yesgrain, traps, filters
Typed tools
0

What it is

  1. 1A tiny annual reference table holding the national Medicare Physician Fee Schedule (PFS) conversion factor — the single dollar multiplier CMS publishes each calendar year that converts a procedure's geographically-adjusted RVUs into a Medicare-allowed payment amount.
  2. 2It exists so the agent can compute Medicare-allowed dollars for any HCPCS/CPT code in a given year and benchmark commercial rates against Medicare (the commercial-to-Medicare ratio).

Grain

KeyGrain
calendar_year
  1. 1One row per Medicare calendar year.
  2. 2There are exactly 7 rows, one each for CY2020 through CY2026 (the latest, 2026, just added).
  3. 3Each row carries that year's national PFS conversion factor and its year-over-year change.

How to read it

  1. 1SELECT calendar_year, pfs_conversion_factor, percent_change FROM medicare_silver.medicare_conversion_factor ORDER BY calendar_year — returns the 7 annual national PFS conversion factors (2020-2026) with their YoY change, e.g. to look up the multiplier for converting a code's RVUs into a Medicare-allowed amount for a given year, or to show the CF trend (steady decline 2020-2025, +2.92% rebound to 33.29 in 2026).

Traps

  1. 1Grain is calendar_year, NOT id. The profiler reports id as the unique key, but id is a pure sequential surrogate equal to calendar_year-2019 (VERIFIED 0 mismatches) — it adds nothing. Join and filter on calendar_year.
  2. 2Five columns are 100% NULL and are dead/aspirational schema, not meaningful: end_date, anesthesia_conversion_factor, rule_number, public_law, source_file_id. In particular there is NO usable anesthesia conversion factor here, and NO rule/public-law/file provenance — only the coarse mirror_source string. Don't try to price anesthesia or cite the enacting law from this table.
  3. 3No is_current / no snapshot duplication. This is a single mirrored snapshot: created_at is one identical timestamp for all rows and asserted_at is a single date (2026-06-03). There is exactly one row per year, so no dedup/as-of filtering is needed — but also don't expect bitemporal history of CF revisions.
  4. 4The table models only ONE CF per year at Jan-1 effective_date. It does NOT capture intra-year/mid-year CF revisions that occurred via legislation in some of these years (end_date is null, no second row). Treat each year's value as the single representative annual CF.
  5. 5prior_year_cf for the earliest year (2020 = 36.0391) is an external anchor with no matching row in this table; every other year's prior_year_cf is just the previous row's pfs_conversion_factor. Don't assume prior_year_cf is always derivable from this table — it isn't for the first year.
  6. 6This is the standard PFS conversion factor only. To get a Medicare-allowed dollar amount you must multiply by per-code geographically-adjusted RVUs from the fee-schedule tables (PFS RVU/GPCI sources) — this table is just the scalar multiplier, not a fee schedule itself. The 2026 value (33.29) reverses the multi-year decline (first positive percent_change, +2.92%).

Columns (25)

ColumnTypeMeaning
idbigintSequential surrogate integer 1..7. VERIFIED to equal exactly calendar_year - 2019 for every row, so it carries no information beyond calendar_year and is just a row id mirrored from the source RDS table. Do not treat as a meaningful key — use calendar_year.
calendar_yearbigintThe Medicare calendar year the conversion factor applies to (2020-2026). THE real grain key — individually unique across all 7 rows. This is the join/filter column for picking the right year's factor.
effective_datedateFirst day the factor is in effect — always Jan 1 of calendar_year (2020-01-01 ... 2026-01-01). Individually unique; redundant with calendar_year. Note: this does NOT capture historical mid-year CF revisions (e.g. legislative patches) — there is exactly one row per year with a clean Jan-1 effective date.
end_datedateIntended last-effective date. ALWAYS NULL (0 of 7 populated). Null here means open-ended / not tracked, not a real interval — the table does not model intra-year CF changes via this column.
pfs_conversion_factordoubleTHE core value: the national PFS conversion factor in dollars-per-RVU for that year. Observed: 2020=36.0896, 2021=34.8931, 2022=34.6062, 2023=33.8872, 2024=32.7442, 2025=32.3465, 2026=33.29. Steady decline 2020-2025, then a jump up in 2026. Allowed payment = (sum of geographically-adjusted RVUs for a code) x this factor.
anesthesia_conversion_factordoubleIntended to hold the separate, lower anesthesia-specific national CF (anesthesia uses base+time units, not RVUs). ALWAYS NULL (0 of 7 populated). This table currently only carries the standard PFS CF — for anesthesia pricing this column is unusable; the value is not present in this mirror.
rule_numberstringIntended CFR/Federal Register rule citation that set the factor. ALWAYS NULL (0 of 7). No provenance-to-rule linkage is populated.
public_lawstringIntended public-law citation (e.g. the Act that overrode a scheduled cut). ALWAYS NULL (0 of 7). Legislative provenance is not populated despite several of these years being legislatively adjusted.
prior_year_cfdoubleThe conversion factor used as the prior-year baseline for computing percent_change. VERIFIED: for 2021-2026 it exactly equals the previous row's pfs_conversion_factor (e.g. 2021's prior=36.0896 = 2020's CF). The 2020 row's prior_year_cf (36.0391) is the ONLY one with no matching row in this table — it is an external 2019 anchor carried in from the source.
percent_changedoubleYear-over-year percent change of the CF vs prior_year_cf. VERIFIED to reproduce (cur/prior - 1)*100 within rounding (2020=+0.14, 2021=-3.31, 2022=-0.82, 2023=-2.08, 2024=-3.37, 2025=-1.21, 2026=+2.92). 2026 is the only positive year (the CF rebound).
source_file_idbigintIntended FK to a source-file registry. ALWAYS NULL (0 of 7). File-level provenance is not wired up; provenance is only the coarse mirror_source string below.
created_attimestampLoad timestamp. A single identical value for all 7 rows (2026-04-04 19:35:46.454) — the whole table was mirrored in one batch. Not a per-year publish date.
asserted_atdateBitemporal 'as-asserted' date. A single identical value for all rows (2026-06-03, = today's mirror run). All 7 rows share one assertion date; this is not a per-row history axis here.
mirror_sourcestringProvenance string, identical for all rows: 'rds:vlada_enterprise.public.medicare_conversion_factor'. Confirms this Glue/Iceberg table is a mirror of the operational RDS table (the source of truth lives in hospital-server RDS vlada_enterprise).
source_urlstring
sha256_content_hashstring
source_idstring
is_currentboolean
vintage_tagstring
parser_artifact_hashstring
parse_revisionint
fetcher_versionstring
parser_versionstring
parsed_memberstring
payment_trackstring

Query it

describe_data_source(source_fqn="medicare_silver.medicare_conversion_factor")     # the card, live
query_substrate(sql="SELECT * FROM medicare_silver.medicare_conversion_factor WHERE calendar_year = '<value>' LIMIT 100")
ItemValue
Typed tools that read itnone; raw SQL
Identity keycalendar_year,effective_date,payment_track
Joinhow_to_join(source_fqn="medicare_silver.medicare_conversion_factor")
Raw doorAthena (read-only via query_substrate): medicare_silver.medicare_conversion_factor

This page as markdown: /docs-md/data/medicare_silver_medicare_conversion_factor.md · every page in one file: /llms-full.txt