H-DEF Model Technical Specifications DESCRIPTION ........................................................................................................................................... 3 ORDER OF OPERATIONS ...................................................................................................................... 3 CORE STRUCTURE: SURVIVAL AND TRANSMISSION PROJECTIONS ................................... 3 CEPAC outputs and time definitions .................................................................................................... 3 User-defined transmission inputs .......................................................................................................... 4 User-defined epidemic and population inputs ...................................................................................... 4 Survival calculations ............................................................................................................................... 5 p(m,c) // proportion alive after month m in run c ............................................................................. 5 Ninf(t,c) // number of HIV-infected individuals from run c alive in month t ..................................... 5 NinfTotal(t) // total number of HIV-infected individuals alive in month t .............................................. 5 Infectivity calculations ............................................................................................................................ 5 f(m,c) // proportion of cohort with unsuppressed viral load that is on ART ..................................... 5 I(v,m,c) // proportion of cohort in viral load bucket v during month m of run c .............................. 5 adjR(v,m,c) b(m,c) // adjusted transmission rate in bucket v during month m of run c ............................... 5 // average adjusted transmission rate in month m of run c .................................................... 5 btotal(t) // transmission rate for all individuals with HIV in month t ................................................... 5 Susceptible population dynamics........................................................................................................... 6 Nsusc(t) E(t) // number of susceptible individuals alive in month t ........................................................... 6 // number of susceptible entrants in month t .............................................................................. 6 Nsusc(t) // number of susceptible individuals alive in month t ........................................................... 6 Transmission calculations ...................................................................................................................... 6 P(t) T(t,c) // HIV prevalence in month t...................................................................................................... 6 // number of new infections in month t that will be described by run c .................................. 6 COST AND QOL PROJECTIONS ........................................................................................................... 7 CEPAC cost and QOL outputs .............................................................................................................. 7 User-defined cost and QOL inputs ........................................................................................................ 7 Cost and QOL calculations .................................................................................................................... 7 avgOutcome(m,c) // average “outcomes” accrued per person in month m of run c ......................... 7 infOutcometotal(t) // “outcomes” accrued for all individuals with HIV in month t ............................. 7 suscTestCost(t) // HIV test cost accrued by susceptibles in month t ............................................... 8 1 suscQALMs(t) // QALMs accrued by susceptibles in month t .......................................................... 8 totalSuscBgCost(t) totalInfBgCost(t) totalPopCost(t) // background healthcare cost accrued by susceptibles in month t .................... 8 // background healthcare cost accrued by susceptibles in month t ....................... 8 // total cost accrued by population in month t .......................................................... 8 totalPopQALMs(t) // total QALMs accrued by population in month t ............................................. 8 CASCADE OF CARE PROJECTIONS ................................................................................................... 9 propOnART(m,c) // proportion of HIV-infected on ART in month m of run c................................ 9 infOnARTtotal(t) // proportion of all HIV-infected on ART in month t .............................................. 9 propSupp(m,c) // proportion of HIV-infected with suppressed HVL in month m of run c .............. 9 infSupptotal(t) // proportion of all HIV-infected with suppressed HVL month t ................................. 9 2 Description This document describes the technical specifications of the H-DEF transmission model. Order of operations In each month of simulation, the model will perform its calculations in the following order: START MONTH t 1. 2. 3. 4. Project survival of HIV-infected population. Project costs of HIV-infected population. Project new infections (incorporate new infections into HIV-infected population). Calculate number of susceptible entrants to population/add new susceptibles to population. END MONTH t; START MONTH t+1 Core structure: survival and transmission projections CEPAC outputs and time definitions m = months after the start of a CEPAC run m = 0 is the start of a CEPAC run; m = 1 is after one month t = months after the start of an H-DEF analysis t = 0 is the start of an H-DEF run At any month t in H-DEF, there will be a number of infected individuals at a variety of different values of m. For example, if m = 0 corresponds to the time of infection, then at time t, we must account for the individuals who were infected at time t, t – 1, t – 2, ... t = 0; these correspond to m = 0, 1, 2, … t c = for an analysis in which multiple CEPAC runs are used for epidemic projections, c indicates which run each variable refers to c can take values from 0 to 9 (or more if need be – but 0 to 9 should usually be sufficient) numAlive(m,c) = the number of individuals alive after month m of a CEPAC run numAlive(0,c) is the number of individuals who start a run, typically 1,000,000 numAlive(1,c) is the number who survive the first month v = viral load bucket in CEPAC v takes values from 0 to 6, corresponding to the 7 viral load buckets; 0 is HVL vLo, 6 is HVL vHi numHVL(v,m,c) = the number of individuals in HVL bucket v after month m of a CEPAC run numOnARTsupp(m,c) = the number of individuals on ART and suppressed after month m of a CEPAC run numOnARTfail(m,c) = the number of individuals on ART and failed after month m of a CEPAC run 3 User-defined transmission inputs r(v) = the monthly transmission rate for an HIV-infected person in viral load bucket v da = the duration of acute infection, in months Ra = transmission rate multiplier during acute infection Rf = transmission rate multiplier for individuals who are on ART but have failed useAcute(c) = indicates whether to apply the acute multiplier to run c 1 = yes; 2 = no baselineAcute(c) = indicates whether to treat patients in run c as being in the acute state but having a distribution of months since infection at t = 0 1 = yes; 2 = no copyBack(c) = indicates whether to copy the transmission rate from month m to all months prior to m 0,-1 = no copying; 1, 2, etc. = copy transmission rate back from specified month User-defined epidemic and population inputs desiredPop(t) = desired population size at the end of month t initPrev = desired prevalence at t = 0 newInfDistrib(t,c) = proportion of new infections entering H-DEF in month t who will be described by run c newInfDistrib(0,c) = proportion of initial HIV-infected persons described by run c ∑c newInfDistrib(t,c) should always be equal to 1 for all values of t J = transmission calibration term to capture infection risk heterogeneity H = transmission calibration term to increase/decrease all transmission rates equally 4 Survival calculations p(m,c) // proportion alive after month m in run c return numAlive(m,c)/numAlive(0,c) Ninf(t,c) // number of HIV-infected individuals from run c alive in month t Note: T(t,c) is the number of new infections in month t described by run c; it is defined below j=0 For all values of i from 0 to t, inclusive j = j + T(t – i,c) * p(i,c) return j NinfTotal(t) // total number of HIV-infected individuals alive in month t j=0 For all values of i from 0 to 9, inclusive j = j + Ninf(t,i) return j Infectivity calculations f(m,c) // proportion of cohort with unsuppressed viral load that is on ART return numOnARTfail(m,c)/[numAlive(m,c) - numHVL(0,m,c)] I(v,m,c) // proportion of cohort in viral load bucket v during month m of run c return numHVL(v,m,c)/numAlive(m,c) adjR(v,m,c) // adjusted transmission rate in bucket v during month m of run c IF m = 0, return 0, ELSE IF v = 0, return r(v), ELSE IF m > da, return r(v) * [f(m,c)*Rf + (1 – f(m,c))], ELSE IF baselineAcute(c) = 0, return r(v) * Ra * [f(m,c)*Rf + (1 – f(m,c)), ELSE return r(v) * Ra * (da + 1 – m)/da * [f(m,c)*Rf + (1 – f(m,c)) b(m,c) // average adjusted transmission rate in month m of run c IF(m < copyBack(c), return b(copyBack(c)), ELSE j=0 For all values of v from 0 to 6, inclusive j = j + I(v,m,c) * adjR(v,m,c) return j btotal(t) // transmission rate for all individuals with HIV in month t Note: T(t,c) is the number of new infections in month t described by run c; it is defined below j=0 For all values of h from 0 to 9, inclusive For all values of i from 0 to t, inclusive j = j + T(t – i,h) * p(i,h) * b(i,h) return j 5 Susceptible population dynamics Model in calibration mode: Nsusc(t) E(t) // number of susceptible individuals alive in month t return desiredPop(t) – NinfTotal(t) // number of susceptible entrants in month t return Nsusc(t) – [Nsusc(t-1) – T(t,0) – T(t,1)… – T(t,9)] Model in analysis mode: Nsusc(t) // number of susceptible individuals alive in month t return [Nsusc(t-1) – T(t,0) – T(t,1)… – T(t,9)] + E(t) Transmission calculations P(t) T(t,c) // HIV prevalence in month t return NinfTotal(t)/[NinfTotal(t) + NSusc(t)] // number of new infections in month t that will be described by run c return newInfDistrib(t,c) * [1 – P(t-1)] * btotal(t) * H * e-J * P(t-1) 6 Cost and QOL projections CEPAC cost and QOL outputs costTotal(m,c) = total cost accrued in month m of a CEPAC run costART1(m,c) = cost accrued due to ART regimen 1 in month m of a CEPAC run … costART10(m,c) = cost accrued due to ART regimen 1 in month m of a CEPAC run costHVL(m,c) = cost accrued due to HVL monitoring in month m of a CEPAC run costCD4(m,c) = cost accrued due to CD4 monitoring in month m of a CEPAC run costHIVtest(m,c) = cost accrued due to HIV testing in month m of a CEPAC run QALMs(m,c) = QALMs accrued in month m of a CEPAC run User-defined cost and QOL inputs mthlyProbHIVtest = monthly probability that a susceptible individual in H-DEF will get an HIV test costHIVtest = cost accrued each time a susceptible individual in H-DEF gets an HIV test HIVtestQOL = QOL multiplier each time a susceptible individual in H-DEF gets an HIV test suscAvgQOL = average QOL for a susceptible individual discRate = yearly discount rate to be applied to costs and QALYs bgCostSusc = monthly healthcare cost of susceptible individuals bgCostInf = monthly background healthcare cost of infected individuals Cost and QOL calculations The calculations of each of the various types of cost and QALMs from CEPAC outputs are identical. Hence, this document will show a generalized calculation based on the CEPAC output outcome(m,c), which could be a stand-in for the accrual of any particular cost, or for QALMs. All cost and QALMs calculations which are a function of t can be discounted using the standard discounting formula; for clarity, I have not shown this in the below formulas. avgOutcome(m,c) // average “outcomes” accrued per person in month m of run c return outcome(m,c)/numAlive(m,c) infOutcometotal(t) // “outcomes” accrued for all individuals with HIV in month t j=0 For all values of h from 0 to 9, inclusive For all values of i from 0 to t, inclusive 7 j = j + T(t – i,h) * p(i,h) * avgOutcome(i,h) return j The above formulas can be applied to all costs and QALMs outputs from CEPAC. The formulas below refer to specific types of costs and QALMs specified in H-DEF. suscTestCost(t) // HIV test cost accrued by susceptibles in month t return Nsusc(t) * mthlyProbHIVtest * costHIVtest suscQALMs(t) // QALMs accrued by susceptibles in month t return Nsusc(t) * suscAvgQOL * [(1 – mthlyProbHIVtest)) + HIVtestQOL * mthlyProbHIVtest] totalSuscBgCost(t) // background healthcare cost accrued by susceptibles in month t return Nsusc(t) * bgCostSusc totalInfBgCost(t) // background healthcare cost accrued by susceptibles in month t return NinfTotal(t) * bgCostInf totalPopCost(t) // total cost accrued by population in month t return totalSuscBgCost(t) + totalInfBgCost(t) + suscTestCost(t) + infCostTotal total(t) totalPopQALMs(t) // total QALMs accrued by population in month t return suscQALMs(t) + infQALMstotal(t) 8 Cascade of care projections Cascade of care calculations follow essentially the same structure as the cost and QALM calculations presented above. However, since there are only two cascade outcomes, I will show both: propOnART(m,c) // proportion of HIV-infected on ART in month m of run c return [numOnARTsupp(m,c) + numOnARTfail(m,c)]/numAlive(m,c) infOnARTtotal(t) // proportion of all HIV-infected on ART in month t j=0 For all values of h from 0 to 9, inclusive For all values of i from 0 to t, inclusive j = j + T(t – i,h) * p(i,h) * propOnART(i,h) return j propSupp(m,c) // proportion of HIV-infected with suppressed HVL in month m of run c return numHVL(0,m,c)/numAlive(m,c) infSupptotal(t) // proportion of all HIV-infected with suppressed HVL month t j=0 For all values of h from 0 to 9, inclusive For all values of i from 0 to t, inclusive j = j + T(t – i,h) * p(i,h) * propSupp(i,h) return j 9