Ero sivun ”Vesiopas” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(→‎Vastaus: summausvirhe korjattu)
 
(96 välissä olevaa versiota 9 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
:''Tällä sivulla oli ennen [http://fi.opasnet.org/fi/Vesiopas-koulutus Vesiopas-koulutusta] koskeva sivusto''
[[op_en:Water guide]]
 
[[Luokka:Talousvesi]]
 
[[Luokka:Avoin malli]]
= Vesiopas - Arviointi juomaveden laadun terveysvaikutuksista =
 
[[Luokka:Juomavesi]]
[[Luokka:Malli]]
[[Luokka:Malli]]
[[Luokka:Vesiopas]]
[[Luokka:Vesiopas]]
{{arviointi|moderator = Teemu R}}
[[Luokka:Tutkimushanke]]
[[Luokka:Sisältää R-koodia]]
[[Tiedosto:Talousveden_riskinarviointi.png|thumb|500px]]


'''Arviointi laadun terveysvaikutuksista''' käsittelee juomaveden mahdollisia mikrobiologisia terveysriskejä. Mikrobiologisten riskien taustana on raakaveden kontaminoituminen mikrobeilla joista aiheutuu mahdollista terveyshaittaa vesijohtovettä käyttäville ihmisille, sekä juomaveden käsittelyprosessien tehokkuus, joka voi olla riittämätön poistamaan haitalliset mikrobit juomavedestä. Arvioinnilla määritetään, minkä suuruinen mahdollinen terveysriski on tietyillä raakaveden mikrobeilla. Arviointi perustuu matemaattiselle Vesiopas-mallille, joka esitellään alla.
'''Vesiopas - Arviointi vedenlaadun terveysvaikutuksista''' käsittelee juomaveden mahdollisia mikrobiologisia terveysriskejä. Mikrobiologisten riskien taustana on raakaveden kontaminoituminen mikrobeilla joista aiheutuu mahdollista terveyshaittaa vesijohtovettä käyttäville ihmisille, sekä juomaveden käsittelyprosessien tehokkuus, joka voi olla riittämätön poistamaan haitalliset mikrobit juomavedestä. Arvioinnilla määritetään, minkä suuruinen mahdollinen terveysriski on tietyillä raakaveden mikrobeilla. Arviointi perustuu matemaattiselle Vesiopas-mallille, joka esitellään alla.


=== Vesiopas-malli ===
== Kysymys ==


<rcode
Miten arvioidaan juomaveden mikrobiologisia riskejä sekä niiden aiheuttamia terveysvaikutuksia? Erilaisten vedenpuhdistuslaitosten tietoja pitää voida syöttää arviointiin lähtötiedoiksi.
name="answer"
 
variables="
==Vastaus==
name:i.raw.class|description:Raakaveden luokitus|type:selection|
options:
'Pohjavesi - Puhdas';Pohjavesi - Puhdas;
'Pohjavesi - Pintavesikuormitus';Pohjavesi - Pintavesikuormitus;
'Pintavesi - Vähäinen kuormitus';Pintavesi - Vähäinen kuormitus;
'Pintavesi - Keskisuuri kuormitus';Pintavesi - Keskisuuri kuormitus;
'Pintavesi - Suuri kuormitus';Pintavesi - Suuri kuormitus|
category:Raakavesi: Patogeenien pitoisuudet|
name:i.raw.pat.conc.Kamp|description:Kampylobakteeri-pitoisuus arvio (mikrobia/l)|default:'Luokituksen mukainen'|
name:i.raw.pat.conc.Ecoli|description:E.coli O157:H7 -pitoisuus arvio (mikrobia/l)|default:'Luokituksen mukainen'|
name:i.raw.pat.conc.Rota|description:Rotavirus-pitoisuus arvio (mikrobia/l)|default:'Luokituksen mukainen'|
name:i.raw.pat.conc.Noro|description:Norovirus-pitoisuus arvio (mikrobia/l)|default:'Luokituksen mukainen'|
name:i.raw.pat.conc.Crpt|description:Cryptosporidium-pitoisuus arvio (mikrobia/l)|default:'Luokituksen mukainen'|
name:i.raw.pat.conc.Giardia|description:Giardia-pitoisuus arvio (mikrobia/l)|default:'Luokituksen mukainen'|
name:i.treat.used|description:Käytössä olevat puhdistusmenetelmät|type:checkbox|
options:
1;Koagulaatio/flotaatio;
2;Koagulaatio toimii hyvin;
3;Koagulaatio on tehostettu;
4;Hiekkasuodatus;
5;Kalkkikivisuodatus;
6;Aktiivihiili|
default:1;4;5;6|category:Vedenpuhdistus: Puhdistusprosessi ja klooraus|
name:Cl.dose|default:1.5|description:Klooriannos (mg/l)|
name:Cl.delay|default:12|description:Viipymäaika (h)|
name:Cl.byprod.t|default:18|description:Sivutuotteiden muodostumisaika (h)|
name:Cl.pH|default:8|description:pH|
name:Cl.temp|default:15|description:Lämpötila|
name:Cl.Br|default:1300|description:Bromidipitoisuus (mg/l)|
name:Cl.DOC|default:7|description:DOC (mg/l)|
name:i.city|description:Kaupungin oletusarvot|default:'Custom'|type:selection|
options:
'Custom';Käytä yllä määriteltyjä arvoja;
'Op_fi2603';Kuopio|
name:v.kulutus|default:1153|description:veden kulutus (ml)|category:Verkosto ja kuluttajat|
name:vaeston.koko|default:100000|description:Altistuvan väestön koko
"
>
# UV-puhdistus poistettiin vaihtoehdoista, koska siinä jokin ongelma.
library(OpasnetBaseUtils)
library("xtable")


# Input korjailua basesta, jos niin halutaan
[http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=eI6bIUZPZMbplC4u Esimerkkiajo suuren pintavesikuormituksen jälkeen].


if(!(i.city == "Custom")) {
<rcode name="answer" graphics=1 variables="
city.default.inputs <- op_baseGetData("opasnet_base", i.city)
name:rawclass|description:Raakaveden valmiit luokitukset|type:selection|
options:
'Ground water - clean';Pohjavesi - Puhdas;
'Ground water - surface water contamination';Pohjavesi - Pintavesikuormitus;
'Surface water - low contamination';Pintavesi - Vähäinen kuormitus;
'Surface water - medium contamination';Pintavesi - Keskisuuri kuormitus;
'Surface water - high contamination';Pintavesi - Suuri kuormitus;
'Hand input';Ei valmista luokitusta, määrittelen mikrobipitoisuudet itse|
category:Perustiedot|
name:rawconsumption|default:0.25|description:Kylmän hanaveden juominen (litraa/pvä)|
name:total_population|default:10000|description:Altistuvan väestön koko|
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.dose"])) {
name:Campylo|description:Kampylobakteerin määrä (mikrobia/l)|default:0|
Cl.dose <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.dose"]}
category:Taudinaiheuttajien määrät raakavedessä (jos ei valmista luokitusta)|
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.delay"])) {
category_conditions:RaakaLuokka;'Käyttäjä'|
Cl.delay <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.delay"]}
name:E.coli|description:''E.coli'' O157:H7 määrä (mikrobia/l)|default:0|
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.byprod.t"])) {
name:Rota|description:Rotaviruksen määrä (mikrobia/l)|default:0|
Cl.byprod.t <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.byprod.t"]}
name:Noro|description:Noroviruksen määrä (mikrobia/l)|default:0|
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.pH"])) {
name:Sapo|description:Sapoviruksen määrä (mikrobia/l)|default:0|
Cl.pH <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.pH"]}
name:Crypto|description:Cryptosporidiumin määrä (mikrobia/l)|default:0|
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.temp"])) {
name:Giardia|description:Giardian määrä (mikrobia/l)|default:0|
Cl.temp <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.temp"]}
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.Br"])) {
Cl.Br <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.Br"]}
if(!is.na(city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.DOC"])) {
Cl.DOC <- city.default.inputs$Result[city.default.inputs$Havainto == "arvo" & city.default.inputs$Parametri == "Cl.DOC"]}
}


# Vesiopas -malli
name:treatment|description:Käytössä olevat puhdistusmenetelmät|type:checkbox|options:
'Coagulation and flotation';Saostaminen ja flotaatio;
'Slow sand filtration';Hidas hiekkasuodatus;
'Lime stone filtration';Kalkkikivisuodatus;
'Active carbon filtration';Aktiivihiilisuodatus|
category:Vedenpuhdistus: Puhdistusprosessi ja klooraus|


# Niputetaan raakaveden ja sen käsittelyn inputit siistiksi
name:chlorinedose|default:0|description:Klooriannos (mg/l)|
 
        name:ozonedose|default:0|description:Otsoniannos (mg/l)|
i.raw.pat.conc.val <- list(i.raw.pat.conc.Kamp, i.raw.pat.conc.Ecoli, i.raw.pat.conc.Rota, i.raw.pat.conc.Noro, i.raw.pat.conc.Crpt,
        name:uvdose|default:0|description:UV annos (mW/cm^2)|
i.raw.pat.conc.Giardia)
        name:uvtime|default:0|description:UV aika (s)
 
"
# Annetaan raakaveden konsentraatiolle joku arvo inputtien perusteella, 2 mahdollista metodia: estimaatti, kirjallisuus
>
 
# This is code Op_fi2583/answer on page [[Water guide]]
## Luokitukset
 
raw.pat.conc.lit <- op_baseGetData("opasnet_base", "Op_fi2655")


##
library(OpasnetUtils)
library(tidyverse)


Pathogen <- c("Kampylobakteeri","E.coli O157:H7","Rotavirus","Norovirus","Cryptosporidium","Giardia")
# Default variables that can be used if no user interface is available


raw.pat.conc <- data.frame(Pathogen, Raw.pat.conc = NA)
if(FALSE) {
for(i in 1:length(i.raw.pat.conc.val)) {
  rawclass <- 'Surface water - high contamination' # ;Pintavesi - Suuri kuormitus;
if(is.character(i.raw.pat.conc.val[[i]])) raw.pat.conc[i,2] <- raw.pat.conc.lit[raw.pat.conc.lit$Luokitus == i.raw.class &
  rawconsumption <- 0.25 # Kylmän hanaveden juominen (litraa/pvä)
raw.pat.conc.lit$Patogeeni == Pathogen[i], "Result"] else raw.pat.conc[i,2] <- i.raw.pat.conc.val[[i]]
  total_population <- 10000 # Altistuvan väestön koko
  # Campylo <- 0 # Kampylobakteerin määrä (mikrobia/l)
  # category:Taudinaiheuttajien määrät raakavedessä (jos ei valmista luokitusta)|
  # category_conditions:RaakaLuokka;'Käyttäjä'|
  # name:E.coli|description:''E.coli'' O157:H7 määrä (mikrobia/l)|default:0|
  # name:Rota|description:Rotaviruksen määrä (mikrobia/l)|default:0|
  # name:Noro|description:Noroviruksen määrä (mikrobia/l)|default:0|
  # name:Sapo|description:Sapoviruksen määrä (mikrobia/l)|default:0|
  # name:Crypto|description:Cryptosporidiumin määrä (mikrobia/l)|default:0|
  # name:Giardia|description:Giardian määrä (mikrobia/l)|default:0|
 
  treatment <- NULL # Käytössä olevat puhdistusmenetelmät|type:checkbox|options:
  # 'Coagulation and flotation';Saostaminen ja flotaatio;
  # 'Slow sand filtration';Hidas hiekkasuodatus;
  # 'Lime stone filtration';Kalkkikivisuodatus;
  # 'Active carbon filtration';Aktiivihiilisuodatus|
  # category:Vedenpuhdistus: Puhdistusprosessi ja klooraus|
 
  chlorinedose <- 0 # Klooriannos (mg/l)|
  ozonedose <- 0 # Otsoniannos (mg/l)|
  uvdose <- 0 # |description:UV annos (mW/cm^2)|
  uvtime <- 0 # |description:UV aika (s)
}
}


# Rakennetaan objekti, joka kertoo mitkä puhdistusmenetelmät ovat käytössä ja miten tehokkaita ne ovat
treat.used <- data.frame(Treatment = c("Perinteinen puhdistus","Hyvin toimiva puhdistus","Tehostettu puhdistus","Hidas hiekkasuodatus",
"Kalkkikivisuodatus","Aktiivihiilisuodatus","UV"), Active = 0)
treat.used$Active[i.treat.used] <- 1
if(1 %in% i.treat.used) {if(2 %in% i.treat.used) {if(3 %in% i.treat.used){treat.used$Active[c(1,2)] <- 0} else {treat.used$Active[c(1,3)] <- 0}}
else {treat.used$Active[c(2,3)] <- 0}} else {treat.used$Active[c(1,2,3)] <- 0}
treat.pat.eff <- op_baseGetData("opasnet_base", "Op_fi2656")
treat.pat.eff <- treat.pat.eff[,c("Patogeeni", "Vedenpuhdistusmenetelmä","Result")]
colnames(treat.pat.eff)[1:2] <- c("Pathogen", "Treatment")
treat.pat.reduct <- merge(treat.pat.eff, treat.used)
treat.pat.reduct$active.reduct <- treat.pat.reduct$Result * treat.pat.reduct$Active
treat.pat.reduct.tot <- as.data.frame(as.table(tapply(treat.pat.reduct$active.reduct, treat.pat.reduct$Pathogen, sum))) # lasketaan käytössä olevat
# log vähenemät yhteen
colnames(treat.pat.reduct.tot) <- c("Pathogen", "Treat.pat.reduct")


# Desinfiointi, klooraus
objects.latest("Op_en6177", code_name="waterguide") # [[Water guide]] fetch the whole model


Cl.test.sens <- 0
# Create ovariables from user input data
RawClass <- Ovariable("RawClass", data=data.frame(RawWaterClass = rawclass, Result=1))
Treatment <- Ovariable("Treatment", data=data.frame(TreatmentMethod=c(treatment, "None"), Result=1))
ChlorineDose <- Ovariable("ChlorineDose", data=data.frame(Result=chlorinedose))
UVdose <- Ovariable("UVdose", data=data.frame(Result=uvdose))
UVtime <- Ovariable("UVtime", data=data.frame(Result=uvtime))
OzoneDose <- Ovariable("OzoneDose", data=data.frame(Result=ozonedose))
RawConsumption <- Ovariable("RawConsumption", data=data.frame(Result=rawconsumption))
# divide the given population size to different age groups based on age distribution of all of Finland
population <- Ovariable("population",
                        dependencies=data.frame(
                          Name=c("total_population")
                        ),
                        formula=function (...) {
                          population2 <- Ovariable(
                            "population2",
                            ddata="Op_en2949", subset="Population"
                          )
                          population2 <- EvalOutput(population2)
                          population <- population2/oapply(population2, cols = "Age", FUN=sum) * total_population
                          return(population)
                        }
)


f.Cl.pat.red <- function(ct, sens) { # Free chlorine disinfection log reduct estimation function
out <- NA
if (sum(sens) == 0) out <- 0
if (ct < sens[1] & sens[1] > 0) {out <- ct * (1 / sens[1])}
if (ct >= sens[1] & sens[1] > 0) {out <- 1 + (ct - sens[1]) * (1 / (sens[2] - sens[1]))}
if (ct >= sens[2] & sens[2] > 0) {out <- 2 + (ct - sens[2]) * (1 / (sens[3] - sens[2]))}
if (ct >= sens[3] & sens[3] > 0 & sens[4] > 0) {out <- 3 + (ct - sens[3]) * (1 / (sens[4] - sens[3]))}
if (ct >= sens[3] & sens[3] > 0 & sens[4] == 0) {out <- 3 + (ct - sens[3]) * (1 / (sens[3] - sens[2]))}
if (ct >= sens[4] & sens[4] > 0 & sens[5] > 0) {out <- 4 + (ct - sens[4]) * (1 / (sens[5] - sens[4]))}
if (ct >= sens[4] & sens[4] > 0 & sens[5] == 0) {out <- 4 + (ct - sens[4]) * (1 / (sens[4] - sens[3]))}
if (ct >= sens[5] & sens[5] > 0) {out <- 5}
out
}


f.tap.tthm.conc <- function(Method, ph, temp, doc, react.time, free.cl.dose, br.conc) { # TTHM concentration estimation function
# if the raw concentrations were chosen to be given by hand, put them into an ovariable
if(Method == "Amy") return(0.0412 * (doc ^ 1.098) * (free.cl.dose ^ 0.152) * (br.conc ^ 0.068) * (temp ^ 0.609) * (ph ^ 1.601) * (react.time ^ 0.263))
# if some raw water class was chosen, this isn't done, and instead the data for microbe concentrations for that class is used
if(Method == "Rodriguez") return(0.044 * (doc ^ 1.030) * (react.time ^ 0.262) * (ph ^ 1.149) * (free.cl.dose ^ 0.277) * (temp ^ 0.968))
if (rawclass == "Hand input") {
  RawConcentration <- Ovariable(
    "RawConcentration",
    data=data.frame(
      Pathogen=c(
        "campylobacter",
        "E.coli O157:H7",
        "rotavirus",
        "norovirus",
        "sapovirus",
        "cryptosporidium",
        "giardia"),
      Result=c(
        Campylo,
        E.coli,
        Rota,
        Noro,
        Sapo,
        Crypto,
        Giardia)
    )
  )
}
}


#if(Cl.used == 1) { # parameter to be removed
BoDattr <- unkeep(EvalOutput(BoDattr, verbose=FALSE, forceEval=TRUE),sources=TRUE, prevresults = TRUE)
Mrt <- 12
BoDattr$Age <- factor(BoDattr$Age, levels=c("0-4","5-9","10-14","15-64","65-79","80+"))
N.cstr <- 6
# calculate the number of cases
Ttimes <- c(0.001,0.01,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,2,2.5,4)
cases <- BoDattr/case_burden
Times <- Ttimes * Mrt
Times.inc <- Times - c(0,Times[1:20])
Probability <- (Times^(N.cstr - 1) * exp(-N.cstr * Times / Mrt))/(factorial(N.cstr - 1) * (Mrt / N.cstr) ^ N.cstr)
if(Cl.test.sens == 1) Cl.conc <- 0 else Cl.conc <- Cl.dose
Cl.t.inact <- 0.13
Cl.conc.t <- Cl.conc * exp(-Cl.t.inact * Times)
Cl.conc.t.inc <- Cl.conc.t * Times.inc
Cl.conc.t.cum <- cumsum(Cl.conc.t.inc)
Cl.conc.t.dist <- mean(sample(Cl.conc.t.cum, 10000, TRUE, Probability))
Cl.sens.pat <- data.frame(Cl.credits = rep(1:5, each = 6), Pathogen, Cl.sens = c(0.152,0.17,0.12,0.09,0,75,0.294,0.34,0.16,0.18,0,150,0.436,
0.52,0.2,0.245,0,216,0,1.06,0.3,0.314,0,0,0,0,0,0,0,0)) # log reductions for different "credits"
Cl.pat.reduct <- NA
for (i in 1:length(levels(Cl.sens.pat$Pathogen))) {
Cl.pat.reduct[i] <- f.Cl.pat.red(Cl.conc.t.dist, Cl.sens.pat[Cl.sens.pat$Pathogen == Pathogen[i], "Cl.sens"]) # epärobustia koodia
}
Cl.pat.reduct <- data.frame(Pathogen, Cl.pat.reduct)
tthm.tap.conc <- f.tap.tthm.conc("Amy", Cl.pH, Cl.temp, Cl.DOC, Cl.byprod.t, Cl.dose, Cl.Br)
tthm.tap.conc <- data.frame(Tthm.tap.con = tthm.tap.conc)
#}


# Vedenkulutus
cat("Raakaveden patogeenipitoisuudet, microbes/l\n")
oprint(summary(RawConcentration))
cat("Altistuminen, juomaveden mukana nieltyjen mikrobien määrä päivittäin\n")
oprint(summary(exposure))
cat("Tautitaakka, DALY/päivä (DALY = disability adjusted life years) \n")
oprint(summary(oapply(BoDattr,NULL,sum,"Age"), marginals=c("Response","Exposure_agent")))
cat("Juomaveden aiheuttamat tautitapaukset päivässä \n")
oprint(summary(oapply(cases,NULL,sum,"Age"), marginals=c("Response", "Exposure_agent")))


k.v.kulutus <- 0.67 * v.kulutus / 1000 # keittämättömän veden kulutus (l)
label <- oapply(BoDattr, c("Exposure_agent", "Iter"), sum)
label <- oapply(unkeep(label, sources=TRUE), NULL, mean, "Iter")@output$BoDattrResult
ggplot(
  oapply(unkeep(BoDattr, sources=TRUE), NULL, mean, "Iter")@output,
  aes(x=Exposure_agent, weight=BoDattrResult, fill=Response)) +
  geom_bar() +
  coord_flip() +
  theme_gray(base_size=24)+
  labs(
    title="Juomaveden mikrobien aiheuttama tautitaakka",
    subtitle=paste(format(sum(result(population)), scientific = F), "hengen populaatiossa"),
    y = "Tautitaakka (DALY/päivä)",
    x = "Taudinaiheuttaja") +
  annotate("text", x = 1:length(label), y = label, label = signif(label,2), size = 6)


# Patogeeneille altistuminen, pääketju
ggplot(
  oapply(unkeep(BoDattr, sources=TRUE), NULL, mean, "Iter")@output,
  aes(x=Age, weight=BoDattrResult, fill=Response)) +
  geom_bar() +
  coord_flip() +
  theme_gray(base_size=24)+
  labs(
    title="Juomaveden mikrobien aiheuttama tautitaakka",
    subtitle=paste(format(sum(result(population)), scientific = F), "hengen populaatiossa"),
    y = "Tautitaakka (DALY/päivä)",
    x = "Taudinaiheuttaja")


Exposure <- merge(raw.pat.conc, treat.pat.reduct.tot)
label2 <- oapply(cases, c("Exposure_agent", "Iter"), sum)
Exposure <- merge(Exposure, Cl.pat.reduct)
label2 <- oapply(unkeep(label2, sources=TRUE), NULL, mean, "Iter")@output$Result
Exposure <- merge(Exposure, tthm.tap.conc)
ggplot(
Exposure$Tap.pat.conc <- Exposure$Raw.pat.conc * 10 ^ (-(Exposure$Treat.pat.reduct + Exposure$Cl.pat.reduct))
  oapply(unkeep(cases, sources=TRUE), NULL, mean, "Iter")@output,
Exposure$Exp.pat <- Exposure$Tap.pat.conc * k.v.kulutus
  aes(x=Exposure_agent, weight=Result, fill=Response)) +
  geom_bar() +
  coord_flip() +
  theme_gray(base_size=24)+
  labs(
    title="Juomaveden mikrobeiden aiheuttamat tautitapaukset",
    subtitle=paste(format(total_population, scientific = F), "hengen populaatiossa"),
    y = "Tautitapaukset",
    x = "Taudinaiheuttaja") +
  annotate("text", x = 1:length(label2), y = label2, label = signif(label2,2), size = 6)


# Terveysvaikutukset


# vaeston rakenne, yht 99.17678 %, problem?
# cases as percent of beachgoers
cases_percent <- cases*100/total_population
label3 <- oapply(cases_percent, c("Exposure_agent", "Iter"), sum)
label3 <- oapply(unkeep(label3, sources=TRUE), NULL, mean, "Iter")@output$Result
ggplot(
  oapply(unkeep(cases_percent, sources=TRUE), NULL, mean, "Iter")@output,
  aes(x=Exposure_agent, weight=Result, fill=Response)) +
  geom_bar() +
  coord_flip() +
  theme_gray(base_size=24)+
  labs(
    title="Osuus väestöstä, joka sairastuu juomavedestä päivittäin",
    y = "Osuus väestöstä (%)",
    x = "Taudiniheuttaja") +
  annotate("text", x = 1:length(label3), y = label3, label = signif(label3,2), size = 6)


vaesto <- op_baseGetData("opasnet_base", "Op_fi2652")[,c("Ikä","Result")]
colnames(vaesto) <- c("Age", "Osuus")


vaesto$Populaatio <- vaesto$Osuus * vaeston.koko
cat(paste("Suomessa juomavedestä johtuvia tautitapauksia tulisi olla keskimäärin vähemmän kuin 0.01% populaatiosta vuosittain, tai 1 tapaus 10 000:ä henkeä kohti. WHO:n ohjeet antavat tavoitetasoksi vähemmän kuin 10^-6 DALYa henkeä kohti vuodessa, eli 0.01 DALYa 10 000:ä henkeä kohti. Nämä kuvaajat näyttävät tautitaakat ja tautitapausten määrän jokainen patogeeni auheuttaa päivittäin", format(sum(result(population)), scientific = F), "hengen populaatiossa, kun kylmää hanavettä juodaan keskimäärin", rawconsumption, "litraa/hlö/päivä. \n"))
 
odotettu.elinika <- 81
 
f.exact.beta.poisson <- function(Param1, Param2, Dose) 1 - exp(-(Param1 / (Param1 + Param2)) * Dose)
f.beta.poisson.approx <- function(Param1, Param2, Dose) 1 - (1 + Dose / Param2)^(-Param1)
f.exponential <- function(Param1, Dose) 1 - exp(-Param1 * Dose)
f.alt.exponential <- function(Param1, Param2, Dose) 1 - (1 + (Dose / Param1))^(Param2)
 
dose.response <- op_baseGetData("opasnet_base", "Op_fi2653")
dose.response <- data.frame(Pathogen = unique(dose.response$Pathogen), Method = dose.response$Result.Text[dose.response$Parameter ==
"Function type"], Parameter1 = dose.response$Result[dose.response$Parameter == "Param1"], Parameter2 = dose.response$Result[
dose.response$Parameter == "Param2"])
 
dose.response <- merge(dose.response, Exposure[, c("Pathogen", "Exp.pat")])
 
for (i in 1:nrow(dose.response)) {
if(dose.response$Method[i] == "Exact beta Poisson") dose.response$P.inf[i] <- f.exact.beta.poisson(dose.response$Parameter1[i],
dose.response$Parameter2[i], dose.response$Exp.pat[i])
if(dose.response$Method[i] == "Beta Poisson approximation") dose.response$P.inf[i] <- f.beta.poisson.approx(dose.response$Parameter1[i],
dose.response$Parameter2[i], dose.response$Exp.pat[i])
if(dose.response$Method[i] == "Exponential") dose.response$P.inf[i] <- f.exponential(dose.response$Parameter1[i],
dose.response$Exp.pat[i])
if(dose.response$Method[i] == "Alternative exponential") dose.response$P.inf[i] <- f.alt.exponential(dose.response$Parameter1[i],
dose.response$Parameter2[i], dose.response$Exp.pat[i])
}
 
# infektioiden terveysvaikutukset
 
P.ill.g.inf <- data.frame(Pathogen, P.ill.g.inf = c(0.33, 1 - (270 / 1540), 0.9, 0.7, 0.71, 1)) # todennäköisyys sairastua kun saa infektion
 
# Kampylobakteeri, DALYt per infektio
 
P.treat.g.ill.Kamp.Gastr <- data.frame(Pathogen = Pathogen[c(1,1,1)], Outcome = "Gastroenteritis", ill.treat = c("Untreated",
"General practitioner", "Hospitalised", "Unspecified")[c(1,2,3)], P.treat.g.ill = c(0.7627, 0.2373, 0.0097))
 
P.treat.ill.g.inf.Kamp.Gastr <- merge(P.treat.g.ill.Kamp.Gastr, P.ill.g.inf)
P.treat.ill.g.inf.Kamp.Gastr$P.treat.ill.g.inf <- P.treat.ill.g.inf.Kamp.Gastr$P.ill.g.inf *
P.treat.ill.g.inf.Kamp.Gastr$P.treat.g.ill
 
duration.ill.treat.Kamp.Gastr <- data.frame(Outcome = c("Gastroenteritis"), ill.treat = c("Untreated", "General practitioner",
"Hospitalised", "Unspecified")[c(1,2,3)], dur.ill = c(5.1 / 365, 8.4 / 365, 14.39 / 365))
 
severity.ill.treat.Kamp.Gastr <- data.frame(Outcome = c("Gastroenteritis"), ill.treat = c("Untreated", "General practitioner",
"Hospitalised", "Unspecified")[c(1,2,3)], sev.ill = c(0.067, 0.393, 0.393))
 
daly.ill.treat.Kamp.Gastr <- merge(P.treat.ill.g.inf.Kamp.Gastr, duration.ill.treat.Kamp.Gastr)
daly.ill.treat.Kamp.Gastr <- merge(daly.ill.treat.Kamp.Gastr, severity.ill.treat.Kamp.Gastr)
daly.ill.treat.Kamp.Gastr$dalys <- daly.ill.treat.Kamp.Gastr$P.treat.ill.g.inf * daly.ill.treat.Kamp.Gastr$dur.ill *
daly.ill.treat.Kamp.Gastr$sev.ill
 
 
P.death.g.ill.Gastr <- 0.0004
P.death.g.inf.Gastr <- P.death.g.ill.Gastr * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "Kampylobakteeri"]
death.Gastr.life.lost <- 13.2
daly.death.Kamp.Gastr <- P.death.g.inf.Gastr * death.Gastr.life.lost
 
## GBS Kamp.
 
P.gbs.g.ill <- 2e-004
P.gbs.g.inf <- P.gbs.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "Kampylobakteeri"]
dur.sev.factor.gbs <- data.frame(Outcome = c("Clinical GBS", "Residual GBS"), dur.sev.factor = c(0.29, 5.8)) # duration * severity * fraction?
daly.Kamp.gbs <- data.frame(dur.sev.factor.gbs$Outcome, dalys = dur.sev.factor.gbs$dur.sev.factor * P.gbs.g.inf)
 
P.death.g.gbs <- 0.08 / 3 # triangular 0.01, 0.02, 0.05
P.death.g.inf.gbs <- P.death.g.gbs * P.gbs.g.inf
death.gbs.life.lost <- 18.7
daly.death.Kamp.gbs <- P.death.g.inf.gbs * death.gbs.life.lost
 
## reactive arthritis Kamp.
 
P.arth.g.ill <- 0.02 # triangluar 0.01, 0.02, 0.03
P.arth.g.inf <- P.arth.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "Kampylobakteeri"]
duration.arth <- 6 / 52
severity.arth <- 0.21
daly.Kamp.arth <- P.arth.g.inf * duration.arth * severity.arth
 
