calculator.report.html.j2 24.6 KB
Newer Older
1
2
3
<!DOCTYPE html>
<html lang="en">
<head>
4
	<meta charset="UTF-8">
Luis Aleixo's avatar
Luis Aleixo committed
5
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
6

Gabriella Azzopardi's avatar
Gabriella Azzopardi committed
7
8
  	<title>Report | CARA (COVID Airborne Risk Assessment)</title>

9
	<link rel="stylesheet" type="text/css" href="{{ calculator_prefix }}/static/css/report.css">
10
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
Luis Aleixo's avatar
Luis Aleixo committed
11
	<link rel="stylesheet" href="/static/css/style.css">
12
13
	<script src="https://d3js.org/d3.v7.min.js"></script>
	<script src="{{ calculator_prefix }}/static/js/report.js" type="application/javascript"></script>
14

15
16
17
18
</head>

<body id="body">

19
{% block report_header %}
20

Luis Aleixo's avatar
Luis Aleixo committed
21
22
23
	<div id="report-header-div" class="d-flex flex-row" style="margin: 1%">
		<img id="report_logo" src="/static/images/cara_logo.200x200.png" class="d-inline-block align-middle mr-3">
		<div style="margin-right: -105px" class='align-self-center mr-auto'>
Luis Aleixo's avatar
Luis Aleixo committed
24
			<h2 class="header_text mb-0">REPORT</h1>
Luis Aleixo's avatar
Luis Aleixo committed
25
			<p class="mb-0" id="report_version"> Created {{ creation_date }} using CARA calculator version v{{ form.calculator_version }}</p>
Luis Aleixo's avatar
Luis Aleixo committed
26
		</div>
Luis Aleixo's avatar
Luis Aleixo committed
27
28
		<button type="button" class="btn btn-outline-dark align-self-center" id="download-pdf" style="margin-right: -100pt" onclick="print()">Print Report</button>
		<a href="{{ permalink.link }}" style="float: left;" id="pdf_qrcode_aref" class="align-self-center invisible mr-0"><div id="pdf_qrcode"></div></a>
29
30
	</div>

31
{% endblock report_header %}
32

Luis Aleixo's avatar
Luis Aleixo committed
33
<div class="tabs-div">
Luis Aleixo's avatar
Luis Aleixo committed
34
	<ul class="nav nav-tabs" role="tablist" style="margin: 0.5% 0% 0% 1%">
35
36
37
38
39
40
		<li class="nav-item">
			<a class="nav-link active" id="results-tab" data-toggle="tab" href="#results" role="tab" aria-controls="results" aria-selected="true">Results</a>
		</li>
		<li class="nav-item">
			<a class="nav-link" id="data-tab" data-toggle="tab" href="#data" role="tab" aria-controls="data" aria-selected="false">Input Data</a>
		</li>
Luis Aleixo's avatar
Luis Aleixo committed
41
42
		{% block report_preamble_navtab %}
		{% endblock report_preamble_navtab %}
43
44
	</ul>

45
	<div class="tab-content" style="border-top: #dee2e6 1px solid; margin-top: -1px" >
46
	
Luis Aleixo's avatar
Luis Aleixo committed
47
		<div class="tab-pane show active" id="results" role="tabpanel" aria-labelledby="results-tab" style="padding: 1%">
48
			
49
			{% block report_results %}
Luis Aleixo's avatar
Luis Aleixo committed
50
				<div class="card bg-light mb-3" id="results-div">
51
  					<div class="card-header"><strong>Results </strong>
52
					  	<button class="icon_button p-0 float-right" data-toggle="collapse" href="#collapseResults" role="button" aria-expanded="true" aria-controls="collapseResults">
53
54
55
56
57
58
							<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-expand" viewBox="0 0 16 16">
								<path fill-rule="evenodd" d="M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zm0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708z"/>
							</svg>
						</button>
					</div>
					<div class="collapse show" id="collapseResults">
