Infectious Disease Outbreak (COVID-19)--HealthCare, Isolation and Quarantine
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model simulates the impacts of hospital inpatient capacity, isolation, and quarantine on the infectious disease outbreak dynamics, such as the COVID-19 pandemic. The infected cases include both carriers, the infected people who have not shown symptoms, and sick, the infected people who have shown symptoms.
HOW IT WORKS
The model starts with a human population in which all individuals are healthy but susceptible (green persons) to the incoming pathogen. Once a carrier (also green but can be shown as gray by the show-carriers? switch) appears in the population, it will pass the disease to one of the susceptible people nearby (within a radius of 1.5) at the transmission rate of 90%. The infected people are able to transmit the disease for 14 days if they are not hospitalized or isolated. The infected people do not show symptoms in the first three days but are still contagious. After three days, infected people are more likely to show symptoms as time passes. Once they show symptoms, they are sick, indicated by an orange color. Depending on the settings, the sick can be hospitalized, isolated, or left by themselves. By the 15th day of being infected, the sick people either die (disappear from the model) at the mortality rate of 20% or recover and become immunized (blue color). If sick people are hospitalized, their mortality rate is lowered to 10%.
To simplify the model, this model uses a fixed transmission rate and mortality rate, 90% and 20%, respectively.
Buttons, Sliders, and Switches:
The population size slider is self-explanatory. So are the buttons of Set up/Reset, Run/Pause, and Run one day.
The mobility slider controls how far an individual can move each time. Smaller mobility means people come into contact with fewer other people.
The hospitalization? switch can enable and disable hospitalization. The hospital inpatient capacity is set as 5% of the population size. This is actually higher than the USA average hospital inpatient capacity, which is about 0.3%.
The show-carriers? switch may make the carriers visible or invisible.
The %-isolated slider set how many percent of sick people who are not hospitalized are isolated. Sick people stop infecting susceptible people once isolated.
The %-quarantined slider set how many percent of carriers are quarantined. Carriers stop infecting susceptible people once quarantined.
The +1 infected case button adds a carrier into the population.
The Watch 1 infected case button allows you to focus on a single infected person, either a carrier or a sick person.
HOW TO USE IT
First, choose the factors, such as population size, mobility level, hospitalization on or off, etc.
Click on Set up/Reset, then Run/Pause. The model is initially set to stop on the 180th day. Change the number in "Days" if you want to run the model for a longer or shorter time period.
Observe the infection changes in the population in the plot and monitors.
Use Run one day to run the model in a controlled way and collecting day-by-day data.
THINGS TO TRY
There are so many things you can try in this model. Here are only very a few quick ideas to explore:
- How many people die when hospitalization is available vs. unavailable?
- How does hospitalization affect the number of deaths in the outbreak?
- How does hospitalization affect the duration of the outbreak?
- How does the isolation rate affect the number of deaths in the outbreak?
- How does the isolation rate affect the duration of the outbreak?
- How does the quarantine rate affect the number of deaths in the outbreak?
- How does the quarantine rate affect the duration of the outbreak?
- How do infections change in the population when isolation, quarantine, or low mobility is practiced 2 days, 3 days, or a week after introducing the carrier?
- How do infections change in the population if we only isolate the sick people but do nothing to the carriers?
- Can we both lower the number of deaths and shorten the duration of the outbreak? How?
RELATED MODELS
Find more epidemic models at 3dsciencemodeling.com/COVID-19
CREDITS AND REFERENCES
Dr. Lin Xiang ([lin.xiang@uky.edu] (mailto:lin.xiang@uky.edu)) created this module at the University of Kentucky in 2020. If you mention this model in a publication, we ask that you include the citations below.
Xiang, L. (2020). Infectious Disease Outbreak-HealthCare, Isolation and Quarantine. Department of STEM Education, University of Kentucky, Lexington, KY.
Comments and Questions
;; ;; This model is developed by Dr. Lin Xiang at the University of Kentucky. Contact: lin.xiang@uky.edu ;; ;; If you see this page rather than a "download" button when downloading the model, click the "download" icon ;; in your browser to download this model file. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; turtles-own[day infected susceptible hospitalized symptom] Globals [RM LM num-beds x y max-daily-cases] breed [persons person] breed [doctors doctor] to-report hospital ;label the divider patches report patches with [ pycor < max-pycor and pycor > 16 and pxcor > min-pxcor and pxcor < max-pxcor] end to-report susceptible-people ;call all suscepitble people report turtles with [infected = false and susceptible = true and symptom = false and hospitalized = false] end to-report carriers ;call all people who are infected but have not shown symptoms report turtles with [infected = true and susceptible = false and symptom = false and hospitalized = false] end to-report infected-with-symptom ;call all people who are infected and have shown symptoms report turtles with [infected = true and susceptible = false and symptom = true] end to-report patients ;call all people who are infected and have shown symptoms and have been hospitalized report turtles with [infected = true and susceptible = false and symptom = true and hospitalized = true] end to-report current-patients report count patients end to-report recovered-people ;call all people who have recovered report turtles with [infected = false and susceptible = false and symptom = false] end to-report available-beds ; availble inpatient beds report num-beds - count persons with [pcolor = 9.9] end ;;;;;;;;;;;;;;;;;;;;main setup procedures;;;;;;;;;;;;;; to setup clear-all setup-patches setup-turtles reset-ticks end to setup-patches ask patches with [ abs pxcor = max-pxcor ] [set pcolor 116] ;setup boundary ask patches with [ abs pycor = max-pycor ] [set pcolor 116] ;setup boundary ask patches with [ pycor = 16 ] [set pcolor 116] ;setup boundary ask hospital [set pcolor 9.9] ;set hospital area end to setup-turtles create-persons Population-size [set color 68 set size 1.75 set shape "person-1" set day 0 set infected false set susceptible true set hospitalized false set symptom false set-position ] set num-beds Population-size * 0.05 set x -21 set y 18 create-doctors 1 [ set color 37 set size 3 set shape "person doctor" setxy 22.5 26.5 ] end to set-position ;set people position setxy random-xcor random-ycor if pcolor != 0 [set-position] end to set-beds ;set hispital bed positions setxy x y if any? other turtles-here [ (ifelse x < 21 [set x x + 3] x = 21 [set x -21 set y y + 3]) set-beds] set x -21 set y 18 end ;;;;;;;;;;;;;;;;;;;;main go procedures;;;;;;;;;;;;;; to go if ticks >= Days [stop] move transmission sickness isolation ifelse Hospitalization? [hospitalization-recovery-death][recovery-death] find-max-daily-cases tick end to move ask persons with [hospitalized = false and shape = "person-1"] ;Keep patients and isolated people from moving [ifelse [pcolor] of patch-ahead 1 = 0 [forward Mobility rt random 360] [set heading heading - random 180]] end to add-a-carrier create-persons 1 [set size 1.75 set shape "person-1" set color 68 set infected true set susceptible false set symptom false set hospitalized false set-position] end to transmission ;set up transmission ask persons with [infected = true and shape = "person-1"] ;shape of "person" excludes the isolated carriers [let healthy-person one-of other turtles in-radius 1.5 with [susceptible = true] if healthy-person != nobody [ask healthy-person [ if random 100 < 90 ;transimission rate is 90% [set infected true set susceptible false set symptom false]]] ;susceptible people first become carriers. ] end to sickness ;process of developing symptoms ask persons with [infected = true] [ ifelse Show-carriers? = true ;allow switch to show and hide carriers [ifelse symptom = false [set color gray][set color orange]] [ifelse symptom = false [set color 68][set color orange]] set day day + 1 ;accumulate days if random 100 < (10 * day - 30) [set symptom true set color orange] ; The infected people show symptoms after 3 days and the chance increase 10% every day after. ] end to watch-a-sick-person ; can be either a carrier or a sick person watch one-of persons with [infected = true] end to hospitalization-recovery-death ask persons with [infected = true and symptom = true] ; call sick people [if available-beds > 0 [ set shape "patient" set hospitalized true set-beds] if day >= 15 [ifelse hospitalized = true [ifelse random 100 < 20 * 0.5 [set LM LM + 1 die ] [set infected false set hospitalized false set susceptible false set symptom false set color blue set shape "person-1" set-position]] [ifelse random 100 < 20 [set LM LM + 1 die ] [set infected false set hospitalized false set susceptible false set symptom false set color blue set shape "person-1" set-position]] ] ] end to recovery-death ask persons with [infected = true and symptom = true] [if day >= 15 [ifelse random 100 < 20 [set LM LM + 1 die ] [set infected false set hospitalized false set susceptible false set symptom false set color blue set shape "person-1" set-position]] ] end to isolation ask persons with [infected = true and symptom = true and hospitalized = false] [if random 100 < %-isolated [set shape "house"]] ask carriers [if random 100 < %-quarantined [set shape "house"]] end to find-max-daily-cases if count turtles with [color = orange ] > max-daily-cases ;Count the infectious. If it is greater than the current record of max daily cases [set max-daily-cases count turtles with [color = orange ]] ;update the max daily case end
There are 6 versions of this model.
This model does not have any ancestors.
This model does not have any descendants.