Ero sivun ”Väestön kohdekohtainen ympäristöperäisen haitta-ainealtistumisen ja terveysriskin arviointi” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
 
(61 välissä olevaa versiota 6 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{metodi}}
#REDIRECT[[Väestön kohdekohtainen ympäristöperäisen haitta-ainealtistumisen arviointi]]
 
==Kysymys==
 
Kuinka arvioidaan kohdekohtaisesti väestön ympäristöperäinen altistuminen haitta-aineelle sekä altistumisesta aiheutuva terveysriski?
 
==Vastaus==
 
===Ennakolta määritellyt laskentaparametrit===
 
<t2b index="Parametri,Lyhenne,Yksikkö,Henkilö" obs="Arvo" unit="useita">
Altistumisperiodin pituus|At|vrk|Aikuinen|365
Altistumisperiodin pituus|At|vrk|Lapsi|365
Kehon paino|Bw|kg|Aikuinen|70
Kehon paino|Bw|kg|Lapsi|15
Hengitystiheys|Ir.air|m3/h|Aikuinen|0.83
Hengitystiheys|Ir.air|m3/h|Lapsi|0.32
Oleskeluaika sisätiloissa (keskiarvo altistumsperiodille)|Ef.air.indoor|h/vrk|Aikuinen|22.86
Oleskeluaika sisätiloissa (keskiarvo altistumsperiodille)|Ef.air.indoor|h/vrk|Lapsi|21.14
Juomaveden kulutus|Ir.dw|l/vrk|Aikuinen|0.7
Juomaveden kulutus|Ir.dw|l/vrk|Lapsi|0.2
Altistumistiheys, juomavesi|Ef.dw|vrk/vuosi|Aikuinen|365
Altistumistiheys, juomavesi|Ef.dw|vrk/vuosi|Lapsi|365
Niellyn maa-aineksen määrä|Ir.soil|mg/vrk/ton|Aikuinen|50
Niellyn maa-aineksen määrä|Ir.soil|mg/vrk|Lapsi|150
Maa-aineksen kiinnittyminen iholle|Soil.ad.skin|mg/cm2/vrk|Aikuinen|0.25
Maa-aineksen kiinnittyminen iholle|Soil.ad.skin|mg/cm2/vrk|Lapsi|0.25
Maa-ainekselle altistuvan ihon osuus|F.skin.soil||Aikuinen|0.05
Maa-ainekselle altistuvan ihon osuus|F.skin.soil||Lapsi|0.2
Altistumistiheys, maa-aines|Ef.soil|vrk/vuosi|Aikuinen|255
Altistumistiheys, maa-aines|Ef.soil|vrk/vuosi|Lapsi|255
Vihannesten kokonaiskulutus (keskiarvo altistumsperiodille)|Ir.lfc|kg/vrk|Aikuinen|0.110
Vihannesten kokonaiskulutus (keskiarvo altistumsperiodille)|Ir.lfc|kg/vrk|Lapsi|0.055
Juuresten kokonaiskulutus (keskiarvo altistumsperiodille)|Ir.tfc|kg/vrk|Aikuinen|0.200
Juuresten kokonaiskulutus (keskiarvo altistumsperiodille)|Ir.tfc|kg/vrk|Lapsi|0.100
Marjojen kokonaiskulutus (keskiarvo altistumsperiodille)|Ir.berries|kg/vrk|Aikuinen|0.044
Marjojen kokonaiskulutus (keskiarvo altistumsperiodille)|Ir.berries|kg/vrk|Lapsi|0.035
Paikallisten vihannesten osuus kokonaiskulutuksesta (keskiarvo altistumsperiodille)|F.lfc.loc||Aikuinen|0.1
Paikallisten vihannesten osuus kokonaiskulutuksesta (keskiarvo altistumsperiodille)|F.lfc.loc||Lapsi|0.1
Paikallisten juuresten osuus kokonaiskulutuksesta (keskiarvo altistumsperiodille)|F.tfc.loc||Aikuinen|0.1
Paikallisten juuresten osuus kokonaiskulutuksesta (keskiarvo altistumsperiodille)|F.tfc.loc||Lapsi|0.1
Paikallisten marjojen osuus kokonaiskulutuksesta (keskiarvo altistumsperiodille)|F.berries.loc||Aikuinen|0.5
Paikallisten marjojen osuus kokonaiskulutuksesta (keskiarvo altistumsperiodille)|F.berries.loc||Lapsi|0.5
Peseytymiseen kuluva aika|Ed.bw|h/vrk|Aikuinen|0.25
Peseytymiseen kuluva aika|Ed.bw|h/vrk|Lapsi|0.25
Altistumistiheys, pesuvesi|Ef.bw|vrk/vuosi|Aikuinen|365
Altistumistiheys, pesuvesi|Ef.bw|vrk/vuosi|Lapsi|365
Pesuvedelle altistuvan ihon osuus|F.skin.bw||Aikuinen|1
Pesuvedelle altistuvan ihon osuus|F.skin.bw||Lapsi|1
Uidessa niellyn pintaveden määrä|Ir.sw|l/uintikerta|Aikuinen|0.05
Uidessa niellyn pintaveden määrä|Ir.sw|l/uintikerta|Lapsi|0.05
Uintikerran kesto|Ed.sw|h/uintikerta|Aikuinen|0.25
Uintikerran kesto|Ed.sw|h/uintikerta|Lapsi|0.25
Altistumistiheys, pintavesi|Ef.sw|Uintikerta/vuosi|Aikuinen|30
Altistumistiheys, pintavesi|Ef.sw|Uintikerta/vuosi|Lapsi|30
Pintavedelle altistuvan ihon osuus|F.skin.sw||Aikuinen|1
Pintavedelle altistuvan ihon osuus|F.skin.sw||Lapsi|1
</t2b>
 
