Ero sivun ”Epidemiologinen malli” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
pEi muokkausyhteenvetoa
Rivi 35: Rivi 35:
[[File:Model_kuva_simplified2.jpg|thumb|600px|'''Kuva 1. Korvautumismallin periaate.'''  
[[File:Model_kuva_simplified2.jpg|thumb|600px|'''Kuva 1. Korvautumismallin periaate.'''  
Pneumokokin kantajuus (carriage, x-akseli) ja sairastumistapaukset kantajuusepisodia kohden (case-to-carrier ratio, y-akseli) rokotteen serotyypeille (VT) ja serotyypeille joihin rokote ei vaikuta (NVT) ennen rokotusohjelmaa (kuva A) ja sen jälkeen (kuva A). Sairastumistapaukset (DVT ja DNVT) on saatu kertomalla akseleiden arvot ja ne vastaavat kuvaajassa suorakulmion muotoisia alueita. Rokottamisen vaikutuksesta rokoteserotyyppien kantajuus häviää ja korvautuu muiden serotyyppien kantajuudella (kuva B). Tautitapausten määrä laskee hävinneen ja korvaavan kantajuuden sairastuttavuuden (RVT ja RNVT) eroavuuden vuoksi. Tautihäviämä on (kuva B) merkitty sinisellä suorakulmiolla.]]
Pneumokokin kantajuus (carriage, x-akseli) ja sairastumistapaukset kantajuusepisodia kohden (case-to-carrier ratio, y-akseli) rokotteen serotyypeille (VT) ja serotyypeille joihin rokote ei vaikuta (NVT) ennen rokotusohjelmaa (kuva A) ja sen jälkeen (kuva A). Sairastumistapaukset (DVT ja DNVT) on saatu kertomalla akseleiden arvot ja ne vastaavat kuvaajassa suorakulmion muotoisia alueita. Rokottamisen vaikutuksesta rokoteserotyyppien kantajuus häviää ja korvautuu muiden serotyyppien kantajuudella (kuva B). Tautitapausten määrä laskee hävinneen ja korvaavan kantajuuden sairastuttavuuden (RVT ja RNVT) eroavuuden vuoksi. Tautihäviämä on (kuva B) merkitty sinisellä suorakulmiolla.]]