59
60
61
62
						<div class="card-body">
							<p class="card-text">
								<div class="align-self-center">
									<div class="d-flex">
Luis Aleixo's avatar
Luis Aleixo committed
63
64
									<div class="split">
										<div class="col-md-3">
65
66
67
											<div style="text-align:center"><b>Probability of infection (%)</b></div>
											<div class="d-flex" style="min-height: 160px">
												{% block warning_animation %}
Luis Aleixo's avatar
Luis Aleixo committed
68
													<div class="intro-banner-vdo-play-btn animation-color m-auto d-flex align-items-center justify-content-center">
69
70
														<b>{{prob_inf | non_zero_percentage}}</b>
														<i class="glyphicon glyphicon-play whiteText" aria-hidden="true"></i>
Luis Aleixo's avatar
Luis Aleixo committed
71
72
73
														<span class="ripple animation-color"></span>
														<span class="ripple animation-color"></span>
														<span class="ripple animation-color"></span>
74
													</div>
75
												{% endblock warning_animation %}
76
											</div>
Luis Aleixo's avatar
Luis Aleixo committed
77
										</div>
Luis Aleixo's avatar
Luis Aleixo committed
78
										<div class="col-md-8 pr-0 pl-0 d-flex">
Luis Aleixo's avatar
Luis Aleixo committed
79
											{% block report_summary %}
Luis Aleixo's avatar
Luis Aleixo committed
80
												<div class="align-self-center alert alert-dark mb-0" role="alert">
Luis Aleixo's avatar
Luis Aleixo committed
81
82
83
84
85
													Taking into account the uncertainties tied to the model variables, in this scenario, the <b>probability of one exposed occupant getting infected is {{ prob_inf | non_zero_percentage }}</b> and the <b>expected number of new cases is {{ expected_new_cases | float_format }}</b>*.
												</div>
											{% endblock report_summary %}
										</div>
									</div>
86
									</div>
Luis Aleixo's avatar
Luis Aleixo committed
87
									<br>
88
89
90
									{% block report_summary_footnote %}
									{% endblock report_summary_footnote %}
								</div>
Luis Aleixo's avatar
Luis Aleixo committed
91
								<p id="section1">* The results are based on the parameters and assumptions published in the CERN Open Report <a href="https://cds.cern.ch/record/2756083"> CERN-OPEN-2021-004</a>.</p>
Luis Aleixo's avatar
Luis Aleixo committed
92
93

								<div id="concentration_plot" style="height: 400px"></div>
Luis Aleixo's avatar
Luis Aleixo committed
94
								<script type="application/javascript">
95
96
									var times = {{ times | JSONify }}
									var concentrations = {{ concentrations | JSONify }}
Luis Aleixo's avatar
Luis Aleixo committed
97
									var cumulative_doses = {{ cumulative_doses | JSONify }}
98
									var exposed_presence_intervals = {{ exposed_presence_intervals | JSONify }}
99
									draw_concentration_plot("concentration_plot", times, concentrations, cumulative_doses, exposed_presence_intervals);
Luis Aleixo's avatar
Luis Aleixo committed
100
								</script>
Luis Aleixo's avatar
Luis Aleixo committed
101
              				</p>
102
						</div>
103
					</div>
Luis Aleixo's avatar
Luis Aleixo committed
104
				</div>
105
				<div class="card bg-light mb-3">
106
  					<div class="card-header"><strong>Alternative scenarios</strong>
107
						<button class="icon_button p-0 float-right" data-toggle="collapse" href="#collapseAlternativeScenarios" role="button" aria-expanded="false" aria-controls="collapseAlternativeScenarios">
108
109
110
111
112
							<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-expand" viewBox="0 0 16 16">
								<path fill-rule="evenodd" d="M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zm0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708z"/>
							</svg>
						</button>
					</div>	
113
					<div class="collapse" id="collapseAlternativeScenarios">
