Signal/tests/test_doc_state_machine.py
Kisa bcb1a10fe6 feat: demo MVP — 90/60/45 priority tiers, doc state machine, confirm visit workflow
- New CoverageFlag enum: SUPPLY_LAPSED, VISIT_REQUIRED, TRANSFER_PENDING,
  RENEWAL_CRITICAL/ELEVATED/SOON, RESUPPLY_READY, ACTIVE
- Doc state machine: 5-item payer-dependent status per patient (SWO, Visit,
  PECOS, PA, Diagnosis) with cascade chain
- Confirm Visit endpoint: staff enters prescriber-confirmed date, persisted in
  Supabase confirmed_visits table, survives all future CSV imports
- Supabase migration: 001_add_confirmed_visits.sql (run manually in SQL editor)
- Frontend: Badge rebuilt for 8 flags, DocStatusBar 5-dot display,
  ConfirmVisitModal, expandable WorklistTable rows
- Legal: LOI, NDA, BAA drafts at pitch/legal/ for Nixon Law Group review
- Compliance docs: privacy policy, incident response, data handling
- CSV generator: market_data.json + PA/NJ generator scripts
- 15/15 tests passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 11:29:33 -04:00

80 lines
2.4 KiB
Python

import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent / "python-backend"))
from datetime import date, timedelta
from core.doc_state_machine import compute_doc_state, DocState
TODAY = date.today()
def test_medicare_ffs_pa_not_required():
state = compute_doc_state(
payer_type="medicare",
csv_swo_status="On File",
csv_visit_date=TODAY - timedelta(days=30),
confirmed_visit_date=None,
csv_pecos_verified="Yes",
csv_pa_status=None,
csv_diagnosis_on_file="Yes",
is_transfer=False,
)
assert state.pa == "Not Required"
assert state.pecos == "Verified"
def test_medicaid_pecos_not_applicable():
state = compute_doc_state(
payer_type="medicaid",
csv_swo_status="On File",
csv_visit_date=TODAY - timedelta(days=30),
confirmed_visit_date=None,
csv_pecos_verified=None,
csv_pa_status="Approved",
csv_diagnosis_on_file="Yes",
is_transfer=False,
)
assert state.pecos == "N/A"
assert state.pa == "Approved"
def test_transfer_patient_all_pending():
state = compute_doc_state(
payer_type="medicare",
csv_swo_status=None,
csv_visit_date=None,
confirmed_visit_date=None,
csv_pecos_verified=None,
csv_pa_status=None,
csv_diagnosis_on_file=None,
is_transfer=True,
)
assert state.swo == "Pending — Verify"
assert state.visit == "Pending — Verify"
assert state.pecos == "Pending — Verify"
assert state.pa == "Pending — Verify"
assert state.diagnosis == "Pending — Verify"
def test_cascade_visit_not_confirmed():
state = compute_doc_state(
payer_type="medicare",
csv_swo_status="On File",
csv_visit_date=None,
confirmed_visit_date=None,
csv_pecos_verified="Yes",
csv_pa_status=None,
csv_diagnosis_on_file="Yes",
is_transfer=False,
)
assert len(state.cascade) > 0
assert any("visit" in c.lower() for c in state.cascade)
def test_no_cascade_when_all_clear():
state = compute_doc_state(
payer_type="medicare",
csv_swo_status="On File",
csv_visit_date=TODAY - timedelta(days=30),
confirmed_visit_date=None,
csv_pecos_verified="Yes",
csv_pa_status=None,
csv_diagnosis_on_file="Yes",
is_transfer=False,
)
assert state.cascade == []