2014년 2월 25일 화요일

Simulation of Emergency Department using Promoel

For SHS student case study competition, my team had to come up with improved Emergency Department design and do an analysis on costs, wait time, and sensitivity analysis.
I was in charge of modeling a simulation of and do a analysis on various different number of input parameters using Promodel.
Below is an example showing wait time and estimated annual labor cost depend on different combination of nurses and doctor. This is done by changing its attribute quantity in promodel

Here is the code for the simulation :

********************************************************************************
*                                                                              *
*                         Formatted Listing of Model:                          *
*                    C:\Users\Administrator\Desktop\SHS.MOD                    *
*                                                                              *
********************************************************************************

  Time Units:                        Minutes
  Distance Units:                    Feet


********************************************************************************
*                                  Locations                                   *
********************************************************************************

  Name       Cap Units Stats       Rules      Cost      
  ---------- --- ----- ----------- ---------- ------------
  enterance  inf 1     Time Series Oldest, ,            
  k1         4   1     Time Series Oldest, ,            
  h1         2   1     Time Series Oldest, ,            
  f1         6   1     Time Series Oldest, ,            
  i1         2   1     Time Series Oldest, ,            
  p1         2   1     Time Series Oldest, ,            
  lobby      inf 1     Time Series Oldest, ,            
  ambulance  inf 1     Time Series Oldest, ,            
  walkin     inf 1     Time Series Oldest, ,            


********************************************************************************
*                                   Entities                                   *
********************************************************************************

  Name       Speed (fpm)  Stats       Cost      
  ---------- ------------ ----------- ------------
  Patient    150          Time Series            


********************************************************************************
*                                  Resources                                   *
********************************************************************************

                             Res    Ent                                        
  Name        Units Stats    Search Search Path       Motion         Cost      
  ----------- ----- -------- ------ ------ ---------- -------------- ------------
  nurse       5     By Unit  None   Oldest            Empty: 150 fpm            
                                                      Full: 150 fpm            

  doctor      2     By Unit  None   Oldest            Empty: 150 fpm            
                                                      Full: 150 fpm            

  triagedoc   1     By Unit  None   Oldest            Empty: 150 fpm            
                                                      Full: 150 fpm            

  triagenurse 1     By Unit  None   Oldest            Empty: 150 fpm            
                                                      Full: 150 fpm            


********************************************************************************
*                                  Processing                                  *
********************************************************************************

                              Process                    Routing

 Entity   Location  Operation            Blk  Output   Destination Rule     Move Logic
 -------- --------- ------------------   ---- -------- ----------- -------  ------------
 Patient  enterance if arriving_type=0 then route 1
                    if arriving_type=1 then route 2
                                         1    Patient  walkin      FIRST 1
                                         2    Patient  ambulance   FIRST 1
 Patient  walkin                         1    Patient  lobby       FIRST 1
 Patient  ambulance                      1    Patient  lobby       FIRST 1
 Patient  lobby     if esi=1 then begin route 1 end
                    if esi=2 then begin route 2 end
                    if esi=3 then begin route 3 end
                    if esi=4 then begin route 4 end
                    if esi=5 then begin route 5 end
                    if esi=6 then begin route 3 end
                                         1    Patient  k1,999      FIRST 1  USE nurse, 999 FOR 10 and doctor, 999 for 15 Free all
                                                                            Use nurse, 999 for 10
                                              Patient  h1,999      FIRST    USE nurse, 999 FOR 10 and doctor, 999 for 15 Free all
                                                                            Use nurse, 999 for 10
                                              Patient  f1,999      FIRST    USE nurse, 999 FOR 10 and doctor, 999 for 15 Free all
                                                                            Use nurse, 999 for 10
                                              Patient  i1,999      FIRST    USE nurse, 999 FOR 10 and doctor, 999 for 15 Free all
                                                                            Use nurse, 999 for 10
                                              Patient  p1,999      FIRST    USE nurse, 999 FOR 10 and doctor, 999 for 15 Free all
                                                                            Use nurse, 999 for 10
                                         2    Patient  k1,700      FIRST 1  USE nurse, 700 FOR 10 and doctor, 700 for 15 Free all
                                                                            Use nurse, 700 for 10
                                              Patient  h1,700      FIRST    USE nurse, 700 FOR 10 and doctor, 700 for 15 Free all
                                                                            Use nurse, 700 for 10
                                              Patient  f1,700      FIRST    USE nurse, 700 FOR 10 and doctor, 700 for 15 Free all
                                                                            Use nurse, 700 for 10
                                              Patient  i1,700      FIRST    USE nurse, 700 FOR 10 and doctor, 700 for 15 Free all
                                                                            Use nurse, 700 for 10
                                              Patient  p1,700      FIRST    USE nurse, 700 FOR 10 and doctor, 700 for 15 Free all
                                                                            Use nurse, 700 for 10
                                         3    Patient  f1,500      FIRST 1  USE nurse, 500 FOR 10 and doctor, 500 for 15 Free all
                                                                            Use nurse, 500 for 10
                                              Patient  h1,500      ALT      USE nurse, 500 FOR 10 and doctor, 500 for 15 Free all
                                                                            Use nurse, 500 for 10
                                              Patient  k1,500      FIRST    USE nurse, 500 FOR 10 and doctor, 500 for 15 Free all
                                                                            Use nurse, 500 for 10
                                              Patient  i1,500      ALT      USE nurse, 500 FOR 10 and doctor, 500 for 15 Free all
                                                                            Use nurse, 500 for 10
                                              Patient  p1,500      ALT      USE nurse, 500 FOR 10 and doctor, 500 for 15 Free all
                                                                            Use nurse, 500 for 10
                                         4    Patient  f1,350      FIRST 1  USE nurse, 350 FOR 10 and doctor, 350 for 15 Free all
                                                                            Use nurse, 350 for 10
                                              Patient  k1,350      ALT      USE nurse, 350 FOR 10 and doctor, 350 for 15 Free all
                                                                            Use nurse, 350 for 10
                                              Patient  i1,350      ALT      USE nurse, 350 FOR 10 and doctor, 350 for 15 Free all
                                                                            Use nurse, 350 for 10
                                              Patient  h1,350      ALT      USE nurse, 350 FOR 10 and doctor, 350 for 15 Free all
                                                                            Use nurse, 350 for 10
                                              Patient  p1,350      ALT      USE nurse, 350 FOR 10 and doctor, 350 for 15 Free all
                                                                            Use nurse, 350 for 10
                                         5    Patient  f1,200      FIRST 1  USE nurse, 200 FOR 10 and doctor, 200 for 15 Free all
                                                                            Use nurse, 200 for 10
                                              Patient  k1,200      ALT      USE nurse, 200 FOR 10 and doctor, 200 for 15 Free all
                                                                            Use nurse, 200 for 10
                                              Patient  i1,200      ALT      USE nurse, 200 FOR 10 and doctor, 200 for 15 Free all
                                                                            Use nurse, 200 for 10
                                              Patient  p1,200      ALT      USE nurse, 200 FOR 10 and doctor, 200 for 15 Free all
                                                                            Use nurse, 200 for 10
 Patient  k1        if esi=1 then wait U(127, 30)
                    if esi=2 then wait U(157, 30)
                    if esi=3 then wait U(187, 30)
                    if esi=4 then wait U(217, 30)
                    if esi=5 then wait U(247, 30)
                    if esi=6 then wait U(277, 30)
                                         1    Patient  EXIT        FIRST 1
 Patient  h1        if esi=1 then wait U(127, 30)
                    if esi=2 then wait U(157, 30)
                    if esi=3 then wait U(187, 30)
                    if esi=4 then wait U(217, 30)
                    if esi=5 then wait U(247, 30)
                    if esi=6 then wait U(277, 30)
                                         1    Patient  EXIT        FIRST 1
 Patient  f1        if esi=1 then wait U(127, 30)
                    if esi=2 then wait U(157, 30)
                    if esi=3 then wait U(187, 30)
                    if esi=4 then wait U(217, 30)
                    if esi=5 then wait U(247, 30)
                    if esi=6 then wait U(277, 30)
                                         1    Patient  EXIT        FIRST 1
 Patient  i1        if esi=1 then wait U(127, 30)
                    if esi=2 then wait U(157, 30)
                    if esi=3 then wait U(187, 30)
                    if esi=4 then wait U(217, 30)
                    if esi=5 then wait U(247, 30)
                    if esi=6 then wait U(277, 30)
                                         1    Patient  EXIT        FIRST 1
 Patient  p1        if esi=1 then wait U(127, 30)
                    if esi=2 then wait U(157, 30)
                    if esi=3 then wait U(187, 30)
                    if esi=4 then wait U(217, 30)
                    if esi=5 then wait U(247, 30)
                    if esi=6 then wait U(277, 30)
                                         1    Patient  EXIT        FIRST 1


