fix(pfs): align rvu_proposed columns with pfs.rvu (refs #607)
This commit is contained in:
@@ -278,8 +278,8 @@ def _(mo):
|
||||
def _(q):
|
||||
rvu_delta_raw = q("""
|
||||
WITH proposed AS (
|
||||
SELECT hcpcs, description, work_rvu, nonfac_pe_rvu, mp_rvu,
|
||||
work_rvu + nonfac_pe_rvu + mp_rvu AS total_nf_rvu,
|
||||
SELECT hcpcs, description, work_rvu, non_fac_pe_rvu, mp_rvu,
|
||||
work_rvu + non_fac_pe_rvu + mp_rvu AS total_nf_rvu,
|
||||
CASE
|
||||
WHEN hcpcs BETWEEN '99201' AND '99499' THEN 'E/M'
|
||||
WHEN hcpcs BETWEEN '10000' AND '19999' THEN 'Integumentary'
|
||||
@@ -295,9 +295,9 @@ def _(q):
|
||||
ELSE 'Other'
|
||||
END AS category
|
||||
FROM pfs.rvu_proposed
|
||||
WHERE (modifier IS NULL OR modifier = '')
|
||||
WHERE (mod IS NULL OR mod = '')
|
||||
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
|
||||
),
|
||||
final_2025 AS (
|
||||
@@ -433,13 +433,13 @@ def _(mo, rvu_delta):
|
||||
def _(con, mo):
|
||||
_new = con.execute("""
|
||||
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=''))
|
||||
""").fetchone()[0]
|
||||
_dropped = con.execute("""
|
||||
SELECT count(*) FROM pfs.rvu f
|
||||
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]
|
||||
mo.md(f"""
|
||||
> **Coverage caveat:** {_new} HCPCS codes appear in `pfs.rvu_proposed`
|
||||
|
||||
@@ -20,25 +20,15 @@ _ADDENDUM_B_TAG = "sup:2026_PFS_NPRM"
|
||||
_ADDENDUM_B_RE = re.compile(r"(?i)addendum[_ ]?b")
|
||||
|
||||
# pfs.pipe._RVU_COLUMNS normalizes raw headers to these intermediate
|
||||
# names; map them onto the pfs.rvu_proposed target schema.
|
||||
_TARGET_RENAME = {
|
||||
"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",
|
||||
}
|
||||
|
||||
# names, which already match the pfs.rvu_proposed target schema (#607
|
||||
# aligned it with pfs.rvu's column names — no renaming needed here).
|
||||
_TARGET_COLUMNS = [
|
||||
"hcpcs",
|
||||
"modifier",
|
||||
"mod",
|
||||
"description",
|
||||
"status_code",
|
||||
"work_rvu",
|
||||
"nonfac_pe_rvu",
|
||||
"non_fac_pe_rvu",
|
||||
"fac_pe_rvu",
|
||||
"mp_rvu",
|
||||
"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}$")
|
||||
)
|
||||
|
||||
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.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 (
|
||||
hcpcs VARCHAR,
|
||||
modifier VARCHAR,
|
||||
mod VARCHAR,
|
||||
description VARCHAR,
|
||||
status_code VARCHAR,
|
||||
work_rvu DOUBLE,
|
||||
nonfac_pe_rvu DOUBLE,
|
||||
non_fac_pe_rvu DOUBLE,
|
||||
fac_pe_rvu DOUBLE,
|
||||
mp_rvu DOUBLE,
|
||||
cms_rule_id VARCHAR
|
||||
@@ -163,8 +153,8 @@ def load_rvu_proposed(con: Any, *, cms_rule_id: str = "CMS-1832-P") -> dict:
|
||||
try:
|
||||
con.execute(
|
||||
"INSERT INTO pfs.rvu_proposed SELECT "
|
||||
"hcpcs, modifier, description, status_code, work_rvu, "
|
||||
"nonfac_pe_rvu, fac_pe_rvu, mp_rvu, cms_rule_id FROM _nprm_df"
|
||||
"hcpcs, mod, description, status_code, work_rvu, "
|
||||
"non_fac_pe_rvu, fac_pe_rvu, mp_rvu, cms_rule_id FROM _nprm_df"
|
||||
)
|
||||
finally:
|
||||
con.unregister("_nprm_df")
|
||||
|
||||
@@ -59,7 +59,7 @@ def test_load_rvu_proposed_strips_padding(tmp_path, monkeypatch):
|
||||
con = duckdb.connect()
|
||||
nprm.load_rvu_proposed(con)
|
||||
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'"
|
||||
).fetchone()
|
||||
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()
|
||||
nprm.load_rvu_proposed(con)
|
||||
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'"
|
||||
).fetchone()
|
||||
assert row == (None, None, None, None)
|
||||
|
||||
Reference in New Issue
Block a user