fix(pfs): align rvu_proposed columns with pfs.rvu (refs #607)
This commit is contained in:
@@ -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`
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user