Skip to main content

Custom fee schedule

Use the Custom fee schedule payment model when reimbursement is based on rates in one of your organization's fee schedules. You can use it in a payor arrangement or a facility contract payment term.

A fee schedule specifies a rate for each CPT code. For example:

CPT codeServiceExample rate per unit
97110Therapeutic exercises$30.00
97116Gait training$35.00
97530Therapeutic activities$40.00

Upload the fee schedule to your organization, then select it in the Custom fee schedule payment model. RehabAlpha uses the rate for the CPT code that is effective on the service date.

For each CPT code, reimbursement is:

CPT-code reimbursement=Allocated units×Fee-schedule rate per unit\begin{alignedat}{3} \text{CPT-code reimbursement} &={} & \text{Allocated units} &{}\times{}& \text{Fee-schedule rate per unit} \end{alignedat}

RehabAlpha aggregates service-item minutes by CPT code, calculates and allocates units to those CPT codes, then multiplies each code's allocated units by its rate. The reimbursement for the date is the sum of those CPT-code amounts.

Data partitioning

Every service item has an inherent set of attributes; namely:

  • facility
  • service location
  • place of service
  • patient
  • payor
  • billing provider
  • service date
  • discipline
  • clinical document
  • therapist

For example,

FacilitySrvc locPOSPtPayorBill ProvDateDiscDocTheraCPTMins
HilltopSNF31JoeUHCRWDJan 1PTtx 1Sue9711012
HilltopSNF31JoeUHCRWDJan 1PTtx 1Sue975308
HilltopSNF31JoeUHCRWDJan 1PTtx 2Sue9711010
HilltopSNF31JoeUHCRWDJan 1PTtx 2Sue9753011
HilltopSNF31JoeUHCRWDJan 2PTtx 2Sue9711615
HilltopSNF31JoeUHCRWDJan 2OTeval 1Sue9716530
HilltopOP A11JoeUHCRWDJan 2PTtx 4Sue9711010
HilltopOP B11JoeUHCRWDJan 2PTtx 6Sue971108
HilltopOP B11JoeUHCRWDJan 2PTtx 5Sue9252622
HilltopSNF31JoeAetnaRWDJan 1OTtx 3Sue9753520
HilltopOP A11JoeAetnaRWDJan 1PTeval 2Sue9716125

Before RehabAlpha calculates units and applies a fee schedule, the service items are partitioned by (facility, patient, payor, billing provider, service date). The example above would lead to the following three partitions:

Hilltop, Joe, UHC, RWD, Jan 1

Service locationPlace of serviceDisciplineClinical documentTherapistCPT codeMinutes
SNF31PTtx 1Sue9711012
SNF31PTtx 1Sue975308
SNF31PTtx 2Sue9711010
SNF31PTtx 2Sue9753011

Hilltop, Joe, UHC, RWD, Jan 2

Service locationPlace of serviceDisciplineClinical documentTherapistCPT codeMinutes
SNF31PTtx 2Sue9711615
SNF31OTeval 1Sue9716530
OP A11PTtx 4Sue9711010
OP B11PTtx 6Sue971108
OP B11PTtx 5Sue9252622

Hilltop, Joe, Aetna, RWD, Jan 1

Service locationPlace of serviceDisciplineClinical documentTherapistCPT codeMinutes
SNF31OTtx 3Sue9753520
OP A11PTeval 2Sue9716125

In the sections the follow, it's important to understand that all statements made are relative to a single partition of the data. In other words, the facility, patient, payor, billing provider, and service date are fixed constants for the service items described.

Configurable units

The Custom fee schedule payment model lets you define how a unit of service is calculated. The two options currently supported are

  1. Medicare (8-minute rule) - follows the Medicare methodology for calculating units

  2. Custom - allows you to customize

    1. base duration (number of minutes)
    2. rounding behavior (up, down, nearest)
    3. scope at which units are calculated and allocated

The unit definition affects the quantity paid; the selected fee schedule still determines the rate paid for each CPT code.

Medicare (8-minute rule)

Choose Medicare (8-minute rule) when the payment terms use Medicare-style units but the rate comes from your custom, uploaded fee schedule.

Step 1: Partition the service items by discipline

Our starting point is a partition of service items as described above. For example,

Hilltop, Joe, UHC, RWD, Jan 2

Service locationPlace of serviceDisciplineClinical documentTherapistCPT codeMinutes
SNF31PTtx 2Sue9711615
SNF31OTeval 1Sue9716530
OP A11PTtx 4Sue9711010
OP B11PTtx 6Sue971108
OP B11PTtx 5Sue9252622

In this step, we further partition these items by discipline:

Hilltop, Joe, UHC, RWD, Jan 2, OT

Service locationPlace of serviceClinical documentTherapistCPT codeMinutes
SNF31eval 1Sue9716530

Hilltop, Joe, UHC, RWD, Jan 2, PT

Service locationPlace of serviceClinical documentTherapistCPT codeMinutes
SNF31tx 2Sue9711615
OP A11tx 4Sue9711010
OP B11tx 6Sue971108
OP B11tx 5Sue9252622

Step 2: Determine total units per partition

RehabAlpha totals the timed minutes and converts that total to units using the Medicare 8-minute rule:

Timed units=floor(Total timed minutes+715)\begin{alignedat}{3} \text{Timed units} &={} & \operatorname{floor}\left( \frac{\text{Total timed minutes} + 7}{15} \right) \end{alignedat}

RehabAlpha calculates units separately for each discipline partition. In the example above, the OT partition has 30 minutes and the PT partition has 55 minutes:

Discipline partitionTotal minutesTotal units
OT302
PT554

For the OT partition:

