Patient ledger & OOP estimator
Patient ledger & out-of-pocket estimator
Per-patient A/R + pre-service cost estimation. Lives at
/admin/patient-ledger and /admin/oop-estimator.
Patient ledger
/admin/patient-ledger?patient=<id> — running A/R for one patient.
Every charge, payment, write-off, and adjustment flows in:
| Date | Source | Description | Charge | Patient | Insurance | Balance |
|---|---|---|---|---|---|---|
| 2026-04-12 | 837 line | 99213 office visit | $145.00 | $30.00 | $115.00 | $145.00 |
| 2026-04-18 | 835 line | Aetna ERA | – | – | -$98.00 | $47.00 |
| 2026-04-22 | adj | Allowed-amt write-off | – | – | -$17.00 | $30.00 |
| 2026-05-03 | payment | Patient credit card | – | -$30.00 | – | $0.00 |
Sources are foreign-keyed back to the originating row — clicking “837 line” jumps to the encounter; “835 line” jumps to the ERA record; “payment” jumps to the Stripe charge / cash receipt.
A/R aging
/admin/ar-aging — bucketed view across all patients (0-30 / 31-60
/ 61-90 / 90+). Drill into any bucket to surface the underlying
patient ledgers. Drives the statements + collections workflow.
OOP estimator
/admin/oop-estimator?patient=<id>&cpt=<code> — pre-service
out-of-pocket estimate.
Pulls:
- The patient’s most-recent benefit snapshot from eligibility.
- The fee schedule for the payer × CPT from contracts.
- Year-to-date deductible / OOP-max accumulators from prior ERAs.
Returns:
allowed: $145.00deductible: $1,200 remaining ($800 already met)copay: $30.00coinsurance: 20% after deductibleestimated patient owes: $30.00 (copay only — deductible met)Surfaces at front desk during check-in so collection is at the point of service.
Patient statements
Periodic statements roll up ledger rows since the last statement. Configurable cadence per tenant (default: monthly). Statements email / SMS / print to a configurable mailing service.