Group billing & per-diem
Outcome
Group sessions price correctly per the configured size band, per-diem stays roll up to a single 837I per cycle, and the platform handles the two billing patterns transparently — you don't compute the rate by hand.
Group billing
A group session is a single service event with multiple billable participants. Examples: group therapy, IOP groups, classes.
How groups price
Bands are configured per program. Typical shape:
| Band | Members | Rate |
|---|---|---|
| Small (3-5) | 3-5 | $50 / participant. |
| Medium (6-10) | 6-10 | $40 / participant. |
| Large (11+) | 11+ | $30 / participant. |
countBillableParticipants counts only participants whose status is
PRESENT (or your tenant's equivalent — LATE, LEFT_EARLY may or
may not count depending on policy). The session's band is determined
once the supervisor closes attendance.
Modifier injection
The platform auto-injects the appropriate group modifier per the
modifier-injection rules — typically HQ for group therapy. If your
payer wants a different modifier (e.g. HG), the rule already captures
it; you don't add it by hand.
Building from a group session
Each billable participant becomes a charge tied to that participant's
member record. From /group-sessions/:id:
Open the session. Confirm attendance is closed.
Click
Generate charges. One charge per billable participant writes; the band-priced rate stamps on each.Bill normally. Each charge ages on
/chargesand joins per-member claim builds.
Re-opening attendance after billing
The platform allows it but flags it: any charge already on a BILLED
or SUBMITTED claim is locked. Reverse first, then re-open. The
session locks via chk_participant_status once a charge is built; you
need supervisor scope to bypass.
Per-diem stays
A stay is a span of dates billed as one or more bill cycles. Common in residential, ICF, IOP, PHP.
How per-diem prices
The cycle is PayerProgramConfig.institutionalBillingPeriod:
| Cycle | Effect |
|---|---|
WEEKLY | A claim closes at week-end; each day is a billable line. |
MONTHLY | A claim closes at month-end. |
SPAN | A claim covers admit→discharge. |
The platform writes one service.charge per covered day; LOA days
count as OCC-74 and non-covered per the program config.
Building a per-diem cycle
The charge worklist groups stay-charges by stay (with a stay header expander). At cycle close:
Filter charges to the stay (
stay_idon the inline drawer).Select all the cycle's billable days, click
Build claim.The platform builds 837I with admit/discharge, OCC-74 LOA dates, VAL-80/81 covered/non-covered day counts, and a daily revenue-code line per service.
Submit — see 3.1.
LOA (leave of absence) days
A patient leaves the facility temporarily but is expected to return:
| State | Effect |
|---|---|
| LOA started | Day flagged; not billable. |
| LOA ended | Day flagged; covered days resume. |
OCC-74 segments emit with the LOA dates; the value-code-80 covered-
day count adjusts accordingly.
Discharge
The discharge event closes the stay. Any open cycle for that stay
becomes the final cycle and bills with discharge codes (OCC-42,
OCC-46).
Validation
| Check | Expected |
|---|---|
| Group sessions price by band | Yes — one rate per participant per band. |
| Each participant becomes a separate charge | Yes; each member's AR gets its own line. |
| Per-diem stays produce a single claim per cycle | Yes; each cycle is one 837I. |
| LOA days do not bill | Yes; OCC-74 carries the dates. |
| Final cycle carries discharge codes | Yes; OCC-42 / 46 writes from the discharge event. |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Group session priced as if 2 participants when 5 attended | countBillableParticipants excluded LATE / LEFT_EARLY | Confirm tenant policy; admin sets which statuses count. |
| Per-diem cycle missed a day | Charge for that DOS missing or NEEDS_FIX | Check the charge; fix and re-build. |
| LOA dates didn't propagate to OCC-74 | LOA recorded after the cycle was built | Reverse the cycle; rebuild. |
| Discharge codes missing | Discharge event happened after cycle close | Same — reverse and rebuild the final cycle. |
Where to next
- 4.1 — ERA inbox — when the per-diem payments come back.
- 9.4 — X12 for billers — what the 837I segments mean in plain English.