Auto-correction console
Outcome
You understand which CARCs the engine handles, you can review each
attempt, you know when to trigger a retry, and you know when to
override an engine SKIPPED decision.
Prerequisites
| Scope | What it lets you do |
|---|---|
billing.denial.read | View the tab |
billing.auto-correction.run | Trigger / force-retry |
How the engine works
Each handler is named uppercase (e.g. CO4ModifierHandler); each
attempt writes a row in auto_correction_attempt. The engine respects
partial-unique idempotency on (denial_id, handler_name) where
status ≠ FAILED — meaning a SUCCESS cannot be retried by simple
trigger; you'd have to explicitly force-retry.
The handler registry (current)
| CARC | Handler | What it does |
|---|---|---|
CO-4 | CO4ModifierHandler | Re-runs ModifierInjector; if changes are needed, reverses the original and rebuilds. |
CO-16 | Co16MissingInfoHandler | Maps the RARC to a missing-info hint; if auth-related, attaches auth. Rebuilds. |
CO-18 | Co18DuplicateHandler | Marks the duplicate via claim_relationship rel type DUPLICATE. No rebill. |
CO-29 | Co29TimelyFilingHandler | Generates a timely-filing-exception envelope where rules allow; otherwise SKIPPED. |
CO-97 | Co97BundlingHandler | Re-codes per CCI rules and rebuilds. |
CO-197 | Co197AuthHandler | Searches for an active auth; attaches and rebuilds. |
PR-1 / 2 / 3 | PrPatientHandler | Routes to patient AR; no rebill. |
The engine's success rate widget on the dashboard surfaces by-handler counts: see 8.1 — Billing dashboards.
The Auto-correction tab
Each denial's tab shows every attempt:
| Column | Meaning |
|---|---|
| Handler | Name of the handler. |
| Status | SUCCESS, FAILED, SKIPPED. |
| Started / Finished | UTC timestamps. |
| Outcome | Plain-English summary. |
| Linked rebill | If SUCCESS, the resulting child claim. |
| Skip reason | If SKIPPED, why. |
When to trigger manually
The engine runs automatically when a denial arrives. Trigger manually when:
- A handler was added after the denial existed.
- An admin updated a rule that the handler depends on (e.g. modifier injection rule); you want to re-run.
- The
SKIPPEDreason is now obsolete (e.g. an auth was attached afterCO197skipped for "no active auth").
Steps — manual trigger
Open the denial → Auto-correction tab. Read the prior outcomes.
Click
Run handlers. The engine queues each registered handler for the denial's CARC. Watch the page; rows appear within 30 seconds.Review outcomes:
SUCCESS→ linked rebill ID. Click through to confirm submission.FAILED→ read the reason. Often retryable after fixing root cause.SKIPPED→ read the skip reason. Often legitimate; sometimes the reason is stale.
Steps — force-retry an existing SUCCESS
Use only when you have a clear cause (e.g. the rebill was wrong, you need a different fix path).
Click
Force-retryon the priorSUCCESSrow.Provide a reason (required).
Confirm. The platform writes a new attempt; the prior
SUCCESSis preserved (audit trail). The new attempt is the "current" one.
Force-retry is supervisor-grade in many tenants — your tenant may gate
it behind billing.auto-correction.override.
Bulk run
Across the worklist:
Filter denials to a CARC + date range.
Bulk select, click
Trigger auto-correction.The engine runs each registered handler on each selected denial, respecting per-row idempotency.
Validation
| Check | Expected |
|---|---|
Each SUCCESS row links to a child claim with parent_claim_id set | Yes. |
| Idempotency prevents duplicate rebills on retry | Yes; partial-unique on (denial_id, handler_name) where status ≠ FAILED. |
SKIPPED rows record the reason | Yes. |
| Force-retry is gated by scope | Yes; without it the button is hidden. |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Engine doesn't run for a CARC | No handler registered | Manual triage; ask admin to consider adding a handler. |
SUCCESS shows but no rebill on Relationships | Race condition during rebill build | Refresh; if persistent, ping support. |
| Attempt count grows without progress | Handler keeps running into the same upstream issue | Stop bulk-triggering; read the reason; fix upstream. |
| Force-retry blocked | Tenant gate | Ask supervisor; reason note required. |
Where to next
- 5.4 — Manual rebill when the engine can't.
- 5.7 — Force-retry & overrides for the supervisor playbook.