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.
Seuraava ohjelma havainnollistaa korvautumismallia. Ohjelmassa voidaan verrata keskenään rokotteita PCV10 ja PCV13. 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.
Pneumokokin esiintyvyys suomalaisessa väestössä. Carrier: (oireettomien) kantajuusepisodien lukumäärä vuodessa, Incidence: invasiivisten pneumokokkitautitapausten lukumäärä vuodessa.