{% block report_header %}

REPORT - {{ form.simulation_name }}

Created {{ creation_date }} using CAiMIRA calculator version v{{ form.calculator_version }}. Data version {{ data_registry_version or '`default`' }}.

{% endblock report_header %}
{% set long_range_prob_inf = prob_inf %} {% set long_range_expected_cases = expected_new_cases %} {# Update values if short range option is "short_range_yes" #} {% if form.short_range_option == "short_range_yes" %} {% set scenario = alternative_scenarios.stats.values() | first %} {# Probability of infection values #} {% set long_range_prob_inf = scenario.probability_of_infection %} {# Expected new case values #} {% set long_range_expected_cases = scenario.expected_new_cases %} {% if form.exposure_option == 'p_probabilistic_exposure' %} {% set long_range_prob_probabilistic_exposure = scenario.prob_probabilistic_exposure %} {% endif %} {% endif %} {% block report_results %}
Results

Probability of infection (%)
{% if form.short_range_option == "short_range_yes" %} Without short-range interactions {% endif %}

{% block long_range_warning_animation %}
{{long_range_prob_inf | non_zero_percentage}}
{% endblock long_range_warning_animation %}
Expected new cases: {{ long_range_expected_cases | float_format }}

{% if form.short_range_option == "short_range_yes" %}
Probability of infection (%)
With short-range interactions

{% block warning_animation %}
{{prob_inf | non_zero_percentage}}
{% endblock warning_animation %}
Expected new cases: {{ expected_new_cases | float_format }}
{% endif %}
{% block report_summary %}
{% if form.short_range_option == "short_range_yes" %}
{% endif %} {% block probabilistic_exposure_probability %} {% if form.exposure_option == "p_probabilistic_exposure" %}
{% endif %} {% endblock probabilistic_exposure_probability %}
{% endblock report_summary %}

{% block report_summary_footnote %} {% endblock report_summary_footnote %}

* The results are based on the parameters and assumptions published in the CARA publication: doi.org/10.1098/rsfs.2021.0076.


{% if form.short_range_option == "short_range_yes" %} {% if 'Speaking' in form.short_range_interactions|string or 'Shouting' in form.short_range_interactions|string %} {% endif %} {% endif %}
IRP - Infectious Respiratory Particles.

Result uncertainties

{% if form.conditional_probability_plot %}

(i)   Predictive probability of infection for a given value of the viral load

(ii)  Histogram of the viral load data

(iii) Histogram of the conditional probability of infection (result of total predictive probability in the middle)

{% endif %}
Predictive CO₂ Concentration Profile
{% if form.short_range_option == "short_range_no" %}
Alternative scenarios

{% block report_scenarios_summary_table %} {% for scenario_name, scenario_stats in alternative_scenarios.stats.items() %} {% endfor %}
Scenario P(I) Expected new cases
{{ scenario_name }} {{ scenario_stats.probability_of_infection | non_zero_percentage }} {{ scenario_stats.expected_new_cases | float_format }}
{% endblock report_scenarios_summary_table %}

Notes for alternative scenarios:

  1. 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.
  2. 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.
    The other alternative scenarios shown for comparison will not include either HEPA filtration or FFP2 masks.

{% endif %} {% endblock report_results %} {% block report_footer %}
{% endblock report_footer %}
{% block simulation_overview %}
Simulation:

Simulation Name: {{ form.simulation_name }}

Room Number: {{ form.room_number }}


Input data:
  • Virus variant: {% if form.virus_type == "SARS_CoV_2" %} SARS-CoV-2 (nominal strain) {% elif form.virus_type == "SARS_CoV_2_ALPHA" %} SARS-CoV-2 (Alpha VOC) {% elif form.virus_type == "SARS_CoV_2_BETA" %} SARS-CoV-2 (Beta VOC) {% elif form.virus_type == "SARS_CoV_2_GAMMA" %} SARS-CoV-2 (Gamma VOC) {% elif form.virus_type == "SARS_CoV_2_DELTA" %} SARS-CoV-2 (Delta VOC) {% elif form.virus_type == "SARS_CoV_2_OMICRON" %} SARS-CoV-2 (Omicron VOC) {% endif %}

  • Room Volume: {{ model.concentration_model.room.volume }} m³

  • Room Central Heating: {{ "On" if form.room_heating_option else "Off" }}

  • Geographic Location: {{ form.location_name }}

  • {% if form.ventilation_type == "natural_ventilation" %}
  • Nearest weather station: {{ form.nearest_weather_station()[1].strip().title() }}

  • {% endif %}

Vaccination data:
{% if form.vaccine_option %}
  • Primary vaccine: {{ form.vaccine_type | replace("_", " ") }} {% if form.vaccine_booster_option %}
  • Booster vaccine: {{ form.vaccine_booster_type | replace("_", " ")}}
  • {% endif %}
  • Vaccine effectiveness: {{ model.exposed.host_immunity | percentage | non_zero_percentage }}
{% else %}

No vaccination selected.

{% endif %}

Ventilation data:
  • Mechanical ventilation: {% if form.ventilation_type == "mechanical_ventilation" %} Yes

    • {% 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 %}

    {% else %} No {% endif %}
  • Natural ventilation: {% if form.ventilation_type == "natural_ventilation"%} Yes

    • Number of windows: {{ form.windows_number }}

    • Height of window: {{ form.window_height }} m

    • Window type: {% if form.window_type == "window_hinged" %} Top- or Bottom-Hung

    • Width of window: {{ form.window_width }} m

    • {% elif form.window_type == "window_sliding" %} Sliding / Side-Hung

      {% endif %}
    • Opening distance: {{ form.opening_distance }} m

    • 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 %}

    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.

    {% else %} No

    {% endif %}
  • HEPA Filtration: {{ 'Yes' if form.hepa_option else 'No' }}

  • {% if form.hepa_option %}
    • HEPA amount: {{ form.hepa_amount }} m³ / hour

    {% endif %}
  • From Fitting: {% if form.ventilation_type == "from_fitting" %} Yes

    {% for ventilation in form.CO2_fitting_result['ventilation_values'] %} {% set transition_time = form.CO2_fitting_result['transition_times'] %} {% endfor %}
    Time (HH:MM)ACH value (h⁻¹)
    {{ transition_time[loop.index - 1] | hour_format }} - {{ transition_time[loop.index] | hour_format }} {{ ventilation | float_format }}
    {% else %} No

  • {% endif %}


