Difference between revisions of "Economic evaluation"

From Testiwiki
Jump to: navigation, search
m (Calculations)
(Calculations: cost calculation added)
Line 285: Line 285:
  
 
=== Calculations ===
 
=== Calculations ===
 +
 +
==== Variable initiation ====
  
 
An example involving two vaccine products will be presented on this page. The input
 
An example involving two vaccine products will be presented on this page. The input
Line 404: Line 406:
  
 
cat("Initiated ovariables primary_outcomes, secondary_outcomes, costs_per_outcomes, QALYs_per_outcomes, Outcomes, Costs, QALYs, ICER and function sumtable\n")
 
cat("Initiated ovariables primary_outcomes, secondary_outcomes, costs_per_outcomes, QALYs_per_outcomes, Outcomes, Costs, QALYs, ICER and function sumtable\n")
 +
 +
</rcode>
 +
 +
==== Cost calculation ====
 +
 +
<rcode name="cost_calculation" label="Initiate cost calculation objects" embed=1>
 +
 +
library(OpasnetUtils)
 +
 +
##sou#rce("F://TenderModel_R_8Aug2014//IPD_19NOV2013b//Cost_calculation.R")
 +
 +
cost_table <- opasnet.csv("/0/0e/Pneumococcus_cost_table.csv", wiki = "opasnet_en")
 +
#cost_table<-re#ad.table("Cost_Table.dat")
 +
## 101*8 taulukko
 +
 +
## Title of cost_table:
 +
##  QALY losses and medical costs per case, separately for meningitis and bacteremia.
 +
##  (Note: QALY losses and costs for meningitis cases include sequlae.)
 +
 +
 +
##Columns of  cost_table :
 +
#1# Age (years)
 +
age<-cost_table[,1]
 +
#2# QALYs lost due to one meningitis case (incl. sequlae)
 +
QALY_men<-cost_table[,2]
 +
#3# QALYs lost due to one bacteremia case
 +
QALY_bac<-cost_table[,3]
 +
#4# case-fatality ratio for a meningitis or bacteremia case (ie for an IPD case)
 +
CFR<-cost_table[,4]
 +
#5# life years lost per one fatal IPD case
 +
LYL<-cost_table[,5]
 +
#6# Medical costs due to one meningitis case (including sequlae)
 +
COST_men<-cost_table[,6]
 +
#7# Medical costs due to one bacteremia case
 +
COST_bac<-cost_table[,7]
 +
#8# Proportion of meningitis cases among all IPD cases (rest are bacteremia)
 +
PROP_men<-cost_table[,8]
 +
 +
## Tässä  koodissa "Cost_calculation.R" luetaan taulukko "Cost_Table.dat" ja muunnetaan
 +
## se taukukoksi "Loss_per_IPDcase" vastaamaan yhtä IPD tapausta.
 +
##
 +
## Tällöin kust.vaik.-mallin antamat tulokset saadaan funktiossa
 +
## "calc_qalys_and_med_costs" kun argumentiksi annetaan IPD tapausten määrät
 +
## Suomessa ikävuosittain (101 kpl). Nämä IPD tapausten määrät vastaavat joko
 +
## "ei rokoteta" tilannetta tai lasketaan epidemiologisen mallin avulla eri
 +
## rokotevaihtiehdoille. (opasnetissä IPD-vektorit saadaan siis ovariablien kautta).
 +
##
 +
## Funktio "calc_3_ouput_tables" tuottaa 3 tulostaulukkoa.
 +
## Nämä ovat kust.vaik.-mallin lopputulokset.
 +
 +
##                          Markku Nurhonen 15.8.2014
 +
######################################################################################
 +
 +
 +
 +
 +
## Adjust matrix "Loss_per_case"  to correspond to one ipd case
 +
## (instead of just meningitis or bacterremia case)
 +
onevec<-rep(1,101)
 +
adjustment<-cbind(onevec,PROP_men,(onevec-PROP_men),onevec,CFR,PROP_men,(onevec-PROP_men),onevec)
 +
Loss_per_case<-cbind(age,QALY_men,QALY_bac,CFR,LYL,COST_men,COST_bac,PROP_men)
 +
Loss_per_IPDcase<-Loss_per_case*adjustment
 +
 +
## Matriisia Loss_per_IPDcase käytetään päivitettäessä
 +
## kustannuksia ja QALY-arvoja IPD insidenssien muuttuessa
 +
