Discounted QALYs from a cure fraction under constant background and excess hazards

Values each group's survival with a constant utility and discounts it continuously at rate r. With exponential survival the area under exp(minus h t) times exp(minus r t) is 1/(h plus r), so each group's discounted mean is one over its total hazard plus r. With r = 0 and both utilities 1 the formula returns T_bar of HE-FM-CRM-003. The continuous rate equivalent to an annual rate d is r = log(1 plus d), HE-FM-CONT-003.

Signature

QALY_d = pi * u_C / (mu + r) + (1 - pi) * u_U / (mu + lambda + r)
Inputs
InputsDefinitionUnit
piProportion of patients who will not die from their diseaseproportion from 0 to 1
u_CHealth state utility of cured patients for their remaining lifetimeutility on the scale where 1 is full health
muGeneral population mortality hazard, taken as constantper year
rContinuous rate equivalent to the annual discount rate d, r = log(1 plus d); about 0.034401 for 3.5 per centper year
u_UHealth state utility of uncured patients until deathutility on the scale where 1 is full health
lambdaDisease-related hazard added to background mortality for uncured patientsper year
Output
QALY_dExpected discounted QALYs per patient over a lifetimeQALYs

Function

Cure rate model survival and lifetime mean survival with a cure fraction

Maps a cure fraction, the expected survival of the matched general population and the survival of uncured patients to all-cause survival over time and to the lifetime mean survival and QALYs that drive an appraisal. Cured patients face background mortality only; uncured patients also carry an excess hazard from the disease. The mixture form weights the two groups directly, the non-mixture form bounds the excess cumulative hazard so that relative survival falls to the cure fraction, and mean survival is the cure-fraction weighted average of the two group means. Reused, not repeated here: the all-cause hazard as background plus excess hazard HE-FM-BTH-005, the continuous discount rate log(1 plus d) HE-FM-CONT-003, the per-cycle probability from a hazard HE-FM-TP-001 and the restricted mean from a Kaplan-Meier curve HE-FM-ADMC-003. Notation follows the Cure Rate Model article.

