Ero sivun ”Vesiopas” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
pEi muokkausyhteenvetoa
(→‎Vastaus: summausvirhe korjattu)
 
(36 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä)
Rivi 7: Rivi 7:
[[Luokka:Sisältää R-koodia]]
[[Luokka:Sisältää R-koodia]]
[[Tiedosto:Talousveden_riskinarviointi.png|thumb|500px]]
[[Tiedosto:Talousveden_riskinarviointi.png|thumb|500px]]
'''Huom! Vesiopas päivitetään toimivammaksi kesän 2019 aikana. Tällä hetkellä tulokset saa näkyviin vain päivittämällä tulossivu noin minuutti riskilaskelman suorittamisen jälkeen.'''


'''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 - 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.
Rivi 17: Rivi 15:


==Vastaus==
==Vastaus==
[http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=eI6bIUZPZMbplC4u Esimerkkiajo suuren pintavesikuormituksen jälkeen].


<rcode name="answer" graphics=1 variables="
<rcode name="answer" graphics=1 variables="
name:RaakaLuokka|description:Raakaveden valmiit luokitukset|type:selection|
name:rawclass|description:Raakaveden valmiit luokitukset|type:selection|
options:
options:
'Pohjavesi - Puhdas';Pohjavesi - Puhdas;
'Ground water - clean';Pohjavesi - Puhdas;
'Pohjavesi - Pintavesikuormitus';Pohjavesi - Pintavesikuormitus;
'Ground water - surface water contamination';Pohjavesi - Pintavesikuormitus;
'Pintavesi - Vähäinen kuormitus';Pintavesi - Vähäinen kuormitus;
'Surface water - low contamination';Pintavesi - Vähäinen kuormitus;
'Pintavesi - Keskisuuri kuormitus';Pintavesi - Keskisuuri kuormitus;
'Surface water - medium contamination';Pintavesi - Keskisuuri kuormitus;
'Pintavesi - Suuri kuormitus';Pintavesi - Suuri kuormitus;
'Surface water - high contamination';Pintavesi - Suuri kuormitus;
'Käyttäjä';Ei valmista luokitusta, määrittelen mikrobipitoisuudet itse|
'Hand input';Ei valmista luokitusta, määrittelen mikrobipitoisuudet itse|
category:Perustiedot|
category:Perustiedot|
name:IVedenkulutus|default:1.153|description:Veden juominen (litraa /pvä)|
name:rawconsumption|default:0.25|description:Kylmän hanaveden juominen (litraa/pvä)|
name:Vaestonkoko|default:100000|description:Altistuvan väestön koko|
name:total_population|default:10000|description:Altistuvan väestön koko|
name:Kampylo|description:Kampylobakteeri-pitoisuus arvio (mikrobia/l)|default:0|
name:Campylo|description:Kampylobakteerin määrä (mikrobia/l)|default:0|
category:Raakaveden mikrobipitoisuudet (jos ei valmista luokitusta)|
category:Taudinaiheuttajien määrät raakavedessä (jos ei valmista luokitusta)|
category_conditions:RaakaLuokka;'Käyttäjä'|
category_conditions:RaakaLuokka;'Käyttäjä'|
name:Ecoli|description:E.coli O157:H7 -pitoisuus arvio (mikrobia/l)|default:0|
name:E.coli|description:''E.coli'' O157:H7 määrä (mikrobia/l)|default:0|
name:Rota|description:Rotavirus-pitoisuus arvio (mikrobia/l)|default:0|
name:Rota|description:Rotaviruksen määrä (mikrobia/l)|default:0|
name:Noro|description:Norovirus-pitoisuus arvio (mikrobia/l)|default:0|
name:Noro|description:Noroviruksen määrä (mikrobia/l)|default:0|
name:Crypto|description:Cryptosporidium-pitoisuus arvio (mikrobia/l)|default:0|
name:Sapo|description:Sapoviruksen määrä (mikrobia/l)|default:0|
name:Giardia|description:Giardia-pitoisuus arvio (mikrobia/l)|default:0|
name:Crypto|description:Cryptosporidiumin määrä (mikrobia/l)|default:0|
name:Puhdistus|description:Käytössä olevat puhdistusmenetelmät|type:checkbox|options:
name:Giardia|description:Giardian määrä (mikrobia/l)|default:0|
1;Perinteinen puhdistus;
 
2;Hyvin toimva puhdistus;
name:treatment|description:Käytössä olevat puhdistusmenetelmät|type:checkbox|options:
3;Tehostettu puhdistus;
'Coagulation and flotation';Saostaminen ja flotaatio;
4;Hidas hiekkasuodatus;
'Slow sand filtration';Hidas hiekkasuodatus;
5;Kalkkikivisuodatus;
'Lime stone filtration';Kalkkikivisuodatus;
6;Aktiivihiilisuodatus;
'Active carbon filtration';Aktiivihiilisuodatus|
7;UV suodatus;
8;Otsonointi|default:1;4;5;6|
category:Vedenpuhdistus: Puhdistusprosessi ja klooraus|
category:Vedenpuhdistus: Puhdistusprosessi ja klooraus|
name:IKlooriAnnos|default:1.5|description:Klooriannos (mg/l)
">
#This is code Op_fi26 on page [[:op_fi:Vesiopas]]


#######This part was removed from the interface because the code does not use it.
name:chlorinedose|default:0|description:Klooriannos (mg/l)|
# name:Kaupunki|description:Kaupungin oletusarvot|default:'Custom'|type:selection|
        name:ozonedose|default:0|description:Otsoniannos (mg/l)|
# options:
        name:uvdose|default:0|description:UV annos (mW/cm^2)|
# 'Custom';- valitse -;
        name:uvtime|default:0|description:UV aika (s)
# 'Op_fi2603';Kuopio|
"
# category:Kaupungin oletusarvot vedenpuhdistukselle|
>
# category_conditions:Kaupunki;'- valitse -'|
# This is code Op_fi2583/answer on page [[Water guide]]
####################################3333


library(OpasnetUtils)
library(OpasnetUtils)
library(ggplot2)
library(tidyverse)
library(reshape2)
 
#if(RaakaLuokka != 'Käyttäjä') {
#  Kampylo <- 'Luokituksen mukainen'
#  Ecoli <- 'Luokituksen mukainen'
#  Rota <- 'Luokituksen mukainen'
#  Noro <- 'Luokituksen mukainen'
#  Crypto <- 'Luokituksen mukainen'
#  Giardia <- 'Luokituksen mukainen'
#}
 
#IRaakaPitoisuus <- list(Kampylo, Ecoli, Rota, Noro, Crypto, Giardia)


# Vedenkulutus
# Default variables that can be used if no user interface is available


if (!is.na(suppressWarnings(as.numeric(IVedenkulutus)))) {
if(FALSE) {
   InpVedenkulutus = data.frame(VedenkulutusResult = IVedenkulutus)
  rawclass <- 'Surface water - high contamination' # ;Pintavesi - Suuri kuormitus;
   InpVedenkulutus = Ovariable("Vedenkulutus", output = InpVedenkulutus)
  rawconsumption <- 0.25 # Kylmän hanaveden juominen (litraa/pvä)
  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)
}
}


# Patogeenien pitoisuudet


objects.latest("Op_fi2655", "muuttuja") # [[Raakaveden patogeenipitoisuudet]] RaakaPitoisuus, customoitia varten
objects.latest("Op_en6177", code_name="waterguide") # [[Water guide]] fetch the whole model


if(RaakaLuokka == "Käyttäjä") {
# Create ovariables from user input data
RaakaPitoisuus <- Ovariable("RaakaPitoisuus", data = data.frame(
RawClass <- Ovariable("RawClass", data=data.frame(RawWaterClass = rawclass, Result=1))
Patogeeni = c("Kampylobakteeri", "E.coli O157:H7", "Rotavirus", "Norovirus", "Cryptosporidium", "Giardia"),  
Treatment <- Ovariable("Treatment", data=data.frame(TreatmentMethod=c(treatment, "None"), Result=1))
Result = c(Kampylo, Ecoli, Rota, Noro, Crypto, Giardia)
ChlorineDose <- Ovariable("ChlorineDose", data=data.frame(Result=chlorinedose))
))
UVdose <- Ovariable("UVdose", data=data.frame(Result=uvdose))
} else {
UVtime <- Ovariable("UVtime", data=data.frame(Result=uvtime))
RaakaPitoisuus@data <- RaakaPitoisuus@data[as.character(RaakaPitoisuus@data$Raakavesilähde) == RaakaLuokka , ]
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)
                        }
)


RaakaPitoisuus <- EvalOutput(RaakaPitoisuus)


# Tämä vanha koodi on monimpuolisempi ja mahdollistaa yksittäisen patogeenin pitoisuuden antamisen muiden tullessa oletusarvosta.
# if the raw concentrations were chosen to be given by hand, put them into an ovariable
# Kuitenkin käyttöliittymää on nyt selkeytetty niin ettei käyttäjälle tarjota mahdollisuutta antaa tietoa tällä tavalla.
# if some raw water class was chosen, this isn't done, and instead the data for microbe concentrations for that class is used
#temp <- RaakaPitoisuus@output
if (rawclass == "Hand input") {
 
  RawConcentration <- Ovariable(
#temp <- temp[as.character(temp$Raakavesilähde) == RaakaLuokka, ]
    "RawConcentration",
 
    data=data.frame(
#temp <- merge(
      Pathogen=c(
#  temp,  
        "campylobacter",
data.frame(
        "E.coli O157:H7",
#    Patogeeni = c("Kampylobakteeri","E.coli O157:H7","Rotavirus","Norovirus","Cryptosporidium","Giardia"),  
        "rotavirus",
#    TempResult = suppressWarnings(as.numeric(IRaakaPitoisuus))
        "norovirus",
#  )
        "sapovirus",
#)
        "cryptosporidium",
#temp$RaakaPitoisuusResult <- ifelse(
        "giardia"),
#  is.na(temp$TempResult),  
      Result=c(
#  temp$RaakaPitoisuusResult,
        Campylo,
#  temp$TempResult
        E.coli,
#)
        Rota,
#RaakaPitoisuus@output <- temp[, !colnames(temp) %in% c("TempResult", "Raakavesilähde")]
        Noro,
 
        Sapo,
temp <- rep(FALSE,9) # vaihtoehdot + klooraus joka on mallin rakenteesta johtuen aina epätosi
        Crypto,
temp[Puhdistus] <- TRUE
        Giardia)
Puhdistus <- temp
    )
 
   )
if (!is.na(suppressWarnings(as.numeric(IKlooriAnnos)))) if (IKlooriAnnos >= 0) {
   InpKlooriAnnos <- Ovariable("KlooriAnnos", output = data.frame(KlooriAnnosResult = IKlooriAnnos))
}
}


# Käsitellään puhdistusmenetelmät käsin tätä mallia varten
BoDattr <- unkeep(EvalOutput(BoDattr, verbose=FALSE, forceEval=TRUE),sources=TRUE, prevresults = TRUE)
 
BoDattr$Age <- factor(BoDattr$Age, levels=c("0-4","5-9","10-14","15-64","65-79","80+"))
riippuvuudet <- data.frame(
# calculate the number of cases
  Name = c("RaakaPitoisuus", "Desinfiointi", "PuhdistusTeho", "KloorausTeho"),
cases <- BoDattr/case_burden
  Ident = c("Op_fi2655/muuttuja", "Op_fi2993/muuttuja", "Op_fi2656/muuttuja", "Op_fi2667/tehokkuus")
)
 
objects.latest("Op_fi2993", "muuttuja") # [[Juomaveden desinfiointi]] Desinfiointi: klooraus ym
 
objects.latest("Op_fi2656", "muuttuja") # [[Vedenkäsittelyn tehokkuus]] PuhdistusTeho: suodatukset ym
 
PuhdistusTeho <- EvalOutput(PuhdistusTeho)
Desinfiointi <- EvalOutput(Desinfiointi)
 
Puhdistus <- data.frame(
  Käytössä = Puhdistus,
  Puhdistusmenetelmä = c("Perinteinen puhdistus", "Hyvin toimva puhdistus",
                        "Tehostettu puhdistus" ,"Hidas hiekkasuodatus", "Kalkkikivisuodatus",
                        "Aktiivihiilisuodatus", "UV", "Otsonointi", "Klooraus")
)
 
PuhdistusTeho@output <- merge(PuhdistusTeho@output, Puhdistus[1:6,]) # Vedenkäsittelymenetelmät
 
Desinfiointi@output <- merge(Desinfiointi@output, Puhdistus[7:9,]) # Desinfiointimenetelmät
 
PuhdistusTeho@output$PuhdistusTehoResult <- ifelse(
  PuhdistusTeho@output$Käytössä,
  PuhdistusTeho@output$PuhdistusTehoResult,
  0
)
Desinfiointi@output$DesinfiointiResult <- ifelse(
  Desinfiointi@output$Käytössä,
  Desinfiointi@output$DesinfiointiResult,
  0
)
 
# Poistetaan "Käytössä" kolumni
PuhdistusTeho@output <- PuhdistusTeho@output[, !colnames(PuhdistusTeho@output) == "Käytössä"]
Desinfiointi@output <- Desinfiointi@output[, !colnames(Desinfiointi@output) == "Käytössä"]
 
objects.latest("Op_fi1759", "muuttuja") # [[Infektion todennäköisyys per henkilö]] Vaste
 
Vaste <- EvalOutput(Vaste, substitute = TRUE)
 
#################################################################################
 
dose.response = Vaste@output
 
Pathogen <- c("Kampylobakteeri","E.coli O157:H7","Rotavirus","Norovirus","Cryptosporidium","Giardia")
 
vaesto <- opbase.data("Op_fi2652")[,c("Ikä","Result")] # [[Suomen ikäjakauma]]
colnames(vaesto) <- c("Age", "Osuus")
 
vaesto$Populaatio <- vaesto$Osuus * Vaestonkoko
 
odotettu.elinika <- 81
 
colnames(dose.response)[colnames(dose.response) == "Patogeeni"] <- "Pathogen"
colnames(dose.response)[colnames(dose.response) == "VasteResult"] <- "P.inf"
colnames(dose.response)[colnames(dose.response) == "AltistuminenResult"] <- "Exp.pat"
 
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)))
cat("Raakaveden patogeenipitoisuudet, microbes/l\n")
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"]
oprint(summary(RawConcentration))
P.death.Rotavirus$Life.lost <- odotettu.elinika - P.death.Rotavirus$Age
cat("Altistuminen, juomaveden mukana nieltyjen mikrobien määrä päivittäin\n")
daly.death.Rotavirus <- data.frame(Age = P.death.Rotavirus$Age, dalys = P.death.Rotavirus$P.death.g.inf * P.death.Rotavirus$Life.lost)
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")))


# Norovirus
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)


P.treat.g.ill.Norovirus <- data.frame(Pathogen = "Norovirus", ill.treat = c("Untreated",  
ggplot(
                                                                            "General practitioner", "Hospitalised")[rep(1:3, each = 82)], Age = rep(0:81, 3), P.treat.g.ill = c(rep(0.94876706,5),
  oapply(unkeep(BoDattr, sources=TRUE), NULL, mean, "Iter")@output,
                                                                                                                                                                                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),
  aes(x=Age, weight=BoDattrResult, fill=Response)) +
                                                                                                                                                                                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),  
  geom_bar() +
                                                                                                                                                                                rep(8.85e-004, 16)))
  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")


P.treat.ill.g.inf.Norovirus <- merge(P.treat.g.ill.Norovirus, P.ill.g.inf)
label2 <- oapply(cases, c("Exposure_agent", "Iter"), sum)
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
label2 <- oapply(unkeep(label2, sources=TRUE), NULL, mean, "Iter")@output$Result
ggplot(
  oapply(unkeep(cases, 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="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)


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,  
# cases as percent of beachgoers
                                                                                                                          0.393, 0.393))
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)


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)))
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"))
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
 
temp <- merge(dose.response, P.ill.g.inf)
 
############# EXTRA ###########################################
 
MikrobienLogVähenemä <- combine(Desinfiointi, PuhdistusTeho, KloorausTeho, name = "MikrobienLogVähenemä")
 
MikrobienLogVähenemä@output[["Puhdistusmenetelmä"]][
  MikrobienLogVähenemä@output[["MikrobienLogVähenemäSource"]] == "KloorausTehoFormula"
  ] <- "Klooraus"
 
#MikrobienLogVähenemä <- oapply(MikrobienLogVähenemä, cols = c("Puhdistusmenetelmä", "KlooriAnnosSource"), FUN = sum, na.rm = TRUE)
 
#MikrobienLogVähenemä@output <- fillna(MikrobienLogVähenemä@output, colnames(MikrobienLogVähenemä@output)[MikrobienLogVähenemä@marginal])
 
############# TULOKSET #########################################################################################################
 
cat("Patogeenien konsentraatio raakavedessä\n")
oprint(RaakaPitoisuus) # Patogeenien konsentraatio raakavedessä
 
 
d <- data.frame(
Tieto = c("Käytetty klooriannos (mg/l)", "Vedenkulutus (l/hlö/vrk)", "Väestön koko"),
Arvo = c(IKlooriAnnos, IVedenkulutus, Vaestonkoko)
)
oprint(d)
 
cat("Käytetyt puhdistusmenetelmät:\n")
 
oprint(Puhdistus[Puhdistus$Käytössä == 1, ])
 
cat("Patogeenien log vähenemä puhdistuksessa (Kuva 1.)\n")
 
ggplot(MikrobienLogVähenemä@output, aes(x = Patogeeni, weight = MikrobienLogVähenemäResult, fill = Puhdistusmenetelmä)) +
geom_bar() + theme_gray(base_size = 24) + labs(title = "Kuva 1. Mikrobien log-vähenemä")
 
cat("Patogeeneille altistuminen ja infektion todennäköisyys\n")
oprint(Vaste@output[,c("Patogeeni", "AltistuminenResult", "VasteResult")], digits = 6) # Patogeeneille altistuminen ja infektion todennäköisyys (vaste)
 
cat("Arvioitu terveysvaikutus\n")
 
cat(sum((1 - (1 - temp$P.ill.g.inf * temp$P.inf)^365) * Vaestonkoko, na.rm = TRUE), " vatsatautia vuodessa \n")
 
cat(sum(Health.effects$DALYs, na.rm = TRUE), " DALY:ä vatsataudeista \n")
</rcode>
</rcode>


  Tulossivu avautuu uudelle välilehdelle painamalla aja koodi -laatikkoa. Tulokset saa näkyviin päivittämällä tulossivun noin minuutti aja koodi-toiminnon jälkeen.
  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 ===
Rivi 517: Rivi 236:
Valitse 'Määrittelen mikrobipitoisuudet itse'. Kirjoita patogeenien pitoisuudet niiden laatikoihin.
Valitse 'Määrittelen mikrobipitoisuudet itse'. Kirjoita patogeenien pitoisuudet niiden laatikoihin.


'''2. Ilmoita juomaveden kulutus''' vuorokautta kohden litroina päivässä henkeä kohti (oletus 1.153 l/pvä).
'''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)
'''3. Ilmoita kohdealueen väestön lukumäärä.''' (oletus 100000)
Rivi 523: Rivi 242:
'''4. Valitse puhdistusprosessit.''' Huom! Voit valita monta vaihtoehtoa
'''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 1.5 mg/l).
'''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'.'''
'''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.
 
Kahdesta ensimmäisestä taulukosta ja yhdestä sivun lopussa olevasta kuvasta näkee millaisia lähtöarvoja malliin on syötetty. Terveysvaikutuksina ilmoitetaan kaksi tulosta:
*Montako vatsatautitapausta alueella on vuodessa.
*Montako [[DALY]]a eli toimintakyvyllä painotettua elinvuotta menetetään vatsatautitapausten vuoksi ko. alueella.
}}
}}


Rivi 563: Rivi 278:
=== Riippuvuudet ===
=== Riippuvuudet ===


* Op_fi2652 [[Suomen ikäjakauma]]: Populaation koko, Väestön ikärakenne, Odotettu elinikä
{| {{prettytable}}
* Op_fi1759 [[Infektion todennäköisyys per henkilö]]
|+ '''Sivut, joilta mallin käyttämä data ja koodit löytyvät
** Op_fi2653 [[Patogeenien annosvasteet]]
! Sivu !! Mitä dataa tai koodia sivulla on !! Mitä sillä tehdään !! Muita huomioita
** Op_fi2994 [[Paikkakuntakohtaiset tiedot talousveden käsittelyyn]] väestömäärä ja vedenkulutus
|----
** Op_fi2669 [[Patogeeneille altistuminen]]
| 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_fi1757 [[Juomaveden kulutus]]
|----
*** Op_fi2668 [[Patogeenien pitoisuudet puhdistetussa juomavedessä]]
| 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_fi2655 [[Raakaveden patogeenipitoisuudet]]
|----
**** Op_fi2656 [[Vedenkäsittelyn tehokkuus]] (Suodatukset ym)
| 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_fi2993 [[Juomaveden desinfiointi]] (klooraus ym)
|----
**** Op_fi2667 [[Klooraus]]
| 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. ||
|}


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


{{metodi|moderator = Päivi Meriläinen}}
{{metodi|moderator = Päivi Meriläinen}}
* [https://www.vesi.fi/ Ajantasaista vesitietoa vesi.fi]
*[[Juomaveden patogeenit]]
*[[Juomaveden patogeenit]]
*[[Juomaveden patogeenien terveysvaikutukset]]
*[[Juomaveden patogeenien terveysvaikutukset]]
Rivi 586: Rivi 313:
* [[Mikrobien määrä juomavedessä]]
* [[Mikrobien määrä juomavedessä]]
* [[Mikrobien määrä pohjavedessä]]
* [[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]
* [http://fi.opasnet.org/fi-opwiki/index.php?title=Vesiopas&oldid=35905 Vanha, arkistoitu versio mallista]
*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


*http://www.fao.org/docrep/006/y4666e/y4666e06.htm#TopOfPage
*http://wiki.camra.msu.edu/index.php?title=Main_Page
*http://www.medicina.fi/index.php?option=com_content&view=article&id=48&Itemid=56#I


; Turhia?
; Turhia?

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