Skip to content

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:

DateSourceDescriptionChargePatientInsuranceBalance
2026-04-12837 line99213 office visit$145.00$30.00$115.00$145.00
2026-04-18835 lineAetna ERA-$98.00$47.00
2026-04-22adjAllowed-amt write-off-$17.00$30.00
2026-05-03paymentPatient 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.00
deductible: $1,200 remaining ($800 already met)
copay: $30.00
coinsurance: 20% after deductible
estimated 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.