Computational function

  • Computational function: discounted life years and QALYs from a mixture cure model by numerical integration

    Takes the inputs a cure model analysis usually holds, a cure fraction, a background hazard, a Weibull curve for the excess survival of the uncured, utilities by cure status, an annual discount rate and a horizon, and returns discounted QALYs by summing the mixture cure curve HE-FM-CRM-001, weighted by utility and the continuous discount factor, over a fine time grid with the midpoint rule. Othus and colleagues computed the mean survival of uncured patients, the integral of S_B(t) times S_E(t), by numerical integration. The inputs therefore differ from the closed forms HE-FM-CRM-003 and HE-FM-CRM-004: the excess hazard need not be constant, and the function builds the areas E_B and E_U itself. With both utilities set to 1 and d to 0 it returns T_bar.

    Inputs and outputs: pi: Cure fraction; required, from 0 to 1. Unit: proportion.; mu: Background hazard, constant in this one-line form; required, above zero. Unit: per year.; k: Weibull shape of the excess survival of the uncured, S_u(t) = exp(minus (t/b)^k); required, above zero. Unit: none.; b: Weibull scale of the excess survival; required, above zero. Unit: years.; u_C: Utility of cured patients. Unit: utility.; u_U: Utility of uncured patients. Unit: utility.; d: Annual discount rate, such as 0.035; zero or above. Unit: per year.; T_h: Horizon, default 300 years. Unit: years.; dt: Integration step, default 0.01 years. Unit: years.; QALY_d: Discounted QALYs per patient. Unit: QALYs.

    Assumption: The midpoint of each step stands for the whole step; with a step of 0.01 years the error is below 0.00001 QALYs for these inputs. The horizon is long enough for the cohort to have died. The background hazard is constant here; with life tables, exp(minus mu t) is replaced by background survival built from age-specific hazards. The Excel form needs Excel 365 or 2021 (LET and SEQUENCE).

    Worked example (Weibull shape 1 reproduces the closed form): With shape 1 and scale 1/0.46 the excess hazard is the constant 0.46 of the article, and the function returns about 3.5302 QALYs, the value of HE-FM-CRM-004 at 3.5 per cent. pi = 0.25; mu = 0.04; k = 1; b = 2.173913; u_C = 0.8; u_U = 0.6; d = 0.035; T_h = 300; dt = 0.01; QALY_d = 3.530183

    Worked example (Undiscounted life years with utilities of 1): With utilities of 1 and no discounting the function returns mean overall survival, 7.75 years as in HE-FM-CRM-003 to three significant figures; the 300-year horizon cuts off about 0.00004 years. pi = 0.25; mu = 0.04; k = 1; b = 2.173913; u_C = 1; u_U = 1; d = 0; T_h = 300; dt = 0.01; QALY_d = 7.74996

    Worked example (Rising excess hazard with Weibull shape 1.5): With shape 1.5 and the same scale the excess hazard rises over time, there is no closed form, and the discounted mean of the uncured falls from 1.8713 to about 1.7707 years, giving about 3.4849 QALYs (computed here for illustration). pi = 0.25; mu = 0.04; k = 1.5; b = 2.173913; u_C = 0.8; u_U = 0.6; d = 0.035; T_h = 300; dt = 0.01; QALY_d = 3.484932

    Excel: =LET(t,SEQUENCE(Horizon/StepYrs,1,StepYrs/2,StepYrs),SUMPRODUCT(StepYrs*EXP(-(BgHazard+LN(1+DiscRate))*t)*(CureFrac*UtilCured+(1-CureFrac)*UtilUncured*EXP(-((t/WeibScale)^WeibShape))))) With pi, mu, k, b, u_C, u_U, d, T_h and dt in the named cells CureFrac, BgHazard, WeibShape, WeibScale, UtilCured, UtilUncured, DiscRate, Horizon and StepYrs, the formula builds the grid of step midpoints and returns discounted QALYs, held in CureQALY.

    R: cure_qaly <- function(pi, mu, k, b, u_c, u_u, d, horizon = 300, dt = 0.01) { t <- seq(dt/2, horizon, by = dt); sum(dt * exp(-(mu + log(1+d)) * t) * (pi * u_c + (1-pi) * u_u * exp(-(t/b)^k))) } In R the power is applied before the minus sign, so exp(-(t/b)^k) is correct as written.

    Python: def cure_qaly(pi, mu, k, b, u_c, u_u, d, horizon=300, dt=0.01): t = np.arange(dt/2, horizon, dt); return float(np.sum(dt * np.exp(-(mu + np.log(1+d)) * t) * (pi * u_c + (1-pi) * u_u * np.exp(-(t/b)**k)))) Needs numpy imported as np; t holds the step midpoints.

    Test (Weibull shape 1 matches the closed form HE-FM-CRM-004): With WeibShape = 1 the numerical result equals the closed form with an excess hazard of 1/WeibScale. Expected result: TRUE. Excel check: =ABS(CureQALY-(CureFrac*UtilCured/(BgHazard+LN(1+DiscRate))+(1-CureFrac)*UtilUncured/(BgHazard+1/WeibScale+LN(1+DiscRate))))<1E-4

    Test (Halving the step leaves the result unchanged): Recomputing with StepYrs halved to 0.005 changes CureQALY by less than 0.00001. Expected result: TRUE. FALSE shows a step too coarse for the hazards.

    Common error (Negating before the power in Excel): Excel applies the minus sign before ^, so EXP(-(t/WeibScale)^WeibShape) raises minus t/b to the power k. It returns #NUM! for a shape of 1.5 and the wrong sign for a shape of 2. The power needs its own brackets, as in EXP(-((t/WeibScale)^WeibShape)).

    Common error (Horizon too short for cured patients): A 40-year horizon leaves cured patients alive: with utilities of 1 and no discounting the function returns about 6.49 years instead of 7.75 (computed here for illustration).

    Source: Othus M, Bansal A, Erba H, Ramsey S. Bias in mean survival from fitting cure models with limited follow-up. Value in Health. 2020;23(8):1034-1039. Section on cure models in economic evaluation, equation 1 and the mean survival of the cured and not cured as integrals of S_B(t) and S_B(t)S_E(t); the data example, where the mean survival of patients not cured was calculated by evaluating the numerical integral. Rutherford MJ, Lambert PC, Sweeting MJ, Pennington B, Crowther MJ, Abrams KR, Latimer NR. NICE DSU Technical Support Document 21: Flexible methods for survival analysis. Sheffield: Decision Support Unit, ScHARR, University of Sheffield; 2020 (updated March 2022). Section 3.6.2, equation 11.

    QALY_d = sum_(i=1)^n [dt * exp(-(mu + log(1 + d)) * t_i) * (pi * u_C + (1 - pi) * u_U * exp(-(t_i / b)^k))]; t_i = (i - 0.5) * dt; n = T_h / dt

Try this function

Implementations

  • Excel

    Discounted cure QALYs from named cells

    With CureFrac, UtilCured, UtilUncured, BgHazard, ExcessHazard and the annual rate DiscRate named, the formula returns discounted QALYs, held in DiscQALY; LN converts the annual rate to the continuous rate.

    =CureFrac*UtilCured/(BgHazard+LN(1+DiscRate))+(1-CureFrac)*UtilUncured/(BgHazard+ExcessHazard+LN(1+DiscRate))