Event data:
  • 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.

  • {% if form.exposure_option == "p_probabilistic_exposure" %} {% if form.ascertainment_bias == "confidence_high" %} {% set conf_level = "High - Mandatory population surveillance." %} {% elif form.ascertainment_bias == "confidence_medium" %} {% set conf_level = "Medium - Recommended population wide surveillance." %} {% else %} {% set conf_level = "Low - Surveillance only for symptomatic patients." %} {% endif %}
  • Population in {{ form.location_name }}: {{ form.geographic_population }}

  • New reported cases in {{ form.location_name }} (7-day average): {{ form.geographic_cases }}

  • Confidence level: {{ conf_level }}

  • {% endif %}
  • Activity type: {% if form.activity_type == "office" %} Office – typical scenario with all persons seated, speaking occasionally (speaking assumed for 1/3rd of the time). {% elif form.activity_type == "smallmeeting" %} Small meeting – typical scenario with all persons seated, one person speaking at a time. {% elif form.activity_type == "largemeeting" %} Large meeting – infected occupant(s) is standing and speaking 1/3rd of the time, while the other occupants are seated. {% elif form.activity_type == "callcentre" %} Call Centre - typical office-like scenario with all persons seated, all speaking continuously. {% elif form.activity_type == "controlroom-day" %} Control Room (Day Shift) - specific control room scenario, all persons seated, all speaking 50% of the time. {% elif form.activity_type == "controlroom-night" %} Control Room (Night Shift) - specific control room scenario with all persons seated, all speaking for 10% of the time. {% elif form.activity_type == "library" %} Library - Library scenario with all persons seated, breathing and not speaking. {% elif form.activity_type == "workshop" %} Workshop - assembly workshop environment, all persons doing moderate physical activity, speaking 50% of the time. {% elif form.activity_type == "training" %} Conference/Training (speaker infected) – one person (the speaker/trainer) standing, talking, all others seated, talking quietly (whispering). It is assumed the speaker/trainer is the infected person, for the worst case scenario. {% elif form.activity_type == "training_attendee" %} Conference/Training (attendee infected) – the infected person(s) are in the audience. All persons seated and breathing. {% elif form.activity_type == "lab" %} Laboratory - Lab or technical environment, all persons doing light physical activity, speaking 50% of the time. {% elif form.activity_type == "gym" %} Gym - For comparison only, all persons doing heavy physical exercise, breathing and not speaking. {% endif %} {% if form.ventilation_type == "from_fitting" %}

    Exhalation rate from fitting algorithm - {{form.CO2_fitting_result['exhalation_rate'] | round(2, 'floor')}} m³/h

    {% endif %}

  • {% if form.short_range_option == "short_range_yes" %}
  • Short-range interactions: {{ form.short_range_interactions|length }}

  • Total number of people having short-range interactions: {{ form.short_range_total_people }}

    • {% for interaction in form.short_range_interactions %}
    • Expiratory activity {{ loop.index if form.short_range_interactions|length > 1 }}: {{ "Shouting/Singing" if interaction.expiration == "Shouting" else interaction.expiration }}
    • Start time {{ loop.index if form.short_range_interactions|length > 1 }}: {{ interaction.start_time }}
    • Duration {{ loop.index if form.short_range_interactions|length > 1 }}: {{ interaction.duration }} {{ "minutes" if interaction.duration|float > 1 else "minute" }}
    • {% endfor %}
    {% endif %}
  • Exposed occupant(s) activity time:

    • Start time: {{ form.exposed_start | minutes_to_time }}

    • End time: {{ form.exposed_finish | minutes_to_time }}

  • Infected occupant(s) activity time:

    • Start time: {{ form.infected_start | minutes_to_time }}

    • End time: {{ form.infected_finish | minutes_to_time }}

  • Event for the month of {{ form.event_month }}


