feat(frontend): add ClaimState enum + Match/Unmatched types

This commit is contained in:
Tyler
2026-06-19 23:45:11 -06:00
parent 43a88a356c
commit d4a142aa83
+67
View File
@@ -312,3 +312,70 @@ export interface ParsedBatch {
claimIds: string[];
summary: BatchSummary;
}
// ---------------------------------------------------------------------------
// Reconciliation (7-state claim model + match audit trail)
// Mirrors cyclone.db.ClaimState (Python enum) 1:1. The reconciliation page
// uses these to drive the unmatched bucket and the manual-match UI.
// ---------------------------------------------------------------------------
export type ClaimState =
| "submitted"
| "received"
| "paid"
| "partial"
| "denied"
| "reconciled"
| "reversed";
export const CLAIM_STATES: ClaimState[] = [
"submitted",
"received",
"paid",
"partial",
"denied",
"reconciled",
"reversed",
];
export interface Match {
id: number;
claim_id: string;
remittance_id: string;
strategy: "auto" | "manual";
matched_at: string;
prior_claim_state?: ClaimState | null;
is_reversal: boolean;
}
export interface UnmatchedClaim {
id: string;
patientControlNumber: string;
serviceDate: string | null;
chargeAmount: number;
providerNpi: string | null;
payerId: string | null;
state: ClaimState;
}
export interface UnmatchedRemittance {
id: string;
payerClaimControlNumber: string;
statusCode: string;
totalCharge: number;
totalPaid: number;
adjustmentAmount: number;
serviceDate: string | null;
isReversal: boolean;
batchId: string;
}
export interface UnmatchedResponse {
claims: UnmatchedClaim[];
remittances: UnmatchedRemittance[];
}
export interface MatchResponse {
claim: UnmatchedClaim;
match: { id: number; strategy: "auto" | "manual" };
}