Food Modelling Journal :
FSKX (Food Safety Knowledge)
|
Corresponding author: Virginie Desvignes (virginie.desvignes@anses.fr)
Academic editor: Lyubomir Penev
Received: 02 Sep 2019 | Accepted: 25 Nov 2019 | Published: 23 Dec 2019
© 2019 Virginie Desvignes, Tasja Buschhardt, Laurent Guillier, Moez Sanaa
This is an open access article distributed under the terms of the Creative Commons Attribution License (CC BY 4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.
Citation:
Desvignes V, Buschhardt T, Guillier L, Sanaa M (2019) Quantitative microbial risk assessment for Salmonella in eggs. Food Modelling Journal 1: e39643. https://doi.org/10.3897/fmj.1.39643
|
The scope of this quantitative risk assessment model is to estimate the number of salmonellosis cases per million servings of table egg, as well as the probability of illness when ingesting a random serving of table egg. The model describes the potential egg contamination by Salmonella Enteritidis from farm to fork according to time/temperature storage conditions, as well as consumption practices.
QMRA model, eggs, Salmonella Enteritidis, R programming language
There were 91,662 human salmonellosis cases reported in Europe in 2017 (19.7 cases per 100,000 population) by the European Food Safety Authority and European Centre for Disease Prevention and Control (
This work provides a generic model for assessing the risk of salmonellosis associated with the consumption of table eggs. It estimates the expected number of salmonellosis cases based on the prevalence of egg contamination and the temperature profiles of egg storage. The exposure assessment model comprises six process steps of the egg food chain from lay to consumption: on farm before collection, during grading step, during transport to wholesale, during storage at wholesale, at retail and at household. The model was adapted from “Scientific Opinion on the public health risks of table eggs due to deterioration and development of pathogens” (
Source: RISK ASSESSMENTS: Risk assessments models
Identifier: QMRA_Salmonella_egg
Rights: Creative Commons Attribution-NonCommercial 4.0
Software: R
Product Name: Eggs Chicken
Product Unit: Piece
Hazard Name: Salmonella
Hazard Description: Salmonella Enteritidis
Study Title: QMRA for Salmonella Enteritidis in eggs
Study Description: This QMRA assesses the risk to consumers posed by Salmonella Enteritidis associated with the consumption of table eggs. The model estimates (a) the number of illnesses per million servings of egg (uncooked, lightly or well-cooked) and (b) the probability of illness when ingesting a random serving of egg.
Fig.
The exposure assessment model is composed of six steps. The evolution of the contamination along theses steps is assessed with the model equations described below. It takes into account the time and temperature conditions described in default simulation settings. Three scenarios of egg cooking are defined to assess the probability of illness: uncooked, lightly and well-cooked. The reduction of concentrations is applied to the initial concentration of S. Enteritidis in egg. Risk is evaluated when a random serving is ingested (i.e. either lightly or well-cooked egg).
The beta-Poisson dose response model was used to characterise the relationship between the ingested dose and the probability of salmonellosis. In this model, the variability in host-pathogen interaction is assumed to be beta distributed. The parameterisation of
Risk was estimated through different metrics (risk per serving or number of illnesses per millions of serving) for the different cooking modes of the eggs. The default number of simulations to explore variability was set to 2,000.
At each step, the yolk membrane breakdown time and the expected growth of S. Enteritidis following the membrane breakdown are estimated. These two parameters depend on the internal temperature of egg which varies at each step of the process. At the end of the six steps, the number of ingested bacteria is calculated and the dose-response model estimates the probability of illness. After that, risk is evaluated.
In this model, we only considered the internal contamination of egg with S. Enteritidis. Growth models of S. Enteritidis are different in egg yolk and albumen. While the yolk membrane does not break down, we consider the growth of S. Enteritidis albumen as insignificant. However, the resistance of the yolk membrane can decrease, for example, with the vibrations during the transport phase. At the storage phase, the resistance of the membrane depends on the time and temperature. At ambient temperature, the yolk membrane is rapidly damaged, leading to the yolk diffusion in egg albumen and contamination with S. Enteritidis. After the breakdown of the yolk membrane, the distribution of S. Enteritidis is considered to be uniform in the egg.
\((log_{10} TRMV=a+b \times T)\)
where \(TRMV\) is the time of the yolk membrane breakdown (day), \(a\) is the intercept of the equation (\(a\)= 2.0872 hours) (
The estimation of the time required for the yolk membrane breakdown becomes more complicated because the temperature is no longer constant and changes over time. The calculation of the breakdown time is, therefore, done step by step at each temperature change. In order to determine whether or not there is a rupture, the \(TRMV\) is calculated hourly as a function of temperature and the cumulative sum of the inverse of the different previous \(TRMVs\). If the sum of the inverses of the \(TRMVs\) is less than 1, then the membrane is considered still intact, otherwise (cumulative sum greater than or equal to 1), the yolk membrane is no longer intact and Salmonella growth then becomes possible.
Using the Rosso growth rate equation (
\((\mu_{max}=\mu_{opt} \times \gamma(T))\)
with \(\gamma(T) = \begin{cases}0 & \quad T < T_{min}\\\frac{(T-T_{max})(T-T_{min})^{2} }{(T_{opt}-T_{min})[(T_{opt}-T_{min})(T-T_{opt})-(T_{opt}-T_{max})(T_{opt}+T_{min}-2T)]} & \quad T_{min} \leq T \leq T_{max}\\0 & \quad T > T_{max}\end{cases}\)
where \(\mu_{max}\) is the growth rate (log10CFU/g per hour) at temperature \(T\) (°C), \(\mu_{opt}\) is the optimal growth rate (1.6) and \(\gamma(T)\) is the growth mitigation factor, \(T_{min}\) is the minimal growth temperature (6.29°C), \(T_{opt}\) is the optimum growth temperature (40.11°C) and \(T_{max}\) is the maximum growth temperature (43.46°C) (
The temperature of a laid egg is 41.2°C (
\(T = T_{s} +(T_{i}-T_{s})\space exp(-kr_{s}t_{s})\)
where \(T\) is th egg temperature (°C), \(T_{s}\) is the storage temperature in stage \(s\), \(T_{i}\) is the internal temperature at the start of the time interval, \(kr_{s}\) is the cooling rate constant in stage \(s\) and \(t_{s}\) is the time spent in stage \(s\). \(T_{s}\) follows a Pert distribution with \(minT\), \(modeT\) and \(maxT\) as parameters, which vary at each step of the process (Tables
Parameters used to describe the variability of times and temperatures for the steps from farm to consumer kitchen.
Process step | Minimum time period | Mode time period | Maximum time period | Minimum temperature | Mode temperature | Maximum temperature |
On farm, before collection | MinD1 | ModeD1 | MaxD1 | MinT1 | ModeT1 | MaxT1 |
Grading | MinD4 | ModeD4 | MaxD4 | MinT4 | ModeT4 | MaxT4 |
Transport to wholesale | MinD5 | ModeD5 | MaxD5 | MinT5 | ModeT5 | MaxT5 |
Storage at wholesale | MinD6 | ModeD6 | MaxD6 | MinT6 | ModeT6 | MaxT6 |
Retail | MinD8 | ModeD8 | MaxD8 | MinT8 | ModeT8 | MaxT8 |
Household | MinD10 | ModeD10 | MaxD10 | MinT10 | ModeT10 | MaxT10 |
Parameter values of the Pert distribution describing the cooling rate, according to the process step (
Process step | Minimum value | Mode value | Maximum value |
---|---|---|---|
On farm before collection | 0.8 | 0.9 | 1 |
Grading | 0.0528 | 0.08 | 0.1072 |
Transport to wholesale, Storage at wholesale, Retail, Household | 0.066 | 0.1 | 0.134 |
Description of the model parameters of the quantitative microbial risk assessment for Salmonella Enteritidis in eggs, according to metadata schema of FSK-ML
minD1 | |
parameterID | minD1 |
parameterClassification | input |
parameterName | minD1 |
parameterDescription | minimum time period at farm (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 2 |
modeD1 | |
parameterID | modeD1 |
parameterClassification | input |
parameterName | modeD1 |
parameterDescription | mode time period at farm (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 6 |
maxD1 | |
parameterID | maxD1 |
parameterClassification | input |
parameterName | maxD1 |
parameterDescription | maximum time period at farm (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 13 |
minD4 | |
parameterID | minD4 |
parameterClassification | input |
parameterName | minD4 |
parameterDescription | minimum time period at grading (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 1 |
modeD4 | |
parameterID | modeD4 |
parameterClassification | input |
parameterName | modeD4 |
parameterDescription | mode time period at grading (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 2 |
maxD4 | |
parameterID | maxD4 |
parameterClassification | input |
parameterName | maxD4 |
parameterDescription | maximum time period at grading (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 4 |
minD5 | |
parameterID | minD5 |
parameterClassification | input |
parameterName | minD5 |
parameterDescription | minimum time period at transport (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 7 |
modeD5 | |
parameterID | modeD5 |
parameterClassification | input |
parameterName | modeD5 |
parameterDescription | mode time period at transport (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 48 |
maxD5 | |
parameterID | maxD5 |
parameterClassification | input |
parameterName | maxD5 |
parameterDescription | maximum time period at transport (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 72 |
minD6 | |
parameterID | minD6 |
parameterClassification | input |
parameterName | minD6 |
parameterDescription | minimum time period at storage/wholesale (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 1 |
modeD6 | |
parameterID | modeD6 |
parameterClassification | input |
parameterName | modeD6 |
parameterDescription | mode time period at storage/wholesale (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 5 |
maxD6 | |
parameterID | maxD6 |
parameterClassification | input |
parameterName | maxD6 |
parameterDescription | maximum time period at storage/wholesale (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 24 |
minD8 | |
parameterID | minD8 |
parameterClassification | input |
parameterName | minD8 |
parameterDescription | minimum time period at retail (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 1 |
modeD8 | |
parameterID | modeD8 |
parameterClassification | input |
parameterName | modeD8 |
parameterDescription | mode time period at retail (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 24 |
maxD8 | |
parameterID | maxD8 |
parameterClassification | input |
parameterName | maxD8 |
parameterDescription | maximum time period at retail (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 72 |
minD10 | |
parameterID | minD10 |
parameterClassification | input |
parameterName | minD10 |
parameterDescription | minimum time period at household (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 1 |
modeD10 | |
parameterID | modeD10 |
parameterClassification | input |
parameterName | modeD10 |
parameterDescription | mode time period at household (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 24 |
maxD10 | |
parameterID | maxD10 |
parameterClassification | input |
parameterName | maxD10 |
parameterDescription | maximum time period at household (hours) |
parameterUnit | h |
parameterUnitCategory | time |
parameterDataType | integer |
parameterValue | 336 |
minT1 | |
parameterID | minT1 |
parameterClassification | input |
parameterName | minT1 |
parameterDescription | minimum temperature at farm |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 29 |
modeT1 | |
parameterID | modeT1 |
parameterClassification | input |
parameterName | modeT1 |
parameterDescription | mode temperature at farm |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 30 |
maxT1 | |
parameterID | maxT1 |
parameterClassification | input |
parameterName | maxT1 |
parameterDescription | maximum temperature at farm |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 35 |
minT4 | |
parameterID | minT4 |
parameterClassification | input |
parameterName | minT4 |
parameterDescription | minimum temperature at grading |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 25 |
modeT4 | |
parameterID | modeT4 |
parameterClassification | input |
parameterName | modeT4 |
parameterDescription | mode temperature at grading |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 27 |
maxT4 | |
parameterID | maxT4 |
parameterClassification | input |
parameterName | maxT4 |
parameterDescription | maximum temperature at grading |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 30 |
minT5 | |
parameterID | minT5 |
parameterClassification | input |
parameterName | minT5 |
parameterDescription | minimum temperature at transport |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 28 |
modeT5 | |
parameterID | modeT5 |
parameterClassification | input |
parameterName | modeT5 |
parameterDescription | mode temperature at transport |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 30 |
maxT5 | |
parameterID | maxT5 |
parameterClassification | input |
parameterName | maxT5 |
parameterDescription | maximum temperature at transport |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 33 |
minT6 | |
parameterID | minT6 |
parameterClassification | input |
parameterName | minT6 |
parameterDescription | minimum temperature at storage/wholesale |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 25 |
modeT6 | |
parameterID | modeT6 |
parameterClassification | input |
parameterName | modeT6 |
parameterDescription | mode temperature at storage/wholesale |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 27 |
maxT6 | |
parameterID | maxT6 |
parameterClassification | input |
parameterName | maxT6 |
parameterDescription | maximum temperature at storage/wholesale |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 30 |
minT8 | |
parameterID | minT8 |
parameterClassification | input |
parameterName | minT8 |
parameterDescription | minimum temperature at retail |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 20 |
modeT8 | |
parameterID | modeT8 |
parameterClassification | input |
parameterName | modeT8 |
parameterDescription | mode temperature at retail |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 25 |
maxT8 | |
parameterID | maxT8 |
parameterClassification | input |
parameterName | maxT8 |
parameterDescription | maximum temperature at retail |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 30 |
minT10 | |
parameterID | minT10 |
parameterClassification | input |
parameterName | minT10 |
parameterDescription | minimum temperature at household |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 6 |
modeT10 | |
parameterID | modeT10 |
parameterClassification | input |
parameterName | modeT10 |
parameterDescription | mode temperature at household |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 15 |
maxT10 | |
parameterID | maxT10 |
parameterClassification | input |
parameterName | maxT10 |
parameterDescription | maximum temperature at household |
parameterUnit | °C |
parameterUnitCategory | temperature |
parameterDataType | integer |
parameterValue | 30 |
sim | |
parameterID | sim |
parameterClassification | input |
parameterName | sim |
parameterDescription | simulation parameter: iteration number |
parameterUnit | others |
parameterUnitCategory | other |
parameterDataType | integer |
parameterValue | 2000 |
parameterValueMin | 1000.0 |
parameterValueMax | 10000.0 |
prevalence | |
parameterID | prevalence |
parameterClassification | input |
parameterName | prevalence |
parameterDescription | simulation parameter: prevalence of egg contamination |
parameterUnit | others |
parameterUnitCategory | other |
parameterDataType | double |
parameterValue | 0.1 |
parameterValueMin | 0.0 |
parameterValueMax | 1.0 |
freqcuisson | |
parameterID | freqcuisson |
parameterClassification | input |
parameterName | freqcuisson |
parameterDescription | simulation parameter: frequency of well-cooked eggs |
parameterUnit | others |
parameterUnitCategory | other |
parameterDataType | double |
parameterValue | 0.9 |
parameterValueMin | 0.0 |
parameterValueMax | 1.0 |
Rlcuit | |
parameterID | Rlcuit |
parameterClassification | output |
parameterName | Rlcuit |
parameterDescription | number of illnesses per million servings of lightly-cooked egg |
parameterUnit | others |
parameterUnitCategory | other |
parameterDataType | integer |
Rbcuit | |
parameterID | Rbcuit |
parameterClassification | output |
parameterName | Rbcuit |
parameterDescription | number of illnesses per million servings of well-cooked egg |
parameterUnit | others |
parameterUnitCategory | other |
parameterDataType | integer |
Rlcuit_1 | |
parameterID | Rlcuit_1 |
parameterClassification | output |
parameterName | Rlcuit_1 |
parameterDescription | probability of illness when ingesting a serving of lightly-cooked egg |
parameterUnit | % |
parameterUnitCategory | arbitrary Fraction |
parameterDataType | double |
Rbcuit_1 | |
parameterID | Rbcuit_1 |
parameterClassification | output |
parameterName | Rbcuit_1 |
parameterDescription | probability of illness when ingesting a serving of well-cooked egg |
parameterUnit | % |
parameterUnitCategory | arbitrary Fraction |
parameterDataType | double |
Risque | |
parameterID | Risque |
parameterClassification | output |
parameterName | risque |
parameterDescription | probability of illness when ingesting a random serving of egg |
parameterUnit | % |
parameterUnitCategory | arbitrary Fraction |
parameterDataType | double |
From the moment that growth becomes possible, the growth rate is re-assessed hourly according to the \(\gamma\) model already presented. The growth rates calculated hourly until the end of egg storage are then cumulated. At the end, a number of ten-fold increase (\(NCD\)) is obtained for each egg. In order to determine the concentration before the egg's preparation, data on the initial concentration, i.e. at the time of laying, must be available.
The number of bacteria at the end of the storage is estimated by:
\(NSS=C_{0} \times 10^{NCD}\),
where \(NSS\) is the number of Salmonella per egg (CFU), \(C_{0}\) is the initial concentration which follows a Poisson law with a mean value at 7 and a minimum value at 1 cell per egg and \(NCD\) is the number of ten-fold increase; after that, the different process steps (log10 CFU/h). \(NCD\) are estimated by:
\(NCD = \sum_{s = 1}^6 \mu_{max,s}.t_{TRMV}\),
where \(t_{TRMV}\) is the duration of the step after the complete deterioration of the yolk membrane is observed (TRMV).
The number of bacteria ingested is calculated as follows:
\(NSC = NSS \times 10^{-NRD}\)
where \(NSC\) is the number of Salmonella per egg after cooking and \(NRD\) is the number of log10 reductions, according to the conditions of cooking. \(NRD\) follows a normal distribution with a mean value at 2 and a standard deviation at 0.5 when eggs are lightly-cooked and a normal distribution with a mean value at 12 and a standard deviation at 1 when eggs are well-cooked (
The beta-Poisson dose-response model from (
\(P_{ill \space | \space cont \space serving} = 1-(1+ \frac {NSC}{\beta})^{- \alpha}\)
\(P_{ill | \text{cont serving} | \text{w}}\) and \(P_{ill | \text{cont serving} | \text{l}}\) are the probability of illness per S. Enteritidis-contaminated serving for well or lightly cooked eggs, respectively. The coefficients of the dose-response model are \(\alpha\) (0.1345) and \(\beta\) (53.33) which were taken from (
The potential risk for humans of becoming infected via egg consumption is estimated by:
\(R_{lightly-cooked} = (1-fq_{cooking}) \times prevalence \times P_{ill \space | \space cont \space serving | \space l} \times 10^{6}\)
\(R_{well-cooked} = fq_{cooking} \times prevalence \times P_{ill \space | \space cont \space serving | \space w} \times 10^{6}\)
where \(R_{lightly-cooked}\) is the number of illnesses per million servings of cooked egg, \(fq_{cooking}\) is the percentage of people who well cook eggs (set to 0.9), \(prevalence\) is the prevalence (set to 10% for illustration purposes) and \(P_{ill \space | \space cont \space serving}\), the probability of illness per S. Enteritidis-contaminated serving of egg.
All model parameters are presented in Table
Execute with default simulation parameters: https://data.d4science.org/analytics/get/FMJ_Lab?dim=https://data.d4science.org/shub/E_MklUWkdmZmp6eW56LzhDSXRxRk9QeXl2YXA1a0tNMUorbXhEVUMvcFJMVzNFRS83ZHBqSDZ6TW1pZ1hmbmprdA==
Execute with new simulation parameters: https://data.d4science.org/knime/get/FMJ_Lab?pm:file_ID=E_VEtmWmx2VTRVc2hHSXFSUElaWi9BK1VVUnpRUXVQcDd6RWNORG42Z3kxL3RidUpVNVNMSlNyOFlwWW9CbVBVWQ==
Fig.
The output shown in Fig.
Fig.
This quantitative risk assessment model allows the estimation of the number of salmonellosis cases per million servings of table egg, as well as the probability of illness when ingesting a random serving of table egg. The model can be adapted to different situations in setting the parameters values especially time/temperature storage conditions (Suppl. materials
Moez Sanaa developed the model code in a R Shiny application at first (https://qram.shinyapps.io/Eggs/). This model was recoded and prepared by Virginie Desvignes who drafted the manuscript. Laurent Guillier and Moez Sanaa reviewed the manuscript. Tasja Buschhardt filled in the metadata sheet of the model and the final FSK file was compiled by Virginie Desvignes.