## rokotteiden vaihtuessa
 +
 +
calc_qalys_and_med_costs<-function(ipd_novacc,ipd,Loss_per_IPDcase)
 +
## for two given 101-long IPD vectors
 +
## ipd_novacc = ipd under NO vaccination
 +
## ipd        = ipd under vaccination
 +
## this function gives a list of
 +
## non-fatal,fatal and total QALYs gained:  result[[1]]:(1,2,3)
 +
## and medical costs under novacc and vacc: result[[2]]:(1,2)
 +
## Loss_per_IPDcase is a 101*8 matrix
 +
{
 +
Loss_total_novacc<-matrix(ipd_novacc,101,8)*Loss_per_IPDcase
 +
Loss_total<-matrix(ipd,101,8)*Loss_per_IPDcase
 +
Gain<-apply(Loss_total_novacc-Loss_total,2,sum)  ##koko populaatio
 +
## Now columns 2+3 are nonfatal, 5 is fatal QALYs
 +
## list Qalys gained: nonfatal, fatal and total
 +
QALYs<-c(Gain[2]+Gain[3], Gain[5], Gain[2]+Gain[3]+Gain[5])
 +
## Now columns 6+7 are medical costs
 +
## list med cost under novacc and vacc
 +
medical_cost0<-cbind(Loss_total_novacc[,6]+Loss_total_novacc[,7],Loss_total[,6]+Loss_total[,7])
 +
medical_cost<-apply(medical_cost0,2,sum)
 +
list(QALYs,medical_cost)
 +
}
 +
 +
 +
calc_3_output_tables<-function(ipd0,ipd1,ipd2,vaccine_cost1,vaccine_cost2,Loss_per_IPDcase)
 +
## for 3 given 101-long IPD vectors
 +
## ipd0 = ipd under NO vaccination
 +
## ipd1= ipd under vaccination 1
 +
## ipd1= ipd under vaccination 2
 +
## and
 +
## vaccine_cost1,vaccine_cost2=
 +
##  per dose costs of vaccines 1 and 2
 +
## Loss_per_IPDcase is a 101*8 matrix
 +
##
 +
## calculate a list of 3 output tables
 +
##  rows and columns as indicated below
 +
##
 +
## typical call of this function:
 +
## calc_3_ouput_tables(IPD_noVac,IPD_pcv10,IPD_pcv13,20,40,Loss_per_IPDcase)
 +
{
 +
c1<-calc_qalys_and_med_costs(ipd0,ipd1,Loss_per_IPDcase)
 +
c2<-calc_qalys_and_med_costs(ipd0,ipd2,Loss_per_IPDcase)
 +
 +
## output table 1
 +
## columns(3): vaccination, non fatal, fatal and total qalys gained
 +
## rows: no_vacc, vacc1, vacc2
 +
table1<-rbind(rep(0,3),c1[[1]],c2[[1]])
 +
qalys_gained<-table1[,3]
 +
 +
## output table 2
 +
## columns(3): medical costs, vaccination programme costs, health care costs
 +
##rows: no_vacc, vacc1, vacc2
 +
vaccine_cost_tot<-180000*c(0,vaccine_cost1,vaccine_cost2)
 +
med_cost<-c(c1[[2]],c2[[2]][2])
 +
healthcare_cost<-med_cost+vaccine_cost_tot
 +
table2<-cbind(med_cost,vaccine_cost_tot,healthcare_cost)
 +
 +
## ouput table3
 +
## columns(5):  1.QALYs gained compared to no_vacc
 +
##              2.incremental effects (=incremental QALYS gained)
 +
##              3.Health care costs  4.incremental costs
 +
##       5.ICER=column4/column2
 +
##rows: no_vacc, vacc1, vacc2
 +
 +
incr_qalys<-(c(qalys_gained,0)-c(0,qalys_gained))[seq(3)]
 +
incr_costs<-(c(healthcare_cost,0)-c(0,healthcare_cost))[seq(3)]
 +
table3<-cbind(qalys_gained,incr_qalys,healthcare_cost,incr_costs,c(0,incr_costs[-1]/incr_qalys[-1]))
 +
 +
list(table1,table2,table3)
 +
}
 +
 +
objects.store(age, QALY_men, QALY_bac, CFR, LYL, COST_men, COST_bac, PROP_men, onevec, adjustment, Loss_per_case,
 +
Loss_per_IPDcase, calc_qalys_and_med_costs, calc_3_output_tables
 +
)
 +
 +