114
						<div class="card-body">
115
							<div>
Luis Aleixo's avatar
Luis Aleixo committed
116
								<div id="alternative_scenario_plot" style="height: 400px"></div>
117
118
119
								<script type="application/javascript">
									var alternative_scenarios = {{ alternative_scenarios.stats | JSONify }}
									var times = {{ times | JSONify }}
Luis Aleixo's avatar
Luis Aleixo committed
120
									draw_alternative_scenarios_plot("concentration_plot", "alternative_scenario_plot", times, alternative_scenarios);
121
								</script>
Luis Aleixo's avatar
Luis Aleixo committed
122
								<br>
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
								{% block report_scenarios_summary_table %}
									<table class="table w-auto">
										<thead class="thead-light">
											<tr>
												<th>Scenario</th>
												<th>P(I)</th>
												<th>Expected new cases</th>
											</tr>
										</thead>
										<tbody>
										{% for scenario_name, scenario_stats in alternative_scenarios.stats.items() %}
											<tr>
												<td> {{ scenario_name }}</td>
												<td> {{ scenario_stats.probability_of_infection | non_zero_percentage }}</td>
												<td style="text-align:right">{{ scenario_stats.expected_new_cases | float_format }}</td>
											</tr>
										{% endfor %}
										</tbody>
									</table>
								{% endblock report_scenarios_summary_table %}
143
144
145
146
147
148
149
150
151
152
							</div>
							<br/>
							<p class="data_text"> <strong> Notes for alternative scenarios: </strong><br>
								<ol>
									<li>This graph shows the concentration of infectious quanta in the air. The filtration of Type I and FFP2 masks, if worn, applies not only to the emission rate but also to the individual exposure (i.e. inhalation).
								For this reason, scenarios with different types of mask will show the same concentration on the graph but have different absorbed doses and infection probabilities.</li>
									<li>If you have selected more sophisticated options, such as HEPA filtration or FFP2 masks, this will be indicated in the plot as the "base scenario", representing the inputs inserted in the form.<br>
									The other alternative scenarios shown for comparison will not include either HEPA filtration or FFP2 masks.</li>
								</ol>
								<br>
153
154
155
156
							</p>
						</div>
					</div>
				</div>
157
158
159
			{% endblock report_results %}

			{% block report_footer %}
160
				<div class="card bg-light mb-3" id="link-results">
161
162
					<div class="card-header"><strong>Link to reproduce results </strong> 
					<button class="icon_button p-0 float-right" data-toggle="collapse" href="#collapseQRcode" role="button" aria-expanded="true" aria-controls="collapseQRcode">
163
164
165
166
167
						<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-expand" viewBox="0 0 16 16">
						<path fill-rule="evenodd" d="M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zm0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708z"/>
						</svg>
					</button>
					</div>
168
					<div class="collapse show" id="collapseQRcode">
169
						<div class="card-body">
170
							<div class="text-center"><button id="mobile_link" class="btn btn-primary btn-sm d-none" data-toggle="tooltip" data-placement="top" title="Copy to clipboard" onclick="copy_clipboard('{{ permalink.link }}');">Click to copy a shareable link</button></div>					
171
							<div id="link_reproduce_results" class="split">
Luis Aleixo's avatar
Luis Aleixo committed
172
173
								<div><a href="{{ permalink.link }}" style="float: left;"><div id="qrcode"></div></a></div>
								<div class="align-self-center"><span style="float: left; vertical-align: middle; display: inline-block;">
174
								<p style="display: inline-block; vertical-align: middle; line-height: normal;">
175
								Click the QR code to regenerate the report and get a shareable link.<br>Alternatively, scan to regenerate the report.<br>
176
								</p>
Luis Aleixo's avatar
Luis Aleixo committed
177
								</span></div>
178
179
180
							</div>	
						</div>
					</div>
181
				</div>
