fix(pfs): align rvu_proposed columns with pfs.rvu (refs #607)

This commit is contained in:
kert
2026-08-13 20:29:34 -04:00
parent d726dca50e
commit 810f7e208a
3 changed files with 17 additions and 27 deletions

View File

@@ -278,8 +278,8 @@ def _(mo):
def _(q): def _(q):
rvu_delta_raw = q(""" rvu_delta_raw = q("""
WITH proposed AS ( WITH proposed AS (
SELECT hcpcs, description, work_rvu, nonfac_pe_rvu, mp_rvu, SELECT hcpcs, description, work_rvu, non_fac_pe_rvu, mp_rvu,
work_rvu + nonfac_pe_rvu + mp_rvu AS total_nf_rvu, work_rvu + non_fac_pe_rvu + mp_rvu AS total_nf_rvu,
CASE CASE
WHEN hcpcs BETWEEN '99201' AND '99499' THEN 'E/M' WHEN hcpcs BETWEEN '99201' AND '99499' THEN 'E/M'
WHEN hcpcs BETWEEN '10000' AND '19999' THEN 'Integumentary' WHEN hcpcs BETWEEN '10000' AND '19999' THEN 'Integumentary'
@@ -295,9 +295,9 @@ def _(q):
ELSE 'Other' ELSE 'Other'
END AS category END AS category
FROM pfs.rvu_proposed FROM pfs.rvu_proposed
WHERE (modifier IS NULL OR modifier = '') WHERE (mod IS NULL OR mod = '')
AND status_code = 'A' AND status_code = 'A'
AND nonfac_pe_rvu IS NOT NULL AND non_fac_pe_rvu IS NOT NULL
QUALIFY row_number() OVER (PARTITION BY hcpcs ORDER BY hcpcs) = 1 QUALIFY row_number() OVER (PARTITION BY hcpcs ORDER BY hcpcs) = 1
), ),
final_2025 AS ( final_2025 AS (
@@ -433,13 +433,13 @@ def _(mo, rvu_delta):
def _(con, mo): def _(con, mo):
_new = con.execute(""" _new = con.execute("""
SELECT count(*) FROM pfs.rvu_proposed p SELECT count(*) FROM pfs.rvu_proposed p
WHERE (p.modifier IS NULL OR p.modifier='') AND p.status_code='A' AND p.nonfac_pe_rvu IS NOT NULL WHERE (p.mod IS NULL OR p.mod='') AND p.status_code='A' AND p.non_fac_pe_rvu IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM pfs.rvu f WHERE f.year=2025 AND f.hcpcs=p.hcpcs AND (f.mod IS NULL OR f.mod='')) AND NOT EXISTS (SELECT 1 FROM pfs.rvu f WHERE f.year=2025 AND f.hcpcs=p.hcpcs AND (f.mod IS NULL OR f.mod=''))
""").fetchone()[0] """).fetchone()[0]
_dropped = con.execute(""" _dropped = con.execute("""
SELECT count(*) FROM pfs.rvu f SELECT count(*) FROM pfs.rvu f
WHERE f.year=2025 AND (f.mod IS NULL OR f.mod='') AND f.status_code='A' WHERE f.year=2025 AND (f.mod IS NULL OR f.mod='') AND f.status_code='A'
AND NOT EXISTS (SELECT 1 FROM pfs.rvu_proposed p WHERE p.hcpcs=f.hcpcs AND (p.modifier IS NULL OR p.modifier='')) AND NOT EXISTS (SELECT 1 FROM pfs.rvu_proposed p WHERE p.hcpcs=f.hcpcs AND (p.mod IS NULL OR p.mod=''))
""").fetchone()[0] """).fetchone()[0]
mo.md(f""" mo.md(f"""
> **Coverage caveat:** {_new} HCPCS codes appear in `pfs.rvu_proposed` > **Coverage caveat:** {_new} HCPCS codes appear in `pfs.rvu_proposed`

View File

@@ -20,25 +20,15 @@ _ADDENDUM_B_TAG = "sup:2026_PFS_NPRM"
_ADDENDUM_B_RE = re.compile(r"(?i)addendum[_ ]?b") _ADDENDUM_B_RE = re.compile(r"(?i)addendum[_ ]?b")
# pfs.pipe._RVU_COLUMNS normalizes raw headers to these intermediate # pfs.pipe._RVU_COLUMNS normalizes raw headers to these intermediate
# names; map them onto the pfs.rvu_proposed target schema. # names, which already match the pfs.rvu_proposed target schema (#607
_TARGET_RENAME = { # aligned it with pfs.rvu's column names — no renaming needed here).
"hcpcs": "hcpcs",
"mod": "modifier",
"description": "description",
"status_code": "status_code",
"work_rvu": "work_rvu",
"non_fac_pe_rvu": "nonfac_pe_rvu",
"fac_pe_rvu": "fac_pe_rvu",
"mp_rvu": "mp_rvu",
}
_TARGET_COLUMNS = [ _TARGET_COLUMNS = [
"hcpcs", "hcpcs",
"modifier", "mod",
"description", "description",
"status_code", "status_code",
"work_rvu", "work_rvu",
"nonfac_pe_rvu", "non_fac_pe_rvu",
"fac_pe_rvu", "fac_pe_rvu",
"mp_rvu", "mp_rvu",
"cms_rule_id", "cms_rule_id",
@@ -138,7 +128,7 @@ def load_rvu_proposed(con: Any, *, cms_rule_id: str = "CMS-1832-P") -> dict:
& pl.col("hcpcs").str.contains(r"^[A-Za-z0-9]{5}$") & pl.col("hcpcs").str.contains(r"^[A-Za-z0-9]{5}$")
) )
df = df.select(list(_TARGET_RENAME)).rename(_TARGET_RENAME) df = df.select(_TARGET_COLUMNS[:-1]) # all but cms_rule_id, added next
df = df.with_columns(pl.lit(cms_rule_id).alias("cms_rule_id")) df = df.with_columns(pl.lit(cms_rule_id).alias("cms_rule_id"))
df = df.select(_TARGET_COLUMNS) df = df.select(_TARGET_COLUMNS)
@@ -147,11 +137,11 @@ def load_rvu_proposed(con: Any, *, cms_rule_id: str = "CMS-1832-P") -> dict:
""" """
CREATE TABLE IF NOT EXISTS pfs.rvu_proposed ( CREATE TABLE IF NOT EXISTS pfs.rvu_proposed (
hcpcs VARCHAR, hcpcs VARCHAR,
modifier VARCHAR, mod VARCHAR,
description VARCHAR, description VARCHAR,
status_code VARCHAR, status_code VARCHAR,
work_rvu DOUBLE, work_rvu DOUBLE,
nonfac_pe_rvu DOUBLE, non_fac_pe_rvu DOUBLE,
fac_pe_rvu DOUBLE, fac_pe_rvu DOUBLE,
mp_rvu DOUBLE, mp_rvu DOUBLE,
cms_rule_id VARCHAR cms_rule_id VARCHAR
@@ -163,8 +153,8 @@ def load_rvu_proposed(con: Any, *, cms_rule_id: str = "CMS-1832-P") -> dict:
try: try:
con.execute( con.execute(
"INSERT INTO pfs.rvu_proposed SELECT " "INSERT INTO pfs.rvu_proposed SELECT "
"hcpcs, modifier, description, status_code, work_rvu, " "hcpcs, mod, description, status_code, work_rvu, "
"nonfac_pe_rvu, fac_pe_rvu, mp_rvu, cms_rule_id FROM _nprm_df" "non_fac_pe_rvu, fac_pe_rvu, mp_rvu, cms_rule_id FROM _nprm_df"
) )
finally: finally:
con.unregister("_nprm_df") con.unregister("_nprm_df")

View File

@@ -59,7 +59,7 @@ def test_load_rvu_proposed_strips_padding(tmp_path, monkeypatch):
con = duckdb.connect() con = duckdb.connect()
nprm.load_rvu_proposed(con) nprm.load_rvu_proposed(con)
row = con.execute( row = con.execute(
"SELECT hcpcs, description, work_rvu, nonfac_pe_rvu, fac_pe_rvu, mp_rvu " "SELECT hcpcs, description, work_rvu, non_fac_pe_rvu, fac_pe_rvu, mp_rvu "
"FROM pfs.rvu_proposed WHERE hcpcs='99213'" "FROM pfs.rvu_proposed WHERE hcpcs='99213'"
).fetchone() ).fetchone()
assert row == ("99213", "Office visit est", 1.3, 1.5, 0.55, 0.1) assert row == ("99213", "Office visit est", 1.3, 1.5, 0.55, 0.1)
@@ -72,7 +72,7 @@ def test_load_rvu_proposed_na_marker_becomes_null(tmp_path, monkeypatch):
con = duckdb.connect() con = duckdb.connect()
nprm.load_rvu_proposed(con) nprm.load_rvu_proposed(con)
row = con.execute( row = con.execute(
"SELECT work_rvu, nonfac_pe_rvu, fac_pe_rvu, mp_rvu " "SELECT work_rvu, non_fac_pe_rvu, fac_pe_rvu, mp_rvu "
"FROM pfs.rvu_proposed WHERE hcpcs='99214'" "FROM pfs.rvu_proposed WHERE hcpcs='99214'"
).fetchone() ).fetchone()
assert row == (None, None, None, None) assert row == (None, None, None, None)