# E.coli
 
P.wd.g.ill <- 0.53 # watery diarrhea
P.wd.g.inf <- P.wd.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "E.coli O157:H7"]
severity.wd <- 0.067
duration.wd <- 3.4 / 365
daly.wd.Ecoli <- P.wd.g.inf * severity.wd * duration.wd
 
P.hc.g.ill <- 0.47
P.hc.g.inf <- P.hc.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "E.coli O157:H7"]
severity.hc <- 0.39
duration.hc <- 5.6 / 365
daly.hc.Ecoli <- P.hc.g.inf * severity.hc * duration.hc
 
P.death.g.ill.Ecoli <- 0.00027
P.death.g.inf.Ecoli <- P.death.g.ill.Ecoli * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "E.coli O157:H7"]
age.death.Ecoli <- 81 - 13.2
daly.death.Ecoli <- P.death.g.inf.Ecoli * (odotettu.elinika - age.death.Ecoli)
 
## Haemolytic uraemic syndrome (HUS)
 
P.hus.g.ill <- 0.01
P.hus.g.inf <- P.hus.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "E.coli O157:H7"]
severity.hus <- 0.93
duration.hus <- 21 / 365
daly.hus.Ecoli <- P.hus.g.inf * severity.hus * duration.hus
 
P.death.g.hus <- 0.04
P.death.hus.g.inf <- P.death.g.hus * P.hus.g.inf
age.death.hus.Ecoli <- 81 - 26.2
daly.death.hus.Ecoli <- P.death.hus.g.inf * (odotettu.elinika - age.death.hus.Ecoli)
 