182
183
184
185
				<div style="clear: both;"></div>
			{% endblock report_footer %}
		</div>

Luis Aleixo's avatar
Luis Aleixo committed
186
		<div class="tab-pane" id="data" role="tabpanel" aria-labelledby="data-tab" style="padding: 1%">
187
			{% block simulation_overview %}
Luis Aleixo's avatar
Luis Aleixo committed
188
				<div class="card">
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
					<div class="card-header"><strong>Simulation:</strong></div>
					<div class="card-body">
						<p>Simulation Name: {{ form.simulation_name }}</p>
						<p>Room Number: {{ form.room_number }}</p>
					</div>
				</div>
				<br>
				<div class="card">
					<div class="card-header"> <strong>Input data:</strong></div>
					<div class="card-body">
						<ul>
							<li><p class="data_text">Virus variant:
							{% if form.virus_type == "SARS_CoV_2" %}
							SARS-CoV-2 (nominal strain)
							{% elif form.virus_type == "SARS_CoV_2_B117" %}
							<a href="https://www.ecdc.europa.eu/en/publications-data/covid-19-risk-assessment-spread-new-sars-cov-2-variants-eueea">SARS-CoV-2 (Alpha VOC) </a>
							{% elif form.virus_type == "SARS_CoV_2_P1" %}
206
							<a href="https://doi.org/10.1126/science.abh2644">SARS-CoV-2 (Gamma VOC)</a>
207
208
209
210
211
212
							{% elif form.virus_type == "SARS_CoV_2_B16172" %}
							<a href="https://www.bmj.com/content/373/bmj.n1513">SARS-CoV-2 (Delta VOC)</a>
							{% endif %}
							</p></li>
							<li><p class="data_text">Room Volume: {{ model.concentration_model.room.volume }} m³</p></li>
							<li><p class="data_text">Room Central Heating: {{ "On" if form.room_heating_option else "Off" }}</p></li>
213
214
215
216
							<li><p class="data_text">Geographic Location: {{ form.location_name }}</p></li>
							{% if form.ventilation_type == "natural_ventilation" %}
							<li><p class="data_text">Nearest weather station: {{ form.nearest_weather_station()[1].strip().title() }}</p></li>
							{% endif %}
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
						</ul>
					</div>
				</div>
				<br>
				<div class="card">
					<div class="card-header"><strong>Ventilation data:</strong></div>
					<div class="card-body">
						<ul>
							<li><p class="data_text">Mechanical ventilation:
							{% if form.ventilation_type == "mechanical_ventilation" %}
							Yes </p></li>
							<ul>
								<li><p class="data_subtext">
								{% if form.mechanical_ventilation_type == "mech_type_air_supply"%}
								Air supply flow rate: {{ form.air_supply }} m³ / hour
								{% elif form.mechanical_ventilation_type == "mech_type_air_changes"%}
								Air changes per hour: {{ form.air_changes }} h⁻¹
								{% endif %}
								</p></li>
							</ul>
							{% else %}
							No </li>
							{% endif %}
							<li><p class="data_text">Natural ventilation:
							{% if form.ventilation_type == "natural_ventilation"%}
							Yes </p></li>
							<ul>
								<li><p class="data_subtext">Number of windows: {{ form.windows_number }}</p></li>
								<li><p class="data_subtext">Height of window: {{ form.window_height }} m</p></li>
								<li><p class="data_subtext">Window type:
								{% if form.window_type == "window_hinged" %}
								Top- or Bottom-Hung</p></li>
								<li><p class="data_subtext">Width of window: {{ form.window_width }} m</p></li>
								{% elif form.window_type == "window_sliding" %}
								Sliding / Side-Hung</p></li>
								{% endif %}
								<li><p class="data_subtext">Opening distance: {{ form.opening_distance }} m</p></li>
								<li><p class="data_subtext">Windows open:
								{% if form.window_opening_regime == "windows_open_periodically" %}
								Periodically for {{ form.windows_duration | readable_minutes}}
									every {{ form.windows_frequency | readable_minutes}}
								{% elif form.window_opening_regime == "windows_open_permanently" %}
								Permanently
								{% endif %}
								</p></li>
							</ul>