floor(30+715)=floor(3715)=floor(2.47)=2\operatorname{floor}\left(\frac{30 + 7}{15}\right) = \operatorname{floor}\left(\frac{37}{15}\right) = \operatorname{floor}(2.47) = 2

For the PT partition:

floor(55+715)=floor(6215)=floor(4.13)=4\operatorname{floor}\left(\frac{55 + 7}{15}\right) = \operatorname{floor}\left(\frac{62}{15}\right) = \operatorname{floor}(4.13) = 4

Step 3: Aggregate minutes by CPT code

Before allocating units, RehabAlpha combines the service items for each CPT code within the discipline partition and totals their minutes. The two PT service items for 97110 are therefore treated as one 18-minute CPT-code total:

DisciplineCPT codeService-item minutesAggregated minutes
OT971653030
PT971161515
PT9711010 + 818
PT925262222

Step 4: Allocate units to furnished CPT codes

Next, RehabAlpha allocates the units back to the furnished CPT codes using a greedy load-balancing algorithm with lexicographic tie-breaking.

In pseudocode, the algorithm works like this:

For each unit to be allocated:
Allocate the current unit to the CPT code with the highest number of remaining aggregated minutes.
If multiple CPT codes tie, allocate the unit to the code that comes first in lexicographic order.
After a unit is assigned to a CPT code, decrement its minutes by 15

Repeat this process until all the units have been allocated

Following the example above, the resolved unit allocations would look like this:

Hilltop, Joe, UHC, RWD, Jan 2, OT

CPT codeMinutesUnits
97165302

Hilltop, Joe, UHC, RWD, Jan 2, PT

CPT codeMinutesUnits
97116151
97110181
92526222

Custom

Choose Custom when the reimbursing party defines their own time-based unit. You set the minutes in one unit, the rounding behavior, and which service items have their minutes pooled together before units are calculated.

For this example, assume the payment terms use the following Custom unit definition:

SettingSelection
Minutes per unit20 minutes
Rounding behaviorRound up
Partition service items byNONE

Step 1: Partition the service items using the selected scope

The starting point is the same partition of service items used in the Medicare example:

Hilltop, Joe, UHC, RWD, Jan 2

Service locationPlace of serviceDisciplineClinical documentTherapistCPT codeMinutes
SNF31PTtx 2Sue9711615
SNF31OTeval 1Sue9716530
OP A11PTtx 4Sue9711010
OP B11PTtx 6Sue971108
OP B11PTtx 5Sue9252622

RehabAlpha always partitions service items by facility, patient, payor, billing provider, and service date first. Partition service items by controls whether it then partitions those items further:

ChoiceResult
NONENo additional partition
DisciplinePartition by discipline
Clinical documentPartition by clinical document

Because this example uses NONE, all five service items remain in one partition. This differs from the Medicare example, which separates the OT and PT service items before calculating units.

Step 2: Determine total units per partition

RehabAlpha totals the minutes in each partition and divides by Minutes per unit:

Unrounded units=Total minutesMinutes per unit\text{Unrounded units} = \frac{\text{Total minutes}}{\text{Minutes per unit}}

The partition has 85 total minutes. With 20 minutes per unit, it has 4.25 unrounded units:

8520=4.25\frac{85}{20} = 4.25

RehabAlpha applies the selected rounding behavior once to the entire partition, not separately to each service item. The available choices would resolve this example as follows:

Rounding behaviorUnrounded unitsTotal units
Round down4.254
Round nearest4.254
Round up4.255

Because this example uses Round up, RehabAlpha allocates 5 units.

Round nearest

Round nearest rounds a half unit up. For example, 4.5 unrounded units would resolve to 5 units.

Step 3: Aggregate minutes by CPT code

Before allocating the 5 units, RehabAlpha combines service items with the same CPT code and totals their minutes. The 10-minute and 8-minute 97110 service items become one 18-minute CPT-code total:

CPT codeService-item minutesAggregated minutes
971161515
971653030
9711010 + 818
925262222

Step 4: Allocate units to furnished CPT codes

Unit allocation follows the same greedy load-balancing procedure as the Medicare configuration. For each unit, RehabAlpha selects the CPT code with the highest remaining aggregated minutes, using lexicographic order to break a tie. It then reduces that CPT code's remaining minutes by the custom 20-minute unit size and repeats until all 5 units are allocated.

The resolved unit allocation is:

Hilltop, Joe, UHC, RWD, Jan 2

CPT codeMinutesUnits
97116151
97165302
97110181
92526221

With the Medicare configuration, the same starting service items produce 6 units across separate OT and PT partitions. With this Custom configuration, they produce 5 units in one partition.

Applying the rates

After RehabAlpha determines the allocated units for each CPT code, it looks up that code's rate in the selected custom fee schedule. The rate effective on the service date is multiplied by the allocated units to calculate reimbursement for that CPT code. Rate application starts from the CPT-code allocation table, not from the original service-item rows.

For the Jan 2 example above, assume the selected custom fee schedule contains these rates:

CPT codeServiceRate per unit
97110Therapeutic exercises$30.00
97116Gait training$35.00
97165Occupational therapy evaluation$85.00
92526Oral function therapy$45.00

The allocated units map to the fee schedule as follows:

Hilltop, Joe, UHC, RWD, Jan 2

CPT codeUnitsRate per unitReimbursement
971161$35.00$35.00
971652$85.00$170.00
971101$30.00$30.00
925261$45.00$45.00
Total5$280.00

The two original 97110 service items appear once in this table because their minutes were aggregated before unit allocation. Their single allocated unit is multiplied by the 97110 rate once.

RehabAlpha adds the CPT-code reimbursement amounts to calculate the total reimbursement for the partition.