Skip to main content

Charges worklist

Outcome

You can navigate the Charges page, find the charges ready to bill, group them sensibly, and act on them in batches without breaking the "one-claim, one-payer, one-filing-type" rule.

Prerequisites

ScopeWhat it lets you do
billing.charge.readView the worklist
billing.charge.writeEdit a charge inline (rare — see 2.6)
billing.claim.writeBuild a claim from selected charges

The page

/charges opens with three primary regions:

RegionPurpose
Filter railStatus, facility, payer, program, date-of-service, member, source-feed.
ListOne row per charge; columns are tunable.
Inline drawerOpens on row-click; edit + source-record + history.

Defaults narrow to VALIDATED charges with active coverage on the date of service. If a row is missing it's probably in NEEDS_FIX; switch that filter on.

Group-by modes

The toolbar's Group by chip changes the row shape, not the filter:

Group byWhat you see
None (default)One row per charge.
MemberMember rows expand to their charges. The default sort is by date-of-service ascending.
FacilitySite rows; useful for multi-site clerks.
ProgramProgram rows; useful when programs have different filing types.
Source feedFeed rows; useful when chasing an ingestion problem.

Selection rules (the hard floors)

The platform enforces these the moment you start selecting:

RuleWhy
One member per claimA claim is per-member by definition.
One primary payer per claimThe payer responsibility column lives at the claim header.
One filing type per claim (P vs I)Professional and institutional submit on different forms (837P vs 837I).
Same facility (configurable)Some payers reject mixed-facility claims; default is enforced.

Selecting a mix greys out Build claim with a tooltip explaining the conflict. Don't disable the check — split the selection.

Common selection patterns

GoalHow
One claim per member-dayGroup by member, expand, select all charges in a date.
One claim per encounterGroup by member, select rows tagged with the same encounter_id.
Bulk all of today's outpatientGroup by program, select all Outpatient program rows; build one claim per member automatically.
Bulk a per-diem stayGroup by member, select all DOS rows in the stay; the platform builds a 837I (see 3.7).

Build a claim

  1. Pick your selection under the rules above.

  2. Click Build claim. The platform creates a CREATED-status claim per (member, payer, filing-type) tuple — usually one. The scrubber runs immediately. See 3.1 — Build & submit.

  3. Land on the new claim's detail page. The Validation tab tells you whether the scrubber raised anything.

Bulk actions on charges (without building a claim)

Sometimes you want to act on charges without immediately billing:

ActionWhat it does
Re-validateRe-runs the validator (after an upstream fix or rule edit).
Tag for reviewAdds a tenant-defined tag to surface for triage.
HoldMarks the charge ON_HOLD; excludes from default filters.
Release holdReturns to normal.
VoidCancels the charge; reversible only by re-ingest under a new natural key.

Tags are searchable in the filter rail. Holding is the right move when upstream is fixing a problem and you don't want the charge accidentally billed in the meantime.

Validation

CheckExpected
Build claim advances to CREATEDYes.
Inline drawer's Source record opensYes.
Re-validate re-checks rules without changing fieldsYes.
Bulk hold updates each row's statusYes; refresh the list to confirm.

Troubleshooting

SymptomCauseFix
Rows missingFilter rail too narrowReset filters; re-apply one at a time.
Build claim greyedSelection breaks a hard ruleHover the button; the tooltip names the rule.
Newly-validated charges still greyList is staleClick Refresh (or wait the 30-second auto-refresh).
Group-by shows zero rowsGroup has no charges in current filterWiden the filter (date range, status).

Where to next