Break data:
{% if form.infected_dont_have_breaks_with_exposed %}

Exposed occupant(s):

{% endif %}
  • Lunch break: {% if form.exposed_lunch_option%} Yes

    • Start time: {{ form.exposed_lunch_start | minutes_to_time }}

    • End time: {{ form.exposed_lunch_finish | minutes_to_time }}

    {% else%} No {% endif %}

  • Coffee breaks: {{ form.exposed_number_of_coffee_breaks() }} {% if form.exposed_number_of_coffee_breaks() > 0 %} each of {{ form.exposed_coffee_duration }} minutes duration

    • {%- for start_time, end_time in form.exposed_coffee_break_times() %}
    • Coffee break {{ loop.index }}: Start: {{ start_time | minutes_to_time }}    End: {{ end_time | minutes_to_time }}

    • {%- endfor %}
    {% endif %}
{% if form.infected_dont_have_breaks_with_exposed %}

Infected occupant(s):

  • Lunch break: {% if form.infected_lunch_option%} Yes

    • Start time: {{ form.infected_lunch_start | minutes_to_time }}

    • End time: {{ form.infected_lunch_finish | minutes_to_time }}

    {% else%} No {% endif %}

  • Coffee breaks: {{ form.infected_number_of_coffee_breaks() }} {% if form.infected_number_of_coffee_breaks() > 0 %} each of {{ form.infected_coffee_duration }} minutes duration

    • {%- for start_time, end_time in form.infected_coffee_break_times() %}
    • Coffee break {{ loop.index }}: Start: {{ start_time | minutes_to_time }}    End: {{ end_time | minutes_to_time }}

    • {%- endfor %}
    {% endif %}
{% else %} Same breaks taken by the exposed and infected persons. {% endif %}

Mask wearing:
  • Masks worn at workstations? {{ 'Yes' if form.mask_wearing_option == "mask_on" else 'No' }}

  • {% if form.mask_wearing_option == "mask_on" %}
  • Mask type: {{ form.mask_type }}

  • {% endif %}

{% endblock simulation_overview %}
{% block report_preamble %} {% endblock report_preamble %}
{% block disclaimer_container %}


{% block disclaimer %}

Disclaimer:

{{ text_blocks['Disclaimer'] }} {% endblock disclaimer %}

{% endblock disclaimer_container %}