=== Laskenta ===
=== Laskenta ===
Rivi 41: Rivi 42:
Nurhonen M, Auranen K: Optimal serotype compositions for pneumococcal conjugate vaccination under serotype replacement [[http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1003477]
Nurhonen M, Auranen K: Optimal serotype compositions for pneumococcal conjugate vaccination under serotype replacement [[http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1003477]


* [http://fi.opasnet.org/fi_wiki/index.php?title=Toiminnot:RTools&id=P6CXptUReneZ8YNh Example model run]
{{comment|# |Yritin selvittää kuinka alla oleva koodi toimii. Huomasin että vaihtaessa arvoja ajoon, niin vaikuttaisi siltä että  ajon tulokset eivät kuitenkaan muutu?  |--[[Käyttäjä:Jaakko|Jaakko]] ([[Keskustelu käyttäjästä:Jaakko|keskustelu]]) 5. kesäkuuta 2014 kello 14.13 (UTC)}}
{{comment|# |Taulukot vastaavat näköjään aina lähtömallia, joka on PCv13, mutta pylväskuviossa muutettu malli on mukana.| --[[Käyttäjä:Mnud|Markku N.]] ([[Keskustelu käyttäjästä:Mnud|keskustelu]]) 9. kesäkuuta 2014 kello 09.18 (UTC)}}


<rcode embed=1 graphics=1 variables="
<rcode embed=1 graphics=1 variables="
name:q_user|description:Proportion of VT carriage removed by vaccination|default:1|
name:p_user|description:Proportion of VT carriage removed by vaccination that is replaced by NVT|default:1|
name:adultcarriers|description:The true amount of more than 5-year-old carriers is n times larger than estimated. What is n?|default:1|
name:servac_user|description:Serotypes in a vaccine to look at|type:checkbox|options:
name:servac_user|description:Serotypes in a vaccine to look at|type:checkbox|options:
'19F';19F;'23F';23F;'6B';6B;'14';14;'9V';9V;'4';4;'18C';18C;'1';1;'7';7;
'19F';19F;'23F';23F;'6B';6B;'14';14;'9V';9V;'4';4;'18C';18C;'1';1;'7';7;
'6A';6A;'19A';19A;'3';3;'8';8;'9N';9N;'10';10;'11';11;'12';12;'15';15;
'6A';6A;'19A';19A;'3';3;'8';8;'9N';9N;'10';10;'11';11;'12';12;'15';15;
'16';16;'20';20;'22';22;'23A';23;'33';33;'35';35;'38';38;'6C';6C;'Oth';Other|
'16';16;'20';20;'22';22;'23A';23;'33';33;'35';35;'38';38;'6C';6C;'Oth';Other|
default:'19F';'23F';'6B';'14';'9V';'4';'18C';'1';'7';'6A';'19A';'3'
default:'19F';'23F';'6B';'14';'9V';'4';'18C';'1';'7'
">
">
library(OpasnetUtils)
library(OpasnetUtils)
Rivi 102: Rivi 96:
postvacc <-Vaccination(IPD,Car,VT_rows=pcv13rows,p=1,q=1)
postvacc <-Vaccination(IPD,Car,VT_rows=pcv13rows,p=1,q=1)


cat("Incidence of invasive pneumococcal disease after vaccination program (p=1, q=1).\n")
oprint(cbind(serotypes,postvacc[[1]]))
cat("Number of carriers after vaccination program.\n")
oprint(cbind(serotypes,postvacc[[2]]))


## Example S1.2B: Decrease in IPD incidence after adding a single new serotype
## Example S1.2B: Decrease in IPD incidence after adding a single new serotype
Rivi 111: Rivi 101:
next_under5<-NextVT(IPD[,1],Car[,1], VT_rows=pcv13rows,p=1)
next_under5<-NextVT(IPD[,1],Car[,1], VT_rows=pcv13rows,p=1)
next_over5 <-NextVT(IPD[,2],Car[,2], VT_rows=pcv13rows,p=1)
next_over5 <-NextVT(IPD[,2],Car[,2], VT_rows=pcv13rows,p=1)
cat("Next serotype to add to a vaccine (p=1).\n")
 
oprint(rbind(serotypes, next_under5, next_over5))
# Nämä taulukot kannattaisi transposata niin näyttäisivät siistimmiltä.
# Nämä taulukot kannattaisi transposata niin näyttäisivät siistimmiltä.


Rivi 122: Rivi 111:
opt<-OptimalSequence(IPD[,1],Car[,1],VT_rows=0,Excluded_rows=27,p=1.0,HowmanyAdded=20)
opt<-OptimalSequence(IPD[,1],Car[,1],VT_rows=0,Excluded_rows=27,p=1.0,HowmanyAdded=20)


cat("Optimal sequence of serotypes to add to a vaccine (p=1, HowmanyAdded=20).\n")
oprint(rbind(serotypes[opt[1,]],opt[2,]))


## Example S1.3B: The optimal sequence for the whole population when
## Example S1.3B: The optimal sequence for the whole population when
Rivi 130: Rivi 117:
p=0.5,HowmanyAdded=17)
p=0.5,HowmanyAdded=17)


cat("Optimal sequence of serotypes to add to a vaccine (p=0.5, HownamyAdded=17).\n")
oprint(rbind(serotypes[opt[1,]],opt[2,]))


###################################
###################################
Rivi 148: Rivi 133:
Serotype = serotypes,
Serotype = serotypes,
Result = as.numeric(c(
Result = as.numeric(c(
serotypes %in% c("19F", "23F", "6B", "14", "9V", "4", "18C", "1", "7","6A", "19A", "3"),
serotypes %in% c("19F", "23F", "6B", "14", "9V", "4", "18C", "1", "7"),
serotypes %in% servac_user
serotypes %in% servac_user
))
))
))
))
p_user<-q_user<-adultcarriers<-1


p <- Ovariable("p", data = data.frame(Result = p_user))
p <- Ovariable("p", data = data.frame(Result = p_user))
Rivi 163: Rivi 150:
VacIPD <- EvalOutput(VacIPD)
VacIPD <- EvalOutput(VacIPD)


 
if (1==0) {
cat("servac\n")
cat("servac\n")
oprint(summary(servac))
oprint(summary(servac))
Rivi 171: Rivi 158:
oprint(summary(VacCar))
oprint(summary(VacCar))
cat("Incidence of invasive pneumococcal disease.\n")
cat("Incidence of invasive pneumococcal disease.\n")
oprint(summary(VacIPD))
oprint(summary(VacIPD)) }




Rivi 178: Rivi 165:
if("Iter" %in% colnames(VacCar@output)) N <- max(VacCar@output$Iter) else N <- 1
if("Iter" %in% colnames(VacCar@output)) N <- max(VacCar@output$Iter) else N <- 1


ggplot(VacCar@output, aes(x = Serotype, weight = result(VacCar) / N, fill = Vaccine)) + geom_bar(position = "dodge") + theme_gray(base_size = 24) +  
if (1==0) {ggplot(VacCar@output, aes(x = Serotype, weight = result(VacCar) / N, fill = Vaccine)) + geom_bar(position = "dodge") + theme_gray(base_size = 24) +  
labs(title = "Carriers", y = "Number of carriers in Finland")
labs(title = "Carriers", y = "Number of carriers in Finland") }


ggplot(VacIPD@output, aes(x = Serotype, weight = result(VacIPD) / N, fill = Vaccine)) + geom_bar(position = "dodge") + theme_gray(base_size = 24) +
ggplot(VacIPD@output, aes(x = Serotype, weight = result(VacIPD) / N, fill = Vaccine)) + geom_bar(position = "dodge") + theme_gray(base_size = 24) +
labs(title = "Incidence of invasive pneumococcal disease", y = "Number of cases / 100000 py")
labs(title = "Incidence of invasive pneumococcal disease", y = "Number of cases per year")


ggplot(VacIPD@output, aes(x = Vaccine, weight = result(VacIPD) / N, fill = Age)) + geom_bar(position = "stack") + theme_gray(base_size = 24) +
ggplot(VacIPD@output, aes(x = Vaccine, weight = result(VacIPD) / N, fill = Age)) + geom_bar(position = "stack") + theme_gray(base_size = 24) +
labs(title = "Incidence of invasive pneumococcal disease", y = "Number of cases / 100000 py")
labs(title = "Incidence of invasive pneumococcal disease", y = "Number of cases per year")


</rcode>
</rcode>

Versio 24. kesäkuuta 2014 kello 09.42


Kysymys

Miten arvioidaan vakavan pneumokokkitaudin tautitaakka tilanteessa, jossa kansalliseeen rokotusohjelmaan on valittu tietyt rokoteserotyypit sisältävä konjugaattirokote?

  • Vakava pneumokokkitauti tarkoittaa invasiivista pneumokokkitautia (ks. vertailuperusteet).
  • Arvioidaan tautitapausten vuosittainen määrä kaikisssa ikäryhmissä.
  • Rokotuskattavuus, rokotteen teho ja aika rokotusten aloittamisesta ovat riittävät, jotta rokoteserotyyppien kantajuus ja tauti häviävät.
  • Oletetaan, että rokoteserotyyppien kantajuus korvautuu täysin muilla serotyypeillä, joiden taudinaiheuttamiskyky säilyy ennallaan.

Vastaus

Mallin antama ennuste tautitapausten vuosittaisesta määrästä ikäluokittain lasketaan ennustemallin avulla (ks. 'Perustelut' alla).

Perustelut

Pneumokokki eli Streptococcus pneumoniae -bakteeri on maailmanlaajuisesti merkittävä lapsikuolleisuuden aiheuttaja. Siksi toimiva pneumokokkibakteerin rokotusohjelma on kansanterveystyönä kustannustehokkaimpien joukossa. Imeväisten rokottamisessa on käytetty kolmea eri konjugaattirokotetta, jotka sisältävät joko 7, 10 tai 13 pneumokokkiserotyyppiä. Rokotteet ovat sekä vähentäneet pneumokokin aiheuttamien sairauksien haittoja että muuttaneet pneumokokkiserotyppien keskinäisiä kantajuusosuuksia.

Pneumokokkitaudin rokotusten jälkeinen tautitaakka arvioidaan kantajuuden laskennallisen korvautumismallin avulla. Mallissa rokoteserotyyppien kantajuus häviää vähitellen rokotusohjelman kohdeväestössä sekä rokotetun että rokottamattoman väestönosan keskuudessa. Samalla rokotetyyppien kantajuus korvautuu ei-rokotetyyppien kantajuudella. Tämän korvautumisen seuraukset voidaan laskea ennen rokotuksia vallinneiden seotyppikohtaisten kantajuusosuuksien ja tautimäärien perusteella.

Korvautumisen seuraukset riippuvat oleellisesti kahdesta mallissa hyödynnetystä oletuksesta

  1. Rokotteen ulkopuolisten serotyyppien kantajuusosuudet toisiinsa verrattuina eivät muutu rokotuksen vaikutuksesta
  2. Rokotuksella ei ole vaikutusta yksittäisten serotyyppien taudinaiheuttamiskykyyn

Rokottamisen vaikutus tautimäärään lasketaan kantajuuden muutosten kautta ja korvautuminen pneumokokkiserotyyppien kantajuudessa heijastuu suoraan muutoksena niiden aiheuttamissa tautimäärissä. Rokotusten vaikutus kokonaistautitaakkaan riippuu oleellisesti rokoteserotyyppien taudinaiheuttamiskyvystä verrattuna muiden serotyyppien taudinaiheuttamiskykyyn. Joidenkin serotyyppien kohdalla tarkastellaan kuitenkin myös vaihtoehtoista oletusta, jossa rokote voi vähentää serotyypin aiheuttaman taudin esiintymistä rokotettujen keskuudessa ilman vaikutusta kantajuuteen (Huom! Tämä piirre ei vielä toimi allaolevassa ohjelmassa)----#: . Katson vielä tiistaina miten tämän osan voi totetuttaa --Markku N. (keskustelu) 23. kesäkuuta 2014 kello 22.00 (UTC) (type: truth; paradigms: science: comment).

Korvautuminen

Korvautuminen on ilmiö, jossa rokotusten hävittämät pneumokokkiserotyypit korvautuvat väestössä osittain muilla serotyyppejä. Tällöin pneumokokki ei vähene väestössä niin paljon kuin rokoteserotyyppien yleisyys antaisi olettaa. Ilmiötä on tarkemmin kuvattu omalla sivullaan.

Kuva 1. Korvautumismallin periaate. Pneumokokin kantajuus (carriage, x-akseli) ja sairastumistapaukset kantajuusepisodia kohden (case-to-carrier ratio, y-akseli) rokotteen serotyypeille (VT) ja serotyypeille joihin rokote ei vaikuta (NVT) ennen rokotusohjelmaa (kuva A) ja sen jälkeen (kuva A). Sairastumistapaukset (DVT ja DNVT) on saatu kertomalla akseleiden arvot ja ne vastaavat kuvaajassa suorakulmion muotoisia alueita. Rokottamisen vaikutuksesta rokoteserotyyppien kantajuus häviää ja korvautuu muiden serotyyppien kantajuudella (kuva B). Tautitapausten määrä laskee hävinneen ja korvaavan kantajuuden sairastuttavuuden (RVT ja RNVT) eroavuuden vuoksi. Tautihäviämä on (kuva B) merkitty sinisellä suorakulmiolla.


Laskenta

R-program code for the replacement model as in File S1 of Nurhonen M, Auranen K: Optimal serotype compositions for pneumococcal conjugate vaccination under serotype replacement [[1]


Serotypes in a vaccine to look at:
19F
23F
6B
14
9V
4
18C
1
7
6A
19A
3
8
9N
10
11
12
15
16
20
22
23
33
35
38
6C
Other

+ Näytä koodi

Funktioiden alustus

+ Näytä koodi

Data

Pneumokokin esiintyvyys suomalaisessa väestössä. Carrier: (oireettomien) kantajien lukumäärä, Incidence: invasiivisen pneumokokkitaudin ilmaantuvuus 100000 henkilövuotta kohti.



Katso myös

Tämä rokotehankintakeskustelu toimitettiin tiedoksi kansalliselle rokotusasiantuntijaryhmälle 8.9.2014.

Pneumokokkirokotteen hankinta kansalliseen rokotusohjelmaan
Arvioinnin osat

ROKOTEKYSELY - VASTAA TÄSTÄ · Rokotteen vertailuperusteet · Epidemiologinen malli · Taloudellinen arviointi

Englanninkieliset sivut

Tendering process for pneumococcal conjugate vaccine · Comparison criteria for vaccine · Epidemiological modelling · Economic assessment

Taustatietoa

Pneumokokki · Työjärjestys · Pneumokokkirokotevalmisteet · Kansallinen rokotusohjelma · Pneumokokkikonjugaattirokotteen vaikuttavuuden seuranta · Korvautuminen · Viitteet · Herkkyysanalyysi(Tal.arv.) · Rokotesanasto · Pneumokokkirokotteen turvallisuus

Tulosta: Koko materiaali · Pneumokokkirokotekysely


Viitteet

Kommentoi