Medicare Advantage, Part D, Medicaid
Medicare PFS Conversion Factor (by effective period)
Rows
27
Columns
25
History
2020 to 2026
Card
yesgrain, traps, filters
Typed tools
0
What it is
- 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.
- 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
| Key | Grain |
|---|---|
calendar_year |
|
How to read it
- 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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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)
| Column | Type | Meaning |
|---|---|---|
id | bigint | Sequential 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_year | bigint | The 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_date | date | First 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_date | date | Intended 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_factor | double | THE 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_factor | double | Intended 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_number | string | Intended CFR/Federal Register rule citation that set the factor. ALWAYS NULL (0 of 7). No provenance-to-rule linkage is populated. |
public_law | string | Intended 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_cf | double | The 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_change | double | Year-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_id | bigint | Intended 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_at | timestamp | Load 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_at | date | Bitemporal '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_source | string | Provenance 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_url | string | |
sha256_content_hash | string | |
source_id | string | |
is_current | boolean | |
vintage_tag | string | |
parser_artifact_hash | string | |
parse_revision | int | |
fetcher_version | string | |
parser_version | string | |
parsed_member | string | |
payment_track | string |
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")
| Item | Value |
|---|---|
| Typed tools that read it | none; raw SQL |
| Identity key | calendar_year,effective_date,payment_track |
| Join | how_to_join(source_fqn="medicare_silver.medicare_conversion_factor") |
| Raw door | Athena (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