===Mallifunktio===
 
<rcode name="answer" include="page:OpasnetBaseUtils|name:generic">
 
cat("Ladataan funktioita. \n")
 
library(OpasnetBaseUtils)
library(xtable)
 
########################## tf is a function that takes one large table, finds matching rows and
#### produces a standard-format vector that can be operated with easily. Parameters:
# condition  = a vector with conditions for each condition column. The length must be ncol(col.condition).
############ External parameters (these must be defined as objects before the function is run;
##### they are not given in the function but they are used by it):
# data          = a data frame that contains the data
# col.condition = vector with names of columns that contain the indices that must match in the data
# col.common    = vector with names of columns that are used as indices in calculations.
# col.result    = the column that contains the actual values.
 
tf <- function(condition, ...) {
 
# Take the part of data that fits the condition. Drop all columns but col.common and col.result.
out <- data[data[col.condition] == condition, c(col.common, col.result)]
 
# Merge the selected data with all col.common and drop possible extra rows so that the outcome always has the same size.
out <- merge(unique(data[col.common]), out, all = TRUE)
out <- out[rownames(unique(out[col.common])), ]
return(out[, col.result])
}
 
####################Funktio väestön ympäristöperäisen haitta-ainealtistumisen määrittelyyn
########Saanti lasketaan yksikössä mg/kg/d kun ympäristön haitta-ainepitoisuudet on ilmoitettu yksiköissä mg/m3 (ilma), mg/l (vesi) sekä mg/kg (kiinteät väliaineet)
 