## End Stage Renal Disease (ESRD)
 
P.esrd.g.hus <- 0.118
P.esrd.g.inf <- P.hus.g.inf * P.esrd.g.hus
severity.duration.hus <- 8.7 # severity * duration
daly.esrd.Ecoli <- P.esrd.g.inf * severity.duration.hus
 
P.death.g.esrd <- 0.0252
P.death.esrd.g.inf <- P.esrd.g.inf * P.death.g.esrd
age.death.esrd.Ecoli <- 81 - 34
daly.death.esrd.Ecoli <- P.death.esrd.g.inf * (odotettu.elinika - age.death.esrd.Ecoli)
 
# Rotavirus
 
P.treat.g.ill.Rotavirus <- data.frame(Pathogen = "Rotavirus", ill.treat = c("Untreated",
"General practitioner", "Hospitalised")[rep(1:3, each = 82)], Age = rep(0:81, 3), P.treat.g.ill = c(rep(0.82,5),
rep(0.95, 10), rep(0.99, 50), rep(0.97, 17), rep(0.137, 5), rep(0.0244, 5), rep(0.0511, 5), rep(0.0127, 50),
rep(0.0299, 17), rep(0.0416, 5), rep(0.0213, 5), rep(0, 72)))
 
P.treat.ill.g.inf.Rotavirus <- merge(P.treat.g.ill.Rotavirus, P.ill.g.inf)
P.treat.ill.g.inf.Rotavirus$P.treat.g.inf <- P.treat.ill.g.inf.Rotavirus$P.ill.g.inf * P.treat.ill.g.inf.Rotavirus$P.treat.g.ill
 
duration.ill.treat.Rotavirus <- data.frame(ill.treat = c("Untreated", "General practitioner","Hospitalised"), dur.ill = c(4.9 / 365,
7.1 / 365, 7.7 / 365))
 
