import { create } from "zustand"; import { sampleActivity, sampleClaims, sampleProviders, sampleRemittances, } from "@/data/sampleData"; import type { Activity, Claim, ParsedBatch, Provider, Remittance, } from "@/types"; interface AppState { // Legacy in-memory store used by the existing pages. claims: Claim[]; providers: Provider[]; remittances: Remittance[]; activity: Activity[]; addClaim: (claim: Claim) => void; addActivity: (entry: Activity) => void; // Parsed-batch slice — populated by the Upload page when the user uploads // a real EDI file through the FastAPI backend. Independent of the legacy // store above so the existing pages keep working with sample data. parsedBatches: ParsedBatch[]; activeBatchId: string | null; addParsedBatch: (batch: ParsedBatch) => void; setActiveBatchId: (id: string | null) => void; } export const useAppStore = create((set) => ({ claims: sampleClaims, providers: sampleProviders, remittances: sampleRemittances, activity: sampleActivity, addClaim: (claim) => set((s) => ({ claims: [claim, ...s.claims], activity: [ { id: `ACT-${claim.id}`, kind: "claim_submitted", message: `Submitted ${claim.id} · ${claim.patientName}`, timestamp: claim.submissionDate, npi: claim.providerNpi, amount: claim.billedAmount, // SP21 Task 2.5: mirror the backend wire shape so the // Dashboard routing helper finds the claim id. claimId: claim.id, remittanceId: null, }, ...s.activity, ], })), addActivity: (entry) => set((s) => ({ activity: [entry, ...s.activity] })), parsedBatches: [], activeBatchId: null, addParsedBatch: (batch) => set((s) => ({ parsedBatches: [batch, ...s.parsedBatches], activeBatchId: batch.id, })), setActiveBatchId: (id) => set({ activeBatchId: id }), }));