Opasnetissa lukuisat sivut ovat työn alla eri vaiheissa. Niiden tietosisältöön pitää siis suhtautua harkiten. Tämän sivun sisällön edistyminen on arvioitu:
Tämä sivu on täysluonnos
Sivu on kirjoitettu kertaalleen alusta loppuun eli kaikki olennaiset sisällöt ovat jo paikoillaan. Kuitenkaan sisältöjä ei ole vielä kunnolla tarkistettu, ja esimerkiksi tärkeitä viitteitä voi puuttua.
Tämä sivu on tietokide alatyypiltään metodi. Sivutunniste: Op_fi4414
Miten arvioidaan vakavan pneumokokkitaudin tautitaakka tilanteessa, jossa
kansalliseeen rokotusohjelmaan on valittu tietyt rokoteserotyypit sisältävä konjugaattirokote?
Vakava pneumokokkitauti tarkoittaa invasiivista, veriviljelyllä varmennettua pneumokokkitautia (ks. vertailuperusteet).
Arvioidaan tautitapausten vuosittainen määrä kaikissa ikäryhmissä.
Rokotuskattavuus, rokotteen teho ja aika rokotusten aloittamisesta ovat riittävät, jotta rokoteserotyyppien nielukantajuus ja tauti häviävät.
Oletetaan, että rokoteserotyyppien nielukantajuus korvautuu täysin muilla pneumokokin serotyypeillä, joiden taudinaiheuttamiskyky säilyy ennallaan.
Vastaus
Ennuste vakavien pneumokokkitautitapausten vuosittaisesta määrästä ikäluokittain
lasketaan laskennallisen mallin avulla (ks. 'Perustelut' alla). Tässä vaiheessa ennuste koskee veriviljelypositiivista vakavaa pneumokokkitautia (invasive pneumococcal disease, IPD).
Ohje käyttäjälle: Voit verrata eri rokotteita keskenään tai rokotetta/rokotteita tilanteeseen, jossa ei rokoteta lainkaan. Valitse ensin vertailuun haluamasi rokotteet. PCV10, PCV13 ja 'Ei rokoteta'-skenaario voi tehdä suoravalintana. Sen lisäksi voit tarkastella myös rokotetta, johon itse valitset haluamasi serotyypit. Valintojen jälkeen klikkaa painiketta "Aja koodi". Tulokset lasketaan erilliselle välilehdelle.
library(OpasnetUtils)
library(ggplot2)
if(custom_vac) {
vac <- c(vac, "Oma")
}
if (length(vac) == 0) stop("Mitään skenaariota ei valittu")
user_args <- list(
Scenario = vac
)
temp <- opbase.data("Op_en6353", subset = "serotypes_in_typical_pneumococcal_vaccines")
temp$Obs <- NULL
colnames(temp)[colnames(temp) == "Result"] <- "Serotype"
user_args$Vaccines <- temp[temp$Vaccine %in% user_args$Scenario, ]
if(custom_vac) {
user_args$Vaccines <- rbind(
user_args$Vaccines,
data.frame(Vaccine = "Oma", Serotype = vac_user)
)
}
objects.latest("Op_en6353", code_name = "initiate") # [[:op_en:Epidemiological modelling]] ovariables VacCar, VacIPD
objects.latest("Op_en6007", code_name = "answer") # [[OpasnetUtils/Drafts]]
openv.setN(100)
## Read the annual IPD and carriage incidence data.
## The 0 entries in IPD and carriage data are replaced by small values.
IPD <- Ovariable("IPD", ddata = "Op_fi4305.pneumokokki_vaestossa")
IPD@data <- IPD@data[IPD@data$Observation == "Incidence" , colnames(IPD@data) != "Observation"]
Car <- Ovariable("Car", ddata = "Op_fi4305.pneumokokki_vaestossa")
Car@data <- Car@data[Car@data$Observation == "Carrier" , colnames(Car@data) != "Observation"]
serotypes<-c(
"19F", "23F", "6B", "14", "9V", "4", "18C", "1", "7",
"6A", "19A", "3", "8", "9N", "10", "11", "12", "15",
"16", "20", "22", "23A", "33", "35", "38", "6C", "Oth"
)
# Näyttää monimutkaiselta tuo servacin määrittely. Eikö voisi tehdä helpomminkin?
servac <- merge(data.frame(Vaccine = user_args$Scenario), data.frame(Serotype = serotypes))
servac <- merge(
data.frame(user_args$Vaccines, Result = 1),
servac,
all.y = TRUE
)
servac$Result <- as.numeric(!is.na(servac$Result))
servac <- Ovariable(
"servac",
data = servac
)
p_user <- q_user <- adultcarriers <- 1
p <- Ovariable("p", data = data.frame(Result = p_user))
q <- EvalOutput(Ovariable("q", data = data.frame(Result = q_user)))
# EvalOutput must be used because q is mentioned twice in the code and there will otherwise be a merge mismatch.
# The true number of adult carriers may actually be larger than estimated. This adjusts for that.
Car <- Car * Ovariable("adjust", data = data.frame(Age = c("Under 5", "Over 5"), Result = c(1, adultcarriers)))
VacCar <- EvalOutput(VacCar)
VacIPD <- EvalOutput(VacIPD)
if (1==0) {
cat("servac\n")
oprint(summary(servac))
cat("Number of carriers\n")
oprint(summary(VacCar))
cat("Incidence of invasive pneumococcal disease.\n")
oprint(summary(VacIPD))
}
if("Iter" %in% colnames(VacCar@output)) N <- max(VacCar@output$Iter) else N <- 1
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") }
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 per year")
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 per year")
Perustelut
Pneumokokkitaudin rokotusten jälkeinen tautitaakka arvioidaan nielukantajuuden laskennallisen korvautumismallin [1] avulla. Mallissa rokoteserotyyppien nielukantajuus häviää vähitellen rokotusohjelman kohdeväestöstä sekä rokotetun että rokottamattoman väestönosan keskuudessa. Samalla rokotetyyppien nielukantajuus korvautuu ei-rokotetyyppien kantajuudella. Tämän korvautumisen seuraukset voidaan laskea ennen rokotuksia vallinneiden serotyyppikohtaisten nielukantajuusosuuksien ja tautimäärien perusteella. Mallissa oletetaan, että rokoteserotyyppien nielunkantajuus korvautuu täysin ei-rokotetyyppien kantajuudella rokotteen saamimsen jälkeen.
Korvautumisen seuraukset riippuvat oleellisesti kahdesta mallissa hyödynnetystä oletuksesta
Rokotteeseen kuulumattomien serotyyppien nielukantajuusosuudet toisiinsa verrattuina eivät muutu rokotuksen vaikutuksesta
Rokotuksella ei ole vaikutusta yksittäisten serotyyppien taudinaiheuttamiskykyyn
Rokottamisen vaikutus tautimäärään lasketaan nielukantajuuden muutosten kautta ja korvautuminen pneumokokkiserotyyppien nielukantajuudessa 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 nielukantajuuteen. Pneumokokkien aiheuttama vuosittainen tautimäärä arvioidaan kaikissa ikäryhmissä.
Mallissa keskitytään tarkastelemaan vakavia eli invasiivisia, veriviljelyllä varmennettua pneumokokkitautia (ks. vertailuperusteet). Nämä syntyvät bakteerien päästessä elimistön muuten steriileille alueille vereen, selkäydinnesteeseen tai aivoihin, joissa ne aiheuttavat bakteremiaa ja aivokalvontulehdusta. Pneumokokkien aiheuttamat välikorvan tulehdukset ja keuhkokuumeet jäävät vähemmälle huomiolle.
Korvautumismalli on rakennettu vastaamaan konjugaattirokotteiden käytöstä viimeisten 15 vuoden aikana eri puolilla maailmaa kertynyttä kokemusta ja alan tieteellistä tutkimusta. Joistakin viimeisimmistä alan vertaisarvioiduista tutkimusartikkeleista on luettelo erillisellä sivulla: Viitteet.
Korvautuminen
Korvautuminen on ilmiö, jossa rokotusten hävittämät pneumokokkiserotyypit korvautuvat väestössä osittain muilla serotyypeillä. Tällöin pneumokokkien kokonaismäärä ei vähene väestössä niin paljon kuin rokoteserotyyppien yleisyys antaisi olettaa. Ilmiötä on tarkemmin kuvattu omalla sivullaan.
Aineisto
Epidemiologinen malli perustuu kahteen aineistoon: Pneumokokin esiintyvyys suomalaisessa väestössä. Carrier: (oireettomien) kantajuusepisodien lukumäärä vuodessa, Incidence: invasiivisten pneumokokkitautitapausten lukumäärä vuodessa.
Muut kuin PCV-rokotteen pneumokokkityypit ja niiden sukulaistyypit
Tyypittämättömät näytteet
Kaikki pneumokokkibakteerityypit
1
2004
0-1
35.8
20.1
5.2
4.4
61.2
2
2005
0-1
48.5
11.3
2.6
5.2
62.3
3
2006
0-1
57.3
6
5.1
0.9
68.5
4
2007
0-1
53.4
10.2
2.5
0
66.1
5
2008
0-1
42.1
7.6
4.2
1.7
53.9
6
2009
0-1
41.5
7.5
2.5
2.5
51.5
7
2010
0-1
43.5
3.3
3.3
1.6
50
8
2011
0-1
28
2.5
6.6
0
37
9
2012
0-1
6.7
0.8
5
0
12.5
10
2013
0-1
5.8
4.2
5.8
0.8
15.8
11
2004
2-4
18.3
4.1
0.6
2.4
23
12
2005
2-4
16.5
3.5
1.2
1.8
21.2
13
2006
2-4
14.6
2.3
0.6
0
17.5
14
2007
2-4
23
2.3
0.6
1.2
25.9
15
2008
2-4
14.7
1.7
1.7
0
18.1
16
2009
2-4
15.2
2.3
0
0.6
17.4
17
2010
2-4
20
1.7
1.1
0.6
17.4
18
2011
2-4
8.8
4.4
1.7
0
14.9
19
2012
2-4
8.2
1.1
0
0
9.2
20
2013
2-4
1.6
3.3
2.7
0
7.6
21
2004
5-17
1.7
0.1
0.1
0
1.9
22
2005
5-17
2.1
0
0.4
0.2
2.4
23
2006
5-17
1.8
0
0.4
0.1
2.2
24
2007
5-17
1.6
0.4
0.5
0.2
2.5
25
2008
5-17
2.4
0.1
0.4
0.1
2.9
26
2009
5-17
3
0.1
0.4
0.1
2.9
27
2010
5-17
1.4
0.6
0.1
0.3
2.2
28
2011
5-17
1.9
0.3
0.5
0
2.7
29
2012
5-17
0.9
0.4
0.6
0
1.9
30
2013
5-17
1.2
0.4
0.3
0
1.8
31
2004
18-49
6.6
0.6
1.8
0.3
9
32
2005
18-49
5.5
0.8
1.5
0.4
7.8
33
2006
18-49
5.2
0.9
1.4
0.2
7.5
34
2007
18-49
5.6
0.4
1.7
0.2
7.7
35
2008
18-49
7.2
0.7
2.1
0.5
10.1
36
2009
18-49
6.6
0.5
2.1
0.3
9.3
37
2010
18-49
5.1
0.6
2.6
0.4
8.4
38
2011
18-49
4.9
0.7
1.9
0
7.6
39
2012
18-49
3.7
1
1.8
0
6.5
40
2013
18-49
3.7
0.8
2.5
0.2
7.1
41
2004
50-64
10.4
1.8
4.9
1.4
17.2
42
2005
50-64
11.8
1.4
4.9
1.4
17.2
43
2006
50-64
11.8
1.4
5.3
0.9
18.5
44
2007
50-64
10.8
1.9
3.3
0.8
16
45
2008
50-64
12.2
3
6.9
1
22.2
46
2009
50-64
12.4
2.4
5
0.9
19.8
47
2010
50-64
12.3
2.2
5.2
0.8
19.6
48
2011
50-64
9.6
3.2
6.4
0.3
19.3
49
2012
50-64
9.4
3.3
6.5
0.1
19.2
50
2013
50-64
7.4
3.6
6.9
0.4
17.9
51
2004
65-
16.6
4.6
7.6
1
28.8
52
2005
65-
16.6
4.3
6.3
2
27.2
53
2006
65-
19.3
3.9
7.8
1.6
31.1
54
2007
65-
20.8
3.9
9
0.6
33.7
55
2008
65-
23.1
4.6
9
1.7
36.7
56
2009
65-
19
4.9
8.5
1.5
32.4
57
2010
65-
18.5
5.1
8.7
1.5
32.3
58
2011
65-
15.4
5.2
9.8
0.4
30.4
59
2012
65-
14.8
6.7
12.2
0.6
33.7
60
2013
65-
11.1
8.6
11.7
0.9
31.4
61
2004
Kaikki
8.7
1.8
3
0.7
14.3
62
2005
Kaikki
8.8
1.5
2.7
0.9
13.9
63
2006
Kaikki
9.3
1.6
2.6
0.6
14.1
64
2007
Kaikki
9.8
1.6
3.2
0.4
14.9
65
2008
Kaikki
10.8
1.9
3.9
0.8
17.3
66
2009
Kaikki
10.1
1.8
3.4
0.7
16
67
2010
Kaikki
9.4
1.7
3.7
0.7
15.5
68
2011
Kaikki
8
2.1
4.2
0.2
14.4
69
2012
Kaikki
6.7
2.4
4.5
0.1
13.8
70
2013
Kaikki
5.3
2.9
4.8
0.4
13.4
Laskenta
Laskentaohjelman avulla voidaan verrata keskenään rokotteita PCV10 ja PCV13 (ks. käyttöliittymä yllä kohdassa 'Vastaus'). Lisäksi mukana vertailussa voi olla käyttäjän valitsemat serotyypit sisältävä pneumokokkirokote sekä tilanne, jossa ei rokoteta. Tuloksena esitetään mallin mukainen vakavien pneumokokkitautitapausten lukumäärä Suomessa vuosittain ensin serotyyppikohtaisesti ja sen jälkeen erikseen ikäluokissa <5 vuotta ja 5+ vuotta. Ohjelmakoodi perustuu viitteen [1] liitetiedostoon S1.