263
								<p class="data_subtext data_italic">When using the natural ventilation option, air flows are calculated using averaged hourly temperatures for the region {{ form.location_name }}, based on historical data for the month selected.</p>
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
							{% else %}
							No </p></li>
							{% endif %}
							<li><p class="data_text">HEPA Filtration: {{ 'Yes' if form.hepa_option else 'No' }}</li>
							{% if form.hepa_option %}
							<ul>
								<li><p class="data_text">HEPA amount: {{ form.hepa_amount }} m³ / hour</p></li>
							</ul>
							{% endif %}
						</ul>
					</div>
				</div>
				<br>
				<div class="card">
					<div class="card-header"><strong>Event data:</strong></div>
					<div class="card-body">
						<ul>
							<li><p class="data_text">Number of attendees and infected people: {{ form.total_people }} in attendance, of whom {{ form.infected_people }}
							{{ "is" if form.infected_people == 1 else "are" }}
							infected.</p></li>
							<li><p class="data_text">
							Activity type:
							{% if form.activity_type == "office" %}
							Office – typical scenario with all persons seated, talking occasionally (talking assumed for 1/3rd of the time).
							{% elif form.activity_type == "meeting" %}
							Meeting – typical scenario with all persons seated, one person talking at a time.
							{% elif form.activity_type == "callcentre" %}
							Call Centre = typical office-like scenario with all persons seated, all talking continuously.
							{% elif form.activity_type == "controlroom-day" %}
							Control Room (Day Shift) = specific control room scenario, all persons seated, all talking 50% of the time.
							{% elif form.activity_type == "controlroom-night" %}
							Control Room (Night Shift) = specific control room scenario with all persons seated, all talking for 10% of the time.
							{% elif form.activity_type == "library" %}
							Library = Library scenario with all persons seated, breathing and not talking.
							{% elif form.activity_type == "workshop" %}
							Workshop = assembly workshop environment, all persons doing moderate physical activity, talking 50% of the time.
							{% elif form.activity_type == "training" %}
							Training – one person (the trainer) standing, talking, all others seated, talking quietly (whispering). It is assumed the trainer is the infected person, for the worst case scenario.
							{% elif form.activity_type == "lab" %}
							Laboratory = Lab or technical environment, all persons doing light physical activity, talking 50% of the time.
							{% elif form.activity_type == "gym" %}
							Gym = For comparison only, all persons doing heavy physical exercise, breathing and not talking.
							{% endif %}
							</p></li>
							<li><p class="data_text">Exposed occupant(s) activity time:</p></li>
								<ul>
310
311
									<li><p class="data_subtext">Start time: {{ form.exposed_start | minutes_to_time }}</p></li>
									<li><p class="data_subtext">End time: {{ form.exposed_finish | minutes_to_time }}</p></li>
312
313
314
								</ul>
							<li><p class="data_text">Infected occupant(s) activity time:</p></li>
							<ul>
315
316
								<li><p class="data_subtext">Start time: {{ form.infected_start | minutes_to_time }}</p></li>
								<li><p class="data_subtext">End time: {{ form.infected_finish | minutes_to_time }}</p></li>
317
318
319
320
321
322
323
324
325
326
327
							</ul>
							<li><p class="data_text">Event for the month of {{ form.event_month }}</p></li>
						</ul>
					</div>
				</div>
				<br>
				<div class="card">
					<div class="card-header"><strong>Break data:</strong></div>
					<div class="card-body">
						{% if form.infected_dont_have_breaks_with_exposed %}
						<p style="padding-left:15px;"> Exposed occupant(s):</p>
328
329
						{% endif %}
						<ul>