Chronic.environmental.exposure.to.toxic.substances <- function(C.air.outdoor, C.air.indoor, data, ...) {
 
##Hengitystiet
 
Air.inh <- ((C.air.outdoor * ((24 - tf("Ef.air.indoor")) / 24)) + (C.air.indoor * (tf("Ef.air.indoor") / 24))) * tf("Ir.air") / (tf("Bw") * tf("At"))
 
##Ruuansulatuskanava
 
###Juomavesi
 
Dw.ing <- C.dw * tf("Ir.dw") * tf("Ef.dw") / (tf("Bw") * tf("At"))
 
###Maaperä
 
Soil.ing <- C.soil * (tf("Ir.soil") / 1000000) * tf("Ef.soil") / (tf("Bw") * tf("At"))
 
###Vihannekset
 
Lfc.ing <- C.lfc * tf("Ir.lfc") * tf("F.lfc.loc") / tf("Bw")
 
###Juurekset
 
Tfc.ing <- C.tfc * tf("Ir.tfc") * tf("F.tfc.loc") / tf("Bw")
 
###Marjat
 
Berries.ing <- C.berries * tf("Ir.berries") * tf("F.berries.loc") / tf("Bw")
 
###Pintavesi
 
Sw.ing <- C.sw * tf("Ir.sw") * tf("Ef.sw") / (tf("Bw") * tf("At"))
 
##Iho
 
Skin.sa <- (4 * tf("Bw") + 7) / (tf("Bw") + 90) * 10000 #Lasketaan ihon kokonaispinta-ala
 
###Maaperä
 
Soil.derm <- C.soil * tf("Soil.ad.skin") * 0.000001 * Skin.sa * tf("F.skin.soil") * Abs.skin.soil * tf("Ef.soil") / (tf("Bw") * tf("At"))
 
###Pesuvesi
 
Bw.derm <- C.bw * 0.001 * Kp * tf("Ef.bw") * tf("Ed.bw") * Skin.sa * tf("F.skin.bw") / (tf("Bw") * tf("At"))
 
###Pintavesi
 
Sw.derm <- C.sw * 0.001 * Kp * tf("Ef.sw") * tf("Ed.sw") * Skin.sa * tf("F.skin.sw") / (tf("Bw") * tf("At"))
 
 
#Laskennan jälkeen lisätään yhteiset sarakkeet col.common ja kootaan altistuminen kaikkien altistumisreittien kautta allekkain yhteen tauluun.
 
common <- merge(unique(data[col.common]), data.frame(temp=1))[-(length(col.common)+1)]
 
out <- data.frame(common, Altistumisreitti = rep(c("Hengitystiet", "Juomavesi", "Maaperä (ruuansulatuskanava)", "Vihannekset", "Juurekset", "Marjat", "Pintavesi (ruuansulatuskanava)", "Maaperä (iho)", "Pesuvesi (iho)", "Pintavesi (iho)", "Taustasaanti"), each = nrow(common)), Result = c(Air.inh, Dw.ing, Soil.ing, Lfc.ing, Tfc.ing, Berries.ing, Sw.ing, Soil.derm, Bw.derm, Sw.derm, Background.intake.adult, Background.intake.child))
return(out)
}
 
 
 
 
 
#################Funktio ympäristön terveysperusteisen laadun tarkasteluun
 
Health.based.environmental.quality <- function(Concentration, EQC){
 
#Ympäristöpitoisuuksien vertailu haitta-aineen terveysperusteisiin ohjearvopitoisuuksiin
 
HEQ.air.outdoor <- C.air.outdoor / HEQC.air.outdoor  #Ulkoilma
HEQ.air.indoor <- C.air.indoor / HEQC.air.indoor  #Sisäilma
HEQ.dw <- C.dw / HEQC.dw  #Juomavesi
HEQ.soil <- C.soil / HEQC.soil  #Maaperä
HEQ.lfc <- C.lfc / HEQC.lfc  #Vihannekset
HEQ.tfc <- C.tfc / HEQC.tfc  #Juurekset
HEQ.berries <- C.berries / HEQC.berries  #Marjat
HEQ.sw <- C.sw / HEQC.sw  #Pintavesi
 
out <- data.frame(Väliaine = c("Ulkoilma", "Sisäilma", "Juomavesi", "Maaperä", "Vihannekset", "Juurekset", "Marjat", "Pintavesi"), Result = c(HEQ.air.outdoor, HEQ.air.indoor, HEQ.dw, HEQ.soil, HEQ.lfc, HEQ.tfc, HEQ.berries, HEQ.sw))
return(out)
}
 
 
 
 
 
 
#################Funktio väestön ympäristöperäisestä haitta-ainealtistumisesta aiheutuvan terveysriskin karakterisointiin
 
