Covid-19 and Health System Capacity
Model was written in NetLogo 6.1.0
•
Viewed 789 times
•
Downloaded 35 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
globals [ interaction-zone ;; The patches representing the area of social interactions in the world quarantine ;; The patches representing the humans are in quarantine hospital ;; The patches representing the hospital with severe cases of the disease upper-border ;; The borders of interaction-zone lower-border crowded-patch ;; The patch where the "CROWDED" label appears patients ;; Infected people being trated in the hospital count-infected ;; Cumulative number of infected people count-symptomatic ;; Cumulative number of infected and symptomatic people r0 ;; The number of secondary infections that arise due to a single infective introduced in a wholly susceptible population s0 ;; Initial population of susceptible people hospital-patch ;; The patch where the "HOSPITAL" label appears quarantine-patch ;; The patch where the "QUARANTINE" label appears ] breed [humans human] humans-own [susceptible? ;; If true, the human is susceptible. exposed? ;; If true, the human is infected but in latent period infected? ;; If true, the human is infected and infectious immune? ;; If true, the human is immune symptomatic? ;; If true, the infected human is symptomatic hospitalized? ;; If true, the infected and symptomatic human will be hospitalized protect? ;; If true, the human is protecting himself from infection need-hospital? ;; If true, an infected and symptomatic human will need a hospital isolated? ;; If true, an infected human will be isolated in quarantine risk-population? ;; The proportion of the population at risk of severe disease (i.e. old people, pre-existing chronic disease) latent-period ;; The latent period of the virus viremic-time ;; The time in days that individuals will be infectious and can transmit the virus to others ] ;;;;; ;;; SETUP PROCEDURES ;;;;; to setup clear-all setup-globals setup-host reset-ticks end to setup-globals ;; creating interaction-zone patches set interaction-zone patches with [(pxcor >= min-pxcor and pycor < int (max-pycor - (max-pycor / 2)) and pycor > min-pycor)] ask interaction-zone [ set pcolor gray ] ;; creating quarantine patches set quarantine patches with [(pxcor > (0.5 * min-pxcor) and pycor > int (max-pycor - (max-pycor / 2)) )] ask quarantine [set pcolor green ] ;; creating hospital patches set hospital patches with [(pxcor >= min-pxcor and pxcor <= (0.5 * min-pxcor) and pycor > int (max-pycor - (max-pycor / 2)))] ask hospital [set pcolor pink ] ;; creating border patches set upper-border patches with [(pycor = int (max-pycor - (max-pycor / 2)))] ask upper-border [ set pcolor gray ] set lower-border patches with [(pycor = min-pycor)] ask lower-border [ set pcolor gray ] ;; selecting patches where labels will appear ask patch (0.7 * min-pxcor) ( 0.8 * max-pycor) [ set crowded-patch self set plabel-color black] ask patch (0.7 * min-pxcor) ( 0.95 * max-pycor) [ set hospital-patch self set plabel "HOSPITAL" set plabel-color black] ask patch (0.3 * max-pxcor) ( 0.95 * max-pycor) [ set quarantine-patch self set plabel "QUARANTINE" set plabel-color black] end to setup-host ;; creating people and moving them to interaction-zone patches create-humans initial-people [ask humans [move-to one-of interaction-zone] set shape "person" set size 0.5 set infected? false set immune? false set susceptible? true set exposed? false set risk-population? false set symptomatic? false set hospitalized? false set protect? false set need-hospital? false set isolated? false ] ;; selecting initial number of infected people ask n-of initial-infected humans [ set susceptible? false set infected? true] ;; selecting people who will be less exposed to infection due to individual protection measures ask n-of (initial-people * proportion-of-population) humans [set protect? true] ;; selecting people who will belong to the risk group ask n-of (initial-people * risk-group) humans [set risk-population? true] ask humans [assign-color] end to assign-color ;; The colors for represent the virus circulation and individual status if susceptible? [ set color white ] if exposed? [ set color yellow ] if infected? [ set color red ] if immune? [ set color blue ] end ;;;;; ;;; GO PROCEDURES ;;;;; to go ask crowded-patch [ set plabel "" ] move-humans if all? humans [ not exposed? and not infected? ] [stop] ;; stopping the simulation ask humans with [exposed?] [become-viremic] ask humans with [infected?] [infect-others symptom] ask humans with [symptomatic?] [recovery-or-die] ask humans [if hospitalized? and immune? [move-to one-of interaction-zone]] ;; people who recovered at the hospital go back to interaction-zone ask humans with [symptomatic?] [check-for-hospital go-to-hospital] set patients count turtles-on hospital if patients > hospital-capacity [ask crowded-patch [ set plabel "CROWDED" ]] ;; If the hospital have more patients than it can handle, the label "CROWDED" will appear ;;Infected people who are detected will be quarantined (but only after the start of control measures). if isolate-infected? [ask humans with [infected? and not hospitalized?] [if ticks >= days-to-start-control-measures [ if random 100 < infected-detection [ move-to one-of quarantine set isolated? true]]]] ask humans-on quarantine [if immune? [move-to one-of interaction-zone set isolated? false]] ;; people who recovered in the quarantine go back to interaction-zone calculate-r0 tick end ;; People move around the world randomly, but they don't move around in the quarantine and in the hospital patches. to move-humans ask humans-on interaction-zone [rt random-float 360.0 forward random-float 1 assign-color] ask humans-on upper-border [ move-to patch-at-heading-and-distance 180 1 assign-color] ask humans-on lower-border [ move-to patch-at-heading-and-distance 180 -1 assign-color] ask humans-on hospital[ assign-color ] ask humans-on quarantine [ assign-color] end ;; Infected people can infect susceptible ones to infect-others ;; selecting a susceptible target in neighbor patches let target-h (humans-on neighbors) let hosth one-of (target-h with [susceptible?]) ;; The chance of a susceptible person becoming infected will depend on the transmission rate and whether or not he is protecting himself from the transmission. if hosth != nobody [ ifelse not protect? [ if random-float 1 < transmission-rate [ ask hosth [ set susceptible? false set exposed? true set count-infected count-infected + 1 ] ] ] [ if ticks < days-to-start-control-measures [ if random-float 1 < transmission-rate [ ask hosth [ set susceptible? false set exposed? true set count-infected count-infected + 1 ] ] ] if ticks >= days-to-start-control-measures [ if random-float 1 < (transmission-rate * (1 - protection-level)) [ ask hosth [ set susceptible? false set exposed? true set count-infected count-infected + 1 ] ] ] ] ] end ;; A human who has been infected with the virus will become infectious after the latency period to become-viremic set latent-period latent-period + 1 if latent-period > random-poisson 3 [ ;; An average latency period of 3 days was considered here set infected? true set exposed? false ] end ;; A given proportion of infected people will become symptomatic to symptom set viremic-time viremic-time + 1 ;;It was considered that the first symptoms may appear in 2 days after the virus latency period, which means an incubation period of 5 days on average. if viremic-time = 2 [ if random 100 < symptomatic-proportion [ set symptomatic? true set count-symptomatic count-symptomatic + 1 ]] ;; asymptomatic people become immune after recovery time if viremic-time = recovery-time and not symptomatic? [ set infected? false set immune? true ] end ;; Check if infected-symptomatic people need a hospital to check-for-hospital ifelse risk-population? [ if random 100 < 20 [ ;; For the people of the risk group, a 20% chance of needing a hospital was considered set need-hospital? true]] [if random 100 < 5 [ ;; For people who are not of risk group, a 5% chance of needing a hospital was considered set need-hospital? true ]] end ;; If the Hospital is not crowded, go to it. to go-to-hospital set patients count turtles-on hospital if need-hospital? [ if patients < hospital-capacity + 1 [ move-to one-of hospital set hospitalized? true]] end ;; After a few days, infected symptomatic people may recover from illness or die ;; This will depend on the severity of the case (need-hospital?), whether or not the person is hospitalized, and whether or not he belongs to the risk group. to recovery-or-die if need-hospital? [ ifelse not hospitalized? [ if viremic-time >= random-poisson recovery-time * 1.5 ;; severe cases will take 50% more time to recover [ if risk-population? [ ifelse random 100 < random-poisson 20 [ ;;people in the risk group who need a hospital and are not hospitalized have an average 20% chance of surviving set infected? false set symptomatic? false set immune? true set need-hospital? false] [ die ]] if not risk-population? [ ifelse random 100 < random-poisson 60 ;;people who are not in the risk group who need a hospital and are not hospitalized have an average 60% chance of surviving [ set infected? false set symptomatic? false set immune? true set need-hospital? false] [ die ]]]] [if viremic-time >= random-poisson recovery-time * 1.5 [ if risk-population? [ ifelse random 100 < (100 - random-poisson 7) ;; people who are the risk group and who are hospitalized have an average 93% chance of surviving [ set infected? false set symptomatic? false set immune? true set need-hospital? false] [ die ]] if not risk-population? [ ifelse random 100 < (100 - random-poisson 1) ;; people who are not in the risk group and who are hospitalized have an average 99% chance of surviving [ set infected? false set symptomatic? false set immune? true set need-hospital? false] [ die ]]]]] if not need-hospital? ;; Infected-symptomatic people who do not need a hospital will always recover from infection [ if viremic-time >= random-poisson recovery-time [ set infected? false set symptomatic? false set immune? true ]] end ;; This R0 is a numerical estimate of the basic reproduction number, as proposed by Uri Wilensky. ;; For more information on how this R0 equation was obtained, see the models 'epiDEM basic' and 'epiDEM travel and control'. to calculate-r0 set s0 initial-people - initial-infected if ((initial-people - count turtles with [ susceptible? ]) != 0 and (count turtles with [ susceptible? ] != 0)) ;; Prevent from dividing by 0 [ set r0 (ln (s0 / count turtles with [ susceptible? ]) / (initial-people - count turtles with [ susceptible? ])) set r0 r0 * s0 ] end
There is only one version of this model, created over 4 years ago by Antônio Ralph Medeiros de Sousa.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Covid-19 and Health System Capacity.png | preview | Preview for 'Covid-19 and Health System Capacity' | over 4 years ago, by Antônio Ralph Medeiros de Sousa | Download |
This model does not have any ancestors.
This model does not have any descendants.