cat("Objects age, QALY_men, QALY_bac, CFR, LYL, COST_men, COST_bac, PROP_men, onevec, adjustment, Loss_per_case,
 +
Loss_per_IPDcase, calc_qalys_and_med_costs, calc_3_output_tables successfully stored.\n"
 +
)
  
 
</rcode>
 
</rcode>

Revision as of 11:03, 15 August 2014

Progression class
In Opasnet many pages being worked on and are in different classes of progression. Thus the information on those pages should be regarded with consideration. The progression class of this page has been assessed:
This page is a draft
The relevat content and structure of the page is already present, but there still is a lot of missing content.
This page needs a curator. Learn more about curating Opasnet pages.

Question

Are the incremental health effects worth the incremental costs, if a vaccine is both more effective and more expensive?

  • The health benefit of the national infant immunisation programme is assessed by the expected reduction in the annual number of invasive pneumococcal disease in the Finnish population. The health benefit or effectiveness is measured in Quality-Adjusted Life Years (QALYs).
  • The perspective of this analysis is that of the health care provider.


Answer

To find the most cost-effective vaccination programme according to the criteria described in the rationale.

# : Code works but the costs seem unrealistic. --Jouni (talk) 05:49, 11 August 2014 (UTC)

Scenarios

Please choose the vaccines to be compared::
PCV-10
PCV-13

What is the total price of the PCV10 vaccine?:

What is the total price of the PCV13 vaccine?:

Do you want to adjust PCV-10 or PCV-13 vaccine composition?:

User defined vaccine

Choose the serotypes for the PCV-10 vaccine composition:
1
3
4
5
6A
6B
6C
7F
8
9N
9V
10
11
12
14
15
16
18C
19A
19F
20
22
23A
23F
33
35
38
Other

Choose the serotypes for the PCV-10 vaccine composition:
1
3
4
5
6A
6B
6C
7F
8
9N
9V
10
11
12
14
15
16
18C
19A
19F
20
22
23A
23F
33
35
38
Other

+ Show code

Rationale

Vaccination programmes are ranked according to their effectiveness (V1 < V2 < V3, etc.). Effectiveness is measured as reduction in invasive pneumococcal disease. Vaccine programmes that are more expensive and less effective as compared with at least one other alternative (strongly dominated) are excluded. Incremental cost-effectiveness ratios (ICER) are calculated for the remaining vaccines:

Failed to parse (Missing <code>texvc</code> executable. Please see math/README to configure.): ICER = \frac{(C_2-S_2) - (C_1-S_1)}{E_2-E_1},

where C is the price of the vaccination program,
S is the savings in health care costs and
E is the savings in QALYs.

Each vaccine (ranked according to their effectiveness) is compared with the next highest ranked vaccine. The least effective vaccine is compared with doing nothing. The most cost-effective vaccine is determined.

Calculations

Variable initiation

An example involving two vaccine products will be presented on this page. The input required from the user includes (a) the serotype compositions of the two vaccines to be compared, and (b) the prices per dose for the two products. The computation utilises the epidemiological model to predict the incidence of invasive pneumococcal disease under each vaccination programmes. The output will produce the most cost-effective alternative.


+ Show code

Cost calculation

+ Show code

Data

Show results


See also

Tendering process for pneumococcal conjugate vaccine
Parts of the assessment

Comparison criteria for vaccine   · Epidemiological modelling   · Economic evaluation

Background information

Sensitivity analysis · Replacement   · Pneumococcal vaccine products   · Finnish vaccination schedule   · Selected recent publications


Help for discussion and wiki editing

Pages in Finnish

Pneumokokkirokotteen hankinta  · Rokotteen vertailuperusteet · Epidemiologinen malli · Taloudellinen arviointi · Pneumokokkirokotteen turvallisuus


Work scheduling · Monitoring the effectiveness of the pneumococcal conjugate vaccine · Glossary of vaccine terminology


References


Comment the content

Current comments that have not yet been included in the main page or talk page.


You can give comments about the content without login simply by writing your comments into the text box below. The page moderator will include your comments in the actual content of the page and then moves the comment to the archive: Show results


Your comment about the page content or discussion:

To what part of the page does you comment refer?:

Comments to be removed (after they have been moved to the page text)

ID of the comment to be removed:

Reason to remove: