## 6.4 Simulating a simple health center

Let’s say we want to simulate an ambulatory consultation where a patient is first seen by a nurse for an intake, next by two doctors for the consultation and finally by administrative staff to schedule a follow-up appointment.

We can construct a patient trajectory which defines all these steps.

patient <- trajectory("patients' path") %>%
seize("nurse", 1) %>%
timeout(function() rnorm(1, 15)) %>%
release("nurse", 1) %>%
seize("doctor", 2) %>%
timeout(function() rnorm(1, 20)) %>%
release("doctor", 2) %>%
timeout(function() rnorm(1, 5)) %>%
release("administration", 1)
plot(patient)

Once the trajectory is known, you may attach arrivals to it and define the resources needed. In the example below, three types of resources are added: the nurse and administration resources, each one with a capacity of 2, and the doctor resource, with a capacity of 4. The last method adds a generator of arrivals (patients) following the trajectory patient. The time between patients is about 5 minutes.

Let’s run the simulation using replication.

envs <- lapply(1:100, function(i) {
simmer("health center") %>%
)
plot(get_mon_resources(envs),metric= "utilization")
plot(get_mon_resources(envs), metric = "usage", items = "server")
plot(get_mon_arrivals(envs), metric = "waiting_time")
## geom_smooth() using method = 'gam' and formula 'y ~ s(x, bs = "cs")'