A claim is rejected. Someone in billing reads the rejection, finds the missing detail, resubmits. Six weeks of cash flow, spent on a field that was blank at the point of care.
Rejections cluster
Pull a quarter of rejection reasons and the distribution is brutally uneven. A handful of codes account for most of the volume, and nearly all of them are validation failures rather than clinical disagreements: eligibility not verified, missing referral, expired authorisation, diagnosis code no longer valid at date of service.
Every one of those is checkable before the claim leaves.
Validate at the point of care, not at submission
The information is cheapest to obtain when the patient is standing there. A missing policy number is thirty seconds at reception and a fortnight once they have gone home.
Run the payer’s rules as a pre-flight check at appointment confirmation and again at completion:
claim_checks
encounter_id
rule_code
severity -- block | warn
detail
checked_at
resolved_at
Blocking failures stop the encounter closing. Warnings surface on the billing worklist. Both are visible to the person who can fix them, at the time they can fix them.
Codes are valid for a date range
Diagnosis and procedure codes are revised. A code valid when a template was written may be retired by the date of service, and the claim is rejected for a code the system offered.
Store validity ranges on the code tables and filter pickers by date of service, not by today. It is one condition, and it removes a rejection class entirely.
Track the loop, not just the claim
The useful metric is not acceptance rate. It is first-pass acceptance rate — claims paid without human intervention — and the rejection reasons ranked by frequency. That ranking is the backlog. Fix the top reason, watch it disappear from the list, move to the next.
What good looks like
The billing team stops being a rework queue and becomes an exception queue. The work does not vanish, but it moves from “fix the same missing field two hundred times” to “handle the genuinely unusual cases”, which is what those people are actually for.