Health.risk.characterisation.of.chronic.exposure.to.toxic.substances <- function(Exposure, Toxicity){
 
 
###Päivittäinen kokonaissaanti
 
#####expo = Chronic.environmental.exposure.to.toxic.substances -funktion tuottama altistumistaulu
 
Tot.intake.adult <- expo[expo$Henkilö == "Aikuinen",]
Tot.intake.adult <- sum(Tot.intake.adult$Result)
HQ.intake.adult <- Tot.intake.adult / TDI
MOS.intake.adult <- NOAEL.ing / Tot.intake.adult
 
Tot.intake.child <- expo[expo$Henkilö == "Lapsi",]
Tot.intake.child <- sum(Tot.intake.child$Result)
HQ.intake.child <- Tot.intake.child / TDI
MOS.intake.child <- NOAEL.ing / Tot.intake.child
 
Tot.intake.lifetime <- (Tot.intake.child * 6 + Tot.intake.adult * 64) / 70
HQ.intake.lifetime <- Tot.intake.lifetime / TDI
MOS.intake.lifetime <- NOAEL.ing / Tot.intake.lifetime
 
 
###Päivittäinen hengitystiealtistuminen
 
#####Keskimääräinen hengitysilman haitta-ainepitoisuus eri altistujatyypeillä
Ef.air.indoor <- data[data$Lyhenne == "Ef.air.indoor",]
Ef.air.indoor.adult <- (Ef.air.indoor[Ef.air.indoor$Henkilö == "Aikuinen",])$Result
Ef.air.indoor.child <- (Ef.air.indoor[Ef.air.indoor$Henkilö == "Lapsi",])$Result
C.inhaled.air.adult <- (C.air.outdoor * ((24 - Ef.air.indoor.adult) / 24)) + (C.air.indoor * (Ef.air.indoor.adult / 24))
C.inhaled.air.child <- (C.air.outdoor * ((24 - Ef.air.indoor.child) / 24)) + (C.air.indoor * (Ef.air.indoor.child / 24))
C.inhaled.air.lifetime <- (C.inhaled.air.child * 6 + C.inhaled.air.adult * 64) / 70
 
HQ.inhalation.adult <- C.inhaled.air.adult / TCA
MOS.inhalation.adult <- NOAEC.inh / C.inhaled.air.adult
 
HQ.inhalation.child <- C.inhaled.air.child / TCA
MOS.inhalation.child <- NOAEC.inh / C.inhaled.air.child
 
HQ.inhalation.lifetime <- C.inhaled.air.lifetime / TCA
MOS.inhalation.lifetime <- NOAEC.inh / C.inhaled.air.lifetime
 
 
###Elinikäinen syöpäriski
 
Cancer.risk.intake <- Tot.intake.lifetime * Cancer.unit.risk.intake
Cancer.cases.intake <- Cancer.risk.intake * Population
 
Cancer.risk.inhalation <- C.inhaled.air.lifetime * Cancer.unit.risk.inhalation
Cancer.cases.inhalation <- Cancer.risk.inhalation * Population
 
###Kootaan kaikki riski-indikaattorit yhteen tauluun
 
Noncancer.risk <- data.frame(Altistumisreitti = rep(c("Kokonaissaanti", "Hengitystiet"), each=6), Terveysvaikutus = c("Muu kuin genotoksinen karsinogeneesi"), Riski.indikaattori = rep(rep(c("Vaaraosamäärä (HQ)", "Turvamarginaali (MOS)"), each=3), times=2), Altistumistaso = c("Aikuinen", "Lapsi", "Elinikäinen"), Result = c(HQ.intake.adult, HQ.intake.child, HQ.intake.lifetime, MOS.intake.adult, MOS.intake.child, MOS.intake.lifetime, HQ.inhalation.adult, HQ.inhalation.child, HQ.inhalation.lifetime, MOS.inhalation.adult, MOS.inhalation.child, MOS.inhalation.lifetime))
 
Cancer.risk <- data.frame(Altistumisreitti = rep(c("Kokonaissaanti", "Hengitystiet"), each=2), Terveysvaikutus = c("Genotoksinen karsinogeneesi"), Riski.indikaattori =c("Yksilön syöpäriski (per 100 000)", "Odotetut syöpätapaukset väestössä"), Altistumistaso = c("Elinikäinen"), Result = c(Cancer.risk.intake*100000, Cancer.cases.intake, Cancer.risk.inhalation*100000, Cancer.cases.inhalation))
 
out <- merge(Noncancer.risk, Cancer.risk, all=TRUE)
return(out)
}
 
</rcode>
 
===Arvioinnin tulos===
 
