- 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>
80 lines
2.4 KiB
Python
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 == []
|