Signature
q = max(0, (b_0 - (1 - r) * c / alpha) / b_1)
| Inputs | Definition | Unit |
|---|---|---|
b_0 | Intercept of the linear marginal benefit b(q) = b_0 minus b_1 q, the patient benefit of the first unit in money terms | pounds per unit |
r | Share of the cost of each unit that the payer reimburses | proportion |
c | Constant cost of one more unit of care | pounds per unit |
alpha | Weight on a pound of patient benefit relative to a pound of hospital net revenue; 1 is a perfect agent | ratio |
b_1 | Slope of the linear marginal benefit; b_0 / b_1 is the stay at which marginal benefit reaches zero | pounds per unit per unit |
q | Units of care at which the provider's weighted marginal benefit equals the marginal cost it bears | bed-days per case |
|---|
Function
Mixed provider payment and the quantity of care chosen under imperfect agency
Maps a provider payment rule with a prospective amount per case and a reimbursed share of cost to the provider's revenue and margin and, with the index of agency (the weight a provider puts on a pound of patient benefit relative to a pound of net revenue), to the quantity of care it chooses. Ellis and McGuire showed that the efficient reimbursed share equals one minus the index of agency. Notation follows the Contract Theory article and its blended bed-day example.
Computational function
Computational function: provider payment rules compared by chosen stay, net benefit and margin
Compares payment rules, each a pair of fixed part and reimbursed share, by the stay the provider chooses and the resulting patient benefit, cost, payment and margin, so that a payer can see which rule gives the largest benefit net of cost and who keeps the surplus. The inputs differ from the formula's: vectors of rules and the parameters of a quadratic patient benefit B(q) = b_0 q minus b_1 q squared / 2, whose marginal benefit is b_0 minus b_1 q.
Inputs and outputs:
P: Vector of fixed parts, one per rule. Unit: pounds per case.;r: Vector of reimbursed shares, one per rule. Unit: proportion.;b_0,b_1: Intercept and slope of the marginal benefit. Unit: pounds per unit, pounds per unit per unit.;c: Marginal cost of a unit of care. Unit: pounds per unit.;alpha: Index of agency. Unit: ratio.;q: Stay chosen under each rule, max(0, (b_0 minus (1 minus r) c / alpha) / b_1). Unit: bed-days.;benefit,cost,net: Patient benefit, cost of care and benefit net of cost. Unit: pounds per case.;payment,margin: P + r c q and payment minus cost. Unit: pounds per case.Assumption: alpha is constant and positive, cost per unit is constant, and the payer's rules differ only in P and r; cost-reduction effort and patient selection are left out, as in the article.
Worked example (Three rules, article table): With b_0 = 1,200, b_1 = 100, c = 400 and alpha = 0.5, the case price of 3,200 pounds, full cost reimbursement and the blend of 1,600 pounds plus half of cost give stays of 4, 12 and 8 days, benefits of 4,000, 7,200 and 6,400, costs of 1,600, 4,800 and 3,200, net benefits of 2,400, 2,400 and 3,200, payments of 3,200, 4,800 and 3,200 and margins of 1,600, 0 and 0 pounds, as in the article.
P = [3200, 0, 1600]; r = [0, 1, 0.5]; q = [4, 12, 8]; net = [2400, 2400, 3200]; margin = [1600, 0, 0]Worked example (Index of agency of 0.8): A case price of 3,200 pounds now gives seven days, net benefit 3,150 and a margin of 400 pounds, while the efficient blend of 2,560 pounds plus one fifth of cost gives eight days, net benefit 3,200 and no margin (computed here for illustration).
P = [3200, 2560]; r = [0, 0.2]; q = [7, 8]; net = [3150, 3200]; margin = [400, 0]Excel: With the rules in ranges FixedPart and ShareGrid and the parameters named BenIntercept, BenSlope, UnitCost and AgencyIndex,
=IF(BenIntercept-(1-ShareGrid)*UnitCost/AgencyIndex>0,(BenIntercept-(1-ShareGrid)*UnitCost/AgencyIndex)/BenSlope,0)spills the stays into StayGrid (IF rather than MAX, because MAX would collapse the column to one value),=BenIntercept*StayGrid-BenSlope*StayGrid^2/2-UnitCost*StayGridspills the net benefits into NetGrid and=FixedPart+ShareGrid*UnitCost*StayGrid-UnitCost*StayGridthe margins into MarginGrid.R:
pay_rules <- function(P, r, b0, b1, c, alpha) { q <- pmax(0, (b0-(1-r)*c/alpha)/b1); B <- b0*q-b1*q^2/2; C <- c*q; pay <- P+r*c*q; data.frame(P = P, r = r, q = q, benefit = B, cost = C, net = B-C, payment = pay, margin = pay-C) }Base R only;pay_rules(c(3200, 0, 1600), c(0, 1, 0.5), 1200, 100, 400, 0.5)returns the first example, rows in input order.Python:
def pay_rules(P, r, b0, b1, c, alpha): q = [max(0.0, (b0-(1-s)*c/alpha)/b1) for s in r]; B = [b0*x-b1*x*x/2 for x in q]; C = [c*x for x in q]; pay = [p+s*c*x for p, s, x in zip(P, r, q)]; return {"P": list(P), "r": list(r), "q": q, "benefit": B, "cost": C, "net": [b-k for b, k in zip(B, C)], "payment": pay, "margin": [y-k for y, k in zip(pay, C)]}Returns the same values as the R function, in input order.Test (Rule at the efficient share gives the efficient stay): For a rule whose share equals 1 minus AgencyIndex, StayGrid equals (BenIntercept minus UnitCost) / BenSlope. Expected result: TRUE. FALSE shows the stays computed with alpha applied to cost, which gives eleven days for the blend instead of eight. Excel check (one such rule in the grid):
=ABS(SUMPRODUCT((ABS(ShareGrid-(1-AgencyIndex))<1E-9)*StayGrid)-(BenIntercept-UnitCost)/BenSlope)<1E-9Common error (Ranking rules by the provider margin): The case price gives the largest margin and the smallest net benefit; rules should be compared on benefit net of cost, with the margin read as a transfer between payer and provider.
Source: Ellis RP, McGuire TG. Journal of Health Economics. 1986;5(2):129-151. doi:10.1016/0167-6296(86)90002-0 (full text read). Sections 3 and 4, equations (8) and (11) to (14).
q_k = max(0, (b_0 - (1 - r_k) * c / alpha) / b_1); net_k = b_0 * q_k - b_1 * q_k^2 / 2 - c * q_k; margin_k = P_k + r_k * c * q_k - c * q_k
Try this function
Implementations
Excel
Bed-days chosen from named benefit, cost and agency parameters
With BenIntercept, BenSlope, ReimbShare, UnitCost and AgencyIndex named, the formula returns the stay the provider chooses, held in ChosenDays.
=MAX(0,(BenIntercept-(1-ReimbShare)*UnitCost/AgencyIndex)/BenSlope)
Assumptions
Constant index of agency across the stay
alpha does not change with q or with the hospital's net revenue; Ellis and McGuire note that it is nearly constant when the amounts for each patient are small relative to the hospital's totals. The objective alpha B(q) + R(q) minus c q used in the article is that simplification.
Straight-line marginal benefit with a positive index of agency
Marginal benefit falls by b_1 for each extra unit and alpha is positive; with a curved benefit function the first-order condition alpha b(q) = (1 minus r) c still holds but must be solved numerically.
Worked examples
Pure case payment with an index of agency of 0.5
With no cost reimbursed the provider bears 400 pounds a day but values benefit at half, so it stops where marginal benefit is 800 pounds: (1,200 minus 800) / 100 gives four days, as in the article.
b_0 = 1200; b_1 = 100; r = 0; c = 400; alpha = 0.5; q = 4
Half of cost reimbursed with an index of agency of 0.5
The provider now bears 200 pounds a day, so it stops where half the marginal benefit is 200 pounds: eight days, the efficient stay, as in the article.
b_0 = 1200; b_1 = 100; r = 0.5; c = 400; alpha = 0.5; q = 8
Full cost reimbursement with an index of agency of 0.5
With all cost reimbursed the provider bears nothing, so care continues until marginal benefit reaches zero at twelve days, as in the article.
b_0 = 1200; b_1 = 100; r = 1; c = 400; alpha = 0.5; q = 12
Perfect agent under pure case payment
With alpha equal to 1 and no cost reimbursed the provider sets marginal benefit equal to the full 400 pound cost and chooses the efficient eight days, the case in which Ellis and McGuire find prospective payment efficient.
b_0 = 1200; b_1 = 100; r = 0; c = 400; alpha = 1; q = 8
Quarter of cost reimbursed with an index of agency of 0.5
The provider bears 300 pounds a day and stops where half the marginal benefit equals it, at six days (computed here for illustration).
b_0 = 1200; b_1 = 100; r = 0.25; c = 400; alpha = 0.5; q = 6
Common errors
Treating the index of agency as known to the payer
The stay depends on alpha, which the payer cannot observe directly; Ellis and McGuire suggest inferring it from the ratio of the demand and supply elasticities to reimbursement, a measure they note is precise only under conditions unlikely to hold exactly.
Holding the cost of a bed-day fixed when more cost is reimbursed
The formula fixes c, but Ma and Mak note that cost reimbursement mutes cost incentives, so raising r can raise the cost per day itself; the article's example omits this cost-reduction effort.
Sources
First-order condition under prospective and mixed payment in Ellis and McGuire
Ellis RP, McGuire TG. Journal of Health Economics. 1986;5(2):129-151. doi:10.1016/0167-6296(86)90002-0 (full text read). Section 2.3: the index of agency is the rate at which the physician trades a dollar of hospital profit for a dollar of patient benefit, nearly constant when amounts per patient are small, and equal to 1 for a perfect agent. Section 3: under prospective payment with constant marginal cost the condition is a b(q) = c (eq. 8). Section 4: under mixed reimbursement the first-order condition is a b(q) = (1 minus r)c (eq. 13). Section 5.5: if the elasticities of demand and of supply to reimbursement can each be estimated, their ratio can be used to infer the index; two conditions are needed for this measure to be precise, and they are unlikely to be met exactly.
Cost reimbursement mutes cost incentives in Ma and Mak
Ma CA, Mak HY. Incentives in healthcare payment systems. Oxford Research Encyclopedia of Economics and Finance. Oxford University Press; 2019. doi:10.1093/acrefore/9780190625979.013.61 (full text read). Cost Reimbursement and Selection: when all variable cost is reimbursed the provider has no incentive to incur cost effort; cost reimbursement results in muted cost incentives but eliminates selection incentives.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0