diff --git a/backend/tests/fixtures/co_medicaid_837p.txt b/backend/tests/fixtures/co_medicaid_837p.txt new file mode 100644 index 0000000..54def3f --- /dev/null +++ b/backend/tests/fixtures/co_medicaid_837p.txt @@ -0,0 +1,60 @@ +ISA*00* *00* *ZZ*11525703 *ZZ*COMEDASSISTPROG*260617*1937*^*00501*991102984*1*P*:~ +GS*HC*11525703*COMEDASSISTPROG*20260617*193715*991102984*X*005010X222A1~ +ST*837*991102984*005010X222A1~ +BHT*0019*00*co-fixture-001*20260617*193715*CH~ +NM1*41*2*Dzinesco*****46*11525703~ +PER*IC*Tester*EM*tester@example.com~ +NM1*40*2*COLORADO MEDICAL ASSISTANCE PROGRAM*****46*COMEDASSISTPROG~ +HL*1**20*1~ +PRV*BI*PXC*251E00000X~ +NM1*85*2*TOC, Inc.*****XX*1881068062~ +N3*1100 East Main St*Suite A~ +N4*Montrose*CO*814014063~ +REF*EI*721587149~ +HL*2*1*22*0~ +SBR*P*18*******MC~ +NM1*IL*1*Balliache*Marianela****MI*P060946~ +N3*1811 PAVILION DR APT 303~ +N4*Montrose*CO*814016072~ +DMG*D8*19590223*F~ +NM1*PR*2*COHCPF*****PI*SKCO0~ +CLM*t991102984o1c1d*85.40***12:B:1*Y*A*Y*Y~ +REF*G1*3173~ +HI*ABK:R69~ +LX*1~ +SV1*HC:T1019:U2*42.70*UN*6.00***1~ +DTP*472*D8*20260602~ +REF*6R*t991102984v769804d~ +LX*2~ +SV1*HC:T1019:U2*42.70*UN*6.00***1~ +DTP*472*D8*20260603~ +REF*6R*t991102984v770058d~ +HL*3*1*22*0~ +SBR*P*18*******MC~ +NM1*IL*1*Barella*Victoria****MI*H582447~ +N3*1900 Kellie DR~ +N4*Montrose*CO*814019524~ +DMG*D8*19570727*F~ +NM1*PR*2*COHCPF*****PI*SKCO0~ +CLM*t991102984o1c2d*155.76***12:B:1*Y*A*Y*Y~ +REF*G1*3173~ +HI*ABK:R69~ +LX*1~ +SV1*HC:S5130:U2*38.94*UN*6.00***1~ +DTP*472*D8*20260602~ +REF*6R*t991102984v769805d~ +LX*2~ +SV1*HC:S5130:U2*38.94*UN*6.00***1~ +DTP*472*D8*20260603~ +REF*6R*t991102984v770059d~ +LX*3~ +SV1*HC:S5130:U2*38.94*UN*6.00***1~ +DTP*472*D8*20260604~ +REF*6R*t991102984v770308d~ +LX*4~ +SV1*HC:S5130:U2*38.94*UN*6.00***1~ +DTP*472*D8*20260605~ +REF*6R*t991102984v770668d~ +SE*44*991102984~ +GE*1*991102984~ +IEA*1*991102984~ \ No newline at end of file diff --git a/backend/tests/test_co_medicaid_fixture.py b/backend/tests/test_co_medicaid_fixture.py new file mode 100644 index 0000000..e15e49d --- /dev/null +++ b/backend/tests/test_co_medicaid_fixture.py @@ -0,0 +1,40 @@ +from pathlib import Path + +from cyclone.parsers.parse_837 import parse +from cyclone.parsers.payer import PayerConfig + + +FIXTURE = Path(__file__).parent / "fixtures" / "co_medicaid_837p.txt" + + +def test_co_fixture_two_claims_pass(): + result = parse(FIXTURE.read_text(), PayerConfig.co_medicaid()) + assert result.summary.total_claims == 2 + assert result.summary.passed == 2 + assert result.summary.failed == 0 + + +def test_first_claim_has_two_service_lines(): + result = parse(FIXTURE.read_text(), PayerConfig.co_medicaid()) + c1 = result.claims[0] + assert c1.claim_id == "t991102984o1c1d" + assert len(c1.service_lines) == 2 + assert c1.service_lines[0].procedure.code == "T1019" + assert c1.service_lines[0].procedure.modifiers == ["U2"] + assert c1.service_lines[1].service_date is not None + + +def test_second_claim_has_four_service_lines(): + result = parse(FIXTURE.read_text(), PayerConfig.co_medicaid()) + c2 = result.claims[1] + assert c2.claim_id == "t991102984o1c2d" + assert len(c2.service_lines) == 4 + + +def test_subscriber_payer_reused_across_claims(): + """Both claims share the same billing provider; payers are recorded on each claim.""" + result = parse(FIXTURE.read_text(), PayerConfig.co_medicaid()) + assert result.claims[0].billing_provider.npi == "1881068062" + assert result.claims[1].billing_provider.npi == "1881068062" + assert result.claims[0].payer.id == "SKCO0" + assert result.claims[1].payer.id == "SKCO0"