********************************************************************************
*                                   Arrivals                                   *
********************************************************************************

  Entity   Location  Qty Each   First Time Occurrences Frequency  Logic
  -------- --------- ---------- ---------- ----------- ---------- ------------
  Patient  enterance 1                     inf         e(15)      symptom=symptom_dist()
                                                                  esi=esi_dist()
                                                                  arriving_type=arriving_dist()
                                                                 


********************************************************************************
*                                  Attributes                                  *
********************************************************************************

  ID            Type         Classification
  ------------- ------------ --------------
#
#0=Cut Contusions(16%)
#1=URI(10.5%)
#2=Sprain Broken Bone(7.9%)
#3=Abdominal GI(6.6%)
#4=Other Pain(6.3%)
#5=Skin infection(6.3%)
#6=Mental Health(4.9%)
#7=Insect bite (4.7%)
#8=Asthma Pulmunary(4.3%)
#9=Other Bacterial Infection(3.5%)
#10=Headache and Neuro(3.5%)
#11=Renal/ UTI(3.5%)
#12=Alcohol Drug(3.5%)
#13=Head Injury concission(3.5%)
#14=Other Injury(15%)
#
  symptom       Integer      Entity      
#
#0=unk(5.6%)
#1=1(1.1%)
#2=2(10.2%)
#3=3(43.4%)
#4=4(32.7%)
#5=5(7%)
  esi           Integer      Entity      
#
#0=walk-in
#1=embulance
  arriving_type Integer      Entity      


********************************************************************************
*                              User Distributions                              *
********************************************************************************

  ID            Type         Cumulative   Percentage   Value      
  ------------- ------------ ------------ ------------ ------------
  symptom_dist  Discrete     No           16           0          
                                          10.5         1          
                                          7.9          2          
                                          6.6          3          
                                          6.3          4          
                                          6.3          5          
                                          4.9          6          
                                          4.7          7          
                                          4.3          8          
                                          3.5          9          
                                          3.5          10        
                                          3.5          11        
                                          3.5          12        
                                          3.5          13        
                                          15           14        
  esi_dist      Discrete     No           5.6          6          
                                          1.1          1          
                                          10.2         2          
                                          43.4         3          
                                          32.7         4          
                                          7            5          
  arriving_dist Discrete     No           85           0          
                                          15           1          

as you can see, we had to research probability distribution on various of different things that could cause different processing time and routes. Because of the limitation of the student version of the program, detailed routing and processing were not accomplished. However, we were able to get close enough theoretical numbers which were very close to numbers that we got from manual queuing theory calculation 

댓글 없음:

댓글 쓰기