Letâ€™s illustrate these table concepts by representing the data for a simple healthcare example. Consider an emergency department (ED) that has some known data concerning how patients of various severities are processed. Specifically, we have four patient types, their priority value, and their typical treatment time as given in Table 7.2.
|Patient Type||Priority||Treatment Time (Minutes)|
The first steps in building our model involve defining the model entities and the data table:
Load Simio and start a new model as weâ€™ve done before. The first thing weâ€™ll do is drag four instances of ModelEntity into the model facility view. Click on each one and use the properties or the F2 key to rename them to Routine, Moderate, Severe, and Urgent, respectively.
Letâ€™s take a minute to animate those entities a little better, so that we can tell them apart. Follow the same procedure described in Section 4.8. Click on an entity instance, and then click on the symbol library. Scroll down to the People category and select Man6. Repeat this using Man6 for all four entity instances. Although all entities will use the same symbol, we can tell them apart by giving each person a different shirt color. Zoom in so you can see your new symbols clearly. Click on the Routine entity. On the right side of the Symbols ribbon is a Color button. Clicking the lower half of the color button will display a color pallet. Select a green color and then apply it to Routine by clicking on the shirt of the man symbol. Repeat this procedure to apply a light blue to the Severe patients and Red to the Urgent patients. Weâ€™ll leave Moderate with the default color.
Next, letâ€™s create the data table. Select the Data tab just under the ribbon, and then select the Tables panel on the left if itâ€™s not already selected. The Table ribbon will appear, although the majority will be unavailable (grayed out) because we donâ€™t yet have an active table. Click on the Add Data Table button to add a blank table, then click on the Name property in the properties window and change the name to PatientData (no spaces are allowed in Simio names).
Now weâ€™ll add our three columns of data. Our first column will reference an entity type (an object), so click on Object Reference on the ribbon and then select Entity from that list. Youâ€™ve now created a column that will hold an Entity Instance. Go to the Name property (not the Display Name property) in the properties window and change it to PatientType. Our second column will be an integer, so click on Standard Property in the ribbon and select Integer. Go to the Name property and rename it to Priority. Finally, our third column will be an expression so click on Standard Property in the ribbon and select Expression. Go to the Name property and rename it to TreatmentTime. Since this represents a time, we need a couple of extra steps here: In the Logic category of the properties window, specify a Unit Type of Time and specify Default Units of Minutes.
Now that we have the structure of the table, letâ€™s add our four rows of data. You can add the data from Table 7.2. You can enter the data a row at a time or a column at a time; here weâ€™ll do the former. Click on the upper left cell and youâ€™ll see a list containing our four entity types. (If you donâ€™t see that list, go back two steps.) Select Routine as the Patient Type for row 1. Move to the Priority column, type 1 and press enter and youâ€™ll be moved to the TreatmentTime column. Here weâ€™ll type in the expression from Table 7.2, Random.Triangular(3,5,10). Tip: If the values of your data are partially hidden, you can double click on the right edge of the column name and it will expand to full width. Move to the next row in the PatientData table and follow a similar process to enter the remaining data from Table 7.2.
When youâ€™re finished your table should look similar to Figure 7.1.
Figure 7.1: Model 7-1 ED basic patient data in Simio table.
Weâ€™ve now defined the patient-related data that our model will use. In the next section, weâ€™ll demonstrate how to access the data from the table.
126.96.36.199 Referencing Data Tables
Table data can be used by explicitly referencing the table name, the row number, and the column name or number using the syntax TableName[RowNumber].ColumnName or the syntax TableName[RowNumber,ColumnNumber]. We could continue building our model now using that syntax to reference our table data. For example, we could use PatientData.TreatmentTime to refer to the treatment time for a Severe patient. While using this syntax is useful for referencing directly into a cell of a table, we often find that a particular entity will always reference a specific table row. For example in our case, weâ€™ll determine the row associated with a patient type, and then that entity will always reference data from that same row. You could add your own property or state to track that, but Simio already builds in this capability. The easiest method to access that capability is by setting the properties in the Table Row Referencing category of the Source object.
If we had a separate arrival stream for each of our four patient types, weâ€™d probably use this technique. Weâ€™d have a source object to create each patient type. Figure 7.2 illustrates how the source object for Severe patients could be configured by specifying the table name and an explicit row number. Once youâ€™ve made this association between an entity and a specific row in a table, you can use a slightly simpler syntax to reference the table data: TableName.ColumnName because the row number is already known. For example, we could now use PatientData.TreatmentTime to refer to the treatment time for any patient type.
Figure 7.2: Associating an entity with an explicit row in a table.
188.8.131.52 Selecting Entity Type
Before we finish our model, weâ€™ll explore one more aspect of tables. Itâ€™s very common to have data in a table where each row corresponds to an entity type, as we have in our model. Itâ€™s also common to have the entity type be selected randomly. Simio allows you to do both within the same construct. You can add a numeric column to your table that specifies the relative weight for each row (or entity type). Then you can specify that youâ€™ll randomly select a row based on that column by using the function TableName.ColumnName.RandomRow.
Letâ€™s follow a few final steps to complete our model.
- In our ED, historical information suggests that our patient mix is Routine (40%), Moderate (31%), Severe (24%), and Urgent (5%). We need to add this new information to our table. Return to the Data tab and the Tables panel. Click Standard Property and select Real. Go to the Name property and rename it to PatientMix. Then add the above data to that new column. When youâ€™re finished your table should now look like Figure 7.3. Note that, as noted in Section 5.2, the values in the Patient Mix column are interpreted by Simio only in relation to their relative proportions. While we entered the values here thinking of the percent of patients of each type, they could have equivalently been entered as probabilities (0.40, 0.31, 0.24, 0.05), or as any other positive multiple of the values we used (e.g., 4000, 3100, 2400, 500).
Figure 7.3: Model 7-1 ED Enhanced patient data in Simio table.
- Now we can continue building our model. The last change we made allows us to have a single Source that will produce the specified distribution of our four patient types. Place a Source in your model and specify an Interarrival Time of Random.Exponential(4) and units of Minutes. Instead of specifying one patient type in the Entity Type property with a specific row number as we did in Figure 7.2, weâ€™ll let Simio pick the row number and then weâ€™ll select the Entity Type based on the PatientType specified in that row. We must select the table row before we create the entity; otherwise the entity would already be created by the time we decide what type it is. So in the Table Reference Assignment, Before Creating Entities category, we will specify the Table Name of PatientData and the Row Number of PatientData.PatientMix.RandomRow. After the row is selected, the Source will go to the Entity Type property to determine which Entity Type to create. There we can select PatientData.PatientType from the pull-down list. This is illustrated in Figure 7.4.
Figure 7.4: Selecting an entity type from a table.
- Completing our model is pretty painless. Add a Server, set its Initial Capacity to 3, and specify a Processing Time of PatientData.TreatmentTime. Weâ€™re using the data in the table for this field, but note that weâ€™re using the short reference method. Since no explicit row is specified, weâ€™re telling Simio to use the row thatâ€™s already associated with each specific entity. When an entity of type Routine arrives, it will use row one and a treatment time sampled from the distribution Random.Triangular(3,5,10). However, when an entity of type Severe arrives, it will use row three and a treatment time sampled from the distribution Random.Triangular(10,15,30). Add a Sink, then connect Source to Server and Server to Sink with Paths. Your model should look something like Figure 7.5.
Figure 7.5: Model 7-1 Completed ED model.
Before enhancing our model, weâ€™ll do a small verification step so that weâ€™ll be confident that weâ€™ve correctly implemented the data table. Using the proportions of patient types and the expected service times for each patient type, we can compute the overall expected service time (11.96 minutes). With the overall arrival rate of 15 patients/hour, we expect a steady-state server utilization of 99.64%. We ran Model 7-1 for 25 replications of length 200 days with a 25-day warmup period and the resulting average scheduled utilization was 99.67%Â±0.104399.67%Â±0.1043 (the 95% confidence interval half-width). This illustrates an important point about model verification â€” itâ€™s often much easier to verify the model as you build it rather than waiting until the model is â€œfinished.â€ Since our sampled utilization matched our expectation quite well, weâ€™re now confident that weâ€™ve properly implemented the patient data table and can move on to our model enhancements.
Q1) How much time does “Routine” patients spent in this system?
Q2) How much time does “Routine” patients spent waiting in the ED queue?
Q3) We would like to keep average “Routine” patient wait time in ED queue below 30 minutes. What is the minimum capacity in the ED needed to attain that target?
Note: Run your model for 1100 days with a warm-up time of 100 days for 25 replications.