feat(backend): tighten CLM05 validation for CO Medicaid (CLM05-1 POS, CLM05-2 qualifier)

This commit is contained in:
Tyler
2026-06-19 16:39:02 -06:00
parent ab4d8c318e
commit eb7d42d2d8
5 changed files with 106 additions and 0 deletions
+43
View File
@@ -150,3 +150,46 @@ def test_r100_payer_id_warning_only():
report = validate(claim, cfg)
assert any(i.rule == "R100_payer_id_matches" and i.severity == "warning" for i in report.warnings)
assert report.passed is True
def test_r032_passes_when_qualifier_b():
cfg = PayerConfig.co_medicaid()
claim = _build_claim()
claim.claim.facility_code_qualifier = "B"
report = validate(claim, cfg)
assert not any(i.rule == "R032_clm05_2_facility_qualifier" for i in report.errors + report.warnings)
def test_r032_errors_when_qualifier_unknown():
cfg = PayerConfig.co_medicaid()
claim = _build_claim()
claim.claim.facility_code_qualifier = "X"
report = validate(claim, cfg)
assert any(i.rule == "R032_clm05_2_facility_qualifier" and i.severity == "error" for i in report.errors)
assert report.passed is False
def test_r032_skipped_when_qualifier_none():
cfg = PayerConfig.co_medicaid()
claim = _build_claim()
# Default _build_claim leaves facility_code_qualifier unset (None).
assert claim.claim.facility_code_qualifier is None
report = validate(claim, cfg)
assert not any(i.rule == "R032_clm05_2_facility_qualifier" for i in report.errors + report.warnings)
def test_r033_passes_with_valid_pos_code():
cfg = PayerConfig.co_medicaid()
claim = _build_claim()
claim.claim.place_of_service = "12" # Office — valid CMS POS
report = validate(claim, cfg)
assert not any(i.rule == "R033_clm05_1_place_of_service_code" for i in report.errors + report.warnings)
def test_r033_errors_with_invalid_pos_code():
cfg = PayerConfig.co_medicaid()
claim = _build_claim()
claim.claim.place_of_service = "999" # not a valid CMS POS code
report = validate(claim, cfg)
assert any(i.rule == "R033_clm05_1_place_of_service_code" and i.severity == "error" for i in report.errors)
assert report.passed is False