CaseStudyForm | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Title | Extended Health Clinic | ||||||||||||
DateSubmitted | 25 Sep 2017 | ||||||||||||
CaseStudyType | TeachingCaseStudy | ||||||||||||
OperationsResearchTopics | SimulationModelling | ||||||||||||
ApplicationAreas | Healthcare | ||||||||||||
ProblemDescription |
This case study extends the Simple Health Clinic – Scheduled Appointments model. The extensions are:
| ||||||||||||
ProblemFormulation |
In order to formulate a simulation model we specify the following components:
![]()
![]() | ||||||||||||
ComputationalModel |
Start with the Simple Health Clinic – Scheduled Appointments JaamSim model.
![]() ![]() ![]() 'this.obj.Test = [TestDistribution].Value' } to AttributeAssignmentList.
![]() ![]() ![]() ![]() ![]() ![]() 'this.obj.Test + 1' |
| TriageToDoctor | NextComponent = Doctor, TravelTime = 2 min |
| TriageToTest | NextComponent = NurseTest, TravelTime = 2 min |
| NurseTest | NextComponent = TestToDoctor |
| TriageToDoctor | NextComponent = Doctor, TravelTime = 2 min |
Save your simulation.
Now, add Queues for both triage and testing, set these queues as the wait queues for triage and testing. The treatment time is modelled by a triangular distribution with minimum 2 minutes, maximum 15 minutes and mode (most likely) 8 minutes, so add a TriangularDistribution called TriageDistribution with these parameters. The test time is modelled as a constant time of 10 minutes, so add this to the NurseTest's ServiceTime. You need to change the StateAssignment of NurseTriage and NurseTest to reflect these activities too.
| Object | Key Inputs |
| NurseTriage | WaitQueue = TriageQueue, StateAssignment = Triage, ServiceTime = TriageDistribution |
| NurseTest | WaitQueue = TestQueue, StateAssignment = Test, ServiceTime = 10 min |
| TriageDistribution | UnitType = TimeUnit, MinValue = 2 min, MaxValue = 15 min, Mode = 8 min |
Finally, you should change the StateAssignment of all your queues so that we can track the time spent waiting for various sets in the pathway. You also need to change the DefaultStateList of your patient entities.
| Object | Key Inputs |
| WalkupQueue | StateAssignment = WaitTreat |
| AppointmentQueue | StateAssignment = WaitTreat |
| TriageQueue | StateAssignment = WaitTriage |
| TestQueue | StateAssignment = WaitTest |
| PatientEntity | DefaultStateList = { Arrive WaitTreat WaitTriage WaitTest Treat Triage Test Leave } |
Save your simulation.
At this point you can run your simulation and ensure that your triage/test process does not cause any errors.
However, now that the PatientEntity has new states we need to modify and append our Statistics modules and Simulation output. Change the existing Statistics modules to gather all the time in the system and waiting times and change the outputs generated by the simulation.
| Object | Key Inputs |
| TimeInSystem | SampleValue = 'this.obj.StateTimes([[Arrive]]) + this.obj.StateTimes([[WaitTriage]]) + this.obj.StateTimes([[Triage]]) + this.obj.StateTimes([[WaitTest]]) + this.obj.StateTimes([[Test]]) + this.obj.StateTimes([[WaitTreat]]) + this.obj.StateTimes([[Treat]]) + this.obj.StateTimes([[Leave]])' |
| WaitingTime | NextComponent = WaitingTriage SampleValue = 'this.obj.StateTimes([[WaitTriage]]) + this.obj.StateTimes([[WaitTest]]) + this.obj.StateTimes([[WaitTreat]])' |
| TimeInSystem2 | SampleValue = 'this.obj.StateTimes([[Arrive]]) + this.obj.StateTimes([[WaitTreat]]) + this.obj.StateTimes([[Treat]]) + this.obj.StateTimes([[Leave]])' |
| WaitingTime2 | NextComponent = WaitingTriage SampleValue = this.obj.StateTimes([[WaitTreat]]) | | WaitingTriage (New Statistics component) | UnitType = TimeUnit NextComponent = WaitingTest SampleValue = this.obj.StateTimes([[WaitTriage]]) | | WaitingTest (New Statistics component) | UnitType = TimeUnit NextComponent = WaitingTreat SampleValue = this.obj.StateTimes([[WaitTest]]) | | WaitingTreat (New Statistics component) | UnitType = TimeUnit NextComponent = PatientWalkupSink SampleValue = this.obj.StateTimes([[WaitTreat]]) | | Simulation | UnitTypeList = DimensionlessUnit TimeUnit TimeUnit TimeUnit TimeUnit TimeUnit DimensionlessUnit DimensionlessUnit TimeUnit TimeUnit DimensionlessUnit DimensionlessUnit RunOutputList = { [Simulation].RunIndex(1) } { [WaitingTriage].SampleAverage } { [WaitingTest].SampleAverage } { [WaitingTreat].SampleAverage } { [WaitingTime].SampleAverage } { [TimeInSystem].SampleAverage } { [WalkupQueue].QueueLengthAverage } { [Doctor].Utilisation } { [WaitingTime2].SampleAverage } { [TimeInSystem2].SampleAverage } { [AppointmentQueue].QueueLengthAverage } { '[Doctor2Appointment].Utilisation + [Doctor2Walkup].Utilisation' } |
Save your simulation.
Run your simulation and use Lab3Analysis.R to look at the results from your simulation with the triage and tests added. The confidence intervals results should look as follows:
| ||||||||||||
Results | The results... | ||||||||||||
Conclusions | In conclusion... | ||||||||||||
ExtraForExperts | |||||||||||||
StudentTasks |
I | Attachment | History | Action | Size | Date | Who | Comment |
---|---|---|---|---|---|---|---|
![]() |
Lab3Analysis.R | r1 | manage | 1.7 K | 2017-09-28 - 04:05 | MichaelOSullivan | |
![]() |
nurse.png | r1 | manage | 5.1 K | 2017-09-28 - 02:44 | MichaelOSullivan |