severity.ill.treat.Rotavirus <- data.frame(ill.treat = c("Untreated", "General practitioner", "Hospitalised"), sev.ill = c(0.067,
0.393, 0.393))
 
daly.ill.treat.Rotavirus <- merge(P.treat.ill.g.inf.Rotavirus, duration.ill.treat.Rotavirus)
daly.ill.treat.Rotavirus <- merge(daly.ill.treat.Rotavirus, severity.ill.treat.Rotavirus)
daly.ill.treat.Rotavirus$dalys <- daly.ill.treat.Rotavirus$P.treat.g.inf * daly.ill.treat.Rotavirus$dur.ill *
daly.ill.treat.Rotavirus$sev.ill
 
 
P.death.Rotavirus <- data.frame(Age = 0:81, P.death.g.ill = c(rep(2.13e-005, 5), rep(0, 77)))
P.death.Rotavirus$P.death.g.inf <- P.death.Rotavirus$P.death.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "Rotavirus"]
P.death.Rotavirus$Life.lost <- odotettu.elinika - P.death.Rotavirus$Age
daly.death.Rotavirus <- data.frame(Age = P.death.Rotavirus$Age, dalys = P.death.Rotavirus$P.death.g.inf * P.death.Rotavirus$Life.lost)
 
# Norovirus
 
P.treat.g.ill.Norovirus <- data.frame(Pathogen = "Norovirus", ill.treat = c("Untreated",
"General practitioner", "Hospitalised")[rep(1:3, each = 82)], Age = rep(0:81, 3), P.treat.g.ill = c(rep(0.94876706,5),
rep(0.9902, 5), rep(0.98239, 5), rep(0.98434, 51), rep(0.992741, 16), rep(0.0448,5), rep(8.6e-003, 5), rep(0.0154, 5),
rep(0.0137, 51), rep(6.17e-003, 16), rep(6.43e-003,5), rep(1.2e-003, 5), rep(2.21e-003, 5), rep(1.96e-003, 51),
rep(8.85e-004, 16)))
 
P.treat.ill.g.inf.Norovirus <- merge(P.treat.g.ill.Norovirus, P.ill.g.inf)
P.treat.ill.g.inf.Norovirus$P.treat.g.inf <- P.treat.ill.g.inf.Norovirus$P.ill.g.inf * P.treat.ill.g.inf.Norovirus$P.treat.g.ill
 
duration.ill.treat.Norovirus <- data.frame(ill.treat = c("Untreated", "General practitioner","Hospitalised"), dur.ill = c(3.8 / 365,
5.73 / 365, 7.23 / 365))
 
severity.ill.treat.Norovirus <- data.frame(ill.treat = c("Untreated", "General practitioner", "Hospitalised"), sev.ill = c(0.067,
0.393, 0.393))
 
daly.ill.treat.Norovirus <- merge(P.treat.ill.g.inf.Norovirus, duration.ill.treat.Norovirus)
daly.ill.treat.Norovirus <- merge(daly.ill.treat.Norovirus, severity.ill.treat.Norovirus)
daly.ill.treat.Norovirus$dalys <- daly.ill.treat.Norovirus$P.treat.g.inf * daly.ill.treat.Norovirus$dur.ill *
daly.ill.treat.Norovirus$sev.ill
 
P.death.Norovirus <- data.frame(Age = 0:81, P.death.g.ill = c(rep(2.94e-006, 5), rep(0, 61), rep(2.04e-004, 16)))
P.death.Norovirus$P.death.g.inf <- P.death.Norovirus$P.death.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "Norovirus"]
P.death.Norovirus$Life.lost <- odotettu.elinika - P.death.Norovirus$Age
daly.death.Norovirus <- data.frame(Age = P.death.Norovirus$Age, dalys = P.death.Norovirus$P.death.g.inf * P.death.Norovirus$Life.lost)
 
# Cryptosporidium
 
P.treat.g.ill.Crypt <- data.frame(Pathogen = "Cryptosporidium", ill.treat = c("Untreated",
"General practitioner", "Hospitalised")[rep(1:3, each = 82)], Age = rep(0:81, 3), P.treat.g.ill = c(rep(0.9175730049999999,5),
rep(0.80937, 5), rep(0.6810499999999999, 5), rep(0.9774191, 50), rep(0.94706, 17), rep(0.082,5), rep(0.188, 5), rep(0.316, 5),
rep(0.0209, 50), rep(0.0367, 17), rep(4.26e-004,5), rep(2.63e-003, 5), rep(2.95e-003, 5), rep(1.66e-003, 50), rep(0.0146, 17)))
 
P.treat.ill.g.inf.Crypt <- merge(P.treat.g.ill.Crypt, P.ill.g.inf)
P.treat.ill.g.inf.Crypt$P.treat.g.inf <- P.treat.ill.g.inf.Crypt$P.ill.g.inf * P.treat.ill.g.inf.Crypt$P.treat.g.ill
 
duration.ill.treat.Crypt <- data.frame(ill.treat = c("Untreated", "General practitioner","Hospitalised"), dur.ill = c(3.5 / 365,
7 /365, 18.4 / 365))
 
severity.ill.treat.Crypt <- data.frame(ill.treat = c("Untreated", "General practitioner", "Hospitalised"), sev.ill = c(0.067,
0.393, 0.393))
 
daly.ill.treat.Crypt <- merge(P.treat.ill.g.inf.Crypt, duration.ill.treat.Crypt)
daly.ill.treat.Crypt <- merge(daly.ill.treat.Crypt, severity.ill.treat.Crypt)
daly.ill.treat.Crypt$dalys <- daly.ill.treat.Crypt$P.treat.g.inf * daly.ill.treat.Crypt$dur.ill *
daly.ill.treat.Crypt$sev.ill
 
P.death.Crypt <- data.frame(Age = 0:81, P.death.g.ill = c(rep(9.95e-007, 5), rep(0, 10), rep(2.09e-005, 50), rep(1.64e-003, 17)))
P.death.Crypt$P.death.g.inf <- P.death.Crypt$P.death.g.ill * P.ill.g.inf$P.ill.g.inf[P.ill.g.inf$Pathogen == "Cryptosporidium"]
P.death.Crypt$Life.lost <- odotettu.elinika - P.death.Crypt$Age
daly.death.Crypt <- data.frame(Age = P.death.Crypt$Age, dalys = P.death.Crypt$P.death.g.inf * P.death.Crypt$Life.lost)
 
# Giardia
 
P.treat.g.ill.Giardia <- data.frame(Pathogen = "Giardia", ill.treat = c("Untreated",
"General practitioner", "Hospitalised")[rep(1:3, each = 82)], Age = rep(0:81, 3), P.treat.g.ill = c(rep(0.9376,5),
rep(0.91034, 5), rep(0.72642, 5), rep(0.92486, 50), 0.54596, rep(0.5365, 16), rep(0.0609,5), rep(0.0852, 5), rep(0.272, 5),
rep(0.0721, 50), rep(0.451, 17), rep(1.5e-003,5), rep(4.46e-003, 5), rep(1.58e-003, 5), rep(3.04e-003, 51), rep(0.0125, 16)))
 
P.treat.ill.g.inf.Giardia <- merge(P.treat.g.ill.Giardia, P.ill.g.inf)
P.treat.ill.g.inf.Giardia$P.treat.g.inf <- P.treat.ill.g.inf.Giardia$P.ill.g.inf * P.treat.ill.g.inf.Giardia$P.treat.g.ill
 
duration.ill.treat.Giardia <- data.frame(ill.treat = c("Untreated", "General practitioner","Hospitalised"), dur.ill = c(10 / 365,
10 /365, 30 / 365))
 
severity.ill.treat.Giardia <- data.frame(ill.treat = c("Untreated", "General practitioner", "Hospitalised"), sev.ill = c(0.067,
0.393, 0.393))
 
daly.ill.treat.Giardia <- merge(P.treat.ill.g.inf.Giardia, duration.ill.treat.Giardia)
daly.ill.treat.Giardia <- merge(daly.ill.treat.Giardia, severity.ill.treat.Giardia)
daly.ill.treat.Giardia$dalys <- daly.ill.treat.Giardia$P.treat.g.inf * daly.ill.treat.Giardia$dur.ill *
daly.ill.treat.Giardia$sev.ill
 
# yhteenveto DALYistä
 
Health.effects <- vaesto[,c("Age","Populaatio")]
 
Health.effects$Untreated.Gastr.Kamp <- daly.ill.treat.Kamp.Gastr[daly.ill.treat.Kamp.Gastr$ill.treat == "Untreated", c("dalys")]
Health.effects$GP.Gastr.Kamp <- daly.ill.treat.Kamp.Gastr[daly.ill.treat.Kamp.Gastr$ill.treat == "General practitioner", c("dalys")]
Health.effects$Hospitalised.Gastr.Kamp <- daly.ill.treat.Kamp.Gastr[daly.ill.treat.Kamp.Gastr$ill.treat == "Hospitalised", c("dalys")]
Health.effects$Death.Gastr.Kamp <- daly.death.Kamp.Gastr
 
Health.effects$Clinical.GBS.Kamp <- daly.Kamp.gbs$dalys[1]
Health.effects$Residual.GBS.Kamp <- daly.Kamp.gbs$dalys[2]
Health.effects$Death.GBS.Kamp <- daly.death.Kamp.gbs
 
Health.effects$Arth.Kamp <- daly.Kamp.arth
 
Health.effects$WD.Ecoli <- daly.wd.Ecoli
Health.effects$HC.Ecoli <- daly.hc.Ecoli
Health.effects$Death.Ecoli <- daly.death.Ecoli
 
Health.effects$HUS.Ecoli <- daly.hus.Ecoli
Health.effects$Death.HUS.Ecoli <- daly.death.hus.Ecoli
 
Health.effects$ESRD.Ecoli <- daly.esrd.Ecoli
Health.effects$Death.ESRD.Ecoli <- daly.death.esrd.Ecoli
 
