Skip to main content

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:

BandMembersRate
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:

  1. Open the session. Confirm attendance is closed.

  2. Click Generate charges. One charge per billable participant writes; the band-priced rate stamps on each.

  3. Bill normally. Each charge ages on /charges and 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:

CycleEffect
WEEKLYA claim closes at week-end; each day is a billable line.
MONTHLYA claim closes at month-end.
SPANA 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:

  1. Filter charges to the stay (stay_id on the inline drawer).

  2. Select all the cycle's billable days, click Build claim.

  3. 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.

  4. Submit — see 3.1.

LOA (leave of absence) days

A patient leaves the facility temporarily but is expected to return:

StateEffect
LOA startedDay flagged; not billable.
LOA endedDay 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

CheckExpected
Group sessions price by bandYes — one rate per participant per band.
Each participant becomes a separate chargeYes; each member's AR gets its own line.
Per-diem stays produce a single claim per cycleYes; each cycle is one 837I.
LOA days do not billYes; OCC-74 carries the dates.
Final cycle carries discharge codesYes; OCC-42 / 46 writes from the discharge event.

Troubleshooting

SymptomCauseFix
Group session priced as if 2 participants when 5 attendedcountBillableParticipants excluded LATE / LEFT_EARLYConfirm tenant policy; admin sets which statuses count.
Per-diem cycle missed a dayCharge for that DOS missing or NEEDS_FIXCheck the charge; fix and re-build.
LOA dates didn't propagate to OCC-74LOA recorded after the cycle was builtReverse the cycle; rebuild.
Discharge codes missingDischarge event happened after cycle closeSame — reverse and rebuild the final cycle.

Where to next