330
331
332
333
							<li><p class="data_text">Lunch break:
							{% if form.exposed_lunch_option%}
							Yes</li>
							<ul>
334
335
								<li><p class="data_subtext">Start time: {{ form.exposed_lunch_start | minutes_to_time }}</p></li>
								<li><p class="data_subtext">End time: {{ form.exposed_lunch_finish | minutes_to_time }}</p></li>
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
							</ul>
							{% else%}
							No
							{% endif %}
							</p></li>
							<li><p class="data_text">Coffee breaks: {{ form.exposed_number_of_coffee_breaks() }}
							{% if form.exposed_number_of_coffee_breaks() > 0 %}
							each of {{ form.exposed_coffee_duration }} minutes duration
							</p></li>
							<ul>
							{%- for start_time, end_time in form.exposed_coffee_break_times() %}
							<li><p class="data_subtext">Coffee break {{ loop.index }}: Start: {{ start_time | minutes_to_time }} &nbsp&nbsp End: {{ end_time | minutes_to_time }}</p></li>
							{%- endfor %}
							</ul>
							{% endif %}
351
						</ul>
352
353
						{% if form.infected_dont_have_breaks_with_exposed %}
						<p style="padding-left:15px;"> Infected occupant(s):</p>
Luis Aleixo's avatar
Luis Aleixo committed
354
						
355
356
357
358
359
						<ul>
							<li><p class="data_text">Lunch break:
							{% if form.infected_lunch_option%}
							Yes</li>
							<ul>
360
361
								<li><p class="data_subtext">Start time: {{ form.infected_lunch_start | minutes_to_time }}</p></li>
								<li><p class="data_subtext">End time: {{ form.infected_lunch_finish | minutes_to_time }}</p></li>
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
							</ul>
							{% else%}
							No
							{% endif %}
							</p></li>
							<li><p class="data_text">Coffee breaks: {{ form.infected_number_of_coffee_breaks() }}
							{% if form.infected_number_of_coffee_breaks() > 0 %}
							each of {{ form.infected_coffee_duration }} minutes duration
							</p></li>
							<ul>
							{%- for start_time, end_time in form.infected_coffee_break_times() %}
							<li><p class="data_subtext">Coffee break {{ loop.index }}: Start: {{ start_time | minutes_to_time }} &nbsp&nbsp End: {{ end_time | minutes_to_time }}</p></li>
							{%- endfor %}
							</ul>
							{% endif %}
						</ul>
Luis Aleixo's avatar
Luis Aleixo committed
378
379
380
						{% else %}
						<i>Same breaks taken by the exposed and infected persons.</i>
						{% endif %}
381
382
383
384
385
386
387
388
389
390
391
392
393
394
					</div>
				</div>
				<br>
				<div class="card">
					<div class="card-header"><strong>Mask wearing:</strong></div>
					<div class="card-body">	
						<ul>
							<li><p class="data_text">Masks worn at workstations? {{ 'Yes' if form.mask_wearing_option == "mask_on" else 'No' }} </p></li>
							{% if form.mask_wearing_option == "mask_on" %}
							<li><p class="data_text">Mask type: {{ form.mask_type }}</p></li>
							{% endif %}
						</ul>
					</div>
				</div>
Luis Aleixo's avatar
Luis Aleixo committed
395
396
				<br>
			{% endblock simulation_overview %}	
397
		</div>
Luis Aleixo's avatar
Luis Aleixo committed
398
		{% block report_preamble %}
Luis Aleixo's avatar
Luis Aleixo committed
399
		{% endblock report_preamble %}	
400
	</div>
401
402
</div>

Luis Aleixo's avatar
Luis Aleixo committed
403
404
{% block disclaimer_container %}
	<br><br><br>
405
	<div id="disclaimer" style="border: #dee2e6 1px solid; margin: 1%; padding: 20px" class="rounded">