Health.effects <- merge(Health.effects, daly.ill.treat.Rotavirus[daly.ill.treat.Rotavirus$ill.treat == "Untreated", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Untreated.Rotavirus"
Health.effects <- merge(Health.effects, daly.ill.treat.Rotavirus[daly.ill.treat.Rotavirus$ill.treat == "General practitioner", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "GP.Rotavirus"
Health.effects <- merge(Health.effects, daly.ill.treat.Rotavirus[daly.ill.treat.Rotavirus$ill.treat == "Hospitalised", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Hospitalised.Rotavirus"
Health.effects <- merge(Health.effects, daly.death.Rotavirus)
colnames(Health.effects)[ncol(Health.effects)] <- "Death.Rotavirus"
 
Health.effects <- merge(Health.effects, daly.ill.treat.Norovirus[daly.ill.treat.Norovirus$ill.treat == "Untreated", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Untreated.Norovirus"
Health.effects <- merge(Health.effects, daly.ill.treat.Norovirus[daly.ill.treat.Norovirus$ill.treat == "General practitioner", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "GP.Norovirus"
Health.effects <- merge(Health.effects, daly.ill.treat.Norovirus[daly.ill.treat.Norovirus$ill.treat == "Hospitalised", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Hospitalised.Norovirus"
Health.effects <- merge(Health.effects, daly.death.Norovirus)
colnames(Health.effects)[ncol(Health.effects)] <- "Death.Norovirus"
 
Health.effects <- merge(Health.effects, daly.ill.treat.Crypt[daly.ill.treat.Crypt$ill.treat == "Untreated", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Untreated.Crypt"
Health.effects <- merge(Health.effects, daly.ill.treat.Crypt[daly.ill.treat.Crypt$ill.treat == "General practitioner", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "GP.Crypt"
Health.effects <- merge(Health.effects, daly.ill.treat.Crypt[daly.ill.treat.Crypt$ill.treat == "Hospitalised", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Hospitalised.Crypt"
Health.effects <- merge(Health.effects, daly.death.Crypt)
colnames(Health.effects)[ncol(Health.effects)] <- "Death.Crypt"
 
Health.effects <- merge(Health.effects, daly.ill.treat.Giardia[daly.ill.treat.Giardia$ill.treat == "Untreated", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Untreated.Giardia"
Health.effects <- merge(Health.effects, daly.ill.treat.Giardia[daly.ill.treat.Giardia$ill.treat == "General practitioner", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "GP.Giardia"
Health.effects <- merge(Health.effects, daly.ill.treat.Giardia[daly.ill.treat.Giardia$ill.treat == "Hospitalised", c("Age", "dalys")])
colnames(Health.effects)[ncol(Health.effects)] <- "Hospitalised.Giardia"
 
Health.effects <- reshape(Health.effects, idvar = c("Age"), times = colnames(Health.effects)[-c(1,2)], timevar = "Outcome",
varying = list(colnames(Health.effects)[-c(1,2)]), direction = "long")
colnames(Health.effects)[4] <- "P.daly.g.inf"
Health.effects$Pathogen <- NA
Health.effects$Pathogen[grep(".Kamp", Health.effects$Outcome)] <- Pathogen[1]
Health.effects$Pathogen[grep(".Ecoli", Health.effects$Outcome)] <- Pathogen[2]
Health.effects$Pathogen[grep(".Rotavirus", Health.effects$Outcome)] <- Pathogen[3]
Health.effects$Pathogen[grep(".Norovirus", Health.effects$Outcome)] <- Pathogen[4]
Health.effects$Pathogen[grep(".Crypt", Health.effects$Outcome)] <- Pathogen[5]
Health.effects$Pathogen[grep(".Giardia", Health.effects$Outcome)] <- Pathogen[6]
 
Health.effects <- merge(Health.effects, dose.response[,c("Pathogen", "P.inf")])
Health.effects$DALYs <- (1 - (1 - Health.effects$P.inf * Health.effects$P.daly.g.inf)^365) * Health.effects$Populaatio
 
# TTHM terveysvaikutukset (ylimääräiset virtsarakon syövät)
 
bladder.cancer.incidence <- data.frame(Age = 0:81, Incidence = c(rep(0, 5), rep(1.7, 5), rep(0, 5), rep(1.3, 5), rep(1, 5), rep(0, 5),
rep(1.1, 5), rep(5.5, 5), rep(11.7, 5), rep(30.6, 5), rep(53, 5), rep(85.2, 5), rep(173.7, 5), rep(245.3, 5), rep(304.6, 5),
rep(389.8, 5), rep(441.3, 2)))
 
bladder.cancer.slope <- log(1.006134)
bladder.cancer.OR <- data.frame(OR = exp(bladder.cancer.slope * tthm.tap.conc[1,1] * k.v.kulutus))
 
bladder.cancer.excess <- merge(bladder.cancer.incidence, vaesto)
bladder.cancer.excess <- merge(bladder.cancer.excess, bladder.cancer.OR)
 
bladder.cancer.excess$Cases <- bladder.cancer.excess$Populaatio * bladder.cancer.excess$Incidence * (bladder.cancer.excess$OR - 1) /
bladder.cancer.excess$OR / 100000
 
bladder.cancer.dalys <- bladder.cancer.excess[, c("Age", "Cases")]
bladder.cancer.dalys$Survival.rate <- c(rep(0.83, 55), rep(0.7, 10), rep(0.65, 10), rep(0.51, 7))
 
bladder.cancer.dalys$Survivors <- bladder.cancer.dalys$Cases * bladder.cancer.dalys$Survival.rate
bladder.cancer.dalys$Terminal.cases <- bladder.cancer.dalys$Cases * (1 - bladder.cancer.dalys$Survival.rate)
bladder.cancer.dalys <- reshape(bladder.cancer.dalys[,c("Age", "Survivors", "Terminal.cases")], idvar = "Age", times = c("Survivors",
"Terminal.cases"), timevar = "Cases", varying = list(c("Survivors", "Terminal.cases")), direction = "long")
colnames(bladder.cancer.dalys)[3] <- "Count"
 
cancer.clinical.free.dur <- data.frame(Cases = c("Survivors", "Terminal.cases"), Clinical.free.state = c(4.88, 2.55))
cancer.initial.treatment.dur <- data.frame(Initial.treatment = 0.12)
cancer.pre.terminal.dur <- data.frame(Cases = "Terminal.cases", Pre.terminal = 0.75)
cancer.terminal.dur <- data.frame(Cases = "Terminal.cases", Terminal = 0.08)
cancer.death.dur <- data.frame(Cases = "Terminal.cases", Age = 0:81, Death = 81:0)
 
cancer.dur <- merge(bladder.cancer.dalys[,c("Age", "Cases")], cancer.clinical.free.dur, all = TRUE)
cancer.dur <- merge(cancer.dur, cancer.initial.treatment.dur, all = TRUE)
cancer.dur <- merge(cancer.dur, cancer.pre.terminal.dur, all = TRUE)
cancer.dur <- merge(cancer.dur, cancer.terminal.dur, all = TRUE)
cancer.dur <- merge(cancer.dur, cancer.death.dur, all = TRUE)
 
cancer.dur <- reshape(cancer.dur, idvar = c("Age", "Cases"), times = colnames(cancer.dur)[-c(1,2)], timevar = "Outcome",  
varying = list(colnames(cancer.dur)[-c(1,2)]), direction = "long")
colnames(cancer.dur)[4] <- "Duration"
 
cancer.clinical.free.sev <- data.frame(Clinical.free.state = 0.18)
cancer.initial.treatment.sev <- data.frame(Initial.treatment = 0.27)
cancer.pre.terminal.sev <- data.frame(Cases = "Terminal.cases", Pre.terminal = 0.64)
cancer.terminal.sev <- data.frame(Cases = "Terminal.cases", Terminal = 0.93)
cancer.death.sev <- data.frame(Cases = "Terminal.cases", Age = 0:81, Death = 1)
 
cancer.sev <- merge(bladder.cancer.dalys[,c("Age", "Cases")], cancer.clinical.free.sev, all = TRUE)
cancer.sev <- merge(cancer.sev, cancer.initial.treatment.sev, all = TRUE)
cancer.sev <- merge(cancer.sev, cancer.pre.terminal.sev, all = TRUE)
cancer.sev <- merge(cancer.sev, cancer.terminal.sev, all = TRUE)
cancer.sev <- merge(cancer.sev, cancer.death.sev, all = TRUE)
 
cancer.sev <- reshape(cancer.sev, idvar = c("Age", "Cases"), times = colnames(cancer.sev)[-c(1,2)], timevar = "Outcome",
varying = list(colnames(cancer.sev)[-c(1,2)]), direction = "long")
colnames(cancer.sev)[4] <- "Severity"
 
bladder.cancer.dalys <- merge(bladder.cancer.dalys, cancer.dur)
bladder.cancer.dalys <- merge(bladder.cancer.dalys, cancer.sev)
 
bladder.cancer.dalys$DALYs <- bladder.cancer.dalys$Count * bladder.cancer.dalys$Duration * bladder.cancer.dalys$Severity
 
# Matala syntymäpaino
 
syntymia.vuodessa <- vaeston.koko * 1170 / 1e5
sga.esiintyvyys <- syntymia.vuodessa * 0.1
 
sga.slope <- 0.0009955
sga.OR <- exp(sga.slope * tthm.tap.conc[1,1] * k.v.kulutus)
sga.excess <- (sga.OR - 1) * sga.OR * sga.esiintyvyys
 
#
 
temp <- merge(dose.response, P.ill.g.inf)
 
############# TULOKSET #########################################################################################################
 
cat("<span style='font-size: 1.2em;font-weight:bold;'>Patogeenien konsentraatio raakavedessä</span>\n")
print(xtable(raw.pat.conc), type='html') # Patogeenien konsentraatio raakavedessä
cat("<span style='font-size: 1.2em;font-weight:bold;'>Patogeenien log vähenemä puhdistuksessa</span>\n")
print(xtable(treat.pat.reduct.tot), type='html') # Patogeenien log vähenemä puhdistuksessa
cat("<span style='font-size: 1.2em;font-weight:bold;'>Patogeeneille altistuminen ja infektion todennäköisyys</span>\n")
print(xtable(dose.response[,c("Pathogen", "Exp.pat", "P.inf")]), type="html") # Patogeeneille altistuminen ja infektion todennäköisyys
 
cat("<span style='font-size: 1.2em;font-weight:bold;'>Arvioitu terveysvaikutus</span>\n")
 
cat(sum((1 - (1 - temp$P.ill.g.inf * temp$P.inf)^365) * vaeston.koko), " vatsatautia vuodessa \n")
 
cat(sum(Health.effects$DALYs), " DALY:ä vatsataudeista \n")
#cat(sum(bladder.cancer.dalys$DALYs, na.rm = TRUE), " DALY:ä virtsarakon syövistä vuodessa johtuen TTHM pitoisuudesta \n")
#cat(sga.excess, " vastasyntynyttä vuodessa kärsii matalasta syntymäpainosta johtuen TTHM pitoisuudesta \n")
</rcode>
</rcode>


Malli on käännetty Analyticasta, R:lle. Alkuperäinen malli löytyy täältä: [[Tiedosto:Vesiopas.ANA]]. Mikäli "Patogeenipitoisuus arvio" -kenttä jätetään tekstimuotoiseksi, ladataan raakaveden [[Raakaveden patogeenipitoisuudet|luokituksen mukainen]] arvo tietokannasta.
Tulossivu avautuu uudelle välilehdelle painamalla aja koodi -laatikkoa. Tulokset ilmestyvät näkyviin tulossivulle, kunhan malli on saanut ajettua. Tähän menee noin 45 sekuntia.


== Käyttöohjeet Vesiopas-mallille ==
=== Käyttöohjeet Vesiopas-mallille ===


{{greenbox|
{{greenbox|


'''1. Valitse raakaveden luokitus'''
'''1. Valitse raakaveden luokitus'''
*Pohjavesi - Puhdas
*Pohjavesi - Puhdas: puhdasta pohjavettä
**Puhdasta pohjavettä
*Pohjavesi - Pintavesikuormitus: esim. rantaimeytymistä
*Pohjavesi - Pintavesikuormitus  
*Pintavesi - Vähäinen kuormitus: suhteellisen puhdasta pintavettä
**esim. rantaimeytymistä
*Pintavesi - Keskisuuri kuormitus: esim. pienehkö jätevesikuormitus
*Pintavesi - Vähäinen kuormitus
*Pintavesi - Suuri kuormitus: esim. jätevesikuormitus
**Suhteellisen puhdasta pintavettä
*Pintavesi - Keskisuuri kuormitus
**esim. pienehkö jätevesikuormitus
*Pintavesi - Suuri kuormitus
**esim. jätevesikuormitus


'''TAI'''
'''TAI'''


Kirjoita patogeenien pitoisuudet niiden laatikoihin. Jos "Patogeenipitoisuus arvio" -kenttä jätetään tekstimuotoiseksi, ladataan raakaveden [[Raakaveden patogeenipitoisuudet|luokituksen mukainen]] arvo tietokannasta.
Valitse 'Määrittelen mikrobipitoisuudet itse'. Kirjoita patogeenien pitoisuudet niiden laatikoihin.
 
}}
 
{{greenbox|


'''2. Valitse puhdistusprosessit.''' Huom! Voit valita monta vaihtoehtoa
'''2. Ilmoita juomaveden kulutus''' vuorokautta kohden litroina päivässä henkeä kohti (oletus 0,796 l/pvä).


}}
'''3. Ilmoita kohdealueen väestön lukumäärä.''' (oletus 100000)


{{greenbox|
'''4. Valitse puhdistusprosessit.''' Huom! Voit valita monta vaihtoehtoa


'''3. Valitse onko klooraus käytössä vai ei''' syöttämällä käytetty klooriannos (mg/l). Mikäli kloorausta ei ole, annokseksi tulee 0 mg/l. Klooraukseen liittyvät arvot on ilmoitettu oletusarvoina mutta niitä voi muuttaa haluttaessa. Jos valitset "Kaupungin oletusarvot", tulos lasketaan oletusarvojen perusteella huolimatta siitä onko niitä muutettu vai ei.
'''5. Valitse onko klooraus käytössä vai ei''' syöttämällä käytetty klooriannos (mg/l). Mikäli kloorausta ei ole, annokseksi tulee 0 mg/l (oletus 0 mg/l). Malli laskee kloorin tuottaman puhdistuman vain laitoksissa tapahtuvalle puhdistumiselle, ja jättää jäännekloorin vaikutuksen veden siirryttyä putkistoon huomiotta.


'''6. Tuloksen saa näkyviin uudelle sivulle painamalla nappia 'Aja koodi'.''' Tämä avaa uuden välilehden, jolle mallin tulokset ilmestyvät sen ajettua. Ajamisessa kestää noin 45 sekuntia.
}}
}}


{{greenbox|
== Perustelut ==


'''4. Ilmoita juomaveden kulutus''' vuorokautta kohden millilitroina.
[[Tiedosto:Vesiopas.png]]
 
}}
 
{{greenbox|
 
'''5. Ilmoita kohdealueen väestön lukumäärä.'''
 
}}
 
{{greenbox|
 
6. Tuloksen saa näkyviin uudelle sivulle "aja koodi" kohdasta.
 
}}
 
== Tulosten tulkinta ==
{{greenbox|
R-tools -nimiselle välilehdellä ilmoitetaan tulos. Kolmesta ensimmäisestä vihreästä laatikosta näkee millaisia lähtöarvoja malliin on syötetty. Kaksi alinta laatikko ilmoittavat mallin tulokset:
*Montako vatsatautitapausta alueella on vuodessa
*Monta DALYa eli toimintakyvyn vajaavuudella painotettua elinvuotta menetetään vatsatautitapausten vuoksi ko. alueella
}}
 
== Rajaus ==


Tässä tarkastellaan juomaveden mikrobiologisia riskejä sekä niiden aiheuttamia terveysvaikutuksia. Minkä tahansa malliin sopivan vedenpuhdistuslaitoksen tiedot voidaan syöttää arviointiin lähtötiedoiksi.
:''Malli on käännetty Analyticasta R:lle. Alkuperäinen malli löytyy täältä: [[Tiedosto:Vesiopas.ANA]]. Mikäli käyttäjä ei itse anna patogeenikohtaisia pitoisuuksia, käytetään sivulla [[Raakaveden patogeenipitoisuudet]] olevia arvoja.


== Määritelmä ==
Talousveden laadulle on asetettu terveysperusteisia laatuvaatimuksia ja -suosituksia. Laatua koskevasta lainsäädännästä vastaa Sosiaali- ja terveysministeriö ja laadun valvonnasta kuntien terveydensuojeluviranomaiset. Hyvän veden laadun ylläpitäminen ja kehittäminen edellyttävät korkealaatuista tutkimusta ja yhteistyötä eri tahojen kanssa. Pohjavesiä tai tekopohjavesiä ei yleensä desinfioida. Raakaveden sisältämät kemikaalit, mikrobit tai talousveden valmistuksessa muodostuvat desinfioinnin sivutuotteet voivat aiheuttaa terveysriskejä talousveden käyttäjille. Vesilaitokselta lähtevä vesi saattaa viipyä pitkiäkin aikoja verkostossa. Mikäli olosuhteet ovat mikrobikasvustolle suotuisat, vesi voi muuttua verkostossa ja kiinteistöjen vesijärjestelmissä huonolaatuiseksi ja jopa terveydelle haitalliseksi.
 
[[Tiedosto:Vesiopas.png]]
 
Talousveden laadulle on asetettu terveysperusteisia laatuvaatimuksia ja -suosituksia. Laatua koskevasta lainsäädännästä vastaa Sosiaali- ja terveysministeriö ja laadun valvonnasta kuntien terveydensuojeluviranomaiset. Hyvän veden laadun ylläpitäminen ja kehittäminen edellyttävät korkealaatuista tutkimusta ja yhteistyötä eri tahojen kanssa. Pohjavesiä tai tekopohjavesiä ei yleensä desinfioida. Raakaveden sisältämät kemikaalit, mikrobit tai talousveden valmistuksessa muodostuvat desinfioinnin sivutuotteet voivat aiheuttaa terveysriskejä talousveden käyttäjille. Vesilaitokselta lähtevä vesi saattaa viipyä pitkiäkin aikoja verkostossa. Mikäli olosuhteet ovat mikrobikasvustolle suotuisat, vesi voi muuttua verkostossa ja kiinteistöjen vesijärjestelmissä huonolaatuiseksi ja jopa terveydelle haitalliseksi. <ref>http://www.ktl.fi/portal/suomi/tietoa_terveydesta/elinymparisto/vesi</ref>




Rivi 657: Rivi 265:




Veden laatuun vaikuttavat myös verkoston kunto ja veden verkostossa viipymä aika. Jos verkostoon on kertynyt runsaasti saostumia, nämä sakat sisältävät erilaisten epäorgaanisten yhdisteiden lisäksi valtavasti bakteerimassaa. Verkoston saostumien ominaisuuksia ja niiden vaikutusta veden laatuun on Suomessa alettu tutkia vasta viime aikoina. <ref>http://www.ktl.fi/portal/suomi/julkaisut/kansanterveyslehti/lehdet_1999/2_1999/vesiepidemiat_voidaan_estaa_hyvalla_talousveden_kasittelylla/</ref>
Veden laatuun vaikuttavat myös verkoston kunto ja veden verkostossa viipymä aika. Jos verkostoon on kertynyt runsaasti saostumia, nämä sakat sisältävät erilaisten epäorgaanisten yhdisteiden lisäksi valtavasti bakteerimassaa. Verkoston saostumien ominaisuuksia ja niiden vaikutusta veden laatuun on Suomessa alettu tutkia vasta viime aikoina.




Riskinarvioinnin tarkoituksena on tuottaa tietoa riskin todellisesta suuruudesta päätöksentekoa varten. Riskinarviointi on tieteellinen prosessi, jossa asiantuntijoilla on keskeinen rooli. Koska tutkittavia riskejä monenlaisia, riskinarviointiprosessit voivat olla hyvin erilaisia. Ympäristöterveyden alalla riskinarvioinnin katsotaan tavallisesti koostuvan neljästä vaiheesta:
Riskinarvioinnin tarkoituksena on tuottaa tietoa riskin todellisesta suuruudesta päätöksentekoa varten. Riskinarviointi on tieteellinen prosessi, jossa asiantuntijoilla on keskeinen rooli. Koska tutkittavia riskejä monenlaisia, riskinarviointiprosessit voivat olla hyvin erilaisia. Ympäristöterveyden alalla riskinarvioinnin katsotaan tavallisesti koostuvan neljästä vaiheesta:
*1. Vaaran tunnistaminen (aiheuttaako tutkittava tekijä vaaraa ihmiselle?)
# Vaaran tunnistaminen (aiheuttaako tutkittava tekijä vaaraa ihmiselle?)
*2. Annosvasteen arviointi (mikä on annoksen ja vaikutuksen suhde?)
# Annosvasteen arviointi (mikä on annoksen ja vaikutuksen suhde?)
*3. Altistumisen arviointi (kuinka paljon ihmiset altistuvat?)
# Altistumisen arviointi (kuinka paljon ihmiset altistuvat?)
*4. Riskin karakterisointi (kuinka suuri on terveysriski?)<ref>http://wanda.uef.fi/tkk/avoin/ymp_terveys/</ref>
# Riskin karakterisointi (kuinka suuri on terveysriski?)<ref>http://wanda.uef.fi/tkk/avoin/ymp_terveys/</ref>


Kaikkien vesilaitosten tulisi ajoittain tehdä talousvedelle riskinarviointi. Siinä selvitetään toimenpiteet eri kriisitilanteita varten ja laaditaan suunnitelmat eri ongelmatilanteita ja mahdollisia vahinkoja varten. Erilaiset vesilaitokset ja esimerkiksi lomakeskukset tarvitsevat erilaiset suunnitelmat ja toteutukset.


Kaikkien vesilaitosten tulisi ajoittain tehdä talousvedelle riskinarviointi. Siinä selvitetään toimenpiteet eri kriisitilanteita varten ja laaditaan suunnitelmat eri ongelmatilanteita ja mahdollisia vahinkoja varten. Erilaiset vesilaitokset ja esimerkiksi lomakeskukset tarvitsevat erilaiset suunnitelmat ja toteutukset.
=== Riippuvuudet ===


{| {{prettytable}}
|+ '''Sivut, joilta mallin käyttämä data ja koodit löytyvät
! Sivu !! Mitä dataa tai koodia sivulla on !! Mitä sillä tehdään !! Muita huomioita
|----
| Op_en2949 [[:op_en:Population of Finland|Population of Finland]] || Suomalaisten ikäjakauman data || Ikäjakaumaa käytetään, koska herkkyys taudeille ja niiden vakavuus vaihtelee iän myötä. Tautitapaukset ja -taakat lasektaan eri ikäryhmille erikseen ja lasketaan yhteen. ||
|----
| Op_en7956 [[:op_en:Drinking water chlorination efficiency|Drinking water chlorination efficiency]] || Kloorauksen tuottama puhdistuma eri kloorimäärillä ja vaikutusajoilla || Tämän sivun koodin ja datan sekä käyttäjän antaman klooriannoksen avulla lasketaan tapauskohtainen kloorin tuottama puhdistuma. Lasketaan yhteen muiden defintiointi- ja puhdistusmenetelmien tuottaman puhdistuman kanssa kokonaispuhdistuman selvittämiseksi. || Malli ottaa huomioon vain vedenpuhdistamoissa tapahtuvan kloorin tuottaman puhdistuman. Jäännekloorin mahdollinen puhdistava vaikutus putkistoissa on jätetty huomiotta.
|----
| Op_en7955 [[:op_en:Drinking water disinfection efficiency|Drinking water disinfection efficiency]] || Otsonoinnin ja UV:n tuottamat puhdistumat || Mikäli käyttäjä on valinnut jomman kumman tai molemmat desinfiointimenetelmät, niiden tuottama puhdistuma lasketaan yhteen kloorauksen ja muiden puhdistusmenetelmien tuottaman puhdistuman kanssa kokonaispuhdistuman selvittämiseksi. || Tällä hetkellä veden ominaisuuksia, kuten kirkkautta, ei oteta huomioon desinfiointimeletelmien tehossa. Molempien menetelmien annos on myös vakio.
|----
| Op_en7954; [[:op_en:Drinking water treatment efficiency|Drinking water treatment efficiency]] || Eri puhdistusmenetelmien tuottamat puhdistukset. Nämä menetelmät ovat perinteinen puhdistus, hyvin toimva puhdistus, tehostettu puhdistus, hidas hiekkasuodatus, kalkkikivisuodatus ja aktiivihiilisuodatus. || Mikäli käyttäjä on valinnut jonkin tai useamman puhdistusmenetelmän, niiden tuottama puhdistuma lasketaan yhteen kloorauksen ja muiden desinfiointimenetelmien tuottaman puhdistuman kanssa kokonaispuhdistuman selvittämiseksi. ||
|----
| Op_en7953 [[:op_en:Pathogen concentrations in raw water|Pathogen concentrations in raw water]] || Eri raakavesiluokkien sisältämät taudinaiheuttajamäärät || Mikäli käyttäjä on valinnut jonkin raakavesiluokan, valitun luokan taudinaiheuttajamäärien ja kokonaispuhdistuman perusteella lasketaan juomavedessä olevien taudinaiheuttajien määrä. Mikäli käyttäjä on syöttänyt mikrobipitooisuudet itse, tämän sivun dataa ei käytetä, vaan syötettyjä mikrobipitoisuuksia käytetään sen sijasta.  ||
|----
| Op_en7947 [[:op_en:Case burden of waterborne microbes|Case burden of waterborne microbes]] || Eri taudinaiheuttajien tautitaakat, eli kuinka vakavia ja pitkään kestäviä eri taudit ovat. || Tätä dataa käytetään taudinaiheuttajien tuottaman terveyshaitan laskemisessa. ||
|----
| Op_en7957 [[:op_en:Health impacts of waterborne microbes|Health impacts of waterborne microbes]] || Ei sisällä dataa, vain koodia || Sisältää koodit, jotka laskevat käyttäjän antaman juodun juomaveden määrän, kokonaispuhdistuman ja raakaveden taudinaiheuttajamäärien perusteella yksittäisen ihmisen altistumisen taudinaiheuttajille eli sen, kuinka monta kutakin taudinaiheuttajaa keskivertoihminen nielee päivän aikana juomavetensä mukana. ||
|----
| Op_en7948 [[:op_en:ERF of waterborne microbes|ERF of waterborne microbes]] || Kuvaa annos-vaste-funktiot || Funktiot kertovat, kuinka todennäköisesti yksilö sairastuu eri tauteihin eri määrillä altistumista. Tämän avulla lasketaan sairastuneiden määrää. ||
|----
| Op_en2261 [[:op_en:HIA|HIA]] || Koodi, joka kokoaa yhteen kaikki edelliset || Sivulla oleva koodi laskee altistumisen, annos-vasteiden ja tapauskohtaisten tautitaakkojen avulla, kuinka suuri juomaveden kokonaistautitaakka on. Tästä voidaan laskea myös, kuinka paljon ihmisiä tulee todennäköisesti sairaaksi juomavedestä. Nämä ovat mallin lopulliset tulokset. ||
|}


=== Moduulit ===
== Katso myös ==


*[[Päästöjen vaikutukset juomaveden laatuun | Päästöt]]
{{metodi|moderator = Päivi Meriläinen}}
*[[Kulkeutumisen vaikutukset juomaveden laatuun | Kulkeutuminen]]
* [https://www.vesi.fi/ Ajantasaista vesitietoa vesi.fi]
*[[Altistuminen juomaveden patogeeneille | Altistuminen]]
*[[Juomaveden patogeenit]]
*[[Juomaveden patogeenien terveysvaikutukset | Terveysvaikutukset]]
*[[Juomaveden patogeenien terveysvaikutukset]]
*[[Juomaveden laadun riskinhallinta| Riskinhallinta]]


=== Muuttujat ===
*[[Arviointi pohjavesilaitoksen mikrobiologisista riskeistä]]
*[[Arviointi juomaveden kloorifenolien terveysvaikutuksista]]
*[[:heande:Kuovesi]]
* [[Mikrobien määrä juomavedessä]]
* [[Mikrobien määrä pohjavedessä]]
*[[Uimavesiopas]]
* WHO: [https://apps.who.int/iris/bitstream/handle/10665/246195/9789241565370-eng.pdf?sequence=1 Quantitative Microbial Risk Assessment: Application for Water Safety Management]


*[[Juomaveden patogeenit | Patogeenit]]
* [http://fi.opasnet.org/fi-opwiki/index.php?title=Vesiopas&oldid=35905 Vanha, arkistoitu versio mallista]
*[[Raakaveden patogeenipitoisuudet | Patogeenien pitoisuudet raakavedessä]]
*[[Vedenkäsittelyn tehokkuus]]
*[[UV-puhdistuksen teho]]
*[[Klooraus]]
*[[Patogeenien pitoisuudet puhdistetussa juomavedessä]]
*[[Verkostoriskit]]
*[[Juomaveden kulutus |Vedenkulutus]]
*[[Patogeeneille altistuminen]]
*[[Juomaveden patogeenien terveysvaikutukset | Patogeenien terveysvaikutukset]]
*[[Suomen ikäjakauma | Populaation koko]]
*[[Suomen ikäjakauma | Väestön ikärakenne]]
*[[Suomen ikäjakauma | Odotettu elinikä]]
*[[Patogeenien annosvasteet |Mikrobien annosvasteet]]
*[[Infektion vuosittainen todennäköisyys]]
*[[Vatsatautien tapaukset]]
*[[Patogeenien DALYt vatsataudille]]


=== Data ===
*http://qmrawiki.org/
*https://www.watershare.eu/tool/qmra-treatment-calculator/
*http://qmrawiki.canr.msu.edu/index.php/Quantitative_Microbial_Risk_Assessment_(QMRA)_Wiki
*https://www.who.int/water_sanitation_health/publications/qmra/en/
*https://www.rivm.nl/en/who-collaborating-centre-risk-assessment-of-pathogens-in-food-and-water/tools/qmraspot


*[[Raakaveden patogeenipitoisuudet]]
*[[Suomen ikäjakauma]]
*[[Vedenkäsittelyn tehokkuus]]
*[[Patogeenien annosvasteet]]


== Katso myös ==
; Turhia?
*[[Infektion vuosittainen todennäköisyys]]
*[[Vatsatautien tapaukset]]
*[[Patogeenien DALYt vatsataudille]] Yhdistettävä sivuun [[:op_en:DALY]]?


* [[Arviointi pohjavesilaitoksen mikrobiologisista riskeistä]]
=== Paikkakuntakohtaiset tiedot ===
* [[Arviointi juomaveden kloorifenolien terveysvaikutuksista]]
* [[Arviointi juomaveden laadun terveysvaikutuksista/Kuopio]]
* [[:heande:Kuovesi]]


* http://fi.wikipedia.org/wiki/Riskinarviointi
* Op_fi2603 [[Arviointi juomaveden laadun terveysvaikutuksista/Kuopio]] (vedenpuhdistamon tietoja)
* http://wanda.uef.fi/tkk/avoin/ymp_terveys/riski/riskinarviointi.html
*[[:heande:Polaris:Raakaveden patogeenipitoisuudet/Lahti]]
* http://www.fao.org/docrep/006/y4666e/y4666e06.htm#TopOfPage
*[[:heande:Polaris:Raakaveden patogeenipitoisuudet/Mikkeli]]
* http://wiki.camra.msu.edu/index.php?title=Main_Page
*[[:heande:Polaris:Raakaveden patogeenipitoisuudet/Kirkkonummi]]
* http://www.medicina.fi/index.php?option=com_content&view=article&id=48&Itemid=56#I
*[[:heande:Polaris:Paikkakuntakohtaiset tiedot talousveden käsittelyyn/Lahti]]
* [[Vesiopas toteutus]]
*[[:heande:Polaris:Paikkakuntakohtaiset tiedot talousveden käsittelyyn/Mikkeli]]
*[[:heande:Polaris:Paikkakuntakohtaiset tiedot talousveden käsittelyyn/Kirkkonummi]]
*[[:heande:Polaris:Juomaveden desinfiointi/Lahti]]
*[[:heande:Polaris:Juomaveden desinfiointi/Mikkeli]]
*[[:heande:Polaris:Juomaveden desinfiointi/Kirkkonummi]]
*[[:heande:Polaris:Vedenkäsittelyn tehokkuus/Lahti]]
*[[:heande:Polaris:Vedenkäsittelyn tehokkuus/Mikkeli]]
*[[:heande:Polaris:Vedenkäsittelyn tehokkuus/Kirkkonummi]]


==Viitteet==
==Viitteet==


<references/>
<references/>
==Aiheeseen liittyviä tiedostoja==
{{mfiles}}


{{eracedu}}
{{eracedu}}

Nykyinen versio 10. toukokuuta 2021 kello 17.55

Vesiopas - Arviointi vedenlaadun terveysvaikutuksista käsittelee juomaveden mahdollisia mikrobiologisia terveysriskejä. Mikrobiologisten riskien taustana on raakaveden kontaminoituminen mikrobeilla joista aiheutuu mahdollista terveyshaittaa vesijohtovettä käyttäville ihmisille, sekä juomaveden käsittelyprosessien tehokkuus, joka voi olla riittämätön poistamaan haitalliset mikrobit juomavedestä. Arvioinnilla määritetään, minkä suuruinen mahdollinen terveysriski on tietyillä raakaveden mikrobeilla. Arviointi perustuu matemaattiselle Vesiopas-mallille, joka esitellään alla.

Kysymys

Miten arvioidaan juomaveden mikrobiologisia riskejä sekä niiden aiheuttamia terveysvaikutuksia? Erilaisten vedenpuhdistuslaitosten tietoja pitää voida syöttää arviointiin lähtötiedoiksi.

Vastaus

Esimerkkiajo suuren pintavesikuormituksen jälkeen.

Perustiedot

Raakaveden valmiit luokitukset:

Kylmän hanaveden juominen (litraa/pvä):

Altistuvan väestön koko:

Taudinaiheuttajien määrät raakavedessä (jos ei valmista luokitusta)

Kampylobakteerin määrä (mikrobia/l):

E.coli O157:H7 määrä (mikrobia/l):

Rotaviruksen määrä (mikrobia/l):

Noroviruksen määrä (mikrobia/l):

Sapoviruksen määrä (mikrobia/l):

Cryptosporidiumin määrä (mikrobia/l):

Giardian määrä (mikrobia/l):

Vedenpuhdistus: Puhdistusprosessi ja klooraus

Käytössä olevat puhdistusmenetelmät:
Saostaminen ja flotaatio
Hidas hiekkasuodatus
Kalkkikivisuodatus
Aktiivihiilisuodatus

Klooriannos (mg/l):

Otsoniannos (mg/l):

UV annos (mW/cm^2):

UV aika (s):

+ Näytä koodi

Tulossivu avautuu uudelle välilehdelle painamalla aja koodi -laatikkoa. Tulokset ilmestyvät näkyviin tulossivulle, kunhan malli on saanut ajettua. Tähän menee noin 45 sekuntia.

Käyttöohjeet Vesiopas-mallille


1. Valitse raakaveden luokitus

  • Pohjavesi - Puhdas: puhdasta pohjavettä
  • Pohjavesi - Pintavesikuormitus: esim. rantaimeytymistä
  • Pintavesi - Vähäinen kuormitus: suhteellisen puhdasta pintavettä
  • Pintavesi - Keskisuuri kuormitus: esim. pienehkö jätevesikuormitus
  • Pintavesi - Suuri kuormitus: esim. jätevesikuormitus

TAI

Valitse 'Määrittelen mikrobipitoisuudet itse'. Kirjoita patogeenien pitoisuudet niiden laatikoihin.

2. Ilmoita juomaveden kulutus vuorokautta kohden litroina päivässä henkeä kohti (oletus 0,796 l/pvä).

3. Ilmoita kohdealueen väestön lukumäärä. (oletus 100000)

4. Valitse puhdistusprosessit. Huom! Voit valita monta vaihtoehtoa

5. Valitse onko klooraus käytössä vai ei syöttämällä käytetty klooriannos (mg/l). Mikäli kloorausta ei ole, annokseksi tulee 0 mg/l (oletus 0 mg/l). Malli laskee kloorin tuottaman puhdistuman vain laitoksissa tapahtuvalle puhdistumiselle, ja jättää jäännekloorin vaikutuksen veden siirryttyä putkistoon huomiotta.

6. Tuloksen saa näkyviin uudelle sivulle painamalla nappia 'Aja koodi'. Tämä avaa uuden välilehden, jolle mallin tulokset ilmestyvät sen ajettua. Ajamisessa kestää noin 45 sekuntia.

Perustelut

Malli on käännetty Analyticasta R:lle. Alkuperäinen malli löytyy täältä: Tiedosto:Vesiopas.ANA. Mikäli käyttäjä ei itse anna patogeenikohtaisia pitoisuuksia, käytetään sivulla Raakaveden patogeenipitoisuudet olevia arvoja.

Talousveden laadulle on asetettu terveysperusteisia laatuvaatimuksia ja -suosituksia. Laatua koskevasta lainsäädännästä vastaa Sosiaali- ja terveysministeriö ja laadun valvonnasta kuntien terveydensuojeluviranomaiset. Hyvän veden laadun ylläpitäminen ja kehittäminen edellyttävät korkealaatuista tutkimusta ja yhteistyötä eri tahojen kanssa. Pohjavesiä tai tekopohjavesiä ei yleensä desinfioida. Raakaveden sisältämät kemikaalit, mikrobit tai talousveden valmistuksessa muodostuvat desinfioinnin sivutuotteet voivat aiheuttaa terveysriskejä talousveden käyttäjille. Vesilaitokselta lähtevä vesi saattaa viipyä pitkiäkin aikoja verkostossa. Mikäli olosuhteet ovat mikrobikasvustolle suotuisat, vesi voi muuttua verkostossa ja kiinteistöjen vesijärjestelmissä huonolaatuiseksi ja jopa terveydelle haitalliseksi.


Talousvesi tuotetaan joko pohja- tai pintavedestä. Näillä on erilaiset ongelmat. Pintaveden käyttö vaatii aina varsinaisen vesilaitoksen perustamista ja siihen liittyvää tietoa, taitoa ja tekniikkaa sekä koulutettua valvontahenkilöstöä. Pohjavesi taas ei vaadi kovin monimutkaista käsittelyä, joten varsinaista vesilaitoshenkilökuntaa tarvitaan varsin vähän ja valvontakin on vähäisempää. Lisäksi meillä on nykyään useita vesilaitoksia, jotka valmistavat tekopohjavettä. Ominaisuuksiltaan tekopohjavedet saattavat olla hyvien pohjavesien kaltaisia, mutta usein vain keskitasoisen pintaveden veroisia.


Pohjaveden käsittelyyn kuuluu tavallisesti veden pH:n ja kovuuden nosto. Tähän voidaan käyttää erilaisia tekniikoita, joista pH:n säädössä kalsiumhydroksidin ja hiilidioksidin käyttö lienee yleisimpiä. Toisinaan tarvitaan lisäksi raudan tai mangaanin saostaminen vahvoilla hapettimilla kuten permanganaatilla tai kloorilla. Lisäksi heikkolaatuiset pohjavedet desinfioidaan.


Jotta pintavedestä saataisiin hyvää juomavettä, sitä joudutaan käsittelemään varsin rankasti. Vaikeinta on saada pintaveden humusainekset saostettua. Tähän käytetään erilaisten saostuskemikaalien lisäksi mm. pH:n säätöä ja humusaineksen pilkkomista voimakkailla hapettimilla kuten otsonilla. Lisäksi saostuskemikaalien (esim. alumiinin ja raudan suolat) jäämät on poistettava ja veden kovuutta nostettava niin, ettei putkisto aikojen kuluessa haperru. Väestö on myös suojattava pintavesissä aina piileviltä mikrobeilta, joten vesi täytyy desinfioida tautia aiheuttavien mikrobien, patogeenien, poistamiseksi.


Veden laatuun vaikuttavat myös verkoston kunto ja veden verkostossa viipymä aika. Jos verkostoon on kertynyt runsaasti saostumia, nämä sakat sisältävät erilaisten epäorgaanisten yhdisteiden lisäksi valtavasti bakteerimassaa. Verkoston saostumien ominaisuuksia ja niiden vaikutusta veden laatuun on Suomessa alettu tutkia vasta viime aikoina.


Riskinarvioinnin tarkoituksena on tuottaa tietoa riskin todellisesta suuruudesta päätöksentekoa varten. Riskinarviointi on tieteellinen prosessi, jossa asiantuntijoilla on keskeinen rooli. Koska tutkittavia riskejä monenlaisia, riskinarviointiprosessit voivat olla hyvin erilaisia. Ympäristöterveyden alalla riskinarvioinnin katsotaan tavallisesti koostuvan neljästä vaiheesta:

  1. Vaaran tunnistaminen (aiheuttaako tutkittava tekijä vaaraa ihmiselle?)
  2. Annosvasteen arviointi (mikä on annoksen ja vaikutuksen suhde?)
  3. Altistumisen arviointi (kuinka paljon ihmiset altistuvat?)
  4. Riskin karakterisointi (kuinka suuri on terveysriski?)[1]

Kaikkien vesilaitosten tulisi ajoittain tehdä talousvedelle riskinarviointi. Siinä selvitetään toimenpiteet eri kriisitilanteita varten ja laaditaan suunnitelmat eri ongelmatilanteita ja mahdollisia vahinkoja varten. Erilaiset vesilaitokset ja esimerkiksi lomakeskukset tarvitsevat erilaiset suunnitelmat ja toteutukset.

Riippuvuudet

Sivut, joilta mallin käyttämä data ja koodit löytyvät
Sivu Mitä dataa tai koodia sivulla on Mitä sillä tehdään Muita huomioita
Op_en2949 Population of Finland Suomalaisten ikäjakauman data Ikäjakaumaa käytetään, koska herkkyys taudeille ja niiden vakavuus vaihtelee iän myötä. Tautitapaukset ja -taakat lasektaan eri ikäryhmille erikseen ja lasketaan yhteen.
Op_en7956 Drinking water chlorination efficiency Kloorauksen tuottama puhdistuma eri kloorimäärillä ja vaikutusajoilla Tämän sivun koodin ja datan sekä käyttäjän antaman klooriannoksen avulla lasketaan tapauskohtainen kloorin tuottama puhdistuma. Lasketaan yhteen muiden defintiointi- ja puhdistusmenetelmien tuottaman puhdistuman kanssa kokonaispuhdistuman selvittämiseksi. Malli ottaa huomioon vain vedenpuhdistamoissa tapahtuvan kloorin tuottaman puhdistuman. Jäännekloorin mahdollinen puhdistava vaikutus putkistoissa on jätetty huomiotta.
Op_en7955 Drinking water disinfection efficiency Otsonoinnin ja UV:n tuottamat puhdistumat Mikäli käyttäjä on valinnut jomman kumman tai molemmat desinfiointimenetelmät, niiden tuottama puhdistuma lasketaan yhteen kloorauksen ja muiden puhdistusmenetelmien tuottaman puhdistuman kanssa kokonaispuhdistuman selvittämiseksi. Tällä hetkellä veden ominaisuuksia, kuten kirkkautta, ei oteta huomioon desinfiointimeletelmien tehossa. Molempien menetelmien annos on myös vakio.
Op_en7954; Drinking water treatment efficiency Eri puhdistusmenetelmien tuottamat puhdistukset. Nämä menetelmät ovat perinteinen puhdistus, hyvin toimva puhdistus, tehostettu puhdistus, hidas hiekkasuodatus, kalkkikivisuodatus ja aktiivihiilisuodatus. Mikäli käyttäjä on valinnut jonkin tai useamman puhdistusmenetelmän, niiden tuottama puhdistuma lasketaan yhteen kloorauksen ja muiden desinfiointimenetelmien tuottaman puhdistuman kanssa kokonaispuhdistuman selvittämiseksi.
Op_en7953 Pathogen concentrations in raw water Eri raakavesiluokkien sisältämät taudinaiheuttajamäärät Mikäli käyttäjä on valinnut jonkin raakavesiluokan, valitun luokan taudinaiheuttajamäärien ja kokonaispuhdistuman perusteella lasketaan juomavedessä olevien taudinaiheuttajien määrä. Mikäli käyttäjä on syöttänyt mikrobipitooisuudet itse, tämän sivun dataa ei käytetä, vaan syötettyjä mikrobipitoisuuksia käytetään sen sijasta.
Op_en7947 Case burden of waterborne microbes Eri taudinaiheuttajien tautitaakat, eli kuinka vakavia ja pitkään kestäviä eri taudit ovat. Tätä dataa käytetään taudinaiheuttajien tuottaman terveyshaitan laskemisessa.
Op_en7957 Health impacts of waterborne microbes Ei sisällä dataa, vain koodia Sisältää koodit, jotka laskevat käyttäjän antaman juodun juomaveden määrän, kokonaispuhdistuman ja raakaveden taudinaiheuttajamäärien perusteella yksittäisen ihmisen altistumisen taudinaiheuttajille eli sen, kuinka monta kutakin taudinaiheuttajaa keskivertoihminen nielee päivän aikana juomavetensä mukana.
Op_en7948 ERF of waterborne microbes Kuvaa annos-vaste-funktiot Funktiot kertovat, kuinka todennäköisesti yksilö sairastuu eri tauteihin eri määrillä altistumista. Tämän avulla lasketaan sairastuneiden määrää.
Op_en2261 HIA Koodi, joka kokoaa yhteen kaikki edelliset Sivulla oleva koodi laskee altistumisen, annos-vasteiden ja tapauskohtaisten tautitaakkojen avulla, kuinka suuri juomaveden kokonaistautitaakka on. Tästä voidaan laskea myös, kuinka paljon ihmisiä tulee todennäköisesti sairaaksi juomavedestä. Nämä ovat mallin lopulliset tulokset.

Katso myös





Turhia?

Paikkakuntakohtaiset tiedot

Viitteet