Assumptions

  • Constant background and excess hazards for the closed-form cure QALYs

    Both hazards are constant, so both survival curves are exponential. A real model uses age-specific life-table hazards and a fitted uncured curve, and the areas are then computed numerically, as in HE-CF-CRM-001.

  • Constant utilities by cure status over the lifetime

    Cured and uncured patients each keep one utility for their remaining lifetime. Utilities that change with age or time since treatment need the numerical form.

  • Continuous discounting equivalent to the annual cure model discount rate

    r is log(1 plus d): 0.034401 for the NICE reference case of 3.5 per cent a year (PMG36 section 4.5.1) and 0.014889 for the 1.5 per cent a committee may consider under section 4.5.3. The same rate applies to costs and QALYs.

Worked examples

  • Discounted cure QALYs with a cure fraction of 0.10 at 3.5 per cent

    Comparator with pi = 0.10, utilities 0.80 cured and 0.60 uncured, background hazard 0.04 and excess hazard 0.46: the discounted means are about 13.44 years for cured and 1.871 for uncured patients, giving about 2.086 QALYs, as in the article.

    pi = 0.10; u_C = 0.8; u_U = 0.6; mu = 0.04; lambda = 0.46; r = 0.0344014; QALY_d = 2.085725
  • Discounted cure QALYs with a cure fraction of 0.25 at 3.5 per cent

    The new treatment with pi = 0.25 gives about 3.530 QALYs, a discounted gain of about 1.444 over the comparator, about half the undiscounted gain of 2.82, because the benefit of cure arrives decades later.

    pi = 0.25; u_C = 0.8; u_U = 0.6; mu = 0.04; lambda = 0.46; r = 0.0344014; QALY_d = 3.530185
  • Undiscounted cure QALYs with a cure fraction of 0.25

    With r = 0 the formula returns 0.25 times 25 times 0.80 plus 0.75 times 2 times 0.60, or 5.9 QALYs, as in the article.

    pi = 0.25; u_C = 0.8; u_U = 0.6; mu = 0.04; lambda = 0.46; r = 0; QALY_d = 5.9
  • Discounted cure QALYs with a cure fraction of 0.25 at 1.5 per cent

    At 1.5 per cent a year the new treatment gives about 4.518 QALYs and the comparator about 2.506, a gain of about 2.01 QALYs, as in the article.

    pi = 0.25; u_C = 0.8; u_U = 0.6; mu = 0.04; lambda = 0.46; r = 0.0148886; QALY_d = 4.517719

Common errors

  • Annual discount rate used as the continuous rate in cure QALYs

    Putting 0.035 in place of log(1.035) in the denominators gives 13.33 discounted years for cured patients instead of 13.44, and 3.508 QALYs at pi = 0.25 instead of 3.530, so every discounted total is slightly too low.

  • Discounting cure model survival at the mean survival time

    Applying one discount factor at the mean, 25 years times 1.035 to the power minus 25, gives about 10.58 discounted years for cured patients instead of 13.44, because deaths are spread around the mean and earlier years carry more weight. The discount belongs inside the area, as exp(minus r t) times the survival curve.

Sources

  • Mean survival as the integral of the cure model survival function

    Othus M, Bansal A, Erba H, Ramsey S. Bias in mean survival from fitting cure models with limited follow-up. Value in Health. 2020;23(8):1034-1039. Section on cure models in economic evaluation: the mean of a random variable with survival function S(t) is the integral of S(t), so the mean for the cured is the integral of S_B(t) and for the not cured the integral of S_B(t)S_E(t), weighted by the proportions cured and not cured.

    View source →

  • Continuous discount rate ln(1 + r) for cure model QALYs

    Murray CJL. Quantifying the burden of disease: the technical basis for disability-adjusted life years. Bulletin of the World Health Organization. 1994;72(3):429-445. Note h, p. 441: if the discount rate in the discrete formula 1/(1 + r) to the power t is r, the equivalent result is achieved with a continuous discount rate of ln(1 + r).

    View source →

  • Reference-case and 1.5 per cent discount rates for cure model appraisals

    National Institute for Health and Care Excellence. NICE technology appraisal and highly specialised technologies guidance: the manual (PMG36). London: NICE; 2022, last updated 31 March 2026. Section 4.5.1: costs and health effects discounted at the same rate of 3.5 per cent per year in the reference case; section 4.5.3: a rate of 1.5 per cent may be considered when the technology is for people who would otherwise die or have a very severely impaired life, is likely to restore them to full or near-full health, and the benefits are likely to be sustained over a very long period.

    View source →

Canonical Identity