Luis Aleixo's avatar
Luis Aleixo committed
406
407
408
409
410
411
412
413
414
415
416
417
		{% block disclaimer %}
		<p class="image"> <img align="middle" src="{{ calculator_prefix }}/static/images/disclaimer.jpg" width="40" height="40"><b>Disclaimer:</b><br><br></p>

		<p>
			CARA is a risk assessment tool developed to model the concentration of viruses in enclosed spaces, in order to inform space-management decisions.
		</p>
		<p>
			CARA models the concentration profile of potential infectious viruses in enclosed spaces with clear and intuitive graphs.
			The user can set a number of parameters, including room volume, exposure time, activity type, mask-wearing and ventilation.
			The report generated indicates how to avoid exceeding critical concentrations and chains of airborne transmission in spaces such as individual offices, meeting rooms and labs.
		</p>
		<p>
418
			The risk assessment tool simulates the long-range airborne spread SARS-CoV-2 virus in a finite volume, assuming a homogenous mixture, and estimates the risk of COVID-19 airborne transmission therein.
Luis Aleixo's avatar
Luis Aleixo committed
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
			The results DO NOT include short-range airborne exposure (where the physical distance is a significant factor) nor the other known modes of SARS-CoV-2 transmission.
			Hence, the output from this model is only valid when the other recommended public health & safety instructions are observed, such as adequate physical distancing, good hand hygiene and other barrier measures.
		</p>
		<p>
			The model used is based on scientific publications relating to airborne transmission of infectious diseases, dose-response exposures and aerosol science, as of February 2021.
			It can be used to compare the effectiveness of different airborne-related risk mitigation measures.
		</p>
		<p>
			Note that this model applies a deterministic approach, i.e., it is assumed at least one person is infected and shedding viruses into the simulated volume.
			Nonetheless, it is also important to understand that the absolute risk of infection is uncertain, as it will depend on the probability that someone infected attends the event.
			The model is most useful for comparing the impact and effectiveness of different mitigation measures such as ventilation, filtration, exposure time, physical activity and
			the size of the room, only considering long-range airborne transmission of COVID-19 in indoor settings.
		</p>
		<p>
			This tool is designed to be informative, allowing the user to adapt different settings and model the relative impact on the estimated infection probabilities.
			The objective is to facilitate targeted decision-making and investment through comparisons, rather than a singular determination of absolute risk.
			While the SARS-CoV-2 virus is in circulation among the population, the notion of 'zero risk' or 'completely safe scenario' does not exist.
			Each event modelled is unique, and the results generated therein are only as accurate as the inputs and assumptions.
		</p>
		<p>
			CARA has not undergone review, approval or certification by competent authorities, and as a result, it cannot be considered
			as a fully endorsed and reliable tool, namely in the assessment of potential viral emissions from infected hosts to be modelled.
		</p>

		{% endblock disclaimer %}
	</div>
{% endblock disclaimer_container %}

447
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
448
449
450
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

Luis Aleixo's avatar
Luis Aleixo committed
451
452
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.js"></script>

453
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" integrity="sha512-CNgIRecGo7nphbeZ04Sc13ka07paqdeTu0WR1IM4kNcpmBAUSHSQX0FslNhTDadL4O5SAGapGt4FodqL8My0mA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
454

455
<script type="text/javascript">
456
457
458
	//Enable tooltip
	$('[data-toggle="tooltip"]').tooltip();

459
460
461
    new QRCode(document.getElementById("qrcode"), {
        text: "{{ permalink.shortened }}",
        width: 330,
462
463
464
465
        height: 330,
        correctLevel : QRCode.CorrectLevel.L
    });
    new QRCode(document.getElementById("pdf_qrcode"), {
466
467
        text: "{{ permalink.shortened }}",
        width: 133,
468
469
470
        height: 133,
        correctLevel : QRCode.CorrectLevel.L
    });
471
472
</script>

473
</body>
474
</html>