<rcode include="page:OpasnetBaseUtils|name:generic|page:Väestön_kohdekohtainen_ympäristöperäisen_haitta-ainealtistumisen_ja_terveysriskin_arviointi|name:answer"
variables="
name:C.air.outdoor|default:0.5|description:Haitta-aineen pitoisuus ulkoilmassa (µg/m3)|
name:C.air.indoor|default:0.5|description:Haitta-aineen pitoisuus sisäilmassa (µg/m3)|
name:C.dw|default:100|description:Haitta-aineen pitoisuus juomavedessä (mg/l)|
name:C.soil|default:1000|description:Haitta-aineen pitoisuus maaperässä (mg/kg)|
name:C.lfc|default:5|description:Haitta-aineen pitoisuus vihanneksissa (mg/kg tuorepainoa)|
name:C.tfc|default:5|description:Haitta-aineen pitoisuus juureksissa (mg/kg tuorepainoa)|
name:C.berries|default:5|description:Haitta-aineen pitoisuus marjoissa (mg/kg tuorepainoa)|
name:C.bw|default:0.5|description:Haitta-aineen pitoisuus pesuvedessä (mg/l)|
name:C.sw|default:0.5|description:Haitta-aineen pitoisuus pintavedessä (mg/l)|
name:Backgound.intake|default:100|description:Haitta-aineen päivittäinen muusta kuin tutkimuksen kohteena olevasta ympäristöstä aiheutuva taustasaanti(mg/kg/d)|
name:TDI|default:100|description:Haitta-aineen turvallisen päivittäisen saannin viitearvo (mg/kg/d)|
name:TCA|default:100|description:Haitta-aineen turvallisen päivittäisen hengitystiealtistumisen viitearvo (mg/m3)|
name:NOAEL.ing|default:100|description:Haitta-aineen päivitäisen saannin NOAEL/LOAEL-arvo (mg/kg/d)|
name:NOAEC.inh|default:100|description:Haitta-aineen päivitäisen hengitystiealtistumisen NOAEC/LOAEC-arvo (mg/kg/d)|
name:Cancer.unit.risk.intake|default:100|description:Haitta-aineen päivitäisen saannin yksikkösyöpäriski (mg/kg/d)|
name:NOAEC.inh|default:100|description:Haitta-aineen päivitäisen hengitystiealtistumisen yksikkösyöpäriski (µg/m3)|
name:Population|default:10000|description:Altistuvan väestön määrä
">
 
library(OpasnetBaseUtils)
library(xtable)
 
 
###########Tuloslaskenta
 
cat("Ladataan dataa. \n")
 
####Parametrien määrittely
 
C.air.outdoor <- 0.118/1000
C.air.indoor <- 0.118/1000
C.soil <- 2645
C.dw <- 0.06
C.lfc <- 2.5
C.tfc <- 0.9
C.berries <- 1.9
C.bw <- 0.06
C.sw <- 0.003
Abs.skin.soil <- 0.003
Kp <- 0.001
Background.intake.adult <- 0
Background.intake.child <- 0
 
HEQC.air.outdoor <- 0.001
HEQC.air.indoor <- 0.001
HEQC.dw <- 2
HEQC.soil <- 10000
HEQC.lfc <- NaN
HEQC.tfc <- NaN
HEQC.berries <- NaN
HEQC.sw <- NaN
 
TCA <- 0.001
TDI <- 0.14
NOAEC.inh <- 0.6
NOAEL.ing <- 16.3
Cancer.unit.risk.intake <- 1.5
Cancer.unit.risk.inhalation <- 2
Population <- 10000
 
page <- "Op_fi2814"
data <- tidy(op_baseGetData("opasnet_base", page))
 
### Määritellään ulkoiset parametrit Altistumislaskennan taulukon muokkaamista varten.
col.common <- "Henkilö"
col.result <- "Result"
col.condition = "Yksikkö" # Tämä on vain tilapäinen demonstraatio siitä että eri sarakkeita voi käyttää.
 
col.condition <- "Lyhenne" # Varsinaisesti meitä kiinnostavat sarakkeen Lyhenne määrittämät asiat.
 
 
###Altistumisen arvioinnin perusteena käytetyt ympäristön haitta-ainepitoisuudet
 
Environmental.concentration <- data.frame(Väliaine=c("Ulkoilma","Sisäilma","Juomavesi","Maaperä","Vihannekset","Juurekset","Marjat","Pesuvesi","Pintavesi"), Pitoisuus=c(C.air.outdoor,C.air.indoor,C.dw,C.soil,C.lfc,C.tfc,C.berries,C.bw,C.sw))
 
cat("Altistumisen arvioinnin perusteena käytetyt ympäristön haitta-ainepitoisuudet (ilma: mg/m3, vesi: mg/l, kiinteät väliaineet: mg/kg) \n")
Environmental.concentration
#print(xtable(Environmental.concentration), type = 'html')
 
Abs.skin.soil <- 0.003
Kp <- 0.001
Background.intake.adult <- 0
Background.intake.child <- 0
 
###Altistumislaskennan tulostaulu
 
expo <- Chronic.environmental.exposure.to.toxic.substances(C.air.outdoor, C.air.indoor, data)
intake.adult <- expo[expo$Henkilö == "Aikuinen",]
intake.child <- expo[expo$Henkilö == "Lapsi",]
intake.tot <- data.frame(Altistumisreitti="Kokonaissaanti", Aikuinen=sum(intake.adult$Result)*1000, Lapsi=sum(intake.child$Result)*1000)
 
intake.table <- data.frame(Altistumisreitti=intake.adult$Altistumisreitti, Aikuinen=(intake.adult$Result*1000), Lapsi=(intake.child$Result*1000))
intake.table <- merge(intake.table,intake.tot,all=TRUE)
intake.table$Elinikäinen <- (intake.table$Lapsi * 6 + intake.table$Aikuinen * 64) / 70
 
intake.fractions.adult <- (intake.table$Aikuinen / intake.tot$Aikuinen)*100
intake.fractions.child <- (intake.table$Lapsi / intake.tot$Lapsi)*100
intake.fractions.lifetime <- intake.table$Elinikäinen / ((intake.tot$Lapsi * 6 + intake.tot$Aikuinen * 64)/70)
intake.fractions.table <- data.frame(Altistumisreitti=intake.table$Altistumisreitti, Aikuinen=intake.fractions.adult, Lapsi=intake.fractions.child, Elinikäinen=intake.fractions.lifetime)
 
cat("Altistumisen arviointi. \n")
cat("Keskimääräinen päivittäinen haitta-aineen saanti (µg/kg/vrk). \n")
print(xtable(intake.table), type = 'html')
cat("Eri altistumisreittien osuus päivittäisestä saannista (%). \n")
print(xtable(intake.fractions.table), type = 'html')
 
 
###Ympäristöpitoisuuksien terveysperusteisen viitearvovertailun tulostaulu
 
cat("Haitta-aineen pitoisuus ympäristössä suhteutettuna terveysperusteiseen viitearvoon.\n")
HEQ.table <- Health.based.environmental.quality(Concentration, EQC)
print(xtable(HEQ.table), type = 'html')
 
 
###Terveysriskin karakterisoinnin tulostaulu
 
risk <- Health.risk.characterisation.of.chronic.exposure.to.toxic.substances(Exposure, Toxicity)
risk.adult <- risk[risk$Altistumistaso == "Aikuinen",]
risk.child <- risk[risk$Altistumistaso == "Lapsi",]
risk.lifetime <- risk[risk$Altistumistaso == "Elinikäinen",]
 
risk.table.a <- data.frame(Altistumisreitti=risk.adult$Altistumisreitti, Terveysvaikutus=risk.adult$Terveysvaikutus, Riski.indikaattori=risk.adult$Riski.indikaattori, Aikuinen=risk.adult$Result, Lapsi=risk.child$Result)
risk.table.b <- data.frame(Altistumisreitti=risk.lifetime$Altistumisreitti, Terveysvaikutus=risk.lifetime$Terveysvaikutus, Riski.indikaattori=risk.lifetime$Riski.indikaattori, Elinikäinen=risk.lifetime$Result)
 
risk.table <- merge(risk.table.a, risk.table.b, all=TRUE)
 
cat("Kroonisesta ympäristöperäisestä haitta-ainealtistumisesta aiheutuvan terveysriskin karakterisointi. \n")
print(xtable(risk.table), type = 'html')
 
 
</rcode>

Nykyinen versio 21. maaliskuuta 2013 kello 09.32