Anda di halaman 1dari 413

USER MANUAL

Version FlexSim HC 5.0.2

Date Published
01 JUN 2015
Table of Contents Creating or Importing Floor Plans

o Creating or Importing Floor Plans


Introduction o Introduction to Floor Plans
Welcome to FlexSim Healthcare o Importing a Floor Plan File
Using This Manual o Changing Floor Plans
o Floor Plan Settings
Activating Your License
o Troubleshooting Floor Plans
Customer Support
Introduction to Library Objects
Training Classes Adding Objects to a Model
What's New in FlexSim HC Adding Locations to an Area
Getting Started
Customizing Object Properties and
Getting Started Settings
Overview of the Model Building Process
FlexSim HC at a Glance
o Customizing Object Properties and
Key Terms and Definitions
Settings
o Customizing Object Properties and
Settings
Using the Toolbox and Toolbar o Moving, Resizing, and Rotating
Objects
o Using the Toolbox and Toolbar o Changing the Shape and
o Introduction to the Toolbox and Appearance of Objects
Toolbar o Additional Patient Location Settings
o Adding a New Tool Component
o Opening and Closing a Tool
Component Connecting Locations and Item Objects
o Renaming a Tool Component
o Copying a Tool Component
o Connecting Locations and Item
o Reorganizing Tool Components
Objects
o Deleting a Tool Component
o Introduction to Connecting Locations
Navigating in FlexSim HC
and Objects
o The Flowchart Tool at a Glance
o Using the Flowchart Tool
Arranging Windows and Tabs

o Arranging Windows and Tabs Adding Staff and Resources


o Introduction to Windows and Tabs
o Rearranging Windows and Tabs
Adding Staff and Resources
o Resizing Windows and Panes
Introduction to Staff and Resources
Adding Resources to a Model
Planning a Simulation Model Selecting a Resource Group or Group
What are Simulations? Member
Planning a New Simulation Model Renaming Groups and Group Members
Data Gathering Strategies Moving Groups and Group Members
Using ExpertFit Changing the Appearance of Staff
Resources
Building a Layout of Your Facility Creating Alternate Resource Groups

Building a Layout of Your Facility


Introduction to Building a Layout Patient-Centered Activities

2
Patient-Centered Activities o Specific Activity Type Settings
Introduction to Patient-Centered Activities o Introduction to Specific Activity Type
Settings
o Patient Destination
Key Concepts about Activities o Processing Time
o Staff Requirements
o Key Concepts about Activities o Staff Destination
o Introduction to Key Concepts about o Equipment Requirements
Activities o Transport Requirements
o Most Activities are Patient-Centered o Next Activity
o Building Complex Patient Tracks
and Activity Lists
o How Activities Begin Advanced Activity Settings
o What Happens During an Activity
o How Patients and Staff Move to o Advanced Activity Settings
Locations or Areas o Advanced Functions
o How Staff and Resources Are o Advanced Time Controls
Assigned to an Activity o Costs
o Staff and Resource Priorities
Adding and Managing Patient Tracks
The Patient Track Manager at a Glance Adding Patients
Overview of Adding and Managing Activities
Adding an Activity Adding Patients
Introduction to Patients

Basic Activity Settings


Patient Classifications
o Basic Activity Settings
o Introduction to Basic Activity o Patient Classifications
Settings o Introduction to Patient
o Activity IDs Classifications
o Activity Names o The Patient Classifications Tool at a
o Milestones Glance
o Predecessors

Patient Visuals
Activity Types
o Patient Visuals
o Activity Types o Introduction to Patient Visuals
o Overview of Activity Types o The Patient Visuals Tool at a Glance
o Process o Managing Visual Profiles
o Process > Send Message o Visual Profile Settings
o Process > Send Item o Assigning a Visual Profile to a PCI or
o Move Equipment > Process Activity
o Move Transports > Process o Patient Overhead Text Display
o Escort Patient > Process
o Transport Patient > Process
o Patient Travels Unattended Patient Arrival Patterns
o Decision Point
o Custom o Patient Arrival Patterns
o Introduction to Patient Arrival
Patterns
Specific Activity Type Settings o Inter-Arrival Times

3
o Hourly Arrivals The Data Collector
o Appointments The Experimenter
o Custom Arrivals Introduction to Experimenter
Key Terms and Concepts
The Experimenter at a Glance
Related Patient Arrival Tools Designing Scenarios and Testing Variables
Running an Experiment
o Related Patient Arrival Tools Saving and Exporting Data
o The Distribution Chooser
o Creating a Warm-up Period
Tutorials

Routine Staff or Location Activities Tutorials


Introduction to Tutorials
Routine Staff or Location Activities Tutorial Case Study
Introduction to Routine Staff or Location
Activities
The Shift Schedules Tools Tutorial 1 - Building a Layout of Your
Introduction to the Shift Schedules Tool Facility
Adding and Managing Schedules
The Shift Schedules Tool at a Glance o Tutorial 1 - Building a Layout of Your
Adding Staff or Resources to a Schedule Facility
Resource Break Options Settings o Tutorial 1.1 - Importing a Floor Plan
Adding Locations and Areas to a Schedule o Tutorial 1.1 Introduction
Location Break Options Settings o Step One - Create and Save a New
The Global Processes Tool Simulation Model
Introduction to the Global Process Tool o Step Two - Import a Floor Plan File
Adding and Managing Processes o Step Three - Change the Floor
Process Example 1: Checking Patient Vitals Plan's Visual Settings
Process Example 2: Phone Call Answering o Step Four - Scale the Floor Plan
System Drawing
Process Example 3: Staff Meetings o Tutorial 1.2 - Adding Location and
The Random Interrupts Tool Item Objects
Introduction to the Random Interrupts Tool o Tutorial 1.2 Introduction
o Step One - Add the Objects to the
Running a Simulation Model
Introduction to Running a Simulation o Step Two - Resize and Rotate the
Using the Simulation Control Bar Objects
Preventing Simulation Model Errors o Step Three - Change Object Shapes
and Appearance
Getting Data from a Simulation o Step Four - Change Object Settings
o Step Five - Add Locations to a
Custom Area
Getting Data from a Simulation
o Tutorial 1.3 - Connecting Location
Introduction to Getting Data from a
and Item Objects
Simulation
o Tutorial 1.3 Introduction
Dashboards
o Step One - Add the Objects to the
Introduction to Statistics Dashboards
Model
Adding and Managing Dashboards
o Step Two - Resize and Rotate the
Introduction to Widgets
Objects
Adding Widgets
Moving and Resizing Widget Display Boxes
Widget Settings at a Glance
Widget Overview Tutorial 2 - Adding Staff and Resources

4
o Tutorial 2 - Adding Staff and o Step Six - Send Items to a Lab
Resources o Step Seven - Require Additional
o Tutorial 2.1 - Adding and Changing Staff
Staff and Resources o Step Eight - Assign a Transport
o Tutorial 2.1 Introduction o Step Nine - Return to a Reserved
o Step One - Add Staff and Resources Location
to a Model o Tutorial 3.3 - Creating Additional
o Step Two - Add Group Members to a Patient Tracks
Resource o Tutorial 3.3 Introduction
o Step Three - Rename Groups and o Step One - Copy a Track
Group Members o Step Two - Change Activity Priority
o Step Four - Move and Rotate Group Levels
Members o Step Three - Delete Activities
o Step Five - Change Staff Member's
Appearance
o Tutorial 2.2 - Creating Alternate Tutorial 4 - Adding Patients
Resource Groups
o Tutorial 2.2 Introduction o Tutorial 4 - Adding Patients
o Step One - Create Alternate o Tutorial 4.1 - Creating Patient
Resource Groups Classifications
o Step Two - Add Members to the o Tutorial 4.1 Introduction
Alternate Groups o Step One - Create Different Patient
Classifications
o Step Two - Assign Patients to a
Tutorial 3 - Patient-Centered Activities Patient Track
o Tutorial 4.2 - Changing Patient
o Tutorial 3 - Patient-Centered Visuals
Activities o Tutorial 4.2 Introduction
o Tutorial 3.1 - Creating Patient Tracks o Step One - Create New Visual
and Activities Profiles
o Tutorial 3.1 Introduction o Step Two - Change Visual Profiles
o Step One - Create a New Patient o Step Three - Assign Visual Profiles
Track to a PCI
o Step Two - Add a Milestone and a o Step Four - Assign Visual Profiles to
Location an Activity
o Step Three - Add a Processing Time o Tutorial 4.3 - Creating Patient Arrival
o Step Four - Assign Staff Patterns
o Step Five - Keep a Staff Member o Tutorial 4.3 Introduction
o Step Six - Assign Equipment o Step One - Create an Hourly Arrival
o Step Seven - Release a Staff Schedule
Member o Step Two - Create an Inter-Arrival
o Step Eight - Reuse Staff Members Pattern
o Tutorial 3.2 - Creating Decision Point o Step Three - Set the Hours of
Activities Operation
o Tutorial 3.2 Introduction
o Step One - Create a Doctor
Examination Activity Reference Manual
o Step Two - Create Variable Activities
o Step Three - Change Next Activity License Activation
Settings Concepts
o Step Four - Change Predecessor Example
Settings Reference
o Step Five - Send Staff to a Different
Location
5
Overview
FlexScript Coding Breakpoints
Call Stack
o FlexScript Coding Code Profiler
o Writing Logic in FlexSim Event List
o Basic Modeling Functions Event Log
o Code Editor Local Variables
Watch Variables
o Command Helper
Debugging

Debugging FlexScript Commands

6
Welcome to FlexSim Healthcare
FlexSim Healthcare (HC) is the most robust, comprehensive, and easy-to-use simulation software
designed specifically to solve the unique problems faced by today's healthcare facilities. FlexSim HC
allows you to analyze all of the components of your healthcare facility and evaluate the impact they have
on patient outcomes. It will help you find accurate solutions to your problems and make decisions about
how to make your healthcare organization run as efficiently as possible without the costly risk of trial and
error. Ultimately, FlexSim HC will help practitioners do what they do best: help patients get better.

Real Data
FlexSim HC can help you track and display a wide variety of statistics and data that can help you make
well-informed decisions for your healthcare facility. You can also run many different types of experiments to
see what would happen if you changed some element of your medical facility or process. This valuable
data can help you solve many different kinds of problems, such as:

Ensuring human resources are not over- or under-utilized

Estimating the cost of proposed changes

Reducing patient waiting times by identifying possible bottlenecks

Cutting costs from inefficient use of resources

Identifying the best strategy for handling variations in patient volumes

All of this data can be displayed in any format you would like, such as charts, graphs, etc. Any data you
create in FlexSim HC can easily be exported to spreadsheet programs such as Excel. Data can also be
easily imported into your simulation model from many different spreadsheet formats.

3D Visuals
Simulation should be just as capable of being visually compelling as it is analytically compelling. FlexSim
HC's fully 3D visuals allow you to see exactly what's going on in the model as its running. It's much easier
to compare results when you can visualize what's happening to your simulated healthcare system.
The 3D visuals also create opportunities for communication and teamwork among all the stakeholders in
patients' outcomes. A simulation with accurate 3D models of the personnel, equipment, and furniture found
in your actual healthcare facility is far more compelling than a simple chart.

Patient Track Manager


Using the Patient Track Manager, you can create plans for patients to follow based on the patient's acuity,
diagnosis, or any other criteria you determine. These plans can include different activities or processes that
should occur from the moment a patient arrives to the time they depart. The Patient Track Manager can
also pull the necessary human resources to provide patient care and guide them to the appropriate next
step in their treatment.

7
Using this Manual
The right pane (the Quick Properties pane) contains the Table of Contents for the User Manual. The Table
of Contents is divided into multiple chapters, each containing several topics. To open a chapter, either click
the chapter title or the Book button next to its title. This will open the chapter and display all the topics
listed in that chapter. You can read a topic by clicking the topic title or by clicking the Topic button next
to its title. You can also navigate between topics in the order they are listed in the Table of Contents by
clicking the Previous or Next buttons at the top and bottom of each topic.
Many topics contain hyper-links to other parts of the User Manual for your convenience. If you ever click a
link and find that you want to go back to the page you were just barely looking at, you can click the Back
button above the Table of Contents to return to the previous page.

Tips and Important Notes


Information that requires special attention will be formatted using the following icons:

Tip Box Title

The tip for the text will be included in this text box.

Important Note Box Title

The text for the important note will be included in this text box.

User Manual Display


If you want, you can change way this window displays the User Manual. For example, you could make the
User Manual expand to the full size of the window if you wanted to see an image. See Arranging Windows
and Tabs for more information.

8
Activating Your License
In order to activate your license, you will need:

1. Your FlexSim Account


2. Your Activation ID

FlexSim Account
First, you will need your login information for your FlexSim Account. There are two possible ways to set up
a FlexSim Account:

If you downloaded a trial version of FlexSim Healthcare (HC), you set up your FlexSim account at that
time.

If you purchased FlexSim HC without downloading a trial version, a customer service representative
should have sent you an email with your FlexSim account information at the time of purchase.

If you have forgotten your FlexSim Account login information or need to set up your account for the first
time, please contact FlexSim Customer Support.

Activation ID
Using your FlexSim Account, you can obtain an Activation ID. An Activation ID is a product key that is used
to activate your FlexSim HC license on a PC or LAN license server. Each Activation ID has a defined
number of seats associated with it. The seat number determines how many computers using that particular
Activation ID will be authorized to run the full version of FlexSim HC at a given time.

What does an Activation ID look like?

A typical Activation ID looks like this:


company.com08-ABCDE-FGHIJ-KLMNO-FESENT7.3

Once you have your FlexSim account information, follow the steps below to activate your license:

1. Go to http://www.flexsim.com/account/ and login to your FlexSim Account.

2. Once logged in, click My Licenses on the left menu bar. This will take you to a page that lists the
current software licenses that are associated with your FlexSim Account.

3. Click on the folder named FlexSim Enterprise to expand it. This will display all the Activation IDs that
are available for your account, as shown in the following image. It will also indicate how many seats are
available for that particular Activation ID, which refers to the maximum number of computers that can
run a licensed copy of FlexSim HC at a time.

9
4. Use your mouse to highlight and copy (Ctrl+V) the Activation ID.

5. In FlexSim on the main menu, click Help, then License Activation. This will open the License
Activation dialog box, as shown in the following image:

6. On the Activate tab, paste (Ctrl +P) the Activation ID into the Activation ID field.

7. If you are activating your license directly from FlexSim, click Activate through Flexsim. If you are
using your company's server instead, click Activate through your company's license server.

8. Click Activate. The status box underneath the Activate button will alert you whether the activation
process was successful or not.

10
Returning and Repairing Licenses
For more information about activating, returning, and repairing licenses, see License Activation in the
Reference Manual.

11
Customer Support
You are welcome to contact FlexSim for customer support at any time using the contact information listed
below. Be aware that for technical assistance, you will need a current FlexSim maintenance agreement
unless you are using an evaluation version of FlexSim HC.
FlexSim's in-house technical support is available from 9:00 AM to 7:00 PM Eastern Time. Technical
support will be closed on major US holidays.
Technical support services are provided through phone, email, and online web conferencing. FlexSim
provides additional community resources, including an online forum. To access FlexSim's technical support
and resources:

Phone: Call (801) 224-6914 and ask for technical support.

Email: Visit http://www.flexsim.com/support/ to submit a support case using an online form. A customer
service representative will respond to you by email and will continue to work with you through email
until your case is successfully resolved.

Online Community Forum: Visit http://www.flexsim.com/forum/ to connect to other end-users,


including FlexSim partners and distributors who are also ready to assist you. The Online Community
Forum also includes sample models, tips and tricks for modeling and managing simulation projects,
and other general support topics.

Training Classes: FlexSim regularly offers in-person, instructor-led training sessions. Many FlexSim
software license purchases include training sessions for at least two people. Additional training
sessions can be purchased for a fee. See Training Classes for more information.

Consulting Projects: FlexSim can provide you with consulting services if you have a big simulation
project that needs to be completed quickly or if you'd like one-on-one help with model building. Use the
contact information above to discuss consulting fees and projects.

Feel free to use FlexSim's support services and resources at any time you feel you need assistance.
FlexSim prides itself on its excellent customer service.

12
Training Classes
FlexSim regularly offers in-person, instructor-led training sessions. Many FlexSim software license
purchases include training sessions for at least two people. Additional training sessions can be purchased
for a fee.
The training sessions for first-time FlexSim users includes a 3-day hands-on course which runs Monday
through Wednesday. Attendees learn to use the software by creating and analyzing simulation models.
Attendees are then invited to remain at FlexSim's offices for the Thursday through Friday for one-on-one
model-building help. There is no additional cost for this optional one-on-one training and support. This is an
opportunity for attendees to be paired with a FlexSim engineer to start your initial simulation project.
The current FlexSim training schedule can be found at http://www.flexsim.com/calendar/.

13
What's New?

Version 5.0.2 (May 22, 2015)

New Features

1. PCI table now has a Visuals and Speed column


2. Dashboard widgets size according to dashboard size when dragged out
3. Objects are selected after being dragged out so their properties are immediately available
4. Moving members of resource groups in the 3D view sets their offsets
5. Line Graphs set their start time based off the model start time
6. Dashboard widgets can be created with the click and drop edit mode
7. You can now specify the random stream of patient arrival tables
8. Flowchart blocks resize based on name length

Bug Fixes

1. Various interface issues


2. Fixed some issues with elevators
3. Fixed some Flowchart issues
4. Fixed some dashboard widgets

Version 5.0.0 (April 7, 2015)

New Features

1. 64-bit version (enables FlexSim to use more RAM)


2. Windowing interface overhaul to use a docked window paradigm
3. Created a Quick Properties docked window that is context sensitive. The window will display properties
based on the current selection or the active document window
4. Removed Properties windows and put all object properties in the Quick Properties panel so they can be
accessed just by clicking an object
5. Removed the Tools menu and added an organizable Toolbox
6. Library is context sensitive and changes its display based on the current selection or the active
document window
7. New Library icons
8. Library objects have been reorganized to be more intuitive
9. Library enhancements to include collapsible groups and edit modes
10. Clicking on library icons shows images of all possible shapes allowing you to select the shape that will
be dragged out
11. Track Manager UI redesign to make use of new Quick Properties panel
12. Improved the Staff Destination field so that it behaves more like the other fields and can use
pickoptions
13. Advanced Function window is now in the Quick properties and displays with the other options for
activities
14. Added a Patient Visuals window
15. Added a trigger to change a patient's visuals using new visual profiles
16. Moved Dashboards into a document window that can now be closed and reopened whenever
17. Added dashboard widgets to the library and can now be dragged out
14
18. Improved the Shift Schedule so that you can specify different types of down times
19. Added a sampler button that is placed throughout the software to allow users to sample objects, colors,
and images. The sampler helps to improve ease of use, speed up model building, and eliminate some
need for writing code
20. Most drop down lists have been organized into a hierarchical structure with objects being placed in
groups according to area and resource group
21. Added and updated several picklist popups removing all text based picklist options from Track fields
22. New By Simulation Time pickoption that generates a global table based off the number of time divisions
you need
23. Sample Sets can be chosen from a table to speed up multiple selection
24. Moved the User Manual into FlexSim as a dockable window
25. User Manual completely rewritten
26. Added double click to open colors panel to most color wells
27. Added an autosave feature to global preferences
28. Added capability to model patients who stay on gurneys/wheelchairs through processes
29. Improved staff and patient animations and staff positioning
30. Added a picklist to allow a patient to stop at an intermediate destination before going to their final
destination
31. Added a Measure/Convert tool
32. Tree Find/Replace is now integrated with the Quick Properties window and has support for case-
insensitive searches as well as searching for node names
33. Improved script console allowing scripts to be saved both in individual models and to the user
environment. You can also now debug your script console code
34. Improved the Item Bin interface. Item shapes may be changed through a drag and drop from the
Library Icon Grid
35. Improvement in the Code Editor and other areas where logic is defined through draggable constructs in
the library icon grid and sampler buttons throughout popups and picklist widgets to automatically add
code, etc. FlexSim commands also display a short description when typing in the code editor
36. Picklist fields and many popups' fields have code highlighting and autocomplete
37. Added support for user libraries
38. Better debugger that allows you to access the tree and other areas of FlexSim while in debug mode.
Hovering over variables during debug mode will display their current value
39. Better support for importing 3D shapes. FlexSim now supports the following formats: *.wrl; *.3ds; *.dxf;
*.stl; *.skp; *.dae; *.obj; *.ac; *.x; *.ase; *.ply; *.ms3d; *.cob;*.md5mesh; *.irr; *.irrmesh; *.ter; *.lxo;
*.csm; *.scn; *.q3o; *. q3s; *.raw; *.off; *.mdl; *.hmp; *.scn; *.xgl; *.zgl; *.lvo; *.lvs; *.blend
40. Added a new mesh class for drawing in OpenGL
41. Stereographic 3d rendering (requires workstation Quadro or FireGL card for frame-sequential
rendering)
42. Enhanced graphical compatibility with integrated Intel cards
43. Improved 3d rendering, including shadow rendering, specular highlights on 3ds objects, bump maps,
parallax maps, etc
44. Updated visual studio wizards that work with VS 2012

Backwards Compatibility Note: the following changes may slightly change the way updated
models behave.

1. Improved Resource request logic so that queued requests on a resource that goes off schedule
are given to their group and requests are not given to resources with an off schedule event in
their queue
2. Removed the Preempt checkbox from activities since the tier system in the priority field already
does this

15
Version 4.3.10 (June 2014)

New Features

1. User sees a warning message if the model start time is set to something greater than 7 days

Bug Fixes

1. The experiment variable to update an Arrival Table now sets the PCI column correctly
2. The Data Collector's "List of Locations" recording criteria option now accepts Areas as well as
Locations
3. Data Collectors now pass the correct value for "lastval" in column calculation functions
4. Fixed the "Standard Down" function for Time Tables and Random Interrupts so that it doesn't cause
exceptions later in certain memory conditions
5. Updated the "Resume Object Flow" function for Time Tables and Random Interrupts so that locations
don't receive extra patients when they resume
6. Fixed an animation problem when patients try to sit down while carrying something
7. If a Location's Area is changed to an Area that does not yet exist, the Location's input and output ports
are deleted
8. Fixed an exception that occurred when switching from a bar chart to a dot plot in the Patient Waiting
Time dashboard widget
9. Standing animation is now applied to staff called as operators to ItemProcessing objects
10. Removed a warning that occurred if a model had just item class objects
11. The <none> shape on Patient Processing objects will now either do nothing or animate patient
according to patient's last known position as recorded in the frame attribute.
12. Fixed problems with Patient Rounds option for Custom Activities

Version 4.3.8 (May 2014)

New Features

1. Utilization box plots only record a single value per period per day - this applies to Resources, Locations
and Item Object widgets
2. Added box plots to State widgets for Resources, Locations and Item Objects that work like the
Utilization box plots
3. Improved look and behavior of box plots
4. Added box plot to Resource Distance Traveled widget

Bug fixes

1. Fixed how the box plot displays the range on the y-axis if the number of decimals being displayed is 0
2. Patient Throughput box plots no longer have extra observations if the model starts at a time other than
01:00:00
3. Fixed a bug in Census box plot that was causing too many 0s to be recorded
4. Resource State dot plots are now refreshed correctly during a model run
5. Long DataCollector names are handled better when they are exported to Excel
6. Correct spacing between multiple options in a trigger field is now ensured
7. Patients no longer line up at Arrival objects - it was causing replications to not repeat predictably
8. GlobalProcesses can no longer start before 0.000011 - this keeps them from having issues with early
events on Patients

16
9. The version number is now displayed as 4.3.8 (instead of 4.38)
10. Stopped some irritating messages when models were opened in Demo or Runtime mode

Version 4.3.6 (April 2014)

Bug fixes

1. Stacked bar charts are displayed correctly again


2. When models from older versions are opened, all Item Objects will appear in the Flowchart GUI

Version 4.3.4 (April 2014)

New Features

1. Reordered and improved the information in the popup display in the box plot
2. Added Acuity to the labels that can be edited by a Patient Arrivals Schedule
3. Added Help button to Dashboard, move the tab control buttons to the left to be with the other buttons
4. When models are updated from previous versions, a list of the old versions is kept
5. Dot plots now list the replication number of an observation in the popup window
6. Bar charts and box plots now support and display negative results

Bug fixes

1. Fixed how line charts merge data from multiple replications


2. Fixed how throughput box plots handle start times, warmup times and empty periods
3. Utilization bar charts now show the percentage by the bar names
4. Fixed a bug where states were being set incorrectly when a model was stopped
5. Improved and fixed the behavior of the Areas drop-down list on Location parameter GUIs
6. Fixed an exception in Resource, Location and Item State and Utilization dot plots
7. Fixed an exception in Utilization Box Plots if the model ran more than one day
8. Copying and pasting item objects now adds them to the Flowcharting View as well
9. Sample Set names are now checked for validity before they are applied
10. Making nearly any change to the model will set the active scenario number to 0
11. Choosing an Area in a Location Parameters GUI now applies immediately
12. Histograms manage the size of their y-axis better
13. Replaced a lot of uses of getlabelval() with getlabelvalue()
14. GUI improvements

Version 4.3.2 (January 2014)

New Features

1. Added some support for the FlexSim web interface


2. Improved the patchfile functionality
3. Track import/export now includes the Item Created Trigger

17
Bug Fixes

1. Supports large memory addresses in 32-bit systems (helpful for large models)
2. Fixed how Patient Distance Traveled is reported
3. Cleaned up a lot of pickoptions that used intarray when they should have used treenodearray
4. Fixed and improved the "By Label Value" picklist option
5. Cleaned up syntax errors/warnings in pickoptions
6. Track import/export does not support multi-line code (it was badly broken before)

Version 4.3 (November 2013)

New Features

1. Updated help files


2. The "Based on condition (two lists)" pickoption for destinations has a nice GUI
3. Combined Custom Excel Import/Export into the Excel Communications Options GUI
4. Added toolbar buttons for Excel communication
5. Added Staff Distance Traveled dashboard widget
6. Added Interarrival Times Parameter to Experimenter's list of variables
7. Updated the Experimenter's other variables
8. Updated the list of variables that can be edited on different object classes by the Experimenter
9. Added Photo Eye capability to Item Conveyors
10. Added Location Name and Resource Name to Data Collector column options
11. Global Processes are included in some history tables and can be used in dashboards

Bug Fixes

1. GUI fixes
2. The PCI column of the Appointment table is now imported from Excel correctly
3. Improved how line graphs using VALUE_EXACT merge replication data together
4. Fixed an exception in Experiments if Data Collectors only had 1 or 2 columns
5. Row headers in the PCI table can not be edited (this was a regresion from a previous version)

Version 4.1 (October 2013)

New Features

1. Line charts aggregate data from multiple replications faster


2. The data points in a dot plot are now listed in scenario/replication order
3. Clicking "Add Resource" in the Track Manager automatically opens the resource selection GUI
4. Removed Copy/Paste options from the PCI table since they didn't work well
5. Appointment Table can now have label value defined for each appointment
6. DataCollectors now have a Model Stopped event they can use for recording data
7. DataCollectors now define columns for a raw data table - no more "Sample Set" and "Category" fields
8. User-Defined dashboard widgets now allow the user to select multiple columns from a DataCollector to
report
9. Renamed "Choose destination, staff and/or transport based on various criteria" picklist option to "Based
on destination status" and improved explanatory wording
10. Search/Replace GUI now automatically resizes the table column to fill the available width
11. Experimenter GUI now remembers the width of columns in the variables table
18
12. Changed how the custom sample set GUI is placed and sized when it is opened
13. Export Dashboard Data GUI now includes DataCollectors as options to export
14. Improved "Experiment Complete" message and dashboard refreshing
15. Added "Explore" tab to Experimenter to allow a user to select a specific replication to run
16. Added getlabelvalue() and gettablevalue() commands
17. Simplified a number of pick-options using the getlabelvalue() and gettablevalue() commands
18. Improved the "Set Location, Rotation, Size" pick-options
19. Fixed or improved other pick-options
20. Includes all new features and bug fixes of previous versions

Bug Fixes

1. Dashboards with dot plots in them now save and load correctly
2. Dot Plot should not slow down as badly after it has been moved or resized
3. Fixed syntax error in "Based on simulation time (table)" pickoption
4. Patient Appointment table has "Actual Times" column cleared on reset - like it used to work
5. Fixed Excel import/export of labels in the PCI table
6. Dashboard widgets that use "Current Value" calculate their averages more accurately
7. Experimenter works with DataCollectors better now
8. Fixed a bug in saving dashboards with model controls in them
9. Fixed a bug that was requiring users to choose a pickoption before code they wrote in the code editor
would be saved
10. Cleaned up how nodes in /Tools/Experimenter and /project/exec/replications are set

Version 4.0.4 (October 2013)

New Features

1. Replaced the Flowchart GUI's pop-out side panel with a toolbar


2. The Flowchart GUI now has a button to reset all areas to default locations in the window
3. The input ports of an object/area can now be edited in the Flowchart GUI
4. Removed the Connections tab from item objects
5. Added an Ultrasound shape to the Equipment
6. The color of an object in the Flowchart GUI is no longer connected to the color of the actual
object/locations in the model
7. Stacked bar charts no longer show the percentage next to the bar if "By Percentage" is checked - it was
always 100%
8. Added labels to all history tables so that widgets can filter with them
9. Fixed bar/text/etc spacing in a lot of dashboard widgets
10. Patient GUI has Visuals tab again
11. Patient Wait Times widget now has a Pie Chart option
12. Dwell Time/LOS, Patient Travel Distance widgets now have a Histogram display
13. Dashboard widgets with only 1 category have their legend hidden by default
14. Model start time must be divisible by 15 minutes if Shift Schedules are used
15. Box plots now show their N value (the number of observations)
16. Room reservations now work for both PatientProcessing and PatientQueueing objects
17. Added Dot Plots to any metric that can display bar charts
18. Added the ability to export dashboard/history data to CSV files
19. When equipment/transports are taken to their primary group, they are automatically snapped into their
default positions
20. Added new color palettes (Palette #10 has 80+ colors)
21. Dashboard are not updated automatically at the end of an experiment run
19
22. Users can manually rerun a specific iteration of an experiment using matched random streams
23. Dashboard GUI now has buttons to Add, Remove or Rename tabs

Bug Fixes

1. Dashboard can now be used if the user does not have admin rights to the Program Files directory
2. Multiple new or improved pick-options
3. Cleaned up or improved GUIs
4. Long lists of object names now have scroll bars so they are fully visible
5. The Processing Utilization widget now allows the correct selection of locations for custom sample sets
6. Fixed an occasional crash when adding a widget to a dashboard
7. If history tables are too large to export to a single Excel tab, they are split up across multiple tabs
8. Fixed the Connect to Path checkbox on the Alternate Group GUI
9. Fixed a recurring "floor does not exist" error message in Elevators
10. The line graph shows the times better and its scroll-bars work better now
11. Removed a pointless error message when copying color between item objects
12. Line charts' x-axis lines are now drawn more accurately
13. Removed a barely visible buttons from the main view - they caused crashes
14. Fixed "First activity satisfying location and resource requirements" option for decision point activities
15. Fixed some dashboard exceptions when moving the mouse around or changing the graph type
16. Fixed how percentages are calculated in bar charts
17. Utilization is now calculated more accurately, especially in box plots
18. Improved placement of dashboard widget GUIs
19. Dashboard widgets should always have recent menus when old ones are opened
20. The Interval field for DataCollectors is enabled/disabled correctly now
21. Fixed an exception that occurred when trying to export Histograms to Excel
22. Fixed the widgettype for Length of Stay widgets
23. Desk object now has an ObjectType variable
24. UserCommands GUI has had extra controls removed
25. Fixed exceptions in Resource OnDraw behavior
26. Changed getgroupstat() so that it considers any member that is not in an idle state to be busy
27. The getcensus() command now returns correct values when locations are reserved manually
28. Item Object sample sets now work correctly with Experiments
29. By Percentage pick-option preserves the user's values when adding/deleting entries
30. Code editor places "Custom Code" where needed
31. The Patient Classification tab no longer overwrites PCI row names
32. Added decimals variable to LWBS widget
33. Fixed how LOS and Dwell Time dashboard widgets interact with warmup times
34. Fixed box plot calculations of Utilization over multiple days
35. Improved management of pre-process cost calculations
36. The tasksequence created to return equip/trans is now given a priority matching that of the activity that
specifies the return process.
37. The "ActivityWaitTime_" columns in an Output file needed a reference to the activity rank concatenated
onto the header.
38. Changed GlobalProcesses and Patients so that the Earliest Start Time is only evaluated once if it's an
expression
39. Box plots should be calculated faster and with fewer crashes
40. Models are now always reset when they are saved

20
Version 4.0.2 (July 2013)

New Features

1. Added Item Object dashboard widgets


2. Added Utilization dashboard widgets
3. Added Dwell Time and LOS dashboard widgets
4. State dashboard widgets have simplified state selection in their GUIs - They now use standard
checkboxes instead of red/yellow/green options
5. Resource, Location and ItemObject dataset selection GUI controls are now consistent with the Patient
dataset selection controls
6. Dashboard widgets use colors from palettes more intelligently
7. Palettes are repeated in dashboards if there are not enough colors available
8. Closing the Dashboard GUI closes the GUIs of all of the widgets in it
9. getstaffgroupstat() is now getgroupstat() and works with all group types
10. setnumresources() is more robust and can sometimes be used during runtime
11. getnumresources() can be used to get the total number of usable resources for alternate groups as well
as primary groups
12. Many GUIs have been updated with new drop-down lists and code-edit controls
13. Lots of clean-up and work to picklist options all over the place
14. Dashboard is larger by default so that all metric names are fully visible
15. Removed "Exact" from the display types list for most metrics
16. Many dashboard widgets now automatically set and update their title nicely
17. A message is now shown when an experiment is complete
18. Removed the default milestone-to-milestone entry
19. Bar charts always show the value next to the bar - makes them easier to read
20. User-defined widget has "Current Value" option, but nothing else does
21. Line plot now shows times in day:hour:minute format
22. Patient State graph now has "By Percentage" option
23. Added Export Dashboard Data GUI
24. Blocked state is now called WaitingToSend
25. Location Census and Throughput can now report for individual locations
26. Added Patient Throughput dashboard widget
27. Added "Duplicate Graph" option to the right-click menu in the dashboard
28. Added Elevators to Resource State/Utilization graphs
29. A box plot with a single period can define a range of hours to report
30. Added functionality to Track Manager GUI, simplified the Advanced Functions
31. Added spinners to Source arrival/sequence table GUIs
32. Added Location and Patient Throughput box plots
33. Simplified naming of new Global Processes and Tracks
34. Custom sample sets automatically have "Custom_" added to their names
35. Dashboard widget GUIs are opened in better places on the screen
36. Minor cleanup to the Model Documentation GUI
37. Added custom scaling to the Floor Plan import wizard
38. getareastat() has been deprecated - use getnumlocations() and getcensus()

Bug Fixes

1. Various fixes for GUIs (thrown exceptions, control placement, etc.)


2. Visual tab is now consistent across non-patient objects - removed the unit-conversion controls
3. Removed THIS_GROUP from the pick-option generated for Home Base selection
4. Item Object Stats tab now shows state information correctly
5. Patient Census no longer throws exceptions if only 1 period was selected
21
6. State and Utilization dashboard widgets have the correct state lists
7. The toolbar in the Dashboard can be clicked to take focus from a widget
8. Datasets are now updated automatically more intelligently
9. An idle elevator should no longer steal requests that are already scheduled for another elevator
10. The Dashboard does a better job of saving and loading dashboards with tabs
11. Opening saved Dashboard does a better job of creating sample sets if needed
12. Changed default priority for maintenance task sequences to 150
13. Fixed a bug when maintenance staff were called to a preempting escort patient activity
14. Box plots can now plot a single value (before they needed at least 2)
15. Staff used for maintenance now start their standing animation correctly
16. Experimenter will always have at least 1 variable
17. Bar charts now expand correctly if there is only one member of a group
18. Fixed an exception that occurred when saving a file after a replication
19. Fixed an exception in the Milestone-to-milestone Histogram
20. Text display widgets no longer show decimals for integer values
21. Census box plot is more accurate when there are no arrivals during a period
22. Average Milestone Time and Wait Time calculations are more accurate now
23. Milestone and milestone-to-milestone box plots are more accurate now
24. Item Objects have a Connections tab again
25. FlowCharting tool does a better job of managing connections for item objects
26. Changes to port order on item objects is no longer lost in the FlowChart GUI
27. Bar charts now show the name of a sample set, even if that set is pointing to a set with a different name
28. Bar charts show the name of the sample set, not the group being displayed
29. Location/Resource State/Utilization show data when the sample set names don't match the group
names
30. Experimenter takes Model Start Time into account better
31. Census and Throughput widgets take warmup time into account better
32. Box plots only set their visible range based on confidence intervals if the graph is actually showing
confidence intervals
33. Improved vertical spacing in bar charts if there were values of 0
34. Fixed undo capability in some GUIs
35. Improved how/when census values are recorded or calculated
36. Fixed object GUIs so that text isn't displayed when the shape is changed
37. Fixed bugs in the naming of Global Processes and Tracks
38. Census of an area is incremented when a location in the area is reserved
39. Improved the output tab of the Experimenter
40. Removed a lot of legacy code and nodes used with old dashboards
41. Staff no longer travel up/down when they pick up flowitems

Version 4.0 (April 2013)

New Features

1. Added the Recent Files menu option.


2. Changed the Experimenter so that it performs multi-core experiments.
3. Item objects can now have their connections edited in the Flowchart GUI.
4. The order of an Area's downstream areas can be edited in the Flowchart GUI. Double-click on an Area,
the downstream areas can be dragged around to change their connection order.
5. The connection order of locations in an Area can also be edited.
6. Arrival objects can now be stopped with the setnumlocations() command and with the OnTimerEvent of
Areas.
7. Entirely new Dashboard and widgets and integration with Experiments.

22
8. Added commands to handle the new bundle data type
9. Floor plans can now be .dwg files.
10. Layers on .dwg floor plans can be hidden/shown, or have their color edited.
11. Floor Plan wizard now has a "Scale" field to make resizing the drawing easier.
12. Down and Resume functions for Interrupts and Shift Schedules have been improved.
13. Item/Message Destination and Item Created Trigger have been added to the Global Process Advanced
Function Editor.
14. When an object name changes, references in patient tracks and global processes are automatically
updated.
15. When an activity is renamed, Resource Requirements that refer to it are updated.
16. Models now pack their media by default.
17. Added Lab and Workbench to Patient Processing objects' shapes.
18. Revised shape lists for Item objects.
19. Wait cursor is now shown during search/replace and Excel import/export.
20. User Verification can now be disabled by the admin user.
21. Implemented a new task sequence priority tiering system. A new request will preempt an active
request if the active request is in a lower tier. Competing requests within the same tier will be executed
according to priority, higher numbers indicating higher priorities. Tiers follow the pattern:
1. Tier 1 0-99
2. Tier 2 100-199
3. Etc.
22. Added new staff states: Break1, Break2, Lunch.
23. Added or improved keep/releaseresource() and reserve/releaselocation() commands.
24. Kept resources now have a colored square around their base - the color matches the color of the
patient keeping the resource.
25. ElevatorBanks now update the OnArrival code on their nodes (assumes that the nodes still have the
default code).
26. PatientProcessing objects are now shown with a base and a red border when they are set to be
unavailable in the FlowChart view.
27. Added a button to the FlowChart view that toggles between Patient and Item object views.
28. Changed the default condition in the Travel To Home Base pickoption so that staff don't go home if they
are kept.
29. PCI Table is now available for Excel import/export.
30. Labels in the PCI Table can now be given lists or tables.
31. Removed Elevator's default OnLoad code.
32. Changed how travelers are placed in an Elevator.
33. Fewer errors are shown now if the user reaches the model limit in demo mode.
34. Advanced Function Editor GUI now ensures that there is default code when the code edit button is
pressed before the template button.
35. Patient datasets in the Dashboard are automatically created/removed when PCIs and Scenarios are
created/removed.
36. Track Resource tables now have a <placeholder> option.
37. Dashboard widgets that implement the Box Plot chart now have pop-up data to show the actual values
in the chart.
38. There are now three kinds of reporting datasets: Patients, Resources, Location. These are used in
dashboard widgets so that they can record data during experiments.
39. PatientProcessing objects are now placed in WaitingForMaintenance state until a staff member arrives
to perform maintenance.
40. Added Maintenance Start and End triggers to PatientProcessing object.
41. The PatientProcessing maintenance table can now have "patient" and "location" used in the staff and
time functions.
42. Added a Box Plot graph for Patient Travel Distance and Area Census dashboard widgets.
43. New GUI and pickoptions for User-Defined dashbaord widget.
44. Removed Tracks and Processes tabs from Track Manager and Global Process Manager GUIs.

23
45. When the Patient Destination function is reevaluated by the Entrance Criteria, param(3) is set so that
these reevaluations can be distinguished from normal calls.
46. Added buttons to GUIs that open Google 3D Warehouse so the use can search for .skp files.
47. Added the Desk to the library as a nice visual for models. (It can not be used as a location - it is simply
there for visuals.)
48. Updated triggers tabs of GUIs to use newer, better-looking GUI controls.
49. Updated Advanced Functions GUIs for Track Manager and Global Process Manager to use newer GUI
controls.
50. Removed "Triangle" as a patient display mode.
51. Added global preferences to show/hide the indicator boxes for Kept or OffSchedule resources.
52. Implemented new and improved task sequence handling behavior.
53. Added "Custom Request Selection Process and Idle Staff Handling" pickoption.
54. Added new 3D shapes and animation for patients. This includes patients with slings, crutches and
wheelchairs.
55. Added new 3D shapes for locations including: Licac, and Phone.
56. Added other shapes that can be browsed for including: clothes hamper, sink.
57. Removed Connections and Members tabs from many resource and group GUIs because the
complicated connections schemes are no longer valid.
58. Added Global Variable display to the Text object.
59. Elevator travelers are placed randomly around the network node connected to the Elevator while they
wait. This helps the user see how many are waiting. They are also placed randomly inside the Elevator.
60. User's Manual now has a nice "Welcome to FlexSim HealthCare" page when it is opened.
61. Added "Node Value" experiment variable type.
62. Added experiment variable type to activate/deactivate arrival modes on an Arrival object.
63. Added experiment variable to copy data from a Global Table to an Arrival table.
64. Changed the numbering scheme when activities are inserted between two existing activities.
65. Updated "Choose from a list of destinations based on various selection criteria" pickoption.
66. Census and Throughput are now tracked at each location and area by PCI.
67. Added a lot of functionality to getcensus() and getthroughput() commands to report the new tracking.
68. Replaced old getcensus() and getthroughput() calls with gettrackcensus() and gettrackthroughput()
calls.
69. Added Output tab to Experimenter to show the output and system console output from experiment
replication runs.
70. The Experimenter now shows a message if any exceptions were reported during experiment runs.
71. New default background and grid colors.
72. New background and grid colors available in the Background Color menu option (right-click on the
model).
73. The getcensus() and getthroughput() commands can be used to get information by PCI for locations,
areass, and model.
74. Activities created between two activities that already exist are assigned numbers in a better way.
75. Developed a standard down function for resources with many new options (i.e. maxdelay, extendbreak,
down/resume states, locations, variance, etc.).
76. Improved random placement of staff at locations other than primary group, and staff snap to non-
primary group locations at model start if off schedule.
77. Colored floor shows for staff on break/lunch as well as offschedule now.
78. Default priority for activities in Tracks and GlobalProcesses is 150.
79. Old models have the activity templates for Tracks and GlobalProcesses changed so that the default
priority is 150.
80. Added copyobjectcolor() command.
81. Added "Resource Request Selection Policy" and "OnResourceIdle" fields to Groups.

Bug Fixes

1. Changed CheckLocationAvailability() so that it checks a Queuing Area's maxcontent variable correctly.


24
2. Added a default activity to some of the Next Activity picklist options.
3. Fixed Process > Send Item activity so that it calls the Item Created trigger.
4. Periods in Custom Arrivals that overlap or are defined out of order are handled better.
5. Custom Arrivals repeat intervals have been improved.
6. Improvements to pickoptions and GUIs.
7. Global Settings can now be accessed when in trial mode.
8. Popups work in template windows again.
9. Number precision is now handled better when switching from one model to another.
10. Bitmap on Edit Schedule button no longer disappears randomly.
11. CloseOutputFiles() is now called correctly when a single run ends because of a finish time.
12. Fixed a bug in importing/exporting of Patient Track and Global Process .fst files.
13. Changing a track's shape no longer prints useless information to the Output Console.
14. Updated Patient Queuing areas so that they are chair and bed layout is easier to edit. Old models will
need to be updated manually.
15. New dashboard widgets are always placed above the others.
16. Fixed a bug that was causing staff to go to their homebase when they reached a 'Break' task.
17. Various small fixes to dashboard widgets.
18. Experimenter's "Go To Scenario" button now works correctly.
19. Track Manager's Advanced Functions GUI is kept up-to-date when different tracks are selected.
20. Fixed an exception in the Object Tracker that was thrown if an Alternate Group was connected to
another Group.
21. Fixed a bug that was preventing staff member from taking task sequences from their tasksequence
queue in priority order.
22. Various GUI updates.
23. Wall posts are now drawn centered along the wall.
24. Floor Plan GUI now shows all 5 types of image files that it can support.
25. Old Milestone stacked bar chart now resets the throughput values at the end of the warmup time.
26. Various pickoption fixes.
27. Fixed the Rounds pickoption so that it doesn't throw exceptions when equipment isn't used.
28. Patient Milestone dashboard widget GUI now keeps its milestone list more in sync with the model's
master list.
29. Patient Wait Times dashboard widget no longer allows Groups and their Members to be selected at the
same time.
30. Updates to command documentation.
31. New blocks in the FlowChart view should never be hidden behind other blocks.
32. A user can now select "none" in the PatientProcessing maintenance table.
33. The Recent Models menu is now empty when FlexSim Healthcare is first installed.
34. Patient Processing object no longer change state if they are in the OffSchedule state when the
processing time finishes.
35. PatientProcessing objects no longer use the Blocked state.
36. PatientProcessing objects now treat the Interrupted state like OffSchedule when maintenance is
needed.
37. Fixed some problems in the User Events GUI.
38. All attempts to Copy/Paste in the FlowChart GUI are now ignored.
39. Saving Default Workspaces works better now.
40. Time displays should not show X:010 or X:60 anymore.
41. Time displays are not rounded to the nearest minute (real clocks don't round, this shouldn't either).
42. The "Patient's Name" display mode no longer shows extra information over a patient's head.
43. Fixed syntax errors in many pickoptions.
44. Converted workbench.wrl to a .3ds file to avoid reported crashes.
45. Triggers should always have at least header text when the Edit Code button is pressed.
46. Staff, Equipment, Transports now clear their keepingpatient variable correctly if they were kept by a
Global Process.
47. Removed "Add Table to MTEI" button from several GUIs.

25
48. Created some new text displays and fixed others (divide by zero error).
49. Consolidated default Entrance Criteria for PatientQueuing, PatientProcessing and PatientExit into a
function called DefaultEntranceCriteria().
50. Fixed how Hourly Arrivals assign PCI so that the "row" variable can be used correctly in the PCI
function if there is a start time defined.
51. All triggers should have header text added to them when an pick-option is selected from the list.
52. Logic Builder should be disabled by default, and can't be turned back on.
53. The totals output file is now recorded when the box is checked.
54. New activities in Tracks or Global Processes now have the same number of leading spaces in their
names as the activity before them in the list.
55. Cleaned up or fixed various GUIs and pickoptions.

Version 3.14 (June 2012)

Bug Fixes

1. The Scheduled Arrivals mode on the Patient Arrivals object sets the ApptTime label correctly again.
2. Added getelapsedtime() command. This returns the amount of time that has passed since either the
model started, or the warmup time ended.
3. Used getelapsedtime() in a number of utilization calculations and picklists including:
o Area Occupancy
o Staff Group Utilization
o Group Member Utilization
o Object State
o User-defined values and Custom Displays
4. If code is edited but does not have any template code in it, it is given "Custom Code" text automatically.

Version 3.12 (May 10, 2012)

Bug Fixes

1. Fixed GlobalProcesses so that they do not throw exceptions when they occur
2. It is no longer possible to import a model that was made in a different version
3. The Help button on the Path Node's Parameters window now opens the correct help page for each tab
4. Updated the comment header on several pickoptions so that GetRequiredGroup() is demonstrated
5. Added some commands to the documentation
6. Fixed syntax errors in the Activity Start Condition pick-option called "No Staff Currently Allocated to
Activities in List"
7. Fixed syntax errors in "Stop or Resume Flow" pickoptions
8. The GlobalProcess Parameters GUI no longer shows the "There is already an object named X"
message when it shouldn't
9. Fixed the getwarmuptime() command so that pick-options that calculations that are based on warm-up
time are more accurate.
10. Fixed a bug with the numeric precision being set to 0 (which, in turn, caused other problems in a
model).
11. Updated the Area Occupancy Level dashboard widget so that it is update when the model stops
running.
12. GlobalProcesses now have global variables created to point to them when a model is opened.
13. Changing the name of a Location in the model will now change most references to that Location in
Global Processes and Tracks.

26
Version 3.1 (April 6, 2012)

New Features

1. Updated the Track Manager so that certain fields are disabled and/or cleared out when needed.
2. Added SortModel() command and included the functionality in Tools|Maintenance.
3. The ItemConveyor is no longer a roller conveyor by default. It is now a more abstract series of arrows.
4. The help now includes commands that start with capital letters in the index pages.
5. Added getobjecttype() command.
6. Updates to model update code.
7. Added checkbox to the Predecessor list in the Track Manager and Global Process Manager so that
users can easily enable/disable predecessor lists.
8. Added "Dispatch Companions" pick-option to Message Received trigger.
9. Added an arrow on the floor of the WaitingArea and WaitingLine so that the user can easily see what
direction the patients will be facing.
10. Removed a lot of unnecessary fields from the Staff/Equipment/Transport Advanced Editor GUIs.
11. Added "Create Activity for Multiple People" pick-option.
12. Added getnumresources() command.
13. Patients now record how long they had to wait for Locations or Resources to become available. This is
available in the output files.
14. Added "Total Wait Times by Track" stacked bar-graph to the Dashboard.
15. Added new 'scale' shape for Patient Processing objects.
16. Added Infant Scale 3d shape (not yet available in the drop-down list).
17. Added ClockTime column to output files.
18. Updated Tutorial models.
19. Added "Based on Location" and "Center Port connection" pick-options to some Advanced Functions for
tracks.

Bug Fixes

1. Put some 3d shapes back in that were missing from 3.0 (baby, baby in bassinet, man in bed, woman in
bed).
2. Redesigned the "Based on Probability" pick-option so that the user can select the number of entries in
the array. This fixes an error that was reported frequently that said that the percentages didn't add up
to 100.
3. The Excel import process no longer reports "Import Complete" if something didn't import correctly.
4. Fixed the .csv and .txt files that are generated when a Track is exported. There were problems when a
file was exported, edited in Excel, saved, and then re-imported.
5. The warning message in the Shift Schedule GUI about Groups and Members is no longer shown at
incorrect times.
6. Fixed the ItemConveyor's GUI so that it highlights/de-highlights the selected conveyor section correctly.
7. Fixed the Item objects so that their table shape is shown now.
8. Changed the Item objects so that their default shapes are all color-changeable.
9. Removed extra print statements.
10. Fixed an exception that could occur when tasks were re-dispatched from Groups to members.
11. Fixed an exception in the Experimenter results that occurred if all replications returned the same
number.
12. Fixed the TaskExecuter (staff, equipment, transports) so that they can be preempted if they are kept,
but are idle.
13. Fixed a bug that was causing Shift Schedules to not repeat correctly in some cases.
14. Fixed a bug in the 2.7-3.0 model update code that was placing PatientProcessing objects at z-location
of 0, instead of whatever z-location they previously had.
15. The Message/Item Destination field can now use its access variables correctly.
27
16. The Message/Item Destination field can no longer use "patient's location" as a drop-down list. (But the
location can still be selected in the Advanced Functions.)
17. Fixed a bug in the PatientQueuing object that was causing a single patient to be "released" multiple
times.
18. Updated/clarified some tooltips throughout the GUIs.
19. Fixed a bug in the Custom Arrivals that was causing extra patients to arrive if two time periods started
at the same time.
20. Users no longer need to press "Apply" in order to have the PatientArrivals Parameters GUI recognize
the difference between two arrivals in the Appointments tab.

Version 3.0 (January 30, 2012)

New Features

1. The PatientQueuing Layout tab has been updated to be easier to use and to allow the user to specify
the direction that rows of chair face.

2. Added "Milestone Times (by Track)" dashboard widget.

3. Various improvements to graphics and animations .

4. Updates to the default Entrance Criteria that will allow patients who have a room reserved to safely
enter objects that are upstream of their reserved room without negative consequences.

5. Shortened the default list of milestones.

6. Added password-based login.

7. Added user audit log support.

8. Added Object Tracker GUI (Tools|Debugging|Object Tracker).

9. Placing a new object on a Display that is acting as a floor will automatically create a selection set
named after the Display (if needed) and will add the newly-created object to the set.

10. Multiple staff that are required to be at the same node in a path will spread out.

11. Changed the behavior of the Appointment and Custom Arrivals tables in the GUI so that the user can
use the arrow keys while editing time cells.

12. Removed unnecessary pick-options from several pick-lists throughout the software.

13. Added many new pick-options throughout the software.

14. Fixed problem of equipment being deallocated too early in a MoveEquipment>Process activity, and yet
it's state is still utilized.

15. Improved patient overhead display.

16. Added activity start times to patient's Paramters GUI for ongoing activity display.

28
17. An open Patient GUI now displays the patient correctly, no matter where it is in the model.

18. Patient Destination can now be a specific location as well as an Area.

19. ItemArrivals now have batch arrivals as part of their interarrival time.

20. Itemtype field for ItemArrival's interarrival time mode can now be an expression.

21. New icons and splash-screen graphics.

22. New "Patient Rounds" pick-option for Custom Activities.

23. Floors are hidden by default for many location types.

24. Modified floor and object colors for improved color separation.

25. Lightened area block colors in order to read the area names in the Flowcharting GUI.

26. Removed "Group" from the default name for equipment and transport groups.

27. Patient Classification tab, originally implemented as part of the Patient Arrivals object, has been moved
to the Track Manager. This serves to better organize settings that belong to patients in the model, and
also fixes a bug that would sometimes cause multiple arrival objects with individually configured PCI
tabs to conflict.

28. The previously required action of making manual connections from Path nodes to patient location
objects has been supplimented with a check box on the object's properties. You may still create manual
connections between objects and Path nodes, including group objects.

29. Added check box for Arrival at time 0 on the Interrarrival Times tab .

30. A new Item Conveying object has been added to the Library of Objects.

31. Added a new Patient Processing object shape: Bathroom.

32. The Stop Watch icon on the toolbar has had its features expanded. Click the Stop Watch now opens a
small dropdown window of available runtime options for the model. Here you will find the model Start
time definition, the model Warmup Period length and the model total run length.

33. Some error messages related to Activity IDs and names have been removed in favor of silently fixing
the warnings rather than displaying an error pop up every time.

34. Display objects:

A time Display object will be created automatically for new models, located in the upper right
hand corner of the grid.

New pick options for the Display object have been added to support different time display
formats.

29
Management of Display objects has been moved to a new drop down menu element in the
toolbar, to the right of the run speed slider. From here you may create new Display objects and
more easily manage existing ones.

Display objects now have a non-selectable option added to their Properties tab

35. Changed the name of the EmergencyBed to Gurney. Only new instances of objects with this shape
should be affected.

36. Replaced the Allocate/Deallocate Activity types with the more flexible Custom activity type. Old
models that used Allocate/Deallocate, should not be affected.

37. Elevators:

The Elevator object has been redesigned and renamed Elevator Bank to allow a Group of
elevators to work together more seamlessly.

Elevators now take into account the size of the traveler and the anything it is holding to
determine how much space travelers take up.

38. Added the ability to view and edit the number of active locations in an Area via the Flowcharting tool.

39. Due to limited and often misunderstood functionality, the Allocate Patient check box on all activity
properties has been removed and replaced with additional picklist option under the Advanced
Functions. Only affects new models, older models will have that feature preserved.

40. Added increased appearance customization options to Staff members and Patients.

41. Added new pickoptions (including options to add/remove accessories from a patient)

42. New options to the Staff Requirement table on the track manager, including the new "Keep" feature

43. Extensive revisions to the code behind the scenes for all the activity types which should improve patient
state management and runtime performance.

44. Added a terminateactivity() command that is a more complete way of forcing an activity to be completed
vs finishactivity() which wasn't intended to be used in this manner.

45. Improvements to the way repeating activities work.

46. Added an Advanced Function for using an expression to define the item/message destination.

47. Integration with the FlexSim 5 Engine.

48. New undo (Ctrl-z) /redo (Ctrl-y) capability.

49. New debugging capabilities, including:

50. An in-line, step-by-step Flexscript debugger. Just go to the code editor and click in the left margin to set
a break point.

51. More strict syntax rules for Flexscript, including parameter cardinality and type checking.
30
52. An event log that lets you see all events that have fired in the model, filter those events, export them to
csv, etc.

53. An event list that gives you a view of the list of pending events.

54. A Flexscript code profiler that lets you see what Flexscript functionality is being called, how often, and
how much time is being taken up.

55. A new Animation Creator that allows you to create movable sub-components of objects as well as
custom animations for those sub-components.

56. New .skp 3D file import capability, for using files from Google Sketchup and Google 3D Warehouse.

57. Improved 3D refresh rate.

58. Improved compatibility with ATI, NVIDIA, and integrated graphics cards.

59. New software-based licensing using Flexnet.

60. Faster and more seamless compiling process, with no creation of a new FlexSim instance.

61. Fixed compiling issues for Windows Vista and Windows 7

62. More detailed, navigable and configurable Experiment reporting, with additional histogram and
correlation plots.

63. Support for png, ico and gif texturing on 3D objects, allowing transparency without requiring the .tmp
and .tpg files.

64. New all-in-one code editor with tabbing and an apply button.

65. Improved interface for defining Conveyor layout.

66. Fixed AVI Maker for Windows Vista and Windows 7.

67. New and improved xml save features, allowing multiple developers to work on the same model
simultaneously, as well as better integration with version management systems.

68. Various improvements for advanced modelers and developers.

69. Much more intuitive manipulation of objects in the 3D view.

70. Users can now click on objects below the grid plane.

71. Improved support for traversing window controls with the keyboard.

72. Improved Find/Replace in Tree feature.

73. Improved refresh rate on table views.

74. Fixed a crashing issue with auto-completion hints.

31
75. Fixed a bug with renaming labels.

76. Fixed an issue with spline points being invisible if the 3D view has a black background.

77. Several new Flexscript commands for string parsing.

78. You can now Ctrl-Tab to switch between open windows.

79. FlexSim's 3D view now has a "hover" highlight so you can see what object is under the mouse.

80. More descriptive exception handling.

81. Added TASKTYPE_STARTANIMATION, TASKTYPE_STOPANIMATION, and


TASKTYPE_FREEOPERATORS.

82. Animation of the 3D View continues while panning/zooming.

83. Various minor fixes and improvements

Bug Fixes

1. Fixed a bug with the Global Processes (formerly Global Activity List) that sometimes allowed activities
from previous runs of the model to stay active in subsequent runs, causing unexpected activities to take
place.

2. Changed the name of the Pass to property on Group objects to Task Assignment Strategy for clarity.

3. The AVI maker now warns users to of Microsoft Vista and Windows 7 to switch to the Basic or
Classic theme during recording, as special window effects and transparencies can cause performance
issues.

4. User Events can now accept the 00:00:00 time string formatting in the First Event Time property field.

5. Fixed a bug that would sometimes cause a Milestone to be created from the select or add new option
if it was selected from the Milestone drop down menu.

6. Increased consistency of object properties tabs; the Stats tab is now correctly displayed for all objects
and any objects that had a General tab, it has been renamed to Visuals.

7. Fixed a bug with the Output files option that could cause a crash when trying to write to a file that has
not been opened yet.

8. Fixed a bug in Staff Groups OnResourceAvailable trigger that incorrectly managed a Staff member's
return to home base functionality when carrying more than one Item.

9. Fixed a bug when Verbose is checked when creating Model Documentation from the View menu that
would cause the program to crash.

10. Fixed a bug that would incorrectly display an error message when clicking on a Spline point, after
creating a new Path node that has a connection.

32
11. Graphical display of reporting variables, such as Milestones, performance measures and Dashboards
will only be drawn if the value is greater than zero.

12. Fixed a bug that sometimes wouldn't allow the user to rename Model Layouts from the Utilities tool.

13. In the Experiment Manager, switched placement the Replication: and Scenario: fields for increased
clarity.

14. Fixed a bug when using the toolbar run control buttons (Stop, Run, etc.) with an Experiment running,
that would cause random numbers preferences to be incorrectly set.

15. Fixed a bug that could cause a saved model with an Experiment defined, to have its start time
interpreted incorrectly upon opening the model.

16. Fixed a bug in the Performance Measures tab of the Experiment manager that would cause
Performance Measure names to not update when the Apply button is clicked.

17. Fixed a bug in the Experiment Manager that would cause a syntax error upon opening a saved model
that had an experiment variable that used the XX replacement system.

18. Fixed a bug in Performance measure calculations that would not properly account for locations or staff
that were disabled as part of experiment variable. Calculations were being made based on the total
number of staff and locations, rather than the actual number available.

19. Fixed a bug that would require at least one Experiment variable to be defined if the desire was to simply
run multiple replications of the model, as is.

20. Fixed problems found in updating v2.77 models to v3.0.

21. Fixed several minor bugs in user interfaces.

Version 2.771 (Sep 17, 2010)

New Features (v2.771)

1. Added the following picklist options for the Activity Finished Trigger:

2. Send Staff to Home Base

3. Occupy and Reserve Transport

4. Position Patient on Transport

5. Position Transport at Location

6. Added a new picklist option for the Process Location field titled: Reserve Location

7. Added a new User Condition to the Pass To field option that checks whether the candidate's "reserve"
label is currently zero.

33
8. The simulation minutes displayed in the status bar at the bottom of the screen now takes into account
the user-defined simulation start time.

9. The ApptTime and ArrivalTime labels of a patient take into account the user-defined simulation start
time.

10. Added two new commands: getsimtime() and getsimstarttime()

Bug Fixes (v2.771)

1. Fixed problem with Shift Schedules rolling over from one week to the next.

2. Fixed problem with patient overhead displays disappearing at the conclusion of a transfer activity.

3. Fixed the legend on the Milestone Chart of a patient's Properties window.

Version 2.77 (Aug 13, 2010)

New Features (v2.77)

1. Added a new time series graph to dashboards for plotting patient attributes, object states, object
variables, and global variables over time.

2. A patients total distance traveled is now recorded automatically. Options have been added to show
distance traveled for both patients and staff in output files and dynamic dashboards.

3. Added a picklist option to the Pass To field of resource groups that selects resources in a round robin
fashion according to their availability.

4. Added a picklist option to the Activity Started Trigger that allows the user to choose a resource used in
a previous activity step for the current activity.

5. Added a direct link in the Help menu to the new community site created specifically for FlexSim
Healthcare users.

6. Further refinements have been made in an effort to keep staff members from standing on top of each
other when multiple staff are performing independent process activities at the same location at the
same time. If multiple nodes are connected to the common location, then the staff member will travel to
the first, second, third etc. node connected to the location based on whether there are none, one, two,
etc. active tasks underway respectively at the time the staff member is called.

7. Output data files can either use decimal points or decimal commas based on the country settings of the
computer. In addition, both numeric and text label values can now be written to output files, and there
are several good examples for defining Custom Fields within the Output Data Settings interface.

8. Patient and Patient Processing object state profiles have been expanded to include more states (see
user manual for more information).

9. The simulation start time can now be defined in minute resolution using Tools> Simulation Start Time
menu option.

34
10. An option has been added to the Hourly Arrivals tab of the Patient Arrivals Properties window allowing
the user to specify whether patient arrivals are equally spread or randomly distributed across the
hour. Previously, the arrivals were always distributed randomly across each hour.

11. All patient transfer activities now require the allocation of the patient prior to the start of the transfer.
This will allow the user more control over when a transfer activity occurs in relationship to other
activities that also require the allocation of the patient.

12. Revisions have been made to the online User Manual, including new tutorials.

13. An optometry chair has been added to the list of 3D shapes available for a Patient Processing object.

14. Two new picklist options have been added to the Activity Start Condition field which allows for the
inclusion/exclusion of a specific activity completion.

15. The picklist option titled "Choose from a list of areas" for the Patient Destination field is now extremely
powerful with its list of selection rules. This option also allows for the continuous reevaluation of the
Patient Destination field whenever downstream locations become available.

16. The optimization tool called OptQuest is now available as an optional add-on to FlexSim
Healthcare. To learn more, follow this link: http://www.FlexSim.com/products/optquest

Bug Fixes (v2.77)

1. The Entrance Criteria for Next Patient field for a Patient Queuing object wasn't being checked when a
patient to be escorted to another location defaulted to traveling unattended to the Patient Queuing
object when no staff member is available. This has been corrected so that now the entrance criteria
must be met before travel to the queue is allowed.

2. Fixed problem where defining a Repeat Interval for an activity on a patient track would cause errors at
the time the patient exited the model. It is now possible to stop a repeating activity with the
finishactivity() command now as well.

3. Added exception handling when staff are not correctly defined, or broken references appear as a result
of using same as above activity or previous from group staff selection options.

4. Time series dashboard graphs now take into account simulation start times as defined by the Tools >
Simulation Start Time menu option.

5. Corrections have been made to the stop time field on the main toolbar so that it will correctly display the
stop time defined in a model immediately after opening the model. The stop time field will also continue
to display a stop time in dd:hh:mm format (if so entered in that format) rather than convert it into
minutes. As before, the stop time needs to be entered in terms of any offset to the start time as defined
in Tools > Simulation Start Time.

6. The Move Equipment/Transport Process activities have been updated to use the same travel rules as
the Process activity in terms of how the staff choose between multiple path nodes connected to a
location to travel to, and whether to offset travel from a node to a patient within a location.

7. Fixed problem with the vertical scroll bar in the track managers activity list box. The scroll bar no longer
jumps when selecting activities at the bottom of a long list.

35
8. Fixed the Patient Rounds picklist option in the Activity Finished Trigger. Equipment (if used) are now
allocated properly before the start of the rounds.

9. HC based states are now updated on staff members when they are called by Item Class objects for
processing and/or transporting purposes. Previously, HC states were only updated on staff members
called as part of a track activity.

10. Fixed a problem that could occur in the unlikely event that two or more transfer activities were spawned
simultaneously for the same patient. Now a check is made to ensure that only one transfer activity can
occur at a time for the same patient.

11. All patient transfer activities now require the allocation of the patient prior to the start of the transfer.
This will allow the user more control over when a transfer activity occurs in relationship to other
activities that require the allocation of the patient directly.

12. When an activity is added/removed from the activity list in the Track Manager, it now correctly
renumbers any "Assigned Activity ID" fields as needed.

13. PatientProcessing objects that are reserved for the patient's return, now correctly transition from a
"Blocked" or "Occupied" state to a "Holding For Patient" state.

14. Fixed problem with updating old models occurring on one or two user's computers where the main view
panel would become unresponsive.

Version 2.75 (May 31, 2010)

New Features (v2.75)

1. Added a Multi Line Text Box widget to dashboards.

2. Added a new option for the Patient Destination field called "Choose From List of Areas" which will
choose from a list of areas based on one of two user-defined selection rules: "First Available Location"
or "Fewest Occupied Locations".

3. Added a new option for Activity Started/Finished Trigger called "Assign Staff Based on Patient's Current
Area".

4. Added a new option for Activity Finished Trigger called "Record Staff Used by an Alternate Group".

5. Added a new option for the Send To field of Item Class objects called Based on Patient s Location.

6. Previously it was necessary to refresh connections in the model by reopening the Flowcharting tool and
closing it after a new object was added to the model, or the area of an object was changed. From now
on, if a new object is created in the model or an object's area is set to an existing area in the model that
already has connections established in the Flowcharting tool, the object is automatically connected
according to the connections associated with its new area.

7. The Auto Connect button found in the side bar of the Flowcharting tool was replaced with a Refresh
Connections button.

8. Added a Stop/Resume Arrivals to the Down/Resume Functions for Shift Schedules.


36
9. A simulation start time can now be defined globally in Tools> Simulation Start Time instead of on each
of the Shift Schedules as was necessary previously.

10. You can now define a simulation stop time on the toolbar using 00:00:00 format taking into account a
modified simulation start time.

11. The warmup time and simulation run time defined in an Experiment now take into consideration a
modified simulation start time.

12. There are now user-defined dashboard options for a stacked bar chart.

13. A user-defined option for a line graph dashboards has been added called Patient Data Categorized by
Label which uses an option named Record Patient Data found in entry/exit trigger fields to record
patient data during a run.

14. Created a shorter list of commands in the Help menu titled Most Used Commands.

Bug Fixes (v2.75)

1. Fixed the problem discovered in the basic training model with patients not continuing on to Xray
sometimes from their treatment rooms. This bug occurred in the function responsible for transferring a
patient from one location to another only if the patient was not able to transfer immediately, but must
wait for both an available location to transfer the patient to AND an available staff member for escorting
the patient.

2. Reinserted the "Patient Rounds" picklist option in the Activity Finished Trigger field (it was accidentally
removed from the 2.703 release).

3. Fixed problem where a patient not using path network walks several feet off the floor from locations
with custom shapes.

4. Fixed problem with patients standing off the floor in locations with <none> chosen for their shape.

5. Redesigned the Appointments tab slightly for the Patient Arrivals object properties window, and rewrote
some of the tooltips.

6. Fixed problem with the Item Destination field not showing the destination entered by the user when the
Track Manager was first opened.

7. Creating/Duplicating/Deleting tracks now refreshes the other tabs in the window consistently.

8. Fixed problem with importing/exporting track activity tables using the Files tab of the Track Manager
where Id's were not being converted to row numbers.

9. Renamed the Flowcharting window from "Area Connections" to "Flowcharting" like it should have been
all along.

10. Resetting the size and rotation of an object using the context menu (i.e. right-click menu) of the main
view now works properly.

11. Fixed problem with the Flowcharting window sometimes showing area blocks for Item class object.

37
12. Fixed problem with FlexSim Healthcare crashing occasionally when writing outputs to an external file
during a model run.

13. Fixed problem with the Start Time and Repeat Interval not occurring at the correct time when the
model's simulation time was offset from midnight.

14. The + button for the Activity Started Trigger and Activity Finished Trigger fields will now correctly
append rather than replace a selection.

15. The getareastat() and getstaffgroupstat() commands will now accept global pointers for the area and
group designations.

16. The "Stop Model Based on Condition" option in triggers has been repaired.

17. Fixed problem with contents of certain fields disappearing/changing when windows were resized with
the mouse.

18. Item class objects are no longer automatically connected to the previous item class object found in the
model (this cause more confusion than benefits).

19. Whether duplicating the highlighted object or a set of selected objects, the duplicates are offset from
the original(s) by 4 grid spacings in the -y direction.

20. Fixed the problem seen with Shift Schedules not going down at the right time sometimes.

21. The default "User Applied Score" found in the Pass To option for resource and alternate groups has
been changed from -gettimeinstate(candidate, STAT_PerformingTask) to 0, because it was found to be
overpowering the score applied based on proximity and yet proximity is probably the more desired
scoring criteria.

Version 2.70 (April 16, 2010)

New Features (v2.70)

1. The HASP driver install is no longer included as part of the FlexSim Healthcare software installation
function. This was done to satisfy the request of some users who needed a silent install of the
software. The HASP driver is needed for the dongle key to be recognized by the computer, and only
needs to be installed once (i.e. not with every new version of the software). First time users will need to
install the HASP driver through the Start > All Programs > FlexsimHC > Install HASP Driver option that
will be available after installing the FlexSim Healthcare software.

2. The free trial version downloadable from the FlexSim.com web site, can now run models of any size. It
will not allow models to be modified or saved that have more than 20 objects, 2 tracks, or 12 activities
per track. More of the Tools have been made available in the trial version, but valid analysis will
continue to be frustrated by forcing the random number generator to repeat the same stream for every
run. There are also blocks on importing and exporting data.

3. New shortcut key combinations have been added for those users who like to use the keyboard rather
than the mouse where possible. Here's a complete list of keyboard shortcuts now available in the
software:

38
Ctrl+Up arrow to increase run speed (rounds off to the nearest reasonable speed, so it's easy to
change to 1= real time, if desired)

Ctrl+Down arrow to decrease run speed

Ctrl+Left arrow to reset the model

Ctrl+Right arrow to step through events of model

Ctrl+Space bar to toggle between run and stop the model run

Ctrl+T to open the Track Manager

Ctrl+R to open the Flowcharting tool (R as in "Routes" - sorry but F is reserved for Find)

Ctrl+D to duplicate the highlighted or selected objects in the model view window

Ctrl+C to copy selected text, tree nodes, or table cells to the clipboard

Ctrl+V to paste text, tree nodes or table cells from the clipboard

Ctrl+F to find text within a text editor

Ctrl+Z to undo typing within a text editor

Ctrl+Y to redo typing within a text editor

4. The File > Import Another Model menu option, has been added to allow users to combine two or
models into one big model. This is a handy feature when multiple users are working together to build
the same model, or a single user desires to build and validate small models of individual parts of a
larger system, and then combine the models into one big model at a later date. After choosing the
menu option, a file open dialogue window appears allowing you to browse for a model you wish to
import into the currently opened model. After the import is finished a report pops up listing what was
imported and what was not. During the import process, if a duplicate track name is encountered, rather
than import the duplicate track; the activity list of the duplicate track is scanned for unique activity
names, and any unique activities are appended to the end of the existing track s activity list. Global
Activity Lists are managed the same as Tracks. For all other objects, duplicate named objects are
skipped and only uniquely named objects are imported into the existing model. The report will list
exactly what was imported, what was skipped, and what activities were appended to an existing list of
activities.

5. Removed the speed control editor button from the toolbar now that shortcut keys are available for
quickly setting the run speed.

6. Toolbar buttons are spaced more uniformly, tooltips have been improved, and some icons have been
modified to improve the look.

7. Spinner controls (up/down arrows next to a numeric entry field) have replaced basic numeric edit fields
to allow the user to quickly change values with the mouse.

8. A new tool has been added (see Tools > Color Palettes) allowing you to create your own or modify
existing color palettes. Wherever color is applied in a model (e.g. patient shirts, location floors,

39
dashboard bar charts, etc.), you will be able to reference the color palettes you ve defined. The color
palettes are saved with the model.

9. Unnecessary prompts to save a current model before opening or starting a new model have been
suppressed if no changes have been detected since the last save. You should not depend on the
software detecting every change to the model, and always save your model before opening or starting
a new model. Better safe than sorry!

10. Global tables, shift schedules, random interrupts and global activity lists can now be referenced in script
anywhere in a model using auto generated global variables having the same name as the name of the
object declared in the Tools menu.

11. When a new Shift Schedule is created, it will have no operational time defined, rather than the previous
default which arbitrarily had the hours between 8am and 4pm Mon-Fri marked as operational time. This
often was overlooked by users.

12. Dashboard widgets can now be edited by simply double-clicking on the widget, and can be deleted by
simply hitting the delete key. These options are still available through the context pop-up menu
accessed via a right-click on the widget.

13. The, Occupancy Levels by Area, and, Staff Utilization by Group, dashboard widgets are explained in
detail with a context menu option (right-click) named, View Calculation.

14. User-defined bar charts are now recalculated on a repeating time interval specified by the user, rather
than with every screen refresh making them much faster and easier to set up. The following options are
available as a starting point for defining your own bar charts:

Group Member Utilizations


Tabular Data
Total Throughput by Area
Current Occupancy by Area
Total Throughput by Location
Current Occupancy by Location
User-defined line graphs are now possible, with the following options currently available as a
start:
Patient Data Categorized by Label
Tabular Data

15. Object Queue vs. Time graph has been changed from a line graph to a solid area graph which is a
much nicer way to view queue/time plots.

16. Reduced the number of options by consolidating options having similar behavior.

17. Alphabetized some of the longer lists of options.

18. Now that the user has the flexibility to create and define their own palettes, all triggers that change color
of objects do so using a specified color palette and index.

19. Pick option templates have been modified to improve their readability and to hide unnecessary text
from displaying in the field when the template view closes. More choices have also been added to
many of the pop-up lists found in template views.

40
20. There's a text display option for the Display object that will show the current values for year, week, day,
shift, hour and minute. Since the displayed values take into account the simulation start time as defined
in Shift Schedules, it is helpful in checking your understanding of the terms as they are used in the new,
Based on Simulation Time picklist option.

21. A new option named, User Configurable Resource Selection Algorithm, has been added to the list of
options in the, Pass To, field for group objects . It is very flexible and can be configured to handle just
about any conceivable requirement for choosing a resource or group to pass resource requests to.
Because of its flexibility, this new option is the default option for groups. You should consider updating
the, Pass To, field of groups in your existing model to this new picklist option. Be sure and review the
several default entries associated with this option to ensure they are what you expect. If you do not fully
understand the entries, open the script editor for the field after choosing the option to read more about
how the option was designed.

22. Added options for setting and incrementing labels, table cells, global variables, and patient attributes in
triggers.

23. Added option for recording patient attributes and other data in triggers.

24. Improved the options available for reading/writing to tables and external files.

25. There is a new selection choice available called, OriginalResource, for the, Preempted Task
Reassignment," found in the User Configurable Resource Selection Algorithm option for Pass To
fields. By choosing, OriginalResource, you are stating that you want tasks preempted away from a
resource to be given back to the same resource to be done later. The default is to give the task to the
resource's primary group to be passed to another available resource.

26. The <delete> and Custom Code options have been added to all advanced function fields.

27. Added a new option to the Entrance Criteria for Next Patient field that will only accept patients having
a specified label with a value matching a list of specified values. The option is named, Only patients
with specific label values.

28. The arrows connecting area blocks are sized to better match the default scale.

29. The default positioning of area blocks is improved to avoid blocks from hiding behind other blocks.

30. The default color of an Area block is a derivative of the first location within the area, but care is taken to
not have a block color so dark that its area name cannot be read. You may now change the color and
width of an area block by double-clicking the block to open a small editor.

31. The slide out bar on the left side of the flowcharting window has been redesigned to hopefully improve
understanding of the available options.

32. Area blocks can be connected with click-drag from one block to the next, or by using a click-click from
one block to the next. The yellow indicator line will now disappear after a connection is made, rather
than remain visible which caused confusion before.

33. It's now easier to distinguish between creating a brand new track with no activities and duplicating an
existing track with activities. On the Tracks tab there is now a separate button to Create, Duplicate and
Delete a track. There are also up/down arrows to change the rank of a track in the list.

34. The tooltips now describe things better and more accurately.
41
35. Some fields have been given shorter names that better describe their function. We realize it can be
frustrating when field names you've become accustomed to change, so we will refrain from future
changes unless absolutely required. Here's a list of new field names with their previous name shown in
parenthesis:

Patient Destination (Patient's Next Area)


Reserve Current Location (Hold room during absence)
Fixed Cost (Total Activity costs = ____ $)
Variable Cost Rate ( + _____ $/hr)
Allocation Priority (Resource Allocation Priority)
Preempt Resources (Preemption Rule with two picklist options is now converted to a check box)
Allocate Patient (Patient's exclusivity is required)

36. The Process Time field has been modified to allow either numbers or script to be typed directly into the
field itself, or a per-defined option to be selected from a list and then modified. The, Choose a
Statistical Distribution, option is handy when using a distribution function with unfamiliar parameters
because you ll be prompted for the required parameters. Although this Process Time field is similar in
form to the other fields found on the Advanced Functions window, it has some differences. Rather than
click on a button (e.g. paper icon button) to open the so-called template view for a selected option to
read or modify, simply click on the top option found in the drop-down list. The top option in the list is
always associated with the current entry for the field. The AI button to the right of the field is used to
open a full text editor for viewing or modifying the raw script associated with the current entry for the
field.

37. Activities will automatically have the activity ID attached as a prefix to the name of the activity. When
the activity ID is changed, the name is automatically updated with the new ID number. Hopefully, this
will help users avoid mistakes made in declaring predecessors by reading an activity's name rather
than its actual ID number, because the two will now coincide.

38. With the recent changes made to the Track Manager, the need to access the Advanced Functions will
be infrequent.

39. Expressions can now be used in both the Start Time and Repeat Interval fields for an activity. This will
allow you to use statistical distributions to define the times if desired.

40. A slight change to the timing associated with checks to start an activity has been made. When the list of
activities is scanned for possible activities to start, only the predecessors and start time of the activities
are checked. All activities passing these two checks will be considered for an actual start. It's at this
time that the Activity Start Condition will be checked to determine if the activity can continue.
Previously, the start condition was evaluated at the same time as the other two checks during a scan of
the entire activity list; however this limited flexibility with activities being repeated. Each repetition of a
repeating activity will now check the condition before starting, but will continue with the repetitive chain
of events regardless of the condition of a single repetition. The startactivity() command also checks the
start condition for an activity before actually starting it.

41. A new activity type called, Decision Point, has been added for use when a decision between two or
more activity steps in a track needs to be made during run time. This is the formalization of an existing
option to declare the next activity to begin upon completion of a current activity using the, Next
Activity, field found in the Advanced Function editor for all activity types.

42. Previously, when the return box was checked for Equipment or Transport resources used in an
activity, the return request was dispatched to the first staff member involved in the activity upon
completion of the activity, regardless of any other considerations. The return functionality now works

42
this way: Upon completion of the activity, a return request is only generated if there is no other
allocation request pending for the equipment/transport involved. If the return request is generated, and
the involved staff member is allocated to another activity, then the return request will be dispatched to
the staff member'ss primary group. In addition, if the primary group is also a member of a group such
as an alternate group, then a quick check of the primary group's other members will be made, and if no
other members are currently available, the request will be dispatched to the alternate group. In all
cases, the original activity with the, return, box checked is considered complete at the end of the
process time, and the return task is considered a totally separate and independent task.

43. A change has been made to the way resources are selected when a, previous from option is used
to define an activity's resource assignment. Until now, and regardless of the state of the resource, the
resource request was always dispatched to the first resource from a particular group previously used by
the Patient. Now, with one exception, if the resource member used previously is in an, Off Schedule,
state at the time of the request, the request will be dispatched to the primary group of the resource. If
the primary group is also a member of a group, such as an alternate group, the other members of the
primary group are checked first for an Off Schedule state in order to determine whether the dispatch will
go to the primary group or to the alternate group.

44. In a Transport Patient > Process activity, when a transport moving a patient arrives at its destination, it
will be released immediately unless it's retained by the activity using the, same as above activity,
command, or the box is not checked to, return, the transport upon release.

45. Patient and staff walking speeds are now dynamically updated during run time to equal the slowest
included object's defined speed . For example, if a staff member with a normal speed of 80m/min and a
wheelchair with a normal speed of 70m/min are used to transfer a patient with a normal speed of
60m/min, the staff member will travel at 80m/min to the wheelchair, push the wheelchair to the patient
at 70m/min, and then push the patient in the wheelchair at 60m/min to the transfer location. The
walking speed of patients can be defined by track type using the Visuals tab of the Track Manager, and
the speed for staff, equipment and transports can be defined by individual resource using the primary
group s Properties window.

46. New Command finishreplication() added to the Stop Model Based on Condition, option found in trigger
fields.

47. New Command getarea(object); If the object is a location, you'll get the location's area. If the object is a
patient in a location, then you'll get the area of the patient's location.

48. New Command getareastat(area, stat); If stat = 1, gets the number of active locations within the area. If
stat = 2, gets the number of currently occupied locations within the area. If stat = 3, gets the percent
occupancy for the area calculated in the same manner as the Occupancy Levels by Area dashboard
graph.
49. New Command getcensus(object, trackname); Gets the number of patients in a single location (e.g.
getcensus(WaitingRoom)), or in the entire model (e.g. getcensus()). If a valid trackname is given, only
the number of patients for that track is counted (e.g. getcensus(WaitingRoom, Track1)). Otherwise, all
patient types are counted.
50. New Command getstaffgroupstat(group, stat); If stat = 1, gets the number of active staff members in
the group. If stat = 2, gets the number of currently utilized staff members. If stat = 3, gets the staff group
utilization percentage calculated in the same manner as the Staff Utilization by Group dashboard graph.
51. New Command getthroughput(object, hourly, trackname); Gets the number of patients who have exited
a single location or the entire model. If a valid trackname is given, then only the number of patients for
that track is counted; otherwise, all patient types are counted. If the hourly flag is 1, then the value
returned is a per hour figure.
52. New Commandstoparrivals(object); Stops a PatientArrivals or ItemArrivals object from generating any
new arrivals, while letting any patients or items already in the object leave.
43
53. New Command resumearrivals(object); Resumes the generation of arrivals at a PatientArrivals or
ItemArrivals object that was previously stopped with the stoparrivals() command.
54. New Command setrunspeed(speed); Sets the simulation run speed. Value entered is the number of
simulated minutes per one real minute. A value of 1 would run the model in real time. This command
will also update the slide bar and value displayed on the toolbar above the view window.
55. Even though more than one path node may be connected to a location, travelers will, by default, use
the shortest path when traveling to that location. However, by checking the, Alternate Exit, box found
in the arrival node's Properties window, it's also possible to have travelers leave a location using a
different path node than the one they used to reach the location.
56. When multiple staff members, using the path network to travel to a Patient Processing location, arrive,
they'll occupy the path nodes attached to that location in the same order as they are assigned in the
staff table for that activity. In other words, the staff member associated with the staff assignment
defined in the first row of the staff table of the activity, will be directed to travel to the first path node
connected to the location, and the second staff member to the second path node, and so on. If you
forget the order you connected the path nodes to the location, you can view the connection order
number by changing the Information Display to, Show object names (see right-click context menu for
the view), and then clicking on a path node to reveal its order number.
57. Improved positioning of multiple staff while escorting and transporting patients.
58. Improved staggering of multiple staff assigned to the same process.
59. Improved staggering of multiple patients arriving at the same location.
60. Multiple patients arriving at a Patient Processing object that has <none> selected for its shape will be
positioned according to a grid pattern across the footprint of the object after they have entered the
object.
61. New picklist options have been added to facilitate repositioning of patients arriving at locations.
62. A custom transparency level can now be assigned to a Display object for text and floor displays.
63. Patient Arrivals and Patient Exit Objects:
64. The Properties window has been updated to resemble the Patient Queuing and Patient Processing
objects' Properties windows.
65. The Users Manual is in need of a rewrite, but there are a few new sections added recently that are
worth reviewing. The Users Manual > Modeling Tools > Track Manager contains a good explanation of
what a track is, and at the bottom, there's a short description of the various Activity Types.
66. The Users Manual > Modeling Tools > Track Manager Advanced Functions contains short explanations
of the Advanced Functions.
67. Sample Model: This release includes a sample model of a small emergency department. The model is
named Demo_ER_1.fsm and can be found in the user>Documents>FlexsimHC Projects folder. The
model uses a CAD drawing for a floor plan. There are two simplified tracks defined in the model: Basic
and Xray. The Basic track has the following activities: arrival, registration, triage, bed placement, nurse
assessment, nurse/doctor consult, doctor exam and discharge. The Xray track is the same up through
nurse/doctor consult, then xray, return to bed, and discharge. Walking paths are used to connect the
various locations in the model.

Bug Fixes (v2.70)

1. Fixed the, "By Time of Day," option in several of the picklists, and renamed the option to: Based on
Simulation Time. It now correctly accounts for simulation start times that are offset from time zero as
defined by the user when creating shift schedules. The pick option allows use of the following terms
when referencing simulation time: year, week, day, hour, minute and shift, with a shift being further
defined as any given number of minutes.

2. Fixed problem with shift schedules switching from an available state to a down state between 00:00
and 00:15 even when the table displayed an available state.

3. Tooltips have been rewritten to improve the clarity and accuracy of the text displayed.

44
4. The picklist options designed to stop a model run based on a condition were not working correctly with
the Experimenter. This has been fixed with the new picklist option titled, Stop Model Based on
Condition.

5. Fixed problem with the library view not opening after the, Close All Windows, option is selected in the
main view's context menu.

6. Fixed crash which sometimes occurred while running a model and simultaneously trying to save
dashboards, tracks, etc. It's still not a good idea to do such things while a model is running, but at least
it does not crash the software now.

7. Fixed crash which occurred when a model was stopped using script in the Entry Trigger of a Patient
Exit object.

8. The, By Percent, picklist option had a typo that mistakenly defined the random number used to obtain
an empirical value as ranging from 0 to 102 instead of 0 to 100. This has been corrected. The P()
option used a different function which was always correct.

9. Path names as displayed in a path node s properties window are now updated correctly to reflect any
changes made to node names.

10. The main view window is now refreshed after variables are copied using the Utilities Tool, so that visual
effects that depend on certain variables will be recognized immediately.

11. Since the Presentation Builder does not work properly when the main view is orthographic, a warning
message is displayed indicating such.

12. The, return, flag for equipment is now included in the import/export track files as it should be.

13. Information entered on a Label tab is now applied when the Apply/OK button is pressed immediately
after entering data. Previously, it was necessary to first click off the cell the data was typed into.

14. Fixed problems found in many of the dashboard widgets:


o Axis label display errors on line graphs
o Displayed values for Object Queue vs. Time charts were sometimes off depending on size of
graph boundary
o The words In-Process have been changed to Census in graph titles

15. Fixed conflicts between global variable definitions and definitions associated with other libraries
(custom user libraries that might be added by advanced user/developers).

16. Fixed error with auto-naming activities with milestone names when another activity was clicked on in
the list before Apply button was pressed. This is okay to do now.

17. When a user erroneously checked the, Reserve Current Location, box (previously named Hold room
during absence) when transferring a patient from a Patient Arrivals object to another location, it caused
the Patient Arrivals object to stop creating patients. The problem has been solved by ignoring the
request to reserve a Patient Arrivals object.

18. The list of Global Variables is refreshed when the window's Apply button is pressed.

45
19. Previously missing break; statements have been added to the end of each example script line in the,
Based on Multiple Cases, option in the Next Activity field. This addition will prevent the example script
from rolling over to the last case rather than executing a singular case as intended.

20. The, Based on Percentages, option for the Next Activity field did not convert the ID number to a row
number as it should have. The script to convert ID number to row number has been inserted.

21. Fixed problems encountered when answering, Yes, to, Save before creating new model? prompt
prior to opening a new model.

22. Fixed problem with the Start Activity Condition field returning false when an expression is entered and
then erased.

23. Fixed the problem where activity parameters were not being properly updated between scenarios when
parameters were defined as variables in the Experimenter.

24. The staff selection box in the table on the Maintenance tab of a location will now re-size correctly to
match the size of the Staff column.

Version 2.50 (December 11, 2009)

New Features (v2.50)

1. A check is now made for availability of both a location and a staff member when a patient is to be
escorted to their next area. When there is a PatientQueuing object connected, the patient will walk
unattended to the queue. Previously, only a location needed to be available to keep the patient from
walking unattended to the queue.
2. Added option to lock the position of walls to avoid accidentally moving them.
3. User can now easily specify where preempted tasks are re-dispatched for completion (or force the
preempted task to be completed by the resource that was preempted).
4. When the OK button is pressed on the Track Manager, the window will no longer close if an error is
detected in the activities, to avoid having to reopen the window to fix the error.
5. Improved the elevator dispatching logic so that the elevator will only pick up passengers who are going
in the same direction as current riders (capacity is limited by a user-defined number of passengers).
The animation has been improved to not shut the door in the face of multiple passengers
loading/unloading at the same floor too.
6. Added an option to send staff on patient rounds using a single activity step. One or more staff will be
sent to locations in a specified order to perform a task. If equipment is specified, then the staff will first
pickup the equipment, and carry it with them to each of the location listed. A process time expression
will be evaluated for each staff at each location they visit to determine their stay time. Only locations
that are in a chosen state (i.e. vacant, occupied, etc.) will be visited.
7. User can now add their own custom fields to the automatically generated output files. The custom fields
can be calculated derivations of existing fields, or completely new data. The number of decimal places
for numeric variables written to output files is now based on the global setting for decimals rather than
always using 2 decimal places.
8. Added an option to easily modify patient arrival rates as one of the experiment variables.
9. The Excel table importer now has options for importing Global Tables, Arrival Tables (e.g. Hourly
Arrivals, Appointments), Object Tables (e.g. maintenance tables, component lists, user-defined label
tables, etc.), and Shift Schedules. A new field has been added to the importer called Post Import
Trigger which can be used to execute script immediately following the importing of the tables from
Excel.

46
10. As with locations, resources (i.e. staff, equipment, transports) are visually marked with a red square
around their base when not available.
11. Added a new overhead display option for patients that will only show the in process activities for the
patient currently highlighted in the model. This has been made the default rather than the option that
shows the overhead display for all patients concurrently.
12. Added option in Next Activity Chooser picklist to choose an activity based on occupancy of a given
location.
13. Added option in triggers to dynamically create patients on the fly (e.g. babies in the maternity ward).
14. Made it possible to reset, create, and/or delete activity steps dynamically during runtime.
15. Added a checkbox to return equipment and transports to their home base (primary group) after
finishing the activity they are used in. The return activity is a separate task sequence with low priority so
as not to delay the completion of the initial activity step.
16. An individual or group of selected objects can now be duplicated with a right-click option on the 3D
model view, or with the quicker but largely unknown Ctrl-D shortcut key combination.
17. Added many new 3D shapes to the dropdown lists for Patient Processing, Group, Item Queuing and
Item Processing objects.
18. Replaced the AutoConnect button with a Flowcharting button on the main toolbar. This new button
opens a window that allows you to graphically map the flow routes of the various patient types in your
model. Multi-colored connection arrows are available to help you define and organize your routes. The
routes are defined by area rather than location, so they are quick and easy to create. There is still the
option of having FlexSim automatically try to create the connections between areas in your model
based on information derived from the track definitions. However, as you ve probably discovered,
these automatic connections are not always what you want, so the new flowcharting tool will help you
make your connections correct right from the start, and it is also a very nice way to graphically present
your patient flows to others.
19. The Probably Early Exit option for the Patient Leaves Early field on the Patient Condition tab of a
Patient Queuing object s Properties window has been expanded to allow for a conditional query as
well as a probability percentage in deciding if a patient leaves early. The option will also create a user-
defined label on the patients leaving early so that the patients can be identified in the output reports.
20. A new simplified format for the csv file used to import and export patient tracks between FlexsimHC and
Excel has been developed. Multiple resources defined for the same activity step can now be specified
in one cell by separating the list of resources with a comma. If the Next Activity Chooser and Activity
Start Condition fields were defined with a single line expression, they too will be imported/exported.
21. To facilitate quick and easy data entry, two new commands have been included in the software: T() and
P(). The first is just a substitute for the triangular() command. However the second, allows you to
specify a list of values to be returned based on a corresponding list of probabilities. The format for the
data typed into the P() command, is P(, percent1, , percent2, ) for up to nine different values. If more
are required, then the dempirical() or cempirical() commands which can reference an unlimited list of
values/percents in a global table must still be used.
22. The following commands have been added: drawobjectfloor(), finishactivity(), firstavailableresource(),
firstpreemptableresource(), getobjectstate(), getiteminstate(), gettraveldistance(), getwarmuptime(),
reservelocation(), scanactivities(), setcolorbypalette(), setnextarea(), setnumlocations(),
setnumresources(), setobjectstate(), startactivity(), timestringtominutes(), toid(), torownum().
23. Resources being used to transfer a patient are no longer allowed to be preempted; however when the
transfer is complete, the request queue is immediately evaluated for preempting requests that have not
been satisfied.
24. Using the mouse wheel to change the height of a selected object will restrict moving the object below
floor level.
25. The Display object is a nice way to make a floor. Any objects dropped onto the floor will be placed at
the same height as the floor by default. This can be useful in multi-floor models.
26. The Utilities tool window can now be used to change the ranking of nodes in the model tree. This is
useful for those who like to organize the list of objects in the tree view. Keep in mind that the order of
the objects listed in the model tree is the same order they are listed in many of the dropdown lists.

47
27. The Maintenance shape for staff objects has been enhanced to include a cleaning cart. It is now the
shape of woman pushing a standard cleaning cart.
28. The User-Defined Bar Graph in a Dashboard has been made more general to include all object types.
Another picklist option has been added to show an example of collecting and graphing data found in an
object label.

Bug Fixes (v2.50)

1. Fixed bug with equipment not being disconnected from network when Connect with Path Network box
is unchecked.
2. Fixed bug so new resources added after the Connect with Path Network box has already been
checked will also be connected.
3. Fixed problem where experimenter was not updating variables associated with the Next Activity field
and global variables.
4. Removed visual glitch (green box) shown on dashboard line graphs.
5. Fixed bug with repetitive activities not always working when running a model for multiple replications.
6. When staff members are preempted away from a patient, the patient s state is now changed to
Waiting For Staff.
7. The problem with requests getting caught in an infinite loop when passed between multiple resource
groups, as could happen when using Alternate Groups, has been fixed. Group members should now be
able to contain both resources and other groups without a problem.
8. A problem with assigning labels to patients has been fixed by forcing the user to always create labels
on a patient using the Patient Classification tab of the Patient Arrivals Properties window.
9. Fixed problem with some models requiring the Track Manager to be opened and the Apply button
clicked before they would work.
10. Fixed bug with Patient Processing objects not allowing multiple patients even when the Maximum
Occupancy was set greater than 1.

Version 2.01 (September 18, 2009)

New Features (v2.01)

1. More predefined dashboard widgets are available.


2. Many new user-configurable Dashboard graph and text display widgets.
3. Each widget now has a data structure associated with it that the user can take a look at and export if
desired.
4. The user is prompted to save dashboards before closing when changes were made.
5. Multiple dashboards within one model are now allowed.
6. Staff now use a default picklist option for returning to their primary group object when unavailable due
to Shift Schedules or Random Interrupts
7. Resources such as staff, equipment and transports can now be chosen for an activity in a variety of
user-defined ways using the Pass To field found on the Advanced Group Editor, the Advanced
Resource Editor, and the Alternative Group Editor. The purpose of the field is to allow the user to
choose the manner in which activity requests (otherwise known as task sequences) are dispatched
from group to group and from group to resource. In other words, which resource connected to the group
specified for the activitys staff, equipment and transport requirements do you want to be chosen for the
activity. The default option for the Pass To field for resources and resource groups has been improved
to handle more situations in a more realistic manner, but you may easily change the selection criteria
with the new picklist options provided.
8. The previous from ___group option that has been available for assigning staff to an activity is now an
available option for assigning equipment and transports as well.

48
9. The Patient Tracks and Track Properties windows have been combined and renamed Track Manager.
This was done to reduce the number of windows required to be opened at one time. The new Tracks
and Files tabs on the Track Manager essentially make up what used to be the Patient Tracks window.
The Tracks tab now allows you to change the name and order of existing tracks. When adding new
tracks, you can make a blank track or create a duplicate of an existing track you have highlighted in the
list.
10. The Visual tab of the Track Manger lets you change and visualize more parameters than before. Be
sure to check out the new options for dynamic overhead displays for patients in the model. The frame
selector is handy for viewing the available frames for a patient should you decide to override the
defaults and assign your own frame to a patient for a specific event in the simulation.
11. The Labels tab has been changed to restrict users from adding their own labels this way. User-defined
patient labels are meant to be added using the Patient Classifications tab of the Patient Arrivals edit
window. Youll note that there are two new system defined labels for a patient: ApptTime and
ArrivalTime. These are used when the patients arrive by appointment as defined on the Patient Arrivals
object. A patients scheduled appointment time versus their actual arrival time may be useful to you to
query within your model.
12. It is now possible to import and export tracks using a simplified tabular format (ref. Comma Delimited
(*.csv) option) making it very easy to export track activity lists to a table in Excel for reporting purposes,
but it also gives you the possibility of making changes to the activity list within a worksheet, and re-
importing your changes to test in the model. If a track with the same name already exists, the imported
information will replace existing information for the track; otherwise, a new track will be created and the
imported information applied to it.
13. For simplification purposes, the Activities tab of the Track Manager window will now only show those
fields which are applicable to the chosen activity type. Youll notice for instance, that the Process
Location field only shows up once youve selected staff for a Process activity. This is because the
Process Location is only used when staff are going to be utilized during the process time, in which case
the staff must first travel to the Process Location before the Process Time begins. These little changes,
plus a host of sanity checks that get executed when the Apply button is pressed, will hopefully help
the user to avoid data entry errors.
14. Youll notice a new checkbox on the Activities tab for the first five process activity types that is Patients
exclusivity is required. If a patients exclusivity is required for a process, then the patient will be
allocated for the process. This means the patient cannot be allocated by any other process while
allocated by this process. Normally there are multiple activities that can be occurring for a single patient
at any given time.
15. The Transport Patient > Process activity type now has an option requiring the staff return the transport
to the transports group object after dropping off the patient. This option is invoked by simply checking
the box labeled return found in the Transport selection pane for the activity.
16. The Process Location can now be defined with an expression in Advanced Functions rather than just
selecting a specific location on the Track Managers Activities tab. This will allow the process location to
be determined during runtime according to system dynamics at the time the decision needs to be
made.
17. A very powerful field has been added to Advanced Functions called Activity Start Condition. This new
option requires that a user-definable condition be true before an activity is kicked off. The condition is
rechecked every time the activity list is scanned for another activity to begin, and the user may create
custom events to force reevaluation of the list at any time! With this condition field, conditional based
activity list traversal within a given track is easier than ever.
18. An Activity Started Trigger has also been added to Advanced Functions giving you the opportunity to
modify the parameters of an activity before it starts allowing you to make changes based on the state of
the model at the time of the activity. An extensive list of user pick options makes this an easy task.
19. The list of user pick options for Advanced Functions has been expanded to include improved options
for making selections based on system state and availability of resources and locations. New options
have been added for making decisions based on patient attributes and time of day as well.
20. User-defined milestones are now included in the drop-down list, and saved with the model.

49
21. The prev/next arrow buttons at the bottom of the Advanced Functions editor can be used to quickly step
through the advanced functions of all activities of a selected track.
22. The AutoConnect features now interprets connections based on the full list of Next Areas, and is smart
enough not to connect locations to each other within the same area.
23. A global start time for offsetting the simulation clock can be defined and saved with a model.
24. Source code has been streamlined and compiled to improve runtime speed of a simulation
substantially.
25. Application code has been removed from user fields to avoid confusion with user-defined options.
26. Global system variables have been separated from user-defined global variable to avoid confusion and
provide a clean slate for users to define their own list of global variables if they want.
27. A large number of commands have been added that allow a user to easily modify resources, tracks and
locations on the fly. For instance the command ReserveLocation allows you to reserve a location for a
specific patient in advance of an activity that would use the location.
28. The PatientArrivals object has been greatly improved. For starters, the bugs have been worked out of
the Hourly Arrivals table, but the arrivals will now repeat on a weekly basis. If distributions are used to
define the number of patients arriving each hour of the week, the distributions will be resampled at the
start of every day.
29. The scheduled arrivals (now called Appointments) can have variability about their scheduled arrival
times. Because the arrivals are generated independent of each other, patients may arrive early or late
to their appointed times, and consequently may overlap another patients appointment time. The
appointment schedule may also be repeated if required. If the PCI value for a specific arrival is 0, the
PCI classification index can now be assigned randomly from the empirical distribution defined on the
Patient Classification table rather than explicitly defined by the user. The appointment times may be
entered in days:hours:min format, or in terms of total simulated minutes as before. This now applies to
all time entry fields!
30. Interarrival times may now be tied to a specific PCI number if desired, making more than one
interarrival time distribution more useful.
31. The Patient Processing object can now have more than one patient in it at a time by simply specifying
the Maximum Occupancy to a number greater than 1.
32. The status of the library (open/closed), the main view settings, any open windows, and all saved views
are now saved with the model, and are loaded automatically when reopening the model.
33. The right-click popup menu for the main view window has been expanded to include more colors,
standard views, and other display settings than before.
34. The object library window is placed on top of other windows when opened/closed in order to give you
access to the library when other windows are in front of it. By the way, did you know you can right click
on an object in the library and get a list of objects in the model of that type? Very useful in large models
when you want to find and edit a specific object.
35. The default directory for saving and opening files is a directory in the users personal Documents folder
called FlexsimHC Projects. This is the default directory until changed by opening or saving a file to a
different directory.
36. Ctrl-D is a shortcut key available in the main view for quickly duplicating a group of selected objects
(red bounding box), or a single highlighted object (yellow bounding box).
37. New Excel import and export options available under Tools>Excel menu.
38. All tables in the application including those found on the Patient Arrivals object have right-click popup
menu options for easily copying/pasting or importing/exporting the entire table or portions thereof.
39. Many more 3D shapes are included for locations, equipment and transports.
40. Staff Groups can now be assigned 3D shapes from a dropdown list.
41. Location objects show a colored band around their floor when being held by a patient. The color of the
band matches the patients color.
42. Location objects show a red band around their floor when not available due to a shift schedule or
experiment scenario.
43. Staff and patients now have more realistic travel patterns. They no longer stop at a node when using
walking paths, but will offset travel all the way to their final process point when discernible.

50
44. When equipment and transports are dropped off, they are placed more intelligently. For instance,
wheelchairs are placed in such a way as to hopefully not overlap with patients or beds when possible.
When a resource (e.g. staff, equipment, transport) returns to its group, it is placed back in its original
default position relative to the group.
45. Positioning of all patient shapes (e.g. man, woman, boy, girl, baby, baby in bassinet, and man in bed)
have been improved for when the patient is placed in any of the standard locations. The user may
manually position patients within locations as well.
46. Improvements have been made to the positioning of patients relative to transports, and staff relative to
equipment or transports during travel.
47. You can now choose to display information above a patients head as they progress through the model.
The information includes the patients name and a list of the activities that are currently in process for
the patient.
48. Patient Queues can now be visualized represented with chairs, beds, a single file line, or open floor
space. Single file lines now have a truer representation with patients shuffling forward after a patient at
the front of the line leaves the queue.
49. An elevator object has been added to the library. Using an elevator in a model is extremely easy when
using walking paths. Simply connect the elevator up to nodes in the walking path. As patients or staff
cross a node connected to an elevator, it is determined whether or not the person(s) need to use the
elevator based on the level of their destination compared to their current level. If the levels are different,
a request to use the elevator is dispatched automatically. By default, the elevator will stop and pickup
passengers who are along the way who are headed in the same direction the elevator is currently going
so long as the elevator capacity has not been exceeded. Other control algorithms can be chosen by the
user as well.
50. The text display options have been updated and expanded to match those available for dashboards
and output files.
51. You now have the option to create nine separate output files rather than what was previously one file
with the recorded data tagged with nine different codes. This should make it much easier for most users
to deal with. The nine files are: PatientHistory, StateHistory_PatientQueuingLocations,
StateHistory_PatientProcessingLocations, StateHistory_ItemQueuingLocations,
StateHistory_ItemProcessingLocations, StateHistory_Staff, StateHistory_Equipment,
StateHistory_Transorts and StateHistory_Totals. The delimiter for the column separator can now be
one of four types (e.g. tab, semicolon, comma, space) for international compatibility.
52. Data is not written to the output files until after the user-defined warmup time has transpired. When the
warmup time transpires, an event occurs which resets all statistical parameters as required. The times
associated with data written to the output files is corrected to account for any user-defined start time.
53. Newly designed Experiment Manager interface is more user friendly and hopefully easier to use. One
things for sure, it is much more powerful.
54. The user now has a very large list of experimentation variables to choose from. You may choose from
predefined lists of location, resource, patient, and global variables; or create your own user-defined
variables by selecting from a list of examples or defining one from scratch. A variable no longer needs
to be associated with a single value on a single node in the tree, but can be an expression such as an
existing algorithm that has been modified to contain an experiment variable you may have embedded in
the code. It is now a simple thing to experiment with the number of staff members in a group, or the
number of locations within an area.
55. The list of predefined performance measures has also grown substantially. You will be able to choose
from a long list of PFMs associated with individual resources, groups of resources, locations, groups of
locations, patient tracks, or global metrics. As with variables, the user may also define their own custom
performance measures.
56. Performance measure reports have been enhanced to include more than just confidence intervals and
standard deviations. Experimentation results now include histograms for replication frequency analysis,
scatter plots for comparing correlation between variables, and nicely formatted html reports to display
and compare the results and raw data for all performance measures and all scenarios!
57. More content
58. New animated gifs

51
59. Many new commands have been added and documented in the Command List.

Bug Fixes (v2.01)

1. Allocate and Deallocate activity types are now working properly.


2. Simulation start time offset can now be globally defined and saved with a model. All time related fields
will now take the start time into consideration.
3. Prev/Next buttons found in many of the gui windows have been debugged and now work properly to
hopefully speed up the editing process across several objects.
4. More error trapping has been incorporated into the code to avoid as many exception errors as you may
have previously experienced.
5. Sometimes, patient and location states were not getting set when they should. This has been fixed.
6. The Track Properties editor (now called the Track Manager) had problems refreshing properly, and
therefore would occasionally assign data entered within one field to another field. This was usually
manifested by staff appearing to travel to a wrong location for a process. It also caused problems with
patients getting stuck at a given location as they were trying to get to advance to an area not allowed
for the track. These problems have all been fixed by fixing the way data is presented and saved by the
Track Manager interface.
7. The options on the Utilities window for creating saved Selection Groups and saved Layout
Configurations did not work. This has been fixed.
8. Fixed the problem with background images disappearing randomly.
9. Fixed the problem with bad global pointers being generated sometimes when trying to rename staff,
equipment and transports. A more robust approach for the auto-generation of global pointers for object
names and area names has been developed which hopefully has eliminated these problems.
10. Clicking Apply/OK on the Shift Scheduler after making changes in the graphical Work Schedule table
view used to erase the changes. This has been fixed.
11. The bugs with the Hourly Arrivals table method for generating patient arrivals into the model have all
been fixed.
12. Staff connected to an Alternate Group were not included in the previous from ___group picklist
options. This has been corrected.
13. The bug with repetitive tasks not always repeating properly has been fixed.
14. The warmup time event now correctly resets all variables requiring reset.
15. The deallocate activity didn t always release staff like it was supposed to. This has been fixed.
16. Fixed bugs with the Presentation Builder and AVI Maker, so they now work correctly with the main
view.
17. The same as above activity option now works for transports.

52
Overview of the Model Building Process
This topic will provide a high-level overview of each phase in the model-building process in FlexSim HC. It
will explain which tools are involved in each phase of the process and will provide links to the relevant
sections of the User Manual for each phase and tool.
Be aware that you do not necessarily need to build your model in the exact order listed here.

1. Plan Your Model


Before designing your simulation model, it will help to determine your goals for your simulation project.
You'll also want to gather useful data that will help make your model as accurate as possible. See Planning
a Simulation Model for more tips and best practices about the work you should consider doing before
designing your model.

2. Build a Layout of Your Facility


The next thing you'll want to do is build the layout of your facility. During this phase of the model-building
process, you'll want to:

Create the floor plan of your facility. Ideally, you will import an AutoCAD drawing of your floor plan
using the Floor Plan tool. See Creating or Importing Floor Plans for more information.

Add patient locations and item objects to your simulation model. Add various location objects and
item objects from the Library to your simulation model. These are the locations that your patients and
staff will eventually travel to in order to complete certain tasks in your simulation model. See
Introduction to Library Objects and Adding Objects to a Model for more information.

Connect locations and item objects together. After adding locations and item objects to your
simulation model, you need to connect the objects together so that patients and staff can move
between the objects when you run your simulation model. You will use the Flowchart tool to connect
objects together. See Connecting Locations and Item Objects for more information.

3. Add Staff and Resources to Your Model


After building a layout of your facility, you'll want to add staff and resources to your model. Staff and
resources are objects that patients will interact with in the simulation model. Unlike location objects,
resources can possibly move around the model. A resource can be staff personnel, transports (such as
wheelchairs and gurneys), and medical equipment.
You will add these objects from the Library into your simulation model, similar to the process for adding
location objects to your model. The difference is that you will add a resource group and then add more
members that group if you want to add more of that resource type. See Adding Staff and Resources for
more information.

53
4. Create Patient-Centered Activities
Next, you'll create the series of activities (patient tracks) that each patient will follow once they enter the
simulation model. You'll determine what each patient should do from the moment they enter the model until
they leave. You'll also assign the appropriate staff and resources to work with the patients at various points
in their care process. You will use the Patient Track Manager for this phase of the project.
This is the single most important step in the model-building process and it is also the most complex. See
Patient-Centered Activities for more information.

5. Add Patients to Your Model


Next, you'll want to determine how your patients will be added to your model. During this phase of the
model-building process, you'll want to:

Decide on a patient classification system. If needed, you can create different types of patients with
different acuity levels or other defining characteristics. You can also assign different types of patients to
different patient tracks if needed. See Introduction to Patient Classifications for more information.

Decide on a patient arrival pattern. Using a Patient Arrival object, you will determine how your
patients will arrive in your model. You can use several different possible methods to introduce patients
into your model such having patients come at scheduled appointment times, arriving at different rates
based on the time of day or day of the week, etc. See Introduction to Patient Arrival Patterns for more
information.

6. Create Other Routine Staff Activities


Some staff activities might not be directly related to a patient's activities and will be based instead on timed
events in the model. This includes activities such as:

Staff meetings
Routine patient care (such as checking vitals every hour)
Clerical work (such as answering phone calls)
Janitorial work

You will create these kinds of activities using the Global Processes tool. There are some other tools you
can use at this point in the process to introduce some additional complexity into your simulation model if
needed. See Routine Staff or Location Activities for more information.

7. Run Your Simulation Model


Once your simulation model is built, you're ready to run the model to see if it works correctly. There are a
few different settings you can use to change how your simulation model runs. There are also a few things
you should check before running your model and a few different ways to troubleshoot some errors that
might come up. All of these topics are discussed in Running a Simulation.

54
8. Get Data from Your Simulation Model
After running your model at least once to make sure it is working correctly, you can use a few different
tools to begin gathering data from your model. You can use the Dashboard tool to track and display the
statistics you are most interested in. You can also use the Experimenter to run your simulation model
multiple times and see how your results change if you change certain variables. All of these topics are
discussed in Getting Data from a Simulation.

55
FlexSim HC at a Glance
This section will provide a high-level overview of FlexSim HC tools, key features, and more.
The most important elements of FlexSim HC are labeled in the following image:

Each element will be described in more detail in the following sections:

Library
Located in the left pane, the Library contains a variety of objects that you can use to build your 3D model.
Each type of object has specific settings that you can customize to improve your simulation. The Library is
context-sensitive, which means that its content will sometimes change based on whatever is currently
selected in the model or the type of tool that is currently in use, such as the Statistics Dashboard. See
Introduction to Library Objects for more information.

Toolbox
Also located in the left pane, the Toolbox allows you to access and manage any tools that you might want
to use while you're building your simulation model, as shown in the following image. You can change the
left pane to the Toolbox by clicking on the Toolbox tab at top of the left pane. See Using the Toolbox and
Toolbar for more information.

56
Model
Located in the center pane, the model is the main workspace you will use to create your 3D model. Once
you create or import a floor plan of your facility, you can drag objects from the Library into the model to
begin creating a simulation.

Quick Properties
Located in the right pane, Quick Properties allows you to quickly and easily edit the settings for any object
that is currently selected in the model or in a tool. The Quick Properties pane is context-sensitive, meaning
that its content will sometimes change based on the object or tool that is currently selected. For example,
when you click on an object in the model, the Quick Properties pane will display that object's settings. If
you open a new tool, the Quick Properties pane will display the tool's settings and features.

Patient Track Manager


Located next to the Quick Properties pane, the Patient Track Manager allows you to create tracks (plans)
for patient care. Patients can follow different tracks based on the patient's acuity, diagnosis, or any other
criteria you determine. These tracks can include different activities or processes that should occur from the
moment a patient arrives to the time they depart. The Patient Track Manger can also assign the necessary
staff members and resources needed for that activity. See Patient-Centered Activities for more information
about using the Patient Track Manager.

Main Menu, Toolbar, and Control Bar


The main menu, toolbar, and control bar contain all the tools and commands that you can use to create
your simulation models. These tools will be discussed in more detail throughout the User Manual.

57
Tabs and Windows
A tab is a feature that allows one or more panes to be contained within a single window. Certain tools or
content can be displayed as tabs or as separate windows. For example, by default the User Manual you
are currently reading shows up as a tab, split as a separate pane to the right of the model. A few other
tools can be displayed as tabs or separate windows, such as the Flowcharting tool, the Patient Track
Manager, Global Processes, Global Tables, and the Statistics Dashboard. You can customize the
display of windows and tabs in FlexSim HC for easier access. See Arranging Windows and Tabs for more
information.

58
Key Terms and Definitions
FlexSim HC uses a few common terms in slightly different ways. The following sections give an
explanation of some common terms as they are used in this software program.

Patient
Patients are the most important element of the simulation model. FlexSim HC is patient-centered, which
means that nearly everything in the simulation model is driven by:

The arrival or departure of patients


The patient's status (such as their acuity)
The patient's activities and movement inside the model

Staff
A staff member is a type of resource in the simulation model. Staff can represent a person who helps to
provide direct or indirect patient care in the simulation model such as a doctor, nurse, receptionist, etc.

Activity
An activity is a particular event or action that will occur at a certain point in the simulation model. There
are two kinds of activities:

1. Patient-Centered Activities - A series of activities that patients will begin to do once they enter the
simulation model until they exit. Some activities will utilize specific locations, staff members, equipment,
or transports. Most activities in FlexSim HC are patient-centered. See Patient-Centered Activities for
more information.

2. Routine Staff or Location Activities - Activities that will run independently from patients. They might
include things such as staff scheduling and shift changes, clerical work, janitorial work, or routine
patient care (such as checking vitals every hour). See Routine Staff or Location Activities for more
information.

Locations and Areas


In FlexSim HC, a location is a specific object that patients will interact with as they move through the
simulation model. Locations will remain stationary within the model. A location could be a door through
which patients enter or exit, a receptionist desk, a waiting room, an exam table, etc.
By contrast, an area is a general collection of related locations. For example, there can be multiple beds
(which are location objects) inside an area you create called the BedArea. Using areas, you can create
patient activities in the Patient Track Manager that will send a patient to any available location inside of an
area. For example, you could create a patient activity that sends a patient to the BedArea. Once the patient
arrives at the BedArea, they could then go to one of the beds within the BedArea.
All locations in your simulation model must be part of an area. By default, each location will be part of the
area based on its object type. For example, if you add two table objects to your simulation model, by

59
default they will be part of the TableArea unless you assign them to a customized area. See Adding
Locations to an Area for more information.

Resources and Groups


In FlexSim HC, a resource is a specific object that patients will use or interact with as they move
throughout the simulation model. A resource can be staff members, transports (such as wheelchairs and
gurneys), and medical equipment. The main thing that makes resource objects different from location
objects is that resources can move around inside the model.
A group is a general collection of resources. For example, you can create a group called Nurses that has
four nurse staff members (which are resources) associated with it. Each nurse is a member of the Nurses
group. You can then create patient activities in the Patient Track Manager that can use one of the available
staff members in the Nurses Group to complete the activity.
All resources in your simulation model must be part of a group. When you first add a resource to your
model, there will only be one resource in that group (one group member). You will then add more group
members to that group in order to add more resources of that type. See Adding Resources to a Model for
more information.

Alternate Groups

You can even create resource groups that contain other groups. These are called
alternate groups. An alternate group is a collection of smaller resource groups
(usually staff resource groups) combined together into one large group. You can
then assign the larger alternate group to a specific activity so that members in any
of the smaller groups can be assigned to work on an activity.

For example, let's say you have a day shift of nurses (perhaps the group is named
Day_Nurses) and a night shift (named Night_Nurses). Each group has four group
members. You want the members of either group to be able to work on a particular
patient activity. The solution is to create an alternate group that will contain both
the day shift nurses and the night shift nurses. See Creating Alternate Resource
Groups for more information.

Companion
A companion can represent a person who accompanies the patient throughout the entire simulation
model. For example, a companion could be the parent who will escort a minor to the doctor's office.

Item
An item is an abstract object that can represent physical objects that need to be processed as part of a
patient's treatment. Items can represent paperwork or something that needs to be tested or processed in a
lab, such as samples, cultures, or specimens. FlexSim HC has a number of different objects, called Item
Objects, which can be used to transport or process items in the simulation model.

60
Path
A path is an area that determines how and where patients, staff, and other movable objects can move
throughout the simulation model. Paths can help keep patients or objects from moving in ways they
shouldn't (such as walking through walls) and ensure that your simulation model is as accurate as possible.

61
Introduction to the Toolbox and Toolbar
You'll want to get comfortable with how the Toolbox works because you'll use it to work on many different
tasks as you're building your simulation model. Flexsim HC has a number of useful tools that you will use
as you are creating your simulation model, such as:

The Floor Plan Tool - Helps you to import an AutoCAD drawing of your facility's layout into your
simulation model so that you can build a more accurate simulation model.

The Flowchart Tool - After adding various location objects to your simulation model, you'll need to
connect them using the Flowchart tool so that patients and staff can travel between these areas.

The Patient Classifications Tool - Used to create the various types of patients that will arrive in your
simulation model.

The Patient Track Manager - Used to design the activities that each patient will follow after arriving in
your simulation model.

The Global Processes Tool - Used to design routine activities that staff will work on at various times of
the day.

The Shift Schedule Tool - Used to design the shift schedules for staff members or to determine the
hours of operations for particular locations in the model.

You can open many of the most commonly used tools using their shortcut button on the toolbar. The
toolbar shortcut buttons are listed roughly in the order that you would use each tool while building the
simulation model.
However, one of the best ways to access and manage these tools is to use the Toolbox, which is shown in
the following image:

The Toolbox shares the left pane with the Library. You can change the left pane to the Toolbox by clicking
on the Toolbox tab at top of the left pane. Alternatively, you can click on the Toolbox button on the toolbar
to open the Toolbox.
When you create a new simulation model, you might notice when you open the Toolbox that it doesn't
show very many tools at first:

62
The toolbox only typically displays the tools that are in use in the current simulation model. To add a tool to
the Toolbox for easy access:

1. Click Add new tool at the top of the Toolbox to open a menu of the available tools.

2. Select the appropriate tool from the list to make it appear in the Toolbox and to immediately open that
tool.

You might notice that some of the tools in the Toolbox have a plus sign next to them. That means that
particular tool uses the tool component feature. (See the following section for more information about the
tool component feature.) You can click the plus sign to expand the tool and view all the components that
have been created for that tool.
If a tool doesn't have a plus sign next to it, it means that tool doesn't use the tool component feature. You
can double-click that tool to open it and edit its settings.

The Tool Component Feature


Some of the tools in the Toolbox have a tool component feature. This User Manual will use the term tool
component generally to describe a basic entity used by a specific tool. For example, one of the most
important tools you'll use to build your simulation model is the Patient Track Manager. The specific type of
tool component used by the Patient Track Manager is the patient track (often called a track for short). A
track is a series of activities that patients will follow once they arrive in the simulation model. You will edit
the activities and settings for each track using the Patient Track Manager. However, in order to create a
new tool component (i.e. patient track) for the Patient Track Manager, you would use the Toolbox. You will
also use the Toolbox to add, delete, rename, or copy patient tracks.
The following table explains the specific types of tool components that are unique to the tool in the Toolbox
that use the component feature:

Component
Tool Description
Type

Floor Plan Floor Plan A floor plan is an AutoCAD drawing of your health care facility.
Tool You can add more than one floor plan for each drawing.

63
The Patient Track A track is a series of activities that patients will follow once they
Track arrive in the simulation model.
Manager

Alternate Alternate An alternate group is a collection of smaller resource groups


Group Tool Group (usually staff resource groups) combined together into one
large group. You can then assign the alternate group to a
specific activity so that members in any of the smaller groups
can be assigned to work on an activity.

The Shift Schedule A schedule is a table where you can mark the time slots when a
Schedule particular staff member will be available, off schedule, on lunch,
Tool or on break. You can also use this tool to mark the times when
a piece of equipment or location is unavailable.

The Global Process A process is a series of staff activities that are routine in nature,
Processes meaning they are often repeated on a regular basis.
Tool

The remaining sections in this section will discuss how to use the Toolbox to add or manage tool
components. For information about using each individual tool, you can click the links to each tool listed in
the preceding table.

64
Adding a New Tool Component
You will use a slightly different method to add a new tool component depending on whether you have
added that particular kind of tool component to your simulation model before now. (See the Tool
Component Feature for a deeper explanation of what a tool component is.)
To add the first new tool component:

1. Click Toolbox on the toolbar to open the Toolbox (it will appear in the left pane where the Library is).

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select the name of the tool for which you want to add a new tool component. For example, if you want
to add a new patient track, you would select Patient Track from the menu. If you wanted to add a new
global process, you would select Global Process from the menu, and so forth.

4. This will create a new component. The newly created component will automatically open up in the
applicable tool.

By default, the newly created component will be named something like Track1 or Process1. See Renaming
a Tool Component for information about changing a tool component's name.
To add additional tool components:

1. Click Toolbox on the toolbar to open the Toolbox.

2. If needed, click the Plus sign next to the applicable tool name to expand and display the list of tool
components that have been created so far.

3. Right-click the tool name. Select Add [Tool Component] from the menu. For example, if you want to
add a new patient track, you would right-click Patient Tracks and select Add New Patient Track from
the menu. The newly created component will immediately open up in the applicable tool.

See Arranging Windows and Tabs for an explanation of how you can change the display options for this
tool window.

Using the Toolbar

If a tool has a shortcut button in the toolbar, you can alternatively add a new
component directly from the toolbar. If you click on the toolbar button, a menu will
open displaying the components that have been created for that tool so far. At the
bottom of the menu, it will give you the option to add a new component. For
example, if you click on the Patient Tracks button on the toolbar, a menu will
open with the option to Add a Patient Track at the bottom.

65
Opening and Closing a Tool Component
If the tool component you want to open is not already open, you can open it using the Toolbox. (See the
Tool Component Feature for a deeper explanation of what a tool component is.)
To open a tool component:

1. Click Toolbox on the toolbar to open the Toolbox.

2. If needed, click the Plus sign next to the applicable tool name to expand and display the list of tool
components that have been created so far.

3. Double-click the tool component you want to open from the list. The applicable tool will open to the tool
component you just selected.

Opening Multiple Tool Components

Be aware that when you open a tool component in a tool, you are only opening up the
specific tool component you selected. If you've created more than one tool
component, you will need to open up each one individually. Each component will show
up as a separate tab in the tool.

For example, if you've created two patient tracks, one called Healthy_Clinic and one
called Sick_Clinic, you'd have to double-click both tracks in the Toolbox in order to
open them both in the Patient Track Manager at the same time.

To close a tool component, click the X on the top right corner of the tool.
See Arranging Windows and Tabs for an explanation of how you can change the display options for this
tool window.

66
Renaming A Tool Component
To rename a tool component:

1. Click Toolbox on the toolbar to open the Toolbox.

2. If needed, click the Plus sign next to the applicable tool name to expand and display the list of tool
components that have been created so far.

3. Right-click the tool component you want to rename. Select Rename from the menu.

4. Type the new name of the tool component and press Enter. The tool component should now have a
different name.

Valid Names

Component names need to start with a letter or space. The name should also not
include either forward or backward slashes ( \ or / ), quotation marks ("), the plus sign
(=), dollar sign ($), or the greater than symbol (>).

67
Copying a Tool Component
It might be useful to copy a tool component if you want to create two very similar components with subtle
differences. For example, if you want two patient tracks to start with the same five activities, you could
create a copy of the first track and use the copy to create the second track to save time.
To create a copy of a tool component:

1. Click Toolbox on the toolbar to open the Toolbox.

2. If needed, click the Plus sign next to the applicable tool name to expand and display the list of tool
components that have been created so far.

3. Right-click the tool component you want to copy. Select Duplicate [Component Name] from the menu.

By default, the new component will use the name of the component you originally copied, but it will have a
(2) or _copy1 at the end of its name, such as Track1(2). See Renaming a Tool Component for information
on how to change the component's name.

68
Reorganizing Tool Components
If you want to change the order that components are displayed in the Toolbox:

1. Click Toolbox on the toolbar to open the Toolbox.

2. If needed, click the Plus sign next to the applicable tool name to expand and display the list of tool
components that have been created so far.

3. Right-click on the component you want to re-organize and, select one of the options depending on how
you want to move the selected component:

o Move Up - Moves the selected component up one position in the list.

o Move Down - Moves the selected component down one position in the list.

o Move to Top - Moves the selected component to the first position in the list.

o Move to Bottom - Moves the selected component to the last position in the list.

69
Deleting a Tool Component
If you want to delete a tool component:

1. Click Toolbox on the toolbar to open the Toolbox.

2. If needed, click the Plus sign next to the applicable tool name to expand and display the list of tool
components that have been created so far.

3. Right-click on the tool component you want to delete and select Delete from the menu.

70
Navigating in FlexSim HC
This section will discuss some of the basic methods for changing the camera angle that you can use to
view a model.

Moving Left, Right, Forward, and Back in the Model


To move from left to right or forward and back in the model, click somewhere inside the model and, while
holding down the mouse button, drag the mouse either to the left or right side of the screen or up and down
the screen.

Zooming In and Out the Model


To zoom in and out of the model, use the wheel button on your mouse. Scrolling up will zoom in on the
model and scrolling down will zoom out.

Rotating the Model


To rotate the model in any direction, right-click somewhere in the model. Then move the mouse left or right
to rotate the model horizontally, or move the mouse up or down to rotate the model vertically.

for specific instructions.

71
Introduction to Windows and Tabs
When you first open a model, the center pane displays the model. But sometimes using certain tools will
open up a new window or tab in the center pane as well. For example, when you first opened the User
Manual, it probably split the center pane into two panes with the model on the left and the User Manual on
the right.
By default, FlexSim HC splits the center pane into two panes when you open a tool that requires a
separate window or tab. However, you can customize the way windows are displayed. You can dock (pin)
these windows in a variety of ways for easier access, as described in the following sections.

Horizontal Split
You can split the center pane horizontally with the model on either the top or the bottom pane:

See Re-Arranging Windows or Tabs for specific instructions.

Vertical Split
You can split the center pane vertically with the model on either the left or right pane:
72
See Re-Arranging Windows or Tabs for specific instructions.

Undock the Window


You can undock the tool's window and float it as an independent window, separate from the main FlexSim
HC window:

73
See Re-Arranging Windows or Tabs for specific instructions.

Pin the Window as a Tab


You can pin the tool window to the tab bar. This allows you to display the tool as a separate tab that will fill
the entire center pane. You will be able to switch between various tabs by clicking the tabs you want to
view (similar to tabbed browsing in a web browser):

74
See Re-Arranging Windows or Tabs for specific instructions.

75
Rearranging Windows and Tabs
This section will explain how to re-arrange the way windows or tabs are displayed or docked. See
Introduction to Windows and Tabs for an explanation of different window and tab arrangements.

1. Click on the tab for the tool you want to move and begin dragging it to another part of the screen.

2. Before you release the mouse button, you'll notice that the window becomes undocked and floats as an
independent window outside of the main FlexSim window. If you release your mouse button at this
point, the window will continue to be undocked as a separate window.

3. Also as you click on the tab or the window's title bar and drag it around the screen, notice that a Guide
Diamond appears near the center of the main FlexSim window, as shown in the following image:

4. While still pressing the mouse button, drag the mouse to the Guide Diamond. Notice that the Guide
Diamond has five different areas. Each area corresponds to a different way of displaying or docking the
window, as described in the following image:

5. As your mouse moves over different areas in the Guide Diamond, notice that the area turns gray to
indicate it is selected. Release your mouse when your mouse is positioned over the desired screen
position.

76
Resizing Windows and Panes
You can change the default size of various windows or panes in FlexSim HC. For example, you might want
to make the pane containing the Table of Contents a little bit larger so that the topic titles fit on one line.
To resize a window or pane, position your mouse over the edge of a window or pane until it changes from
a mouse pointer to a set of arrows, as shown in the following image:

Click on the edge of the window or pane and drag it until the window or pane is the preferred size.

77
What Are Simulations?
In FlexSim HC, simulations are data-driven, computer-generated models of real-world health care systems
or environments. A simulation model can represent a hospital, a clinic, a pharmacy, or a variety of other
systems. Many companies use simulations to analyze and optimize their systems before implementing
costly changes in the actual system.
A real-world example can illustrate the benefits of simulations. In 2013 as a result of changes in U.S.
healthcare legislation, Summa Akron City Hospital in Ohio participated in an experimental program to
reduce the cost of patient care by gathering data and sharing it with physicians. One of the areas they
wanted to focus on was the efficiency of their operating rooms. Many times the hospital's operating rooms
would be empty despite the fact that patients had arrived on time and were ready for the operation to
begin. Prior to the introduction of the new legislation, the hospital still made a revenue from empty
operating rooms because the patient's insurance company was billed at an hourly rate. Even if the
operation was delayed, the hospital would still get paid for the costs of staff members who were standing
by in preparation for the operation. However, under the new legislation, hospitals would potentially only be
paid a flat rate for the operation instead of an hourly rate. This meant that the hospital would begin losing
money for under-utilized operation rooms.
After studying their system extensively, the hospital found that patient operation rooms were delayed
because the operating physicians were frequently late for the scheduled operation. The hospital worked to
solve the problem by sharing the data about tardiness with their physicians, comparing their punctuality
with their peers. As a result of these regular data-sharing sessions, physician tardiness reduced
significantly. This helped to improve outcomes for patients and prevent unnecessary costs.
Simulations can help you identify and solve problems just like this one. As you build and run a simulation,
you will be able to learn more about how your health care facility really works and how it can be run better.
You'll begin to notice bottlenecks and other costly blind spots that are reducing the quality of patient care
and/or increasing costs. FlexSim HC can help you get the data you need to make important decisions.
Furthermore, the 3D visualizations of FlexSim HC and user-friendly data displays can help to clearly
demonstrate problems to stakeholders. Sharing data from simulations can help to get buy-in from
stakeholders by helping them to more clearly see the benefits of implementing necessary changes.

78
Planning a New Simulation Model
Simulation is both an art and a science at the same time. As such, it requires practice to gain proficiency.
However, with some careful planning and data gathering techniques, you can ensure that your first
simulation project is a successful one. The following steps should ideally help guide you as you are
preparing your first simulation project.

Define the Problem


Begin by defining the problem that you are trying to solve by simulating your health care system. For
example:

Are you hoping to reduce patient complaints about waiting times?

Are you trying to determine whether you need to increase or reduce the amount of staff needed at your
facility?

Do you want to know whether it would be beneficial to purchase costly medical equipment or not?

Would you like to reduce costs from expensive equipment or technicians being idle for too long?

Start with the problem generally and then try to narrow down your definition of the problem as much as
possible. Don't try to simulate every little problem in your health care facility. Pick a specific problem and
then focus on those elements that are directly relevant to that problem you are trying to solve.

Formulate an Objective
Once you've isolated the problem, identify your objective and goals in simulating your health care facility.
Your objective should be clear, unambiguous, feasible, and workable. You should identify clear metrics to
measure if your objective has been met or not.
For example, you might use some of the following metrics to define success:

Reducing the patient length of stay

Finding the right percentage of time staff should be working on more important activities as opposed to
less important ones

Determining if extra medical equipment will allow you to care for more patients at a time

Interview All Staff Members


Talk to each staff member involved in the processes you want to simulate and have them tell you how they
work:

What steps do they take to accomplish a specific task?

How long would they estimate it takes to complete each task?

What are common problems or delays that sometimes occur while they are completing those tasks?
79
What have they found helps to make things go more smoothly?

Even before you start your simulation, you might learn a lot of useful information about your facility just by
doing this much.

Design a Flowchart
Next, design a flowchart that describes the different steps that will take place in the patient's care. Work on
building a flowchart for what's supposed to happen in your current facility first.
After designing a flowchart for your current process, begin designing some possible alternatives models.
What are some different processes you could use to accomplish the same tasks? What ideas do you have
for possibly optimizing these processes?

Gather Data and Information


This is probably the single most important step in order to ensure that your simulation model is as accurate
as possible.
You need to identify how long it takes to accomplish each step in the process you flowcharted above. Does
each step always take the exact amount of time? Or is there a wide amount of variance between how long
it takes to accomplish a particular task? What is the range of variance? This is the kind of information you'll
need to gather before simulating your health care system.
See the next section, Data Gathering Strategies, for tips and best practices about how to get good data
about your health care facility.

80
Data Gathering Strategies
Before you sit down to begin your health care simulation, you'll need to make sure that you are using good
data to determine how long certain processes should take in your simulation. You'll want to gather accurate
data to determine what is statistically normal for your health care facility for a set period of time.
The following sections discuss a few methods for gathering useful data about your health care facility.

Use Computer Data


You might already have all the useful data you need right at your fingertips. If you work in a facility that
relies heavily on computers to sign staff or patients in and out, you could possibly pull that data and use it
to determine an appropriate statistical distribution for a particular process or set of processes.
Talk to your facility's IT managers about pulling statistical data from these computers for a specific period
of time. Remember that you'll want to gather enough data to be representative of what is normal for your
health care facility.

Conduct a Time Study


A time study involves direct and continuous observation of a particular task or process to determine how
much time the process takes. The observer often uses a timekeeping device (such as a stopwatch or video
camera) to record the time taken to accomplish a task. The observer will observe the task multiple times
over a long period of time, recording the amount of time each process takes every time.
There are many free guides on the Internet for conducting time studies if you would like to conduct a time
study yourself. There are also consulting firms that are willing to conduct time study projects if needed.

Interview All Staff Members


If nothing else, you could interview all your staff members and get a rough estimate about how long
particular processes take and use that data to get an approximate processing time.

Get an AutoCAD Drawing


You might want to get an accurate, up-to-scale AutoCAD drawing of your facility's floor plan and layout.
You can directly import this drawing into FlexSim HC and use it to create an accurate model so that
patients and staff will travel the appropriate length and speed when moving inside of your simulation
model.
You might want to inquire about whether there is an AutoCAD drawing of your facility. It is possible that the
original architects of your facility provided it to your facility's administrator. You can also sometimes
contract with an architectural firm to create a drawing of your facility if needed.
If an AutoCAD drawing is unavailable or infeasible to obtain, you can measure your facility by hand and
create the facility using wall objects instead. (See Creating or Importing Floor Plans for more information.)

81
Using ExpertFit
If you've gathered a lot of statistical data from your health care system, you can use the ExpertFit tool to
determine the appropriate statistical distributions you should use in your health care facility. For example,
you might want to simulate how long it takes for a doctor to examine a patient. However, the time that this
takes can vary quite a bit from patient to patient. In other words, there's a certain amount of randomness
and variance involved in that process. However, if you were able to gather statistical data about how long
each examination took from a representative period of time (such as a month), ExpertFit could then take
those numbers and tell you which mathematical distribution you should use to calculate the processing
time.
For a more general discussion of how statistical distributions work in FlexSim HC, see the Distribution
Chooser for more information.
Unfortunately, ExpertFit will not be discussed in detail in this version of the User Manual. If you would like
more information about this tool, please contact FlexSim Customer Support.

82
Building a Layout of Your Facility
Building a layout of your facility is an important phase in the model-building process. This chapter of the
User Manual will discuss how to build a basic layout of your facility in detail. During this phase of the
model-building process, you'll want to:

Create the floor plan of your facility. Ideally, you will import an AutoCAD drawing of your floor plan
using the Floor Plan tool. See Creating or Importing Floor Plans in this chapter for more information.

Add patient locations and item objects to your simulation model. Add various location objects and
item objects from the Library to your simulation model. These are the locations that your patients and
staff will eventually travel to in order to complete certain tasks in your simulation model. See
Introduction to Library Objects and Adding Objects to a Model in this chapter for more information.

Connect locations and item objects together. After adding locations and item objects to your
simulation model, you need to connect the objects together so that patients and staff can move
between the objects when you run your simulation model. You will use the Flowchart tool to connect
objects together. See Connecting Locations and Item Objects in this chapter for more information.

83
Introduction to Floor Plans
The first step in building a model is to create or import a floor plan of your facility. You will need a floor plan
to use as a guide when you are placing objects into your simulation model. Having a floor plan also
ensures that your simulation model is as accurate as possible. That's because the placement of the
location objects can affect how long it takes a patient or staff member to walk from one location to another,
which can affect the accuracy of your simulation's data.
Ideally, you could import an AutoCAD drawing of your floor plan into your simulation model. These files
usually have a .dxf or .dwg file extension.

AutoCAD Files

FlexSim HC is designed to work better with .dwg files.

You could also possibly import an image file (.png, .bmp, .jpg, .gif, or .ico) that has an accurate drawing of
your floor plan. However, be aware that these images sometimes don't scale as well as AutoCAD
drawings.

What if I don't have a drawing of my floor plan?

If you don't have an AutoCAD drawing or an image, you could possibly take
measurements of your facility and use the Wall object in the Library to create the
layout of your facility. FlexSim HC measures space in meters, so each square on
the model's grid represents a meter.

The rest of the topics in this chapter will explain how to import images and AutoCAD drawings into your
simulation model.

84
Importing a Floor Plan File
Before you import your floor plan file, you need to:

Save your model at least once.

In your model settings, double-check that you have allowed your model to embed media files. (Models
are allowed to embed media files by default.) See Opening Model Settings for specific instructions on
checking the model settings.

Importing a Floor Plan File


Use the Floor Plan Import Wizard to import a new floor plan file:

1. If needed, click Toolbox on the toolbar to open the Toolbox in the left pane.

2. With the Toolbox open, click Add new tool and then click Floor Plan. This will open the Floor Plan
Import Wizard.

3. On the What type of background drawing do you have? page, select either CAD Drawing or Image
File depending on which type of file you want to import. Click Next to go to the next page.

4. On the Where is the [AutoCAD or image] file? page, click the Browse button to browse for the
media file you want to use. When you select your file, it will automatically appear in the background of
your simulation model. Click Next to go to the next page.

5. The Customize layer visibility and color page allows you to customize the settings for your floor
plan's layers. This page is only available if you uploaded an AutoCAD drawing with the .dwg file
extension. On this page, you can click the Visibility button to show or hide a particular layer in the
drawing. You can also rename or change the color of the layers in the drawing. Notice that as you edit
the fields, you will immediately see the changes reflected in the floor plan. NOTE: If you try to change
the color of the layers in your CAD drawing and it doesn't work, you might need to change some of the
settings in your drawing file so that the color is defined by layer. You can contact FlexSim Customer
Support if you'd like some help with these settings. Click Next to go to the next page.

85
6. The Do you need to change the spatial attributes? page has many different settings you can use to
customize your floor plan drawing to your simulation model. Each of these settings is explained in more
detail in Floor Plan Settings. You might want to adjust these settings when you first import your floor
plan:

o Scale - FlexSim HC measures space in meters. If your AutoCAD drawing was created by a US-
based company, you might want to scale your drawing, converting it from inches to meters.

o Make drawing non-selectable - Keep this box checked in order to lock your floor plan into its
current position. Locking it in place will ensure that you don't accidentally move your floor plan
while you are building your model.

7. Click Finish to save the settings and close the Floor Plan Import Wizard.

Sample Floor Plan

FlexSim HC comes with a few sample AutoCAD drawings of floor plans when you first
install it. You can possibly use one of these samples to test out the Floor Plan Import
Wizard. The sample AutoCAD files are floor plans for a possible Emergency Room
facility and are named ER_large.dxg and ER_small.dxg.

Opening Model Settings


To check your model settings:

1. On the File menu, click Model Settings.

2. In the Model Settings dialog box, make sure that Embed media with model is checked, as shown in
the following image:

86
87
Changing Floor Plans
You can change a floor plan or its settings at any time by re-opening the Floor Plan Import Wizard:

1. If needed, click Toolbox on the toolbar to open the Toolbox in the left pane.

2. With the Toolbox open, you'll see an expandable menu that lists all the current floor plans you have
imported into your simulation model. Right-click the specific floor plan you want to edit and select
Properties from the menu, as shown in the following image. This will re-open the Floor Plan Import
Wizard.

3. Click Next a few times until you get to the Do you need to change the spatial attributes? page.
Make any changes to the settings that you would like. See Floor Plan Settings for more information
about the specific settings you can change.

4. Click Finish to save your changes and close the Floor Plan Import Wizard.

88
Floor Plan Settings
There are a number of settings you can use to customize your floor plan. The following image shows the
Do you need to change the spatial attributes? page of the Floor Plan Import Wizard, where you can
adjust these settings:

Each setting is explained in the following sections.

Visual Settings

You can change the visual settings for AutoCAD Drawings with a .dwg file on the
Customize layer visibility and color page.

Scale
FlexSim HC measures space in meters. If your drawing uses different measurement units, you can select
how you want to scale your floor plan drawing to convert it to meters. For example, if your AutoCAD
drawing is in inches, you would select inches to meters to scale it to meters. If you select Custom, you
will be able to scale it manually using the Scale boxes just below this menu.
If your AutoCAD drawing was created by a US-based company, you might want to scale your drawing,
converting it from inches to meters.

Scale, Location, and Rotation


FlexSim uses the classic Cartesian coordinate system to position objects within the model. For that reason,
FlexSim uses the terms X, Y, and Z to refer to the axis coordinates for the position, rotation and size of the
object:

The X axis moves or rotates the floor plan from left to right and resizes the floor plan's length
The Y axis moves or rotates the floor plan forward and back and resizes the floor plan's width
89
The Z axis moves or rotates the floor plan up and down and resizes the floor plan's depth

The X, Y, and Z boxes allow you to position the floor plan drawing so that it is exactly where you want it to
be in the model. You can type a number value in these boxes or use the arrows to adjust the default
values. Notice that as you edit the fields, you will immediately see the changes reflected in the floor plan.

Make Drawing Luminous


By default, this box is checked. This makes the floor plan easier to see in the model because it brightens
the lines to make them more visible and creates a stronger contrast with the model background. If you
would like your floor plan to be less visible, you could clear this check box.

Make Drawing Non-Selectable


By default, this box is checked. Keep this box checked in order to lock your floor plan into its current
position. Locking it in place will ensure that you don't accidentally move your floor plan while you are
building your model. If you would like to re-position your floor plan in your simulation model using your
mouse, you can clear this checkbox.

90
Troubleshooting Floor Plans
Because AutoCAD is a third-party software, sometimes files created by newer versions of AutoCAD do not
always function optimally in FlexSim HC. This section will discuss common problems and their solutions
when importing AutoCAD drawings into FlexSim HC. If these solutions do not solve your problem, please
feel free to contact FlexSim Customer Support at any time.

AutoCAD Drawing Isn't Visible


Sometimes when you import an AutoCAD Drawing, you won't see it in your model.
Make sure that:

You have allowed your model to embed media files. See Importing a Floor Plan File - Model Settings
for more information.

On the Customize layer visibility and color page, make sure the Visibility buttons are set to show
each layer in your drawing. You could also try changing the color of the layers to see if that helps
improve their visibility. See Importing a Floor Plan File and Changing Floor Plan Settings for more
information.

On the Do you need to change the spatial attributes? page, make sure you have checked the Make
Drawing Luminous box. See Floor Plan Settings - Make Drawing Luminous.

Another problem might be that the point of origin for your AutoCAD file is far away from the actual drawing
of your facility for various reasons. To find your drawing, you might need to zoom out of the model until you
can see where the drawing is. To zoom in and out of the model, use the wheel button on your mouse.
Scrolling up will zoom in on the model and scrolling down will zoom out.

Strange Location Coordinates


When you import an AutoCAD drawing into your simulation model, FlexSim HC does its best to find the
actual drawing of your facility. However, the point of origin for your AutoCAD file might be far away from the
actual drawing of your facility for various reasons. For that reason, FlexSim might place the drawing of your
facility in strange place in the simulation model (as opposed to setting the location coordinates to 0, 0, 0). If
desired, you can try to change the location of your drawing by moving it by yourself. See Floor Plan
Settings for more information.

91
Introduction to the Library Objects
An important part of building a simulation model is to add some objects to your simulation model. Before
reading this section, you might want to make sure you are familiar with some of the Key Terms and
Definitions.
The Library (located in the left pane of the main window) has many different kinds of objects you could use
to build your simulation model. The following image shows a portion of the Library:

You'll also notice that the objects are broken down into five general categories based on how they function
within the model:

Patient Locations - Various objects that patients will interact with as they move through the simulation
model. Locations will remain stationary within the model. A location could be a door through which
patients enter or exit, a receptionist desk, a waiting room, an exam table, etc.

Resource Groups - Assorted objects that patients will use or interact with as they move throughout the
simulation model. A resource can be staff members, transports (such as wheelchairs and gurneys),
and medical equipment. The main thing that makes resource objects different from location objects is
that resources can move around inside the model.

92
Item Objects - Objects that will transport or process items. Items are physical objects that need to be
processed as part of a patient's treatment. Items can represent paperwork or something that needs to
be tested or processed in a lab, such as samples, cultures, or specimens.

Infrastructure - Objects that allow the patient to move throughout the model.

Visual Objects - Objects that are purely visual. They can give a more realistic appearance to the
simulation model, or they can be used to add customized text and graphics to the model.

Under each category you'll see several icons that represent sub-categories of objects. When you click on
one of the icons, it will open a menu showing several objects that you can put into your simulation model.
For example, under Patient Locations, when you click on Processing, it will open up a menu with more
than 40 different location objects that can be used to process a patient in the simulation model, as shown
in the following image.

A few of the icons do not have submenus. These objects can just be dragged from the Library and placed
directly into your simulation model:

Elevator
Storage
Path

93
Floor
Wall
Desk

Typically, a basic model will start with an Arrivals object, such as a door, which will create the patients that
will come to your simulation model. A lot of models also use a Queuing object, such as a waiting room,
and a Desk for a receptionist. Most basic models will also typically have many different kinds of
Processing objects, which is where many patients receive treatment. You might also want to add some
Staff Resource Groups to your model to represent your facility's human resources. Lastly, many basic
models end with an Exit, which removes patients from a simulation model.
Experiment a little bit by adding some different objects to your model. Try adding an Arrival object or any
other object into the model from the Library as desired.

94
Adding Objects to a Model
To add an object from the Library to your simulation model:

1. Click on any icon in the Library to open its menu. Be aware that a few select objects do not have
menus, in which case you can just skip directly to the next step.

2. With the menu open, click the object that you would like to add to your model. Your mouse pointer will
then change to the Add Object icon to indicate that you are in Add Objects mode.

3. In your simulation model, click on the approximate location where you want to add the object to your
simulation model. The object will then appear in your simulation model. You can always move the
object to a different location later. (See Moving, Resizing, and Rotating Objects for more information.)

4. Notice that after you add the model, your mouse pointer still has the Add Object icon, which means that
you are still in Adding Objects mode. As long as you are in this mode, you can continue to add more of
this kind of object by clicking somewhere inside the model.

5. To turn off Add Objects mode, either press the Esc key or right-click somewhere in the model.

Your object(s) should now appear in the simulation model.

Adding Resource Groups

The process for adding resource groups is slightly different than the process for
other objects. See Adding Resources to a Model for more information.

95
Adding Locations to an Area
Before reading this section, you might want to read Key Terms and Definitions - Locations vs. Areas to
ensure you understand the concepts discussed in this section. See also How Patients and Staff Move to
Locations or Areas.
When you first add a location to your model, that location will automatically be added to an area based on
its object type or category. For example, if you were to add a Bed object to your model, it would
automatically be assigned to an area called BedArea. If you added additional Bed objects to the model,
they would all be part of BedArea by default. You can use the default areas or you can create your own
custom areas, as discussed in the following sections.

Creating Custom Areas


To create a custom area:

1. Click on the location object that you would like to add to a custom area.

2. In Quick Properties, under the General Properties group, look for the Area box. This box displays the
name of the location's current area.

3. Click anywhere inside the Area box. The text inside the box will be highlighted, indicating that you can
now edit the area name.

4. Type the name of the new area you want to create. Be aware that the area name cannot contain any
spaces or special characters.

5. When finished, click anywhere outside of the Area box to save your changes.

When you open the Area menu, you should now see your new custom area listed along with the previous
area name.

Adding Other Locations to a Custom Area


To add other locations to a custom area that you have created:

1. Click once on the location object that you would like to add to your custom area.

2. In Quick Properties, under the General Properties group, look for the Area box. This box displays the
name of the location's current area.

3. Open the Area menu and select your custom area from the list.

Your location object will now be part of the custom area.

96
Customizing Object Properties and Settings
Once you have added an object from the library to your simulation model, you can edit any of its settings
by clicking on the object to select it. The Quick Properties pane (the right pane) will display all of the
settings that are available for that particular object, as shown in the following image:

Most of the objects have the same groups of settings. However, a few objects have settings that are
unique. Most of these settings will be discussed in this chapter, but the unique settings that are available
for Resource Group objects will be discussed in the chapter entitled Adding Staff and Resources.
The following table provides an overview of the groups of settings that are available for Patient Location
objects in the order they appear in Quick Properties:

Settings
Availability Purpose
Group

97
Changes the name of the object.
General All objects Can also assign the location to a different area.
Properties See Adding Locations to an Area for more
information.

Visuals All objects Can be used to move, resize, or rotate the object
in the simulation model. See Moving, Resizing,
and Rotating Objects for more information.
Also changes the color and shape of the object.
See Changing the Shape and Appearance of
Objects for more information.

Arrivals Patient Arrivals Changes the frequency that patients arrive in the
objects simulation model.
See the chapter about Adding Patients, specifically
the section about Patient Arrival Patterns for more
information.

Patient Patient Queuing Can cause something to happen to patients the


Condition objects longer they are in the waiting room (such as
increasing their acuity level).
Can set specific conditions that will cause a patient
to leave early without being treated (such as a
long waiting time).

Maintenance Patient Processing Can be used to require a staff member to clean,


objects repair or perform some process on the object after
it has been used by the patient.

Entrance All patient location Can determine the criteria that patients must meet
Criteria objects except before being allowed to go to this location.
Patient Arrivals Can also set the priority by which patients will be
objects admitted to this location.
Can also determine the maximum occupancy of
patients that can come to this location.

Labels All objects Can be used to add a label to the object. Labels
can contain any custom information that you want
it to have.

Statistics All objects This group of settings is for display purposes only.
While a simulation is running, you can click the
object and view the current statistics for that
object, such as its state, throughput, etc. The
statistics will update in real time as the model is
running.
See Getting Data from a Simulation for more
information about statistics.

98
Advanced All objects Can be used to change the way the object is
Visuals displayed or animated.

Triggers All objects Can cause certain events or actions to occur when
something happens to the object, such as when a
patient arrives at the object.

Unless otherwise noted in the table above, many of these settings are explained in Additional Patient
Location Settings.

Patient Location Settings.

99
Moving, Resizing, and Rotating Objects
FlexSim uses the classic Cartesian coordinate system to position objects within the model. For that reason,
FlexSim uses the terms X, Y, and Z to refer to the axis coordinates for the position, rotation and size of the
object:

The X axis moves or rotates the object from left to right and resizes the object's length

The Y axis moves or rotates the object forward and back and resizes the object's width

The Z axis moves or rotates the object up and down and resizes the object's depth

You can use either your mouse or Quick Properties to move, rotate, and resize the objects in your model.
Using the mouse is helpful if you want to get your object to an approximate location, rotation, or size. Using
Quick Properties is better if you want your object's location, rotation, or size to be more precise.
In the following sections, the mouse method will be explained first, followed by an explanation of the Quick
Properties method.

Using a Mouse
The simplest way to move an object is to click on it and drag it to a different position in the model.
However, this only moves the object along the X and Y axes. You can use the mouse to move the object
up and down the Z axis using one of the following methods:

Click on the object and, while holding down the mouse button, use the mouse wheel button to scroll up
and down until the object is in the desired position.

Click on the object using both the left and right mouse buttons at the same time and, while holding
down the mouse buttons, move the mouse up and down in the model.

When you click on any object in a model, you'll notice that red, green, and blue colored cones appear
around the object (see the following image). This guide will refer to those colored cones as the object's
axis arrows.

100
Each axis arrow can be used to resize or rotate the object. If you click on one of the axis arrows, you can
drag the arrow to change the object's size. If you right-click on one of the axis arrows, you can drag the
arrow to rotate the object.
Each of the different colored axis arrows can change either the X, Y, or Z axis of the object's size and
rotation (see the following image):

Red axis arrows - Located on the right and left of the object, the red axis arrows change the object's
length or rotates the object on its X axis.

Green axis arrows - Located on the front and back of the object, the green axis arrows change the
object's width or rotates the object on its Y axis.

Blue axis arrows - Located on the top and bottom of the object, the blue axis arrows change the
object's depth or rotates the object on its Z axis.

Shortcut for Scaling Objects

FlexSim has a shortcut that can make it possible to scale an entire object's size by
5%. First, click on the object to highlight it (e.g. the yellow box and axis arrows will
appear around the object). Then press Ctrl+K to scale the object down (make it
smaller). Or press Ctrl+L to scale the object up (make it larger).

Turning Off the Axis Arrows

101
If you do not want the axis arrows to display when you click an object, you can turn it
off using the main menu. Click on the Edit menu and select Resize and Rotate
Objects. When you open the Edit menu again, you'll notice that the gray box around
the Resize and Rotate Objects tool is gone and that you don't see the axis arrows
when you click on an object any more.

Using Quick Properties


You might possibly want the position, rotation, and size of the objects to be more precise in your model. In
that case, it might be better to use the Quick Properties tool instead of using your mouse.
When you highlight an object in the model by clicking on it, the right pane displays the Quick Properties for
that particular object. In the Visuals group box, you'll see several different boxes for changing the object's
position, rotation and size, as shown in the following image:

To the left of each row, you'll see three different graphical icons, as explained in the following table:

Tool
Icon Description Notes
Name

Position Changes the object's The object's position is determined by the coordinates
tool position (location) of the object's upper left corner. If the object is
within the model rotated, the position will be based on the coordinates
of any part of the object that is in the uppermost left
position.

Rotate Rotates the object The object will rotate on its center axis.
tool

Resize Rotates the object Every object in the Library has a default size. FlexSim
tool HC uses meters to measure length.

102
Using each tool and its corresponding axis-coordinates, you can change the object's position, rotation, or
size. You can either type a value in the box or use the arrows to change the values.
The following table explains how each of the different tools can change the object based on the axis you
change:

X Y Z

Position Moves the object left and Moves the object forward Moves the object up and
right on the X axis and back on the Y axis down on the Z axis

Rotation Rotates the object left and Rotates the object forward Rotates the object up and
right on the X axis and back on the Y axis down on the Z axis

Resize Resizes the object's Resizes the object's width Resizes the object's depth
length

103
Changing the Shape and Appearance of Objects
FlexSim HC has a number of settings that you can use to change the visual appearance of objects in the
Library. You can change:

Color - You can customize the basic color scheme of every kind of object. Some objects have more
color settings than others.

Shape - You can change the object's shape to any other shape within its object category. For example,
you could change the shape of a Bed to an Exam Room because they are both Patient Processing
location objects.

Because the Staff Resource Group objects look like people, you can make a lot of changes to their visual
appearance, such as assigning different genders, skin tones, clothing, and other physical characteristics.
You can assign different looks to individual members in a given Staff Resource Group too. (See Changing
the Appearance of Staff Resources for more information.)

The Eyedropper

Whenever you see the Eyedropper button you can click it to sample a color from
some other object in the simulation model.

Changing the Color or Shape of Most Objects


To change the color or shape of most Library objects:

1. Click on the object in the simulation model to select it.

2. In Quick Properties under Visuals, select a different color from the Color menu or a different shape
from the Shape menu, as shown in the following image:

104
Additional Patient Location Settings
The following sections will give a more detailed explanation of some of the Patient Location settings that
have not been discussed in depth in this chapter up to this point. The settings are discussed in the order
that they appear in the Quick Properties pane.
If after reading this section you still have questions about some of these settings, please contact FlexSim
Customer Support.

Patient Condition
The Patient Condition group is only available for Patient Queuing objects. These settings can cause
something to happen to patients the longer they are in the waiting room (such as increasing their acuity
level). You can also use these settings to determine the specific conditions that will cause a patient to
leave early without being treated (such as a long waiting time).
The Patient Condition settings are shown in the following image:

To change the settings:

Evaluate patients every - Type a number in this box or use the arrows to determine how frequently the
waiting room should evaluate the patients that are currently in the waiting room.

Patient Condition Changes - Use this box to determine what should happen when the patients in the
waiting room are evaluated. When you click on the arrow next to this box and select Conditional
Change, a box will pop up that will guide you through the process.

Patient Leaves Early - Use this box to determine the conditions that will cause a patient to leave early
without being treated. When you click on the arrow next to this box and select Conditional Early Exit,
a box will pop up that will guide you through the process.

Maintenance
The Maintenance group is only available for Patient Processing objects. These settings can be used to
require a staff member to clean, repair or perform some process on the object after it has been used by the
patient.
The Maintenance settings are shown in the following image:

105
To change the settings:

1. Check the Maintenance required check box to enable the other settings in this group.

2. In the Process Time box, enter a number that will represent the amount of time it takes to perform
maintenance on this object after a patient has used it. See Processing Time for more information about
this setting.

3. In the Staff box, use the menu or the eyedropper to select which staff member should perform the
maintenance. See Staff Requirements for more information about this setting.

4. Use the Priority box to change the priority level of the maintenance activity. See Staff and Resource
Priorities for more information about this setting.

Entrance Criteria
The Entrance Criteria group is available for all objects except Patient Arrivals objects. These settings can
be used to determine the criteria that patients must meet before being allowed to go to this location. You
can also set the priority by which patients will be admitted to this location. And you can change the
maximum occupancy of patients that can come to this location.
The Entrance Criteria settings are shown in the following image:

To change the settings:

Entrance Criteria - Use this menu to determine what criteria the object will use to determine which
patients should be allowed to go to this location and their priority.

Maximum Occupancy - Type a number in this box or use the arrows to determine the maximum
number of patients that will be allowed to come to this location.

Labels
You can use the Labels settings to add a custom label to any object. Labels can be used to gather
statistical data or to allow for more advanced simulation model functions, such as Global Tables. This
106
version of the User Manual will not discuss labels in depth. Contact FlexSim Customer Support if you
would like more information about labels.

Advanced Visuals
You can use the Advanced Visuals settings to change the way the object is displayed or animated. This
version of the User Manual will not discuss labels in depth. Contact FlexSim Customer Support if you
would like more information about Advanced Visuals.

Triggers
You can use the Triggers settings to cause certain events or actions to occur when something happens to
the object, such as when a patient arrives at the object. Triggers can be used to create more advanced
simulation model functions. This version of the User Manual will not discuss triggers in depth. Contact
FlexSim Customer Support if you would like more information about triggers.

107
Introduction to Connecting Locations and Item Objects
After you've placed all the objects in your simulation model, you need to make connections between the
objects so that patients or items will move from object to object as needed. If you don't make connections
between objects, your patients or staff members could get stuck in their current location and be unable to
move when you run your simulation model.
You can make these connections using the Flowchart tool. As its name suggests, the Flowchart tool looks
like an actual flowchart, with shapes representing different objects or areas in your simulation model, as
shown in the following image:

The Flowchart tool has two different screens for connecting objects:

Patient Areas - Use this screen to view and connect all of the areas in your model.
Item Objects - Use this screen to view and connect all Item Objects in your model.

Any time you add a new location to an area in your simulation model, the area will automatically show up
as a shape in the Flowchart tool in the Patient Areas screen. (See Adding Location to Areas for more
information.) If you added any Item Objects to your model, these will also show up as a shape in the Item
Objects screen.
The guiding principle to keep in mind when using the Flowchart tool is: unless you make connections
between location objects, your patients won't be able to move or interact with the objects in your model. By
that same token, unless you make connections between Item Objects, these objects will not be able to
transfer an item from one object to another. As a general rule, it's better to make too many connections
between areas or Item Objects rather than too few.

108
The Flowchart Tool at a Glance
The main elements of Flowchart tool are labeled in the following image:

Each element will be described in more detail in the following sections:

Flowchart
The Flowchart is the main workspace you will use to create the connections between objects in your
model.

Shape
The Flowchart shapes represent different things depending on whether you're viewing the the Patient Area
or Item Objects screen:

Patient Areas - The shapes represent areas


Item Objects - The shapes represent Item Objects

Connection
A connection is represented by an arrow between two objects. This allows patients or items to move from
one area or Item Object to another.
Be aware that if the connection is only pointed one way, it means that the patients or items can only move
from the first object to the second. For example, in the following image, patients can only travel from the
Waiting Room Area to the Immunization Area, not vice versa:

109
If you want patients to be able to travel back from the Immunization Area to the Waiting Room Area, you
need to make another connection going from the second object back to the first. When you've made that
connection, you'll see a bi-directional arrow, as shown in the following image:

In this example, now patients would be able to travel back and forth between the Waiting Room Area and
the Immunization Area.

Toolbar
The toolbar has several available tools, as shown in the following image:

These tools are listed and described below:


Viewing Modes - Allows you to switch between the two different flowchart screens:

Patient Areas - Use this screen to view and connect all of the areas in your model.
Item Objects - Use this screen to view and connect all Item Objects in your model.

Connection Tools - Allows you to switch between connection mode or disconnection mode. (See Using
the Flowchart Tool for more information.)
Miscellaneous Tools - A variety of tools with different uses:

The List Locations button will make the shapes display all the locations are contained in each area.
This button is not available when looking at the Item Objects screen.
The Remove Connections button will remove all the connections between shapes.
The Reset button will restore all the shapes to their default positions in the flowchart.

Quick Properties
When you click on a shape, you'll be able to use the Quick Properties pane to change the default settings
of each shape:

Width - Type a value in this box or use the arrows to change the width of the shape.

Color - Use this menu to change the shape's color.

Active locations - If an area has more than one location, you can select how many of those locations
you are active. This means that if you select a number less than the total number of locations in the
110
area, one or more of your locations will not be available for a patient to use when they go to that area.
For example, pretend you've got a Bed Area with four beds. If you select 3 from the Active locations
menu, that means only the first three beds will be active. The fourth bed will have a red floor
underneath it and patients won't be able to use that particular bed.

Upstream and Downstream Connections - Use this menu to view the shapes connected to this
shape. When you are viewing the Patient Areas screen, you can also use this tool to determine the
priorities the model should follow when determining where to send a patient. You can drag and drop
the locations in each area to re-organize their priority. When patients are assigned to go to a particular
area, they will be assigned to the first available area listed here. If the first location is occupied, the
patient will be assigned to the second location if it is available (and so forth).

111
Using the Flowchart Tool
To open the Flowchart tool, click the Flowchart button on the main toolbar. The Flowchart tool will appear
in a pane to the right of your model.

Connecting Shapes
To connect two shapes, you need to turn on connection mode. One way to turn on connection mode is to
use the Connect Shapes tool:

1. Click the Connect Shapes tool on the Flowchart toolbar. (See The Flowchart Tool at a Glance -
Toolbar for more information.) You will then be in connection mode. When you are in connection mode,
your mouse pointer will change to a plus sign with chain link symbol next to it, as shown in the following
image:

2. Now that you are in connection mode, you can connect two shapes together. Click on the first shape
you want to connect. You will notice a yellow line will appear between the object you clicked and your
cursor as you move your mouse away from the shape.

3. Click on a second shape to create the connection between the two shapes.

4. You will still be in connection mode even after you connect two shapes together. You can continue
connecting shapes together if needed.

You can use a few different methods to turn off connection mode when you are using the Connect Shapes
tool:

Click the Pointer tool on the Flowchart toolbar.


Press the Esc key.
Right-click your mouse (which will change it to a different mode such as disconnect mode).

Keyboard Shortcuts

You can also possibly use keyboard shortcuts to turn connection mode on or off.
Press and hold down the A key to turn on connection mode. Connection mode will
automatically turn off as soon as soon as you stop pressing the shortcut key. Continue
pressing and holding down the key if you want to continue connecting more shapes
together.

Disconnecting Shapes
To disconnect two shapes, you need to turn on disconnection mode. One way to turn on disconnection
mode is to use the Disconnect Shapes tool:

112
1. Click the Disconnect Shapes tool on the Flowchart toolbar. You will then be in disconnection mode.
When you are in disconnection mode, your mouse cursor will change to a plus sign with a broken chain
link symbol next to it, as shown in the following image:

2. Now that you are in disconnection mode, you can remove a connection between two shapes. Click on
the first object you want to disconnect. You will notice a yellow line will appear between the object you
clicked and your cursor as you move your mouse away from the shape.

3. Then click on the shape to which it is connected. The connection will disappear.

4. You will still be in disconnection mode even after you remove the connection between two shapes. You
can continue disconnecting shapes together if needed.

You can use a few different methods to turn off disconnection mode when you are using the Disconnect
Shapes tool:

Click the Pointer tool on the Flowchart toolbar.


Press the Esc key.
Right-click your mouse (which will change it to a different mode such as pointer mode).

Keyboard Shortcuts

You can also possibly use keyboard shortcuts to turn disconnection mode on or off.
Press and hold down the Q key to turn on disconnection mode. Disconnection mode
will automatically turn off as soon as soon as you stop pressing the shortcut key.
Continue pressing and holding down the key if you want to continue removing
connections.

113
Introduction to Staff and Resources
This chapter will discuss how to add and manage staff members and other resources in your simulation
model.
As a reminder, in FlexSim HC, a resource is a specific object that patients will use or interact with as they
move throughout the simulation model. Resources can move around the model if needed. Resource
objects are listed under Resource Groups in the Library, as shown in the following image:

There are basically four types of resources:

Staff - Staff members represent human resources such as doctors, nurses, receptionists, etc.

Transports - Transports are used for moving patients from one location to another such as
wheelchairs, gurneys, ambulances, etc.

Equipment - Equipment represents medical equipment that can easily move around the simulation
model such as IV carts, ventilators, food carts, etc.

Elevator - Elevators can be used to move objects in simulation models with more than one floor. Be
aware that this category only has one object (the Elevator). Therefore you won't see a submenu of
objects when you click on the Elevator icon in the Library. You can just drag an Elevator directly from
the Library and into your simulation model

A resource group (also called a group for short) is a collection of at least one or more type of resource.
For example, you can create a group called Nurses that has four nurse nurse staff members associated
with it. Each nurse is a member of the Nurses group. You can then create patient activities in the Patient
Track Manager that can use one of the available group members in the Nurses Group to work on the
activity.
All resources in your simulation model must be part of a group. When you first add a resource to your
model, there will only be one resource in that group (one group member). You will then add more group
members to that group in order to add more resources of that type.

114
Adding Resources to a Model
The process for adding a resource to a model is very similar to the process of adding any other object to a
model. Simply put, you click on an object in the Library and drag it into your simulation model. (See Adding
Objects to a Model for more information.)
However, there are a few slight differences. One difference is that when you add one of the objects from
the Resource Group category in the Library, you are not merely adding a single resource. You are actually
adding a resource group object. You could possibly think of a resource group as a container for multiple
resources (group members). When you first add a resource group, it will only have one group member at
first. However, you can possibly add more resources (group members) to a resource group after you've
added it.
For example, when you add a wheelchair to your simulation model, you are actually adding a wheelchair
group that only has one wheelchair group member by default. If you wanted to have more wheelchairs, you
would add additional group members to the wheelchair group.
The advantage of having resource groups is that you can assign an entire group of resources to work on
an activity rather than assigning each resource individually. For example, you can assign the wheelchair
group to an activity and then the patient can use any of the wheelchairs in that group as opposed to being
limited to one specific wheelchair. (See How Staff and Resources Are Assigned to an Activity for more
information.)
This is especially useful when assigning staff resources to work on an activity. For example, perhaps you
want to simulate a health care facility with two physicians. Rather than assigning just one physician to
examine a patient, you could have a Physicians resource group with two group members (Physician1 and
Physician2). You could then assign the Physicians group to examine a patient. That way either of the two
members of the Physicians group could perform the examination if they are available. The patient wouldn't
have to needlessly wait for Physician1 to examine them if Physician2 is available.

Adding Members to a Resource Group


Once you've added a resource group to the simulation model, you can add more members to the group
using the following steps:

1. Click on a resource group to select it. Be aware that selecting a group can sometimes be problematic.
See Selecting a Resource Group or Group Member for more information.

2. In Quick Properties, under Edit Group, use the Total Members box to increase or decrease the
number of resources in this group. You can either type a value in the box or use the arrows to adjust
the number of resources.

Copying Members of a Resource Group


Sometimes you might want to make a copy of an individual member of a resource group. For example, you
could copy a group member if you've changed the group member's settings and you'd like to add an
identical group member that uses those same settings. To copy a group member:

1. Click on an individual member of a resource group.

2. In Quick Properties, in Edit Group Member, you can click the Plus button to add a copy of the
currently selected group member to the resource group.

115
116
Selecting a Resource Group or Group Member
When selecting a resource group or group member, be careful to make sure you are selecting the correct
object. Resource groups are represented by a colored rectangular square on the floor of the simulation
model. In the following image, the resource group is the blue rectangle that the RNs are standing on:

Resource groups act like a base of operations for the resources. When a resource is not in use as part of a
patient activity, the resource will return to its resource group.
In order to select a resource group, you need to click on the colored rectangle underneath the resources,
as shown in the following image:

Make sure you have not accidentally selected a group member instead. The following image shows how an
individual group member looks when selected:

117
118
Renaming Groups and Group Members
By default, groups will be named based on what type of object they are. For example, if you added a CNA
staff group object to your model, the first group will be called CNAs, the second CNA group will be called
CNAs2, and so forth.
To change the name of the group:

1. Select the group, making sure you don't select an individual group member. (See Selecting a Resource
Group or Group Member for more information.)

2. In Quick Properties, under General Properties, type a new name in the Name box.

3. Either click outside the box or press Tab to save the changes.

In that same vein, you can change the name of individual group members. By default, group members will
be named based on the group they belong to. For example, the first member of the CNA group will be
named CNA_1, the second member will be CNA_2, and so forth.
To change the name of a group member:

1. Select the group member, making sure you don't select the actual group itself. (See Selecting a
Resource Group or Group Member for more information.)

2. In Quick Properties, under General Properties, type a new name in the Name box.

3. Either click outside the box or press Tab to save the changes.

Dynamic Group Member Names

It's possible to make a group member's name change whenever the group name
changes. All you have to do is make sure you only change the part of the group
member's name that comes after the underscore. For example, let's say you had a
group called CNA and a group member named CNA_1. If you wanted to use the
CNA's name instead of a number, you could rename the group member to CNA_Pat.
Later, if you changed the group name to Nurses, the group member would
automatically update to Nurses_Pat.

119
Moving Groups and Group Members
You can easily move or rotate an entire resource group the same way you would move any other object.
(See Moving, Resizing, and Rotating Objects for more information.) However, if you want to move or rotate
an individual member of a resource group, you'll have to change its position relative to the resource group.
The resource group is represented by a colored square that is initially positioned underneath the group
member. You can change its position using the mouse or Quick Properties. Each method will be explained
below.

Moving Group Members Using the Mouse


To re-position group members relative to the group, click on the group member and drag it to the position
you want it to be relative to the resource group box. Notice that if you then click on the resource group box
and drag it to a different position, the group member(s) will also move relative to the resource group box's
new position.

Moving Group Members Using Quick Properties


To re-position group members relative to the group using Quick Properties:

1. Click on the individual group member to select it. (See Selecting a Resource Group or Group Member
for more information.)

2. In Quick Properties, under Edit Group Member, adjust the settings for the X Offset, Y Offset, or Rot
Offset.

120
Changing the Appearance of Staff Resources
As mentioned in the introduction to this topic, there are many different settings that you can use to
customize the appearance of individual staff members. You can change many settings, as shown in the
following image:

To change these settings:

1. Click on the staff member in the simulation model to select it. (See Selecting a Resource Group or
Group Member for more information.)

2. In Quick Properties under Person Visuals, adjust any of the visual settings:

o Shape - The staff member can either be a male or female shape and can possibly push a cart.

o Head - This setting changes the staff member's hairstyle, hair color, and skin tone.

o Shirt, Pants, and Shoes - You can use these three settings to change the color or fabric of the
staff member's clothing.

o Accessories - Check the box next to one of the accessories in this list to give the staff member
any of the accessories listed here (such as stethoscopes or surgical masks). If you also click on
one of the accessories, you will be able to use a box beneath the Accessories box that will
allow you to change the color or fabric of the accessory.

The Eyedropper

121
Whenever you see the Eyedropper button you can click it to sample the settings
from another other object in the simulation model. In this case, you can use it to
sample the color settings for a particular object. See Eyedropper for more information.

122
Creating Alternate Resource Groups
Before reading this section, you might want to read Introduction to Staff and Resources to ensure you
understand the difference between a resource group and a group member.
An alternate group is a collection of smaller resource groups (usually staff resource groups) combined
together into one large group. You can then assign the alternate group to a specific activity so that
members in any of the smaller groups can be assigned to work on an activity.
Sometimes you might want two different resource groups to be able to do the same task. For example, let's
say you have a day shift of nurses (perhaps the group is named Day_Nurses) and a night shift (named
Night_Nurses). Each group has four group members. Because both the day shift nurses and night shift
nurses work on identical activities, you will want the members of either group to be able to work on a
particular patient activity. The solution is to create an alternate group that will contain both the day shift
nurses and the night shift nurses. (See the Shift Schedules Tool for information about creating different
shift schedules for staff members.)
You'll create the alternate groups using the Alternate Group tool. You can access the Alternate Group tool
using the Toolbox. The Alternate Group tool uses the tool components feature. This means that you will
use the Toolbox to create, rename, delete and create a duplicate copy of each alternate group. (See Using
the Toolbox and Toolbar for more information.)
To create your first alternate group:

1. If needed, click Toolbox on the toolbar to open the Toolbox in the left pane.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Alternate Groups. This will create a new group named AlternateGroup1 in the Toolbox and will
open up the newly created group in the Alternate Group tool, as shown in the following image:

4. You'll come back to the Alternate Group tool in a moment, so leave it open. In the Toolbox, right-click
AlternateGroup1 and select Rename from the menu. Change the name of of this group to All_Nurses
and hit the Enter key.

123
5. Now go back to the Alternate Group tool and add some members. Click the Plus sign at the top of
the Alternate Group tool. This will open up a sub-menu listing all the resource groups that you've added
to your model so far.

6. Select the name of the resource group you want to use. In this example, you'd select Staff Groups,
then Day_Nurses. Select Day_Nurses one more time to add the entire group to this alternate group.
(Alternatively, you could add all four members of the Day-Nurses group one by one, if desired.)

7. Repeat steps 5 and 6 to add the Night_Nurses group.

8. If desired, you can close the Alternative Group tool now by clicking on the X in the top right corner of
the tool.

Now you can assign this group to work on an activity and both the day shift and the night shift nurses will
be able to work on it.
NOTE: The Quick Properties for the Alternate Group Tool will not be explained in this version of the User
Manual. For information about these settings, contact FlexSim Customer Support.

124
Creating Patient-Centered Activities
After you've finished building the basic layout of your facility in your simulation model, you'll need to
determine how the patients and staff members will interact within your simulation model. This chapter will
explain how to create patient-centered activities, which are the series of activities based on what patients
will do once they enter a simulation model until they exit. These activities can include:

Processes that the patient will do themselves

Processes performed by staff members on the patient

Processes that are related to a patient's care but which are performed by staff in a location other than
the patient's current location (such as a doctor leaving the room to consult with a nurse, filing a
prescription, etc.)

Routine Staff or Location Activities

Most staff activities are patient-centered, meaning they are determined by the patient's
movement and behavior within the model. However, you might want to simulate
routine staff activities will occur on a regular basis. For example, you might want to
simulate a receptionist answering incoming phone calls. Or you might want to simulate
a nurse in a hospital ward who is required to check every patient's vital statistics once
an hour. See Routine Staff or Location Activities for information about simulating these
kinds of activities.

To create patient-centered activities, you will primarily use the Patient Track Manager to determine how
patients and staff will behave once they arrive in your simulation model. The following image provides a
high-level overview of how the various components of the Patient Track Manager are interrelated:

125
A patient track (also sometimes referred to simply as a track) is the overall plan for a patient's care. At its
most basic level, a patient track is a step-by-step series of activities that a patient will follow from the time
they arrive in the simulation model until the time they exit the model. However, it is possible to build more
complex patient tracks in which activities occur simultaneously or which are dependent on certain
conditions. You can also possibly have more than one patient track for different types of patients. For
example, if you were simulating a pediatrician's office, you could possibly have two different patient tracks:
one track for a Wellness clinic that gives periodic check-ups to healthy children and one track for a Sick
clinic that treats children with an illness or other health condition. (You would create the two different
classifications of patients using the Patient Arrival object.)
Each patient track contains an activity list, which is a list of all the activities that patient and staff will follow
when an individual patient enters the simulation model until the time the patient exits the model.
Each activity list contains multiple activities. Each activity represents a particular event or action that will
occur at a certain point as the patient proceeds through the simulation model. For example, if you were
simulating a pediatrician's office, you would have an activity for patients as they arrive and walk to the front
desk to check in. Then you would have another activity while they filled out their initial paperwork and paid
their co-pay at the front desk. Then there would be another activity while patients waited in the waiting
room, and so forth.
Each activity consists of a series of tasks, which are the basic steps involved in each activity. The tasks for
each activity depend on the activity's settings and activity type, which will be explained in more detail later
in this chapter.
The first half of this chapter will explain some of the important general concepts about activities. The
second half will discuss how to use the Patient Track Manager to build effective patient tracks for your
simulation model.

work.

126
Introduction to Key Concepts About Activities
Activities are the key component of simulation models in FlexSim HC. Because activities are so crucial to
how simulation models work, they are complex. While their complexity is what makes activities so feature-
rich, they can also be difficult to understand at first. This section of the User Manual will discuss some of
the basic concepts and common misconceptions related to how activities work.

127
Most Activities are Patient-Centered
One of the most important concepts to keep in mind when designing your activity list is to remember that
nearly all activities are centered around what individual patients are doing in your simulation model. Nearly
everything in the simulation model is driven by:

The arrival or departure of patients


The patient's status (such as their acuity)
The patient's activities and movement inside the model

The reason this concept is important is that many new FlexSim HC users typically think that staff members
like doctors, nurses, and receptionists perform actions independently of patients. Keep in mind that in HC,
nearly everything the staff members do will be in relation to the patient's care. Nearly all of the activities in
the activity list in the Patient Track Manager will be based on the patient's actions.

Exceptions
While the majority of activities in HC are patient-centered, there are a few exceptions. One exception is
when items (such as cultures, blood samples, etc.) are created and processed in labs. While items are
being processed in a lab, the lab processes will run independently, meaning they will have a different set of
activities that are based on the item's progress as it is being processed in the lab. Item processing will not
be affected by the patient's activities, although it is possible that a patient activity might not begin until an
item has finished being processed.
Another exception is simulating routine staff or location activities that will occur on a regular basis. For
example, you might want to simulate a receptionist answering incoming phone calls. Or you might want to
simulate a nurse in a hospital ward who is required to check every patient's vital statistics once an hour.
See Routine Staff or Location Activities for information about simulating these kinds of activities.

128
Building Complex Patient Tracks and Activity Lists
If all the patients in your simulation model will follow the same procedures when they come to your health
care facility, you will only need to build one patient track and it will be relatively easy for you to build a
simple activity list.
However, if you want to build a more complex track in which patients will follow a different set of
procedures based on the type of patient they are or based on complex conditions, you might want to put a
little thought into the best method for building your patient activity system. (See Using the Patients
Classification Tool for more information about the different ways you can create different types of patients
in FlexSim HC.)
There are basically two methods for building a complex patient activity system:

Multiple Patient Tracks - You can build more than one patient track and assign different types of
patients to different patient tracks. (See Using the Patients Classification Tool for more information
about how to assign different patient types to different tracks.)

One Track With Decision Points - You can build one patient track and use a Decision Point (which is
a specific activity type) somewhere in the activity list. The Decision Point will then use a set of criteria
that you will define to determine which activity (or set of activities) the patient should do next.

When deciding which method to use, you should consider whether different types of patients will follow the
same basic procedures with a few minor variations as opposed to having very different procedures from
the outset. If there will be only a few minor variations, you should probably just use a single track with a
Decision Point. If different types of patients will follow very different treatment plans, then you should
probably use multiple patient tracks.
See Adding and Managing Patient Tracks for more information about creating multiple patient tracks. And
see Decision Points for more information about creating Decision Point activities.

129
How Activities Begin
Sometimes new HC users assume that patients will complete a set of activities based on the order in which
the activities are listed in the activity list. They assume that when a Patient finishes one activity, the next
activity listed in the track will automatically begin. This is not the case.
In reality, there are two catalysts that can make an activity begin:

Predecessors - In the settings for each activity, you can check the Use Predecessors box and, in the
text box below, indicate the activity (or activities) that must be completed before the current activity can
begin. As soon as the Predecessor(s) finish, the current activity will begin.

Next Activity - In the settings for each activity, you can use the Next Activity text box to indicate which
activity (or activities) should start when the current activity is finished.

The Predecessor method and the Next Activity method have fairly subtle but important differences. The
key difference has to do with whether the simulation system is constantly attempting to begin the activity
(the Predecessor method) as opposed to waiting until it is specifically directed to begin the activity (the
Next Activity method).
The Predecessor method is the default method used in FlexSim and we recommend you primarily use that
method to begin an activity. However, the Next Activity method can be helpful when you want the next
activity to begin based on a complex set of conditions.
Both methods will be explained in more detail in the sections of the User Manual that explain how to adjust
the settings for those two methods. See Basic Activity Settings - Predecessors for more information about
the Predecessor method and see Specific Activity Type Settings - Next Activity for more information about
the Next Activity method.
Be aware that there are a few other catalysts that can cause an activity to begin, such as start conditions,
simulation start time conditions, and repeat intervals. However, they are more commonly used in routine
activities rather than patient-centered activities. Since this chapter is about patient-centered activities, it will
not be discussed in this section of the User Manual. See Routine Staff or Location Activities for more
information.

Activities Usually Can't Be Repeated

Once a patient has completed an activity in the activity list, that patient will not be
able to do that activity again. The only exception is if you are using a repeat
interval. Beginners should avoid using repeat intervals because it can cause an
infinite loop that can crash the simulation model when it runs.

If you want a patient to do the same activity twice, you could possibly create two
identical activities in your activity list.

130
What Happens During an Activity
HC has ten different pre-built Activity Types. Each activity type has a roughly similar set of phases, as
shown in the following image:

The following table describes each phase in more detail:

Phase General Tasks Visual Appearance

The activity starts


The system will check if the locations,
staff, and/or resources needed for
Patients will remain in
Beginning this activity are available
their current location and
Phase If unavailable, the system will request
appear to do nothing
the necessary location, staff, and/or
resources (in that order)
If available, the next phase begins

131
When the required location, staff,
Patients will remain in
and/or resources become available,
Assignment their current location and
they are assigned to the current
Phase appear to do nothing
activity (in that order)

If a staff member needs to


pick up a resource, the
staff will travel to the
If staff has been assigned to the resource and then move
activity, they will travel to the it to the designated
patient's current location or to a location
different designated location If a staff member is
If a staff member is assigned to get a escorting or transporting
resource (such as a piece of the patient, the staff
equipment or a transport), the staff member will travel with
Movement will travel to the resource and move it them to the designated
Phase to its designated location location
If the patients are supposed to move If a staff member is
to a new location, the patients will assigned to go to a new
move to the assigned location destination, the staff
(patients can walk unattended or member will travel to the
they can be escorted/transported by new destination
staff) If a patient is walking
unattended, the patient
will travel to the
designated location

During this phase, there is a time


The patient and any
delay while the process is occurring
assigned staff or
For example, if the activity
resources will remain
processing time for a patient in
Process stationary at their current
surgery is 45 minutes, the patient
Phase location
and any staff will be in the operating
No additional animations
room for 45 minutes once this phase
will occur
begins

Patients will stay at their


current location
If needed, any items or messages will
If staff and/or resources
be created and sent to their
have been reserved or
appropriate destination
"kept" for the patient's
If a resource (such as a piece of
next activity, the staff and
equipment or transport) is supposed
resources might remain
Concluding to be returned to its original location,
at their current location
Phase a staff member will return it at this
If not needed for the next
time
activity, the staff and
The location, staff, and resources will
resources will return to
be released unless they have been
their default location or
reserved or "kept" for the patient's
will begin their next
next activity
assigned activity

132
Any activities that are set to begin
when this activity concludes will now
begin

There might occasionally be some variation in how these tasks are carried out depending on the activity
type. See Activity Types for more information about the specific tasks that will occur during each activity
type.

133
How Patients and Staff Move to Locations or Areas
When you are building activities, sometimes you'll want to indicate that patient or staff members will travel
to a different destination within the simulation model. You should be careful when deciding whether to send
a patient or staff member to a specific location as opposed to an area.
As a reminder, a location is a specific object that patients and staff will interact with as they move through
the simulation model. A location could be a receptionist desk, a bed in a waiting room, an exam table, etc.
By contrast, an area is a general collection of related locations. For example, imagine your simulation has
six different Bed Objects (which are locations). They would automatically be part of the BedArea (unless
you changed the area name to something different like Examination_Rooms).
If you assign the patient or staff to go to an area, then the patient or staff will go to any available location
within that area. If all the locations inside the area are currently occupied, patients will wait in their current
location until one becomes available.
By contrast, if you assign the patient or staff to go to a specific location, they will only be able to go to that
specific location and nowhere else. This could create an unnecessary delay if all the patients attempt to go
to Bed 1 when there are six other Bed Objects they could go to within the Bed Area. For that reason, it
might be better to assign patients to a general area rather than a specific location.

Patient Locations

Always keep in mind that the patient's last location at the end of one activity is
where the patient will be located when the next activity begins. Unless you assign
the patient to a new location in the next activity, the patient will remain in that
same location.

134
How Staff and Resources Are Assigned to an Activity
When you are building activities, sometimes you'll want to assign staff members or other resources to the
activity. You should be careful when deciding whether to assign a specific staff or resource to an activity as
opposed to a resource group.
As a reminder, a resource is a specific object that patients will interact with as they move throughout the
simulation model. A resource can be staff members, transports (transportation items such as wheelchairs
and gurneys), and medical equipment.
By contrast, a resource group is a general collection of resources. For example, imagine you wanted to
have a simulation model with four nurses. You would create a resource group (see Adding Resources to a
Model for more information) and rename it so that it was called Nurses. By default this group will begin with
one group member (one nurse). You could add more members to this group until there are four members
of the Nurses group (four nurses).
If you assign a resource group to an activity, then any available staff or resources in that group will be
assigned to the activity. If all the resources in the group are being used in a different activity, patients will
wait until one becomes available.
By contrast, if you assign an individual staff member or specific resource to an activity, then the activity will
only be able to use that specific resource and nothing else. This could create an unnecessary delay if all
the patients need Nurse 4 when there are three other nurses in the Nurse Group they could use. For that
reason, it might be better to assign resource groups rather than a specific resource.

135
Staff and Resource Priorities
As was discussed in What Happens During an Activity, during the Beginning Phase of an activity, the
system will check the availability of the staff and/or resources needed for the activity. By default, the
system will assign resources to activities based on the order in which the resource requests were received
(first in, first out).
However, what if there are certain activities that should have a higher priority over others? For example, if
you were simulating an Emergency Room, you would want a patient with a gunshot wound to have a
higher priority than a patient who merely needs stitches for a small laceration. You would want the required
staff to stop the current activity they were working on and begin working on the patient with the gunshot
wound first.
You can create this kind of complexity using FlexSim HC's priority system. The priority system has two
important terms that you need to understand:
Priority Level - This is a number you can assign to an activity's resource requests. By default, all resource
requests are assigned a priority level of 150. You can customize the priority level by changing the priority to
any number you want. There is no limit to how many digits you can use.
Tiers - Different priority levels belong to different tiers. A tier is a range of approximately 100 numbers. The
following table illustrates the relationship between tiers:

Priority Levels Tier

0-99 First tier

100-199 Second tier

200-299 Third tier

300-399 Fourth tier

Etc. Etc.

Priority levels 0-99 are in the first tier and are considered to have a lower priority relative to other tiers.
With those terms in mind, the following are a few important concepts about the priority system that you
should keep in mind:

All of the resource requests for a particular activity will be assigned the same number. So, if you
assign a priority level of 75 to the staff resources for a particular activity, any requests for other
resources such as equipment or transports will also be assigned a priority level of 75.

When a resource request has a higher priority level than another request, it will be assigned the
resource first. For example, imagine that two activities are requesting a staff member. Perhaps one
has a priority level of 150 and another one has a priority level of 151. Once a resource becomes
available, the request with the priority of 151 will be assigned the resource first.

Resources that are currently assigned to an activity in a lower tier will be re-assigned to a new
activity if the system receives a new resource request that is in a higher tier. Assuming that no
other staff resources are available, staff members assigned to an activity will stop working on that

136
activity and will instead go work on any activities that are in a higher tier. To use the example of an
emergency room that was mentioned earlier, let's say a staff member is preparing to stitch up a
patient's lacerated leg, which possibly has a priority level of 215. Suddenly, a patient with a gunshot
wound enters the facility and needs immediate surgery, which has a possible priority level of 300.
Because the surgery is in a higher tier, the staff member will immediately stop preparing to stitch the
patient's leg and go perform the surgery instead.

With these concepts in mind, it might be a good idea to plan out what priorities you will give to certain
activities before designing your patient tracks and activity list.

137
Adding and Managing Patient Tracks
Before reading this section, see Building Complex Patient Tracks and Activity Lists for more information
about the pros and cons of building multiple patient tracks.
You'll create patient tracks using the Patient Track Manager. You can access the Patient Track Manager
using the Toolbox. The Patient Track Manager uses the tool components feature. This means that you will
use the Toolbox to create, rename, delete and create a duplicate copy of each patient track. (See Using
the Toolbox and Toolbar for more information.)
To create your first patient track:

1. If needed, click Toolbox on the toolbar to open the Toolbox in the left pane.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Patient Tracks. This will create a new patient track named Track1 in the Toolbox and will open
up the newly created track in the Patient Track Manager.

Now you can begin adding activities to this patient track, which will be discussed in the rest of the topics in
this chapter.

138
The Patient Track Manager at a Glance
The Patient Track Manager is the main tool you will use to add and edit activities. The main elements of
the Patient Track Manager are labeled in the following image:

Each element will be explained in more detail in the following sections.

139
Tabs
At the top of the Patient Track Manager are tabs for each patient track that is currently open. (See Opening
and Closing a Tool Component for more information on opening a patient track.) The track that is currently
active will be highlighted in blue.

Toolbar
The following table explains the purpose of the different icons on the Patient Track Manager toolbar:

Tool
Icon Purpose
Name

Add Click to add a new activity to the current track

Delete Click to delete the currently selected activity

Move Up Click to move the currently selected activity up one position in the activity list

Move Click to move the currently selected activity down own position in the activity
Down list

View Click to view the current track as a table to get a high level overview of the
Table settings for each activity.

Patient Click to open the Patient Visuals tool, which allows you to change the default
Visuals visual appearance for the patients that will use this track. See Customizing
Patient Visuals for more information.

Activity List
The activity list displays all of the activities that have currently been created for this patient track. By
default, activities are listed in the order in which they were originally added to the patient track unless you
re-organize them using the toolbar.
Sometimes new HC users assume that patients will complete activities one after another based on the
order in which the activities are listed in the activity list. This is not the case. See How Activities Begin for
more information.
140
Quick Properties
You will use the Quick Properties pane to change the settings of a particular activity. The Quick Properties
pane is context-sensitive and will change depending on which the activity type of the activity that is
currently selected in the activity list. See Overview of Adding and Managing Activities for more information
about the various activity settings.

141
Overview of Adding and Managing Activities
The following is an overview of the process for adding a new activity and customizing it activity settings:

1. Add an activity
2. Edit basic activity settings - Each activity has the following basic settings:
o Activity ID
o Activity Name
o Milestones
o Predecessors
3. Choose an Activity Type - Choose one of the ten activity type templates and change the basic settings
that are specific to that activity type, such as:
o Patient or Staff Destinations
o Processing Time
o Staff and/or Resource Requirements
4. Change any advanced settings - If needed, change some of the advanced activity settings such as:
o Start Conditions
o Triggers
o Time Controls
o Costs

Each step of the process will be discussed in more detail in the subsequent topics in this chapter.

142
Adding an Activity
The first step in creating a new activity is to make sure that the patient track to which you want to add an
activity is open in the Patient Track Manager. (See Opening and Closing a Tool Component for more
information on opening a patient track.)
Then, click the Plus button on the toolbar to add a new activity to the bottom of the activity list.
Each activity has an ID and an Activity Name. The first time you add an activity, it will be appear as 10_ in
your activity list until you change its ID or Name. You can customize both the Activity ID and the Activity
Name, as discussed in the next sections about Basic Activity Settings.

143
Basic Activity Settings
The activity settings discussed in the following section are available for all activities regardless of which
activity type you have selected for a particular setting:

Activity IDs - A whole number that will be used to refer to this particular activity. You can change the
Activity ID to any whole number you would like as long as it is a whole number.

Activity Names - A name that you can give to an activity for your reference. The Activity ID and name
will both be displayed in the Activity List.

Milestones - Milestones can be used to mark the beginning and/or end of a specific period of time. You
can then use these milestones to collect and analyze statistical data about the length of time between
milestones in your simulation model.

Predecessors - The settings that will determine when this activity should start.

144
Activity IDs
Activity IDs are comprised of whole numbers that will be used to refer to this activity in other activities. By
default, the first activity is 10, the second activity is 20, and so forth. If you insert an activity in between 10
and 20, that activity would become 11.
You can change the Activity ID to any whole number you would like as long as it is a whole number. The ID
can have as many digits as you would like. Be aware that if you change the Activity ID of a particular
activity, you might have to edit any of the references you've made to that activity. For example, let's say
you've used Activity 10 as a predecessor for Activity 20, meaning Activity 20 won't begin until Activity 10 is
complete. If you change Activity 10's ID number to 15, you should make sure that you update Activity 20's
predecessor to 15.

Changing an Activity ID
To change an Activity ID:

1. In the Patient Track Manager, select the activity in the activity list that you want to change by clicking
on it.

2. In Quick Properties under Activity Properties, click inside the Activity ID box, as shown in the
following image:

3. Type in a new ID number.

4. Either press the Tab key or click outside of the box to save the new Activity ID number.

Avoid creating duplicate Activity ID numbers

For your convenience, FlexSim HC will allow you to temporarily create activities with
identical Activity ID numbers in your activity list without giving you an error message.
However, you should check your activity list to make sure you don't change any
duplicate ID numbers before running your model in order to avoid potential errors.

145
Activity Names
The Activity Name is a name you can give to your activity for your reference. The Activity Name has three
parts:

1. The Activity ID number


2. An underscore
3. Any descriptive text you want to add for labeling purposes (can include spaces, but some special
characters are not allowed)

For example, let's say you want you could create an activity that will make the patient walk to the
Registration desk when first arriving in the simulation model. You could possibly name this Activity
10_Arrival or 1_Patient Arrival.
The Activity ID and underscore are required. When you change the Activity ID, it will automatically update
the Activity Name to reflect the new number.

Changing an Activity Name


To add your own custom name to the Activity Name:

1. In the Patient Track Manager, select the activity in the activity list that you want to change by clicking
on it.

2. In Quick Properties under Activity Properties, click inside the Activity Name box.

3. After the underscore, type the name you want to give this activity.

4. Either press the Tab key or click outside of the box to save the new Activity Name.

146
Milestones
In the real world, a milestone is a significant life event that marks an individual's progress or development.
This is similar to how milestones work in FlexSim HC. Milestones can be used to mark the beginning
and/or end of a specific period of time. You can then use these milestones to collect and analyze statistical
data about the length of time between milestones in your simulation model.
You can add a milestone to any activity for recording purposes. (Be aware that using milestones is
optional.) Every activity has a Milestone group in the Quick Properties pane. The Milestone group has
two different settings, as shown in the following image:

You can click the first pull-down menu to choose which label you want to assign to the activity. You can
either use the pre-defined labels from the menu or you can type in a custom label instead.
You can use the Milestone Recording Time menu to determine at what point the milestone will begin
recording. There are only two options:

Before Process Time - The milestone will start recording right before the activity's process time
begins. (See Activity Types for more information about processes.)
After Process Time - The milestone will start recording right after the activity's process time ends.

147
Predecessors
Before reading this section, you should first read How Activities Begin to ensure you are familiar with the
differences between using the Predecessor method for starting an activity as opposed to the Next Activity
method.
In order for an activity use the Predecessor method for making an activity begin, it must have a check mark
in the Use Predecessors box (in the Quick Properties pane under the Predecessors group), as shown
in the following image:

The text box underneath the Use Predecessors box is where you would type the Activity ID of the
predecessor activity (or activities) that must be completed before this activity begins. In the example used
in the preceding image, once Activity 60 is complete, the current activity will begin.
With that in mind, the following flowchart explains the process that the FlexSim HC system uses to
determine when to start activities using the Predecessor method:

148
149
To summarize, every time a patient arrives in a simulation model or the patient completes an activity on the
activity list, the system scans the patient track to identify any activities that have a check mark in the Use
Predecessors box. Those activities will then begin if the predecessor activities have already finished.

Making an Activity Begin Automatically


An activity will automatically begin when the patient first arrives in the simulation model if:

The activity has a check mark in the Use Predecessors box

AND

The box below the Use Predecessors check box is blank, meaning you have not typed in any of the
Activity IDs for activities that must be completed before it can begin.

For example, in order to start the very first activity in the activity list, you should make sure that the Use
Predecessors box is checked but that you leave the box below it blank. This activity will automatically
begin when the simulation begins. Be aware that the first activity you create in your patient track will have
these settings automatically.

Default Predecessor Settings


By default, every new activity will have a check mark in the Use Predecessors box. With the exception of
the very first activity you create, every activity will list the previous activity in the activity list as its
predecessor.
Keep in mind that the Activity IDs listed as predecessors do not automatically update at any point after the
activity has been created. For that reason, when you change the Activity ID of any activity, you should
make sure you also change the Use Predecessors text box for any activities that list that activity as a
predecessor.

Complex Predecessor Settings


If you want to use a more complex system of predecessors, you could use Boolean operators like AND and
OR. Use AND when you want to require all the listed predecessor activities to be completed before the
current activity begins. The following image is an example of the AND operator:

In this example, both Activity 50 and Activity 60 must be finished before this activity will begin.
Use OR when you want the current activity to begin when either of the listed predecessor activities are
completed. The following image is an example of the OR operator:

150
In this example, as soon as any one of the listed activities is finished, then the current activity will begin. In
other words, the current activity will begin as soon as either one of the activities is finished.
The OR operator is particularly useful if you've used the Decision Point activity type to start a few different
possible activities based on a complex set of conditions. You might want any of those different activities to
be followed by only one final activity (such as the patient leaving the health care facility). For example, you
might have a Decision Point in which 50% of patients will do Activity 100 (blood work) next and 50% will do
Activity 200 (an x-ray) next. You could list 100 OR 200 as the predecessors for Activity 300 (the patient
leaves).

151
Overview of Activity Types
The most important part of creating a new activity is choosing what activity type it will be. The activity type
affects how the patient will interact with the staff and resources within the health care facility.

Choosing an Activity Type


After adding an activity and customizing its ID and/or name (see Adding an Activity), you should determine
what activity type this activity should be. To choose an activity type:

1. In the Patient Track Manager, select the activity in the activity list that you want to change by clicking
on it.

2. In Quick Properties under Activity Properties, click the arrow next to the Activity Type menu.

3. Select the appropriate activity type from the menu. Some fields in Quick Properties might change based
on the activity type you select.

Description of Activity Types


Currently, the following activity types are available, listed in the order that they appear in the Activity Type
menu:

* Process - Simulates a simple process that will occur while patient remains at their current location.

Process > Send Message - Simulates a simple process that sends a message to another object in the
model when it is finished. That message can possibly trigger a particular action somewhere else in the
simulation model.

Process > Send Item - Simulates a simple process that creates an item and sends it to an item object in
the model when the process is finished. For example, it can represent sending a throat culture to a lab
to test for strep throat.

Move Equipment > Process - A staff member will move a piece of equipment to a particular destination
and then a simple process will occur.

Move Transports > Process - A staff member will move a transport (such as a wheelchair, a gurney,
etc.) to particular destination and then a simple process will occur.

* Escort Patient > Process - A staff member will travel to the patient's current location and escort the
patient to a new destination in the model. Then a simple process will occur.

* Transport Patient > Process - A staff member will use a transport to move a patient to a new
destination in the model. Then a simple process will occur.

* Patient Travels Unattended - The patient will move to a new destination in the model without a staff
member escorting them.

Decision Point - When your patient reaches a point in at which the next activity might be different based
on certain conditions, the Decision Point helps to determine which activity should be next. For example,
perhaps based on the patient's current condition, different patients will receive different treatment after
152
they've been examined by a doctor. Perhaps some patients will need an X-ray, while others will need a
vaccine, etc. The Decision Point can use custom criteria to determine which activity will be next.

Custom - This activity type has all of the same available settings as the other activity types so that you
can create your own unique activity type if needed.

* Indicates the most commonly used activity types.

What is a process and what does the > mark mean?

You'll notice that many of the activity types include the word "Process" in the title.
A process is a generic term for any kind of time-sensitive event in the model. A
process can represent anything you want it to represent: a patient examination,
collecting a blood sample, performing an X-ray, prescribing medications, etc.
These processes are simulated in the model by a simple time delay, equivalent to
the amount of time it takes to complete the process.

You could interpret the greater-than symbol (>) as shorthand for the phrase "and
then." For example, Escort Patient > Process means that a staff member will
escort the patient to a particular location and then a process will occur.

As was discussed in What Happens During an Activity, each activity type has a roughly similar set of
phases, as shown in the following image:

153
Each activity type will be discussed in more details in the following sections. Each section gives an
overview of the specific activity type. The sections will also discuss any ways in which that activity type's
tasks or phases differ from the pattern outlined in the preceding image. Most importantly, it will discuss the
settings that are specific to that activity type in the Quick Properties pane.

Check for required fields

Each activity type has some fields that are required. Unfortunately, the current
version of FlexSim HC does not give any error messages when you forget to fill in
a required field in the activity settings. Forgetting to adjust these required settings
could create an error when the simulation model runs. For that reason, you should
make it a habit to check any of the required settings for each activity type, which
are listed in the "Specific Settings" portion of each activity type topic.

154
Process
The Process Activity Type simulates a simple process that will occur while patients remain at their current
location. As was mentioned in the previous topic, a process is a generic term for any kind of time-sensitive
event in the model. A process can represent anything you want it to represent: a patient examination,
collecting a blood sample, performing an X-ray, prescribing medications, etc. These processes are
simulated in the model by a simple time delay, equivalent to the amount of time it takes to complete the
process.
You can choose whether or not you want to assign staff to perform a process. One important thing to keep
in mind is that the process does not necessarily need to occur at the patient's location. For example,
imagine that you want to design a simulation in which a doctor will consult with a colleague about treatment
options after performing a patient examination. If you want the doctor to consult with the other doctor in a
different room besides the patient's location, you could use the Process Activity Type and then assign the
doctor to a different location during the activity.

Activity Tasks and Phases


The Process Activity Type will use the same set of phases and tasks outlined in What Happens During an
Activity. The only exception is that if you do not assign a staff member, the activity will skip directly from the
Beginning Phase to the Process Phase.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Process
Activity Type. It gives the name of each group of settings as they appear in Quick Properties and explains
whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Processing Required Type in a number or an expression indicating how long the


Time process should take in minutes. (See Processing Time for
more information.)

Staff Optional You can choose whether staff member(s) should be


Requirements assigned to this activity or not. (See Staff Requirements for
more information.)

Staff Required if staff Used to indicate if staff members should stay with the
Destination are assigned patient or perform the process in a different location. (See
Staff Destination for more information.)

155
Process > Send Message
The Process > Send Message Activity Type simulates a simple process that sends a message to another
object in the model when it is finished. That message can possibly trigger a particular action somewhere
else in the simulation model. This activity type is rarely used, but is available if needed. It is more likely that
you will use the Process > Send Item Activity Type to trigger specific events in the model.

Activity Tasks and Phases


The Process > Send Message Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity. There are only two specific differences:

If you do not assign a staff member, the activity will skip directly from the Beginning Phase to the
Process Phase.
During the Concluding Phase, a message will be sent to another object in your simulation model.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the
Process > Send Message Activity Type. It gives the name of each group of settings as they appear in
Quick Properties and explains whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Message Required Use the pull-down menu to select which object in the
Destination simulation model will receive a message after the process
is finished. (See Message Destination for more
information.)

Processing Required Type in a number or an expression indicating how long the


Time process should take in minutes. (See Processing Time for
more information.)

Staff Optional You can choose whether staff member(s) should be


Requirements assigned to this activity or not. (See Staff Requirements for
more information.)

Staff Required if staff Used to indicate if staff members should stay with the
Destination are assigned patient or perform the process in a different location. (See
Staff Destination for more information.)

156
157
Process > Send Item
The Process > Send Item Activity Type simulates a simple process that creates an item and sends it to
an item object in the model when it is finished. Once the item is received by the item object, it will begin a
series of activities designed for handling that particular item.
For example, this activity type can represent sending a throat culture to a lab to test for strep throat. During
the Process Phase of the activity, a staff member will swab the patient's throat, creating a new item (the
throat culture). The item would then be sent to a lab for testing. Simulating lab work and item processing
will be discussed in more detail in a later chapter.

Activity Tasks and Phases


The Process > Send Item Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity. There are only two specific differences:

If you do not assign a staff member, the activity will skip directly from the Beginning Phase to the
Process Phase.
During the Concluding Phase, an item will be sent to another object in your simulation model.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the
Process > Send Item Activity Type. It gives the name of each group of settings as they appear in Quick
Properties and explains whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Item Required Use the pull-down menu to select which object in the
Destination simulation model will receive the newly created item after
the process is finished. (See Item Destination for more
information.)

Processing Required Type in a number or an expression indicating how long the


Time process should take in minutes. (See Processing Time for
more information.)

Staff Optional You can choose whether staff member(s) should be


Requirements assigned to this activity or not. (See Staff Requirements for
more information.)

158
Staff Required if staff Used to indicate if staff members should stay with the
Destination are assigned patient or perform the process in a different location. (See
Staff Destination for more information.)

159
Move Equipment > Process
During the Move Equipment > Process Activity Type, a staff member will move a piece of equipment to
a particular destination and then a simple process will occur. If you only want the equipment to be moved
without a process occurring afterwards, you could set the process time to 0 minutes.
In order for this activity to function properly, you should make sure that you have added an equipment
resource group to your simulation model. The FlexSim HC Library has a variety of different equipment
objects that could be used as part of this activity. To view the available objects, go to the Library and,
under Resource Groups, click Equipment. (See Adding Resources to a Model for more information.)

Activity Tasks and Phases


The Move Equipment > Process Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity. During the Movement Phase, staff members will move from their current
location to wherever the equipment is located. Then, the staff will move the equipment to the destination
indicated in the Staff Destination settings.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Move
Equipment > Process Activity Type. It gives the name of each group of settings as they appear in Quick
Properties and explains whether those fields are required or optional for this activity type:

Settings Group Required? Notes

Processing Time Required Type in a number or expression indicating how long the
process should take in minutes. (See Processing Time for
more information.)

Staff Required One or more staff members must be assigned to this activity
Requirements or it will cause an error. (See Staff Requirements for more
information.)

Staff Destination Required Used to indicate where the staff members should move the
equipment. (See Staff Destination for more information.)

Equipment Required Used to indicate which equipment should be moved. (See


Requirements Equipment Requirements for more information.)

160
Move Transports > Process
During the Move Transports > Process Activity Type, a staff member will move a transport (such as a
wheelchair, a gurney, etc.) to particular destination and then a simple process will occur. If you only want
the transport to be moved without a process occurring afterwards, you could set the process time to 0
minutes.
Be aware that if you would like to move a transport to a patient and then transport the patient to another
location, you should probably use the Transport Patient > Process Activity Type instead. The Move
Transports Activity Type only moves the transport to a location, but does not actually transport a patient.
In order for this activity to function properly, you should make sure that you have added a transport
resource group to your simulation model. The FlexSim HC Library has a variety of different transport
objects that could be used as part of this activity. To view the available objects, go to the Library and,
under Resource Groups, click Transport. (See Adding Resources to a Model for more information.)

Activity Tasks and Phases


The Move Transports > Process Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity. During the Movement Phase, staff members will move from their current
location to wherever the transport is located. Then, the staff will move the transport to the destination
indicated in the Staff Destination settings.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Move
Transport > Process Activity Type. It gives the name of each group of settings as they appear in Quick
Properties and explains whether those fields are required or optional for this activity type:

Settings Group Required? Notes

Processing Time Required Type in a number or expression indicating how long the
process should take in minutes. (See Processing Time for
more information.)

Staff Required One or more staff members must be assigned to this activity
Requirements or it will cause an error. (See Staff Requirements for more
information.)

Staff Destination Required Used to indicate where staff members should move the
transport. (See Staff Destination for more information.)

161
Transport Required Used to indicate which transport should be moved. (See
Requirements Transport Requirements for more information.)

162
Escort Patient > Process
During the Escort Patient > Process Activity Type, a staff member will travel to the patient's current
location and escort the patient to a new destination in the model. Then a simple process will occur. If you
only want the patient to be escorted without a process occurring afterwards, you could set the process time
to 0 minutes.
This activity type requires a staff member. If you want patients to move on their own to a new location
without a staff member, you should use the Patient Travels Unattended Activity Type. Also, if you want the
staff member to move the patient in a transport (such as a wheelchair or gurney), you should use the
Transport Patient > Process Activity Type.

Activity Tasks and Phases


The Escort Patient > Process Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Escort
Patient > Process Activity Type. It gives the name of each group of settings as they appear in Quick
Properties and explains whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Patient Required Use the pull-down menu to indicate where the patient should go
Destination during the Movement Phase of the activity. (See Patient
Destination for more information.)

Processing Required Type in a number or an expression indicating how long the


Time process should take in minutes. (See Processing Time for more
information.)

Staff Required One or more staff members must be assigned to this activity or it
Requirements will cause an error. (See Staff Requirements for more
information.)

163
Transport Patient > Process
During the Transport Patient > Process Activity Type, a staff member will use a transport to move a
patient to a new destination in the model. Then a simple process will occur. If you only want the patient to
be transported to a new location without a process occurring afterwards, you could set the process time to
0 minutes.
In order for this activity to function properly, you should make sure that you have added a transport
resource group to your simulation model. The FlexSim HC Library has a variety of different transport
objects that could be used as part of this activity. To view the available objects, go to the Library and,
under Resource Groups, click Transport.

Activity Tasks and Phases


The Transport Patient > Process Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity. During the Movement Phase, staff members will move from their current
location to wherever the transport is located. Then, the staff will move the transport to the patient's current
location. The patient will then be transported to the new location indicated in the Patient Destination
settings.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Transport
Patient > Process Activity Type. It gives the name of each group of settings as they appear in Quick
Properties and explains whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Patient Required Use the pull-down menu to indicate where the patient should
Destination be transported during the Movement Phase of the activity.
(See Patient Destination for more information.)

Processing Time Required Type in a number or expression indicating how long the
process should take in minutes. (See Processing Time for
more information.)

Staff Required Staff members must be assigned to this activity or it will cause
Requirements an error. (See Staff Requirements for more information.)

164
Transport Required Used to indicate which transport should be used. (See
Requirements Transport Requirements for more information.)

165
Patient Travels Unattended
During the Patient Travels Unattended Activity Type, the patient will move to a new destination in the
model without a staff member escorting them.

Activity Tasks and Phases


The Patient Travels Unattended Activity Type will use the same set of phases and tasks outlined in What
Happens During an Activity. However, there will be no staff or resources assigned to this activity and the
Process Phase will be skipped.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Patient
Travels Unattended Activity Type. It gives the name of each group of settings as they appear in Quick
Properties and explains whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Patient Required Use the pull-down menu to indicate where the patient should go
Destination during the Movement Phase of the activity. (See Patient
Destination for more information.)

166
Decision Point
The Decision Point can be used when your patient reaches a point in at which the next activity might be
different based on certain conditions. The Decision Point helps to determine which activity should be next.
For example, perhaps based on the patient's current condition, different patients could receive different
treatment after they've been examined by a doctor. Perhaps some patients will need an X-ray, while others
will need a vaccine, etc. The Decision Point can use custom criteria to determine which activity should be
next for the patient.

Activity Tasks and Phases


The Decision Point Activity Type will use not use any of the phases and tasks outlined in What Happens
During an Activity. It will skip directly from the Beginning Phase to the Concluding Phase. During the
Concluding Phase, the Decision Point will determine which activity should be next for the current patient
using a complex set of criteria.

Specific Settings
The following table describes the settings that are available in the Quick Properties pane for the Decision
Point Activity Type. It gives the name of each group of settings as they appear in Quick Properties and
explains whether those fields are required or optional for this activity type:

Settings
Required? Notes
Group

Next Activity Required Use this setting to create the criteria that will be used to determine
which activity the patient should do next. (See Next Activity for
more information.)

167
Custom
The Custom Activity Type has all of the available settings used in the other activity types so that you can
create your own unique activity type if needed. You should familiarize yourself with the other activity types
and other settings before using this activity type.

Activity Tasks and Phases


The Custom Activity Type will use the same set of phases and tasks outlined in What Happens During an
Activity.

Specific Settings
The Custom Activity Type has all the same settings that are available for the other activity types. See
Specific Activity Type Settings for more information.

168
Introduction to Specific Activity Type Settings
When you choose a specific activity type, the Quick Properties pane will change to make certain groups
of settings available. The other topics in this chapter will discuss each group of settings in detail.
You'll notice that many of these settings have two buttons next to them:

Tool
Icon Purpose
Name

Code If you are comfortable writing code directly in FlexScript, you can use this tool
Editor to open the Code Editor and enter your custom code.

Code Some settings require you to indicate which object you want the patient to use
Editor during an activity (such as a location or staff member). The eyedropper tool
allows you to indicate which object you want to use by clicking on it directly in
the simulation model.

Code Editor

Many activity settings have a Code Editor button . When you click on the Code Editor, you can directly
edit the code for that particular setting. This is useful for advanced FlexSim HC users who are comfortable
writing code in FlexScript.

Eyedropper

Many activity settings have an Eyedropper button . Usually these settings require you to choose which
object (location, area, resource, or resource group) should be used during a particular activity. For
example, the Patient Destination setting requires you to choose which location or area the patient will
move to during a particular activity.
Often these settings have an arrow next to them that allow you to select a location from a menu. However,
you can use the Eyedropper to select the location or area by clicking on the object directly in the model.
To use the eyedropper to select a location or area:

1. Click the Eyedropper button. The mouse pointer will change to an eyedropper icon.

2. Move the mouse to the location object you want to select. As you move your mouse of the location, it
will display the name of the location object and the name of the area this location belongs to, as shown
in the following image:

169
3. Click on the location to select it. A menu will pop up that will list the name of the location and the area it
belongs to, as shown in the following image:

4. At this point, you have a choice to make. You can click the area name if you want the patient to go to
any location inside that area once one becomes available (recommended). Or you could click on a
specific location within this area.

See How Patients and Staff Move to Locations or Areas for more information.
The process is nearly identical for using the Eyedropper to choose staff members or other resources in the
model. Just be careful to click on the colored box underneath the resources to select a particular resource
group rather than an individual resource. See Selecting a Resource Group and How Staff and Resources
Are Assigned to an Activity for more information.

170
Patient Destination
The Patient Destination settings allow you to determine where your patient should travel during this
activity. These settings appear in an activity's Quick Properties pane when certain activity types are
selected. The following activity types use the Patient Destination settings:

Escort Patient > Process


Transport Patient > Process
Patient Travels Unattended
Custom (optional)

The Patient Destination settings are shown in the following image:

Each setting will be discussed in the following sections.

Patient Destination
The Patient Destination box determines the specific location or area that your patient will travel to during
this activity. Use the following steps to choose an appropriate destination for your patient:

1. Click the arrow next to the Patient Destination box to open up a menu of possible destinations you
could use. There are many possible options, most of which are used very rarely. It is likely that you will
only use the first option: Choose a specific destination.

2. Select Choose a specific destination from the menu. This will open up a sub-menu listing all the
areas that currently exist in your model. As a reminder, an area is a group of related location objects.

3. Select the area that will be used as the patient destination. This will open up another sub-menu that
lists the name of the area at the top of the menu. It will also list all of the locations inside of that area.

4. At this point, you have a choice to make. You can click the area name if you want the patient to go to
any location inside that area once one becomes available (recommended). Or you could click on a
specific location within this area.

See How Patients Move to Locations or Areas for more information about the pros and cons of assigning a
specific location as opposed to a general area.

The Eyedropper

You can use the Eyedropper tool to select the location or area you want to use
by clicking on it in your simulation model. See Eyedropper for more information.

171
Reserve Current Location
When checked, the Reserve Current Location check box will reserve the current location until the patient
is able to return to it in a later activity. For example, imagine that when the activity begins, the patient will
be at a Bed location in the Bed Area. If during the patient must leave to go to the operating room for
surgery, the current Bed location could be reserved for when the patient returns. While the patient is in the
operating room, the Bed would appear to be highlighted in purple and none of the other patients would be
able to use that location. During a later activity, when the patient returns to the Bed Area, the patient will
return to the same Bed location.

172
Processing Time
The Processing Time settings allow you to determine how long the Process phase of an activity should
be. The Processing Time settings appear in an activity's Quick Properties pane when certain activity
types are selected. The following activity types use the Processing Time settings:

Process
Process > Send Message
Process > Send Item
Move Equipment > Process
Move Transport > Process
Escort Patient > Process
Transport Patient > Process
Custom (optional)

The Processing Time settings are shown in the following image:

To change the settings, click inside the Processing Time box and type in a specific amount of time in
minutes. If you want the Process phase of an activity to be skipped, you could type a 0 in this box.
If you'd like, you can make the processing time somewhat random. Click on the pull-down arrow and select
Choose a Statistical Distribution from the menu. This will open the Distribution Chooser, which will
guide you through the process of choosing a random time distribution. See The Distribution Chooser for a
more detailed introduction to how FlexSim HC generates random numbers.

173
Staff Requirements
The Staff Requirements settings allow you to determine which staff member(s) should be assigned to a
particular activity. The Staff Requirements settings appear in an activity's Quick Properties pane when
certain activity types are selected. The following activity types use the Staff Requirements settings:

Process (optional)
Process > Send Message (optional)
Process > Send Item (optional)
Move Equipment > Process
Move Transport > Process
Escort Patient > Process
Transport Patient > Process
Custom (optional)

The Staff Requirements settings are shown in the following image:

The unnamed box is sometimes called the Staff Requirement Row. Each row represents a staff member
assigned to this activity.
Each setting will be discussed in the following sections.

Adding Staff Members to Staff Requirement Rows


The Staff Requirements row determines the specific staff or staff resource group that will be assigned to
work on this activity. There are a lot of different options for assigning staff members, but you will likely only
use one of the following two methods:

Choose a specific resource - You can select a specific staff member or staff resource group from a
menu.
Used in an earlier activity - You can select the same staff member that was used in an earlier activity
in the activity list.

Both of these methods will be explained in this section.


Use the following steps to choose a specific resource:

1. Click the Plus sign to add a new Staff Requirement Row.

2. Click the arrow next to the Staff Requirements box to open up a menu that will help you select the
staff groups or individual staff groups you might want to assign to work on this activity.

3. Select Choose a specific resource from the menu. This will open up a sub-menu with the option to
select either Staff Groups or Alternate Groups. (The latter option will only be listed if you've created
any Alternate Groups.)

174
4. Select Staff Groups from the sub-menu (unless you want to select an alternate group that you've
created). This will open up a sub-menu listing all the staff resource groups that currently exist in your
model. As a reminder, each individual staff member belongs to a staff resource group. (See
Introduction to Staff and Resources for more information.)

5. Select the name of the staff resource group you want to use, which will open up another sub-menu that
lists the name of the staff resource group at the top of the menu. For example, let's say your simulation
model has a group named Physicians that has three physicians as group members. Once you select
Physicians from the menu, it will open up another sub-menu that lists the name of the staff resource
group members and some other options, as shown in the following example:

6. At this point, you have a choice to make. You can select Any member from [Group Name] to assign
any member of the staff resource group to work on the activity (recommended). You could also select
First used from [Group Name] if you want to use the same staff member that was assigned to the
patient in earlier activity. Or you could click on a specific staff member to assign that group member to
this activity.

See How Staff and Resources Are Assigned to an Activity for more information about the pros and cons of
assigning an individual staff member or an entire staff resource group.

The Eyedropper

You can use the Eyedropper tool to select the staff member or staff resource
group you want to use by clicking on it in your simulation model. See Eyedropper
for more information.

To use the same staff member that was used in an earlier activity:

1. Click the arrow next to the Staff Requirements box to open up a menu of possible staff you could use.

2. Select Used in an earlier activity from the menu. This will open up a dialog box, as shown in the
following image:

175
3. Click the Select an earlier activity menu to view a list of all the activities in the activity list that use staff
members.

4. Select the appropriate activity from the menu.

5. The Requirement Row menu options will change depending on which activity you selected in the
previous step. If the activity you chose in step 4 only had one staff member assigned to it, there will
only be one row available. That's because each staff member occupies a different row in the Staff
Requirements settings. If you have three staff members for an activity, they will occupy three rows. The
first staff member occupies row 1, the second occupies row 2, etc.

6. Select the appropriate row number from the Requirement Row menu if more than one row is listed.

7. To add more than one row, add any additional staff member and repeat this process for each row. See
Adding and Deleting Additional Staff Members in the next section.

First used vs. Used in an earlier activity

You may have noticed that you can use two different methods to assign a staff
member that was used in an earlier activity. You could have selected the First used
from [Group Name] option from the Choose a specific resource menu. Or you
could use the Select an earlier activity menu. Either method is fine but the second
method might be preferable if you are using a kept resource. See Keeping and
Releasing Staff Members for more information.

Adding and Deleting Additional Staff Members)


If you want to add any additional staff members to this activity, click the Add button . This will add an
additional Staff Requirement Row. You can add as many Staff Requirement Rows as needed and then use
the process for Adding Staff Members to Staff Requirement Rows, which was discussed in the previous
section.
To delete a staff member, click the Delete button . Be aware that using the Delete button will only
remove the bottom Staff Requirement Row, the one row that is the lowest on the list.

176
Keeping and Releasing Staff Members
Sometimes you might want to require a staff member to remain with a patient for multiple activities and not
be assigned to work on any other activities. In FlexSim HC, this is called keeping a staff member. Staff
members will be kept until they are released in a later activity.
For example, if a patient needs constant supervision from a particular staff member during a series of
activities, it might be useful for you to keep that staff member. Once staff members are kept, they will only
be allowed to assist with the current patient's current activity and future activities until they are released by
a later activity.

Higher priority tasks still might take precedence

Even if you keep a resource, it is possible that the staff member could still possibly
be re-assigned to a different activity with a higher priority. See Staff and Resource
Priorities for more information.

You will use the padlock icon next to each staff member to manage whether staff members are kept or
released. (You could think of it as locking the staff member to the current patient.) The following table
explains each icon:

Icon Status Purpose

Neutral When there is a gray padlock next to the staff member, it means that staff
member is neither being kept or released. After the activity is complete, the
staff could possibly be assigned to work with a different patient on a different
activity.

Kept When there is a red padlock next to the staff member, it means the staff
member can only be assigned to work with this patient until they are released
in a later activity on the patient track.

Released When there is a green padlock next to the staff member, it means that the
staff member will be released after the current activity is finished.

Click on the padlock icon to change the staff member's status from neutral to kept. Click on the padlock a
second time to change the status from kept to released. Click one more time to change it back to neutral
and so forth.

Don't forget to release the staff!

177
If you keep a staff member in a particular activity, don't forget to release that staff
member in a later activity.

Priority
Before changing these settings, you should be sure you are familiar with the concepts discussed in Staff
and Resource Priorities.
The Priority box allows you to determine what priority level will be assigned to all resource requests for
this activity. Even though the Priority box is only found in the Staff Requirements group, the priority level
you assign in this box will apply to all resource requests for this activity, including equipment and
transports.
By default, all resource requests are assigned a priority level of 150. To change these settings, click inside
the Priority box and type in a new priority level.

178
Staff Destination
The Staff Destination settings allow you to determine which location staff member(s) should be travel to
during a particular activity. The Staff Destination settings appear in an activity's Quick Properties pane
when certain activity types are selected. The following activity types use the Staff Destination settings:

Process (optional)
Process > Send Message (optional)
Process > Send Item (optional)
Move Equipment > Process
Move Transport > Process
Escort Patient > Process
Transport Patient > Process
Custom (optional)

The Staff Destination settings are shown in the following image:

The Staff Destination box determines the specific location or area that your staff member(s) will travel to
during this activity. By default, the staff member's destination will be the patient's location. But this can be
changed if needed. Unlike patients, staff members can use any object as a possible destination. For
example, a staff member can travel to a phone or table or any other object in the simulation model.
Use the following steps to choose an appropriate destination for your staff member:

1. Click the arrow next to the Staff Destination box to open up a menu of possible destinations you could
use. There are many possible options, most of which are used very rarely. It is likely that you will only
use the first option: Choose a specific destination.

2. Select Choose a specific destination from the menu. This will open up a sub-menu listing all the
areas that currently exist in your model. As a reminder, an area is a collection of related location
objects.

3. Select the area that contains the location that will be the staff member's destination. This will open up
another sub-menu that lists all of the locations inside of that area.

4. Select the appropriate location. (Staff members can only travel to locations, not areas.)

The Eyedropper

You can use the Eyedropper tool to select the location or area you want to use by
clicking on it in your simulation model. See Eyedropper for more information.

179
Equipment Requirements
The Equipment Requirements settings allow you to determine which equipment should be assigned to a
particular activity. The Equipment Requirements settings appear in an activity's Quick Properties pane
when certain activity types are selected. The following activity types use the Equipment Requirements
settings:

Move Equipment > Process


Custom (optional)

The Equipment Requirements settings are shown in the following image:

NOTE: The unnamed box is sometimes referred to as an Equipment Requirement Row. Each row
represents a specific piece of equipment assigned to this activity.
The Equipment Requirements settings are virtually identical to the Staff Requirements settings. The
only difference is that you can only assign equipment objects or equipment resource groups to the activity
(as opposed to staff). Because the settings are so similar, you should read the Staff Requirements section
for more information about how these settings work.
However, there is one minor difference: the Equipment Requirements settings do not have the Priority
box. Instead, it has the Return check box, which will be discussed in the following section.

Equipment Priorities

Even though the Priority box is only found in the Staff Requirements group, the
priority level you assign in Staff Requirements will apply to all resource requests
for this activity, including equipment.

Return
If you check the Return check box, then the staff member will return the piece of equipment to its original
location during the Concluding Phase of the activity.

180
Transport Requirements
The Transport Requirements settings allow you to determine which transports should be assigned to a
particular activity to transport a patient from one location to another. Transports are objects that can move
a patient from one location to another such as a wheelchair or a gurney. The Transport Requirements
settings appear in an activity's Quick Properties pane when certain activity types are selected. The
following activity types use the Transport Requirements settings:

Move Transport > Process


Transport Patient > Process
Custom (optional)

The Transport Requirements settings are shown in the following image:

NOTE: The unnamed box is sometimes referred to as a Transport Requirement Row. Each row
represents a specific transport assigned to this activity.
The Transport Requirements settings are virtually identical to the Staff Requirements settings. The only
difference is that you can only assign transport objects or transport resource groups to the activity (as
opposed to staff). Because the settings are so similar, you should read the Staff Requirements section for
more information about how these settings work.
However, there is one minor difference: the Transport Requirements settings do not have the Priority
box. Instead, it has the Return check box, which will be discussed in the following section.

Transport Priorities

Even though the Priority box is only found in the Staff Requirements group, the
priority level you assign in Staff Requirements will apply to all resource requests
for this activity, including transports.

Return
If you check the Return check box, then the staff member will return the piece of equipment to its original
location during the Concluding Phase of the activity.

181
Next Activity
The Next Activity settings are used to cause another activity to begin as soon as the current activity is
finished. The Next Activity settings are available for all activity types, but are primarily used by the Decision
Point Activity Type to create a complex system for determining which activity should come next.
Before reading this section, you should first read How Activities Begin to ensure you are familiar with the
differences between using the Predecessor method for starting an activity as opposed to the Next Activity
method. Be aware that the Predecessor method is the preferred method of beginning an activity.
In order to use the Next Activity method to begin an activity, all you need to do is type or select an
appropriate value or expression in the Next Activity box, as shown in the following image:

At its most basic level, you could just type in the Activity ID of the activity you want to start after the current
activity is finished. However, you might possibly want to use a more complex system for determining which
activity should be next. For example, you might use the Next Activity settings based on percentages so that
50% of patients will do Activity 100 (blood work) next and 50% will do Activity 200 (an x-ray) next. You
could list 100 OR 200 as the predecessors for Activity 50 (the patient leaves).
When you click the pull-down menu, you'll notice there are several different options. These different options
allow you to create complex conditions for starting the next activity. Some of the more commonly used
options will be discussed in the following sections.

Two Important Cautions

If you are going to use the Next Activity method to start one activity out of a
possible list of activities, make sure that those activities do not have a check mark
in the Use Predecessors box. Otherwise, those activities might automatically
begin.

Also, you might be using the Next Activity method to start a few different possible
activities based on complex conditions. You might want any of those different
activities to be followed by only one final activity (such as the patient leaving the
health care facility). If that's the case, you might want to use some complex
predecessor settings to make that final activity begin. See Complex Predecessor
Settings for more information.

Based on First Available Location


If you want the next activity to be determined based on the availability of certain locations, follow these
steps:

1. Click the arrow by the Next Activity box to open a menu of options.

2. Select Based on first available from the menu. This will open a sub-menu that lists location and
resource.

182
3. Select either location from the menu. This will open a dialog box, such as the one shown in the
following image:

3. Click the arrow next to the box in the first column (labeled If the next available location is...). This will
open a menu showing all the current areas that currently exist in the simulation model. As a reminder,
an area is a group of related location objects.

4. Select the area that you want to use as one of the possible conditions to determine the next activity.
This will open up another sub-menu that lists the name of the area at the top of the menu. It will also
list all of the locations inside of that area.

5. At this point, you have a choice to make. You can click the area name if you want the staff member to
go to any location inside that area once one becomes available (recommended). Or you could click on
a specific location within this area.

6. In the second column (labeled Then the next activity is...), either type the Activity ID of the activity that
will be next if this is the available area or select from the current list of activities using the arrow next to
the box.

7. Repeat this process to add additional conditions. If you want to add more than two conditions, click the
Add a new pair button to add another row.

8. In the Default activity if none found above box, either type the Activity ID of the activity that will be
default next activity or select from the current list of activities using the arrow next to the box.

9. When you're finished building your conditions, click the OK button to save your changes.

See How Patients and Staff Move to Locations for more information about whether to choose an area of a
location.

Based on First Available Resource


You can determine the next activity based on the availability of certain resources (such as staff, equipment,
and transports). The process is virtually identical to the one explained in the previous section, Based on
First Available Location. You merely select resources instead of locations.
See How Staff and Resources Are Assigned to Activities for more information about choosing individual
resources vs. resource groups.

183
Based on Percentages
If you want a certain percentage of patients to do different activities, you could use the Based on
Percentages option. For example, let's say you did a study of an outpatient clinic and determined that 50%
of patients usually needed to have lab work done (such as blood drawn), 30% need an X-ray, and 20%
needed an MRI. You could use the Based on Percentages option to create this kind of system:

1. Click the arrow by the Next Activity box to open a menu of options.

2. Select Based on percentages from the menu. This will open a dialog box, as shown in the following
image:

3. You can change the percentages by typing a different value in the first column (labeled There is a ... %
chance). Make sure that the values add up to 100.

4. You can then type in the Activity ID of the next activity in the second column (labeled that the Next
Activity will be...) or use the pull-down menu to select the Activity ID from a list of possible activities.

5. Click the Add a new pair button to add additional rows as needed.

6. Click OK to save your changes.

184
Advanced Functions
The Advanced Functions settings allow you to add some complexity to your activities. The settings are
shown in the following image:

Each setting will be described in the sections below.

Activity Start Condition


The Activity Start Condition is another alternative to the Predecessors or Next Activity method of making
an activity begin. (See How Activities Begin for more information.) If you are comfortable with FlexScript,
you can create an expression that will cause this activity to begin under certain conditions.
Any custom code you may write must be a condition that can resolve to a true or false. If your condition is
true, the activity is allowed to begin. If it evaluates false, the activity will not begin.
You can also try using the pull-down menu next to this box for help writing a few basic expressions.

Activity Started Trigger


The Activity Started Trigger is an optional system event that occurs during the Beginning Phase of an
activity before anything else happens. (See What Happens During an Activity for more information.) You
could possibly use this trigger to make some other activity or process begin in the simulation model when
the activity begins.
Click the Edit Trigger button to open up a guide to editing this Trigger. Otherwise, you can create your
own custom code by clicking on the Edit Code button .

Activity Finished Trigger


The Activity Finished Trigger is identical to the Activity Started Trigger (see previous section). The only
difference is that it is another optional system event that occurs fires during the Concluding Phase of an
activity after everything else has happened.

185
Advanced Time Controls
The Advanced Time Controls settings allow you to add some complexity to the timing of your activities.
The settings are shown in the following image:

Each setting will be described in the sections below.

Start Time
The Start Time box is used more frequently with Routine Staff or Location Activities (global processes)
than with patient-centered activities.
In this box, you can possibly type a time in minutes to indicate how much time will pass from the time the
simulation starts until the time this activity begins. For example, if you type 60 in this box, the activity will
begin one hour after the simulation begins (60 minutes).
Alternatively, you could set a specific time that this simulation model should start. Simulation times are
formatted with days, hours, and minutes-each separated by a colon. Monday is treated as day 1 and the
hours use military time. For example, if you wanted to start an activity at 4:15p.m. on a Wednesday, you
would format it as 03:16:15. By default, all models begin running on Monday at midnight (01:00:00). See
Run Time Tools for more information.

Repeat Interval
The Repeat Interval box is used more frequently with Global Processes than with patient activities.
In this box, type a time in minutes to indicate how frequently an activity should be repeated. For example, if
you type 60 in this box, the activity will repeat every hour (60 minutes).

186
Costs
The Costs settings allow you to calculate the cost of an activity. The settings are shown in the following
image:

Use the Fixed Cost box to assign a set value to an activity. For example, if this activity always costs $100,
you could just type $100 in this box.
The Variable Cost Rate box to assign an hour rate to the activity. The cost will vary based on how long the
activity takes.

187
Adding Patients
Once you've built the basic layout of your facility, you'll need to get your patients into your model so that
they can begin receiving treatment. The most basic way to add patients to a model is to add a Patient
Arrivals object from the Library. (See Adding Objects to a Model for more information.) By default, these
objects will automatically create new patients who will walk in the door at random intervals.
But what if you want to adjust the rate at which patients arrive, such as requiring patients to make an
appointment? Or what if you want to have different types of patients---perhaps with varying acuity levels or
different reasons for coming to your facility? In order to accomplish this, you might need to make changes
to:

Patient Classifications - This tool lists all the different possible types of patients that will arrive in your
simulation model. You can create patients with different acuity levels or other custom labels using this
tool.

Patient Visuals - This tool helps you customize the visual appearance of the patients in your model.

Patient Arrivals Patterns - You can edit Patient Arrival objects to change the rate at which patients
arrive in the simulation model.

The rest of the chapter will discuss how to use these tools and objects to create a complex Patient Arrival
system.

188
Introduction to Patient Classifications
You can use the Patient Classifications tool to create all the different possible types of patients that will
arrive in your simulation model. The following are some key terms and concepts that are used to by the
Patient Classifications tool in FlexSim HC:

Patient Classification Index (PCI)


The Patient Classification Index, otherwise known as PCI, refers to a type or category of patient that you
can customize. You can use different PCIs to represent a particular combination of patient acuities and
labels. For example, if you were simulating a pediatrician's office that had both a Sick Clinic and a
Wellness Clinic, you could possibly create one PCI for the patients that will go to the Sick Clinic and then
another PCI for patients that will visit the Wellness Clinic. You could also create an additional PCI for Sick
Clinic patients that had a higher acuity level and needed to be taken to the hospital immediately.
PCIs are represented by a number by default. Each patient classification is listed as PCI 1, PCI 2, PCI 3,
and so forth. You can change each PCI to a custom name if needed. Just be aware that the FlexSim HC
system will still identify each PCI by their original number. For example, if you change PCI 1 to New
Patients, the system will still identify this PCI using the number 1.

Track
The Track refers to the patient track, which is a series of activities that a patient will begin to do once they
enter a simulation model until they exit. Each patient could possibly be assigned to a different patient track
based on their PCI. You can create as many different patient tracks as needed and you can assign your
own custom names to each track. See Patient-Centered Activities for more information about patient
tracks.

Acuity
In the health care industry, acuity refers to the acuteness or level of severity of an illness. In FlexSim HC,
acuity is represented by a number. There is no limit to which numbers can be used for assigning acuity.
However, when assigning acuity numbers to patients, you should use the same acuity system used by your
health care team. If you need to use more complicated acuity classification systems, you should consider
using patient labels instead (see next section).

Labels
Labels can be added to a patient to represent any additional system of classification that your facility uses.
Labels can be used to determine if a patient should follow a different patient track or treatment plan based
on some other classification besides acuity. Labels are a number by default, but you can change the label
so that it can use text or code instead.
Keep in mind that, in FlexSim HC, labels can mean whatever you'd like it to mean. For example, you could
possibly create a set of labels that represent:

The amount of time needed to complete a task


The amount of emotional and physical energy required to care for a patient
189
The level of expertise required to treat the patient
The frequency of tasks or interventions needed

190
The Patient Classifications Tool at a Glance
The Patient Classifications tool allows you to create all the different possible types of patients that will
arrive in your simulation model. To open the Patient Classifications tool, click PCIs on the main toolbar.
Alternatively, you could open the Patient Classifications tool by double-clicking PCIs in the Toolbox.
The following image shows an example of the Patient Classifications tool:

The Patient Classifications tool basically looks and functions like a table. The major elements of the Patient
Classifications Tool will be explained in the following sections.

Data Types Row


The second row in the table is the Data Types row. Most (but not all) of the cells in this row can be used to
change the type of data that can be accepted by the cells in each column. When you click a cell in the Data
Types row, it will open a menu listing all the possible data types that could be accepted by the rest of the
cells in that column. Usually you will only change the data types of label columns. The available data type
options are:

Number - Only accepts numerals, including decimals.


Text - Can accept any text and text combined with numerals.
Code - Can accept custom code, which is useful if you are comfortable writing code in FlexScript.

PCI Rows
Each row in the table represents a different possible type of patient or Patient Classification Index (PCI).
You can add more rows of PCIs by typing a new value in the PCIs box or using the arrows to increase or
decrease the number of rows.
All of the subsequent rows are PCI rows, which stands for Patient Classification Index. Each row
represents a unique PCI. By default, each PCI is given a default name and number such as PCI 1, PCI 2,
etc. You can change the name of each PCI to something easier to remember if needed. Simply double-

191
click the PCI and type in a new name. Be aware that the FlexSim HC engine might still refer to the first PCI
as PCI 1 and the second one as PCI 2 in some of the settings on the Patient Arrival object.

Track
The first column is the Track column, which allows you to select which patient track you would like patients
with that PCI to use. When you click one of the cells in the Track column, it will open a menu listing all the
patient tracks you have created so far in your simulation model. You can then select the appropriate patient
track from the menu. See Patient-Centered Activities for more information about patient tracks.

Patient Tracks

Two or more PCIs can use the same patient track. Be aware that you must first
create the patient tracks in the Patient Track Manager in order for them to be
available in this tool.

Visuals
You can use the Visuals column to change the visual appearance of each type of patient in your model if
desired. See Introduction to Patient Visuals and Assigning a Visual Profile to a PCI or Activity for more
information.

Speed
The third column is the Speed column, which determines the speed at which the patient moves. FlexSim
HC measures speed in terms of number of meters per minute, with the default being 60 meters per minute.
When you click one of the cells in this column, you can type in a different number to change the speed of
patients with that PCI. You can increase that number to make the patient faster or decrease it to make it
slower. NOTE: When escorting patients, staff members will match the speed of the patient.

Acuity
The fourth column is the Acuity column, which represents the acuity level for patients with that PCI.
Usually the cells in this column only use numerals, but it is possible to use custom code instead if you are
comfortable writing code in FlexScript. When you click one of the cells in this column, you can type in a
different number to represent the acuity for patients with that PCI.

Labels
By default, there are no more columns after the Acuity column. However, you can add as many label
columns as needed by typing a new value in the Labels box or using the arrows to increase or decrease
the number of label columns. Label columns can be useful for adding additional criteria you would like to

192
use to classify patients. For example, in the preceding image, we've added an additional label column to
track whether a patient is new or not.
Label columns can be very dynamic and can be customized to better to fit your health care center's method
of classifying patients:

You can edit the name of the label column by double-clicking on it and typing a custom name.
By default, cells in label columns only use numerals, but you can click on the Data Types cell under the
label and use the menu to change it to accept text or code instead.
You can edit the value of each label by double-clicking on it and typing a new value.

193
Introduction to Patient Visuals
You can use the Patient Visuals tool to customize the visual appearance of the patients that will arrive in
your model. Although the visual appearance of patients will not affect how the simulation model runs, it can
be useful to change patient visuals for a variety of reasons:

If you want to change the way the default patient looks in your simulation model.

If you want to make each type of patient (PCI) visually distinct so that you can easily tell one type of
patient from another when the model runs.

If you want to change the visual appearance of patients when they are doing a particular activity. For
example, if a patient is going into surgery, you can make the patient wear a surgery gown. Or you
could change the color of a patient's shirt in order to indicate that something about their status has
changed.

If you simply want the patients in the simulation model to have some visual variety.

You'll use Patient Visuals to create different visual profiles for one or more of the patients that will arrive in
the simulation model. Once you have created each visual profile, you can then assign one of these visual
profiles to a PCI or to a patient activity.
The topics in this section will explain how to use the Patient Visuals tool in more detail.

194
The Patient Visuals Tool at a Glance
The Patient Visuals tool is the main tool you will use to customize patient visuals. The main elements of the
Patient Visuals tool are labeled in the following image:

Each element will be explained in more detail in the following sections.

Visual Profiles
You will create a distinct visual profile for each different different look that you might want a patient to have
in your model. For example, if you want to create three different types of patients (PCIs) that will each have
a different visual appearance, you will need to create three visual profiles.
In that same vein, if you want a patient to change visually during an activity in the patient track (such as the
patient changing clothes), you'll need to create a separate visual profile for the patient that has different
clothing.

Patient Gallery
The patient gallery is the workspace where you can create and preview each visual profile.
You can change the order in which visual profiles appear in the gallery by right-clicking a visual profile to
open a menu. Select Edit and then Move Up or Move Down.
195
Patient Shapes Library
When the Patient Visual tool is open, the Library (left pane) will change to the patient shapes library. You
could think of these shapes as the basic building blocks for each visual profile. To create a new visual
profile, you will click on a basic shape in the patient shapes library and then drag it into the patient gallery.

Quick Properties
You can use the Quick Properties settings to change the appearance of each visual profile. See Visual
Profile Settings for more information.

196
Managing Visual Profiles
This topic will discuss how to add, copy, and delete a visual profile.

Adding a Visual Profile


To create a new visual profile:

1. Click on a basic shape in the patient shapes library and then drag it into the patient gallery.

2. Make any changes to the appearance of each visual profile using Quick Properties. See Visual Profile
Settings for more information.

Copying a Visual Profile


To copy a visual profile:

1. Right-click a visual profile in the patient gallery to open a menu.

2. Select Duplicate.

A copy of the visual profile will appear at the end of the patient gallery.

Deleting a Visual Profile


To delete a visual profile:

1. Click a visual profile in the patient gallery to select it.

2. Press the delete key.

Alternately, you could right-click the visual profile and select Delete from the menu.

197
Visual Profile Settings
There are many different settings that you can use to customize the appearance of patients, as shown in
the following image:

Each group of settings will be explained in the following sections.

General Properties
You can change the name of the currently selected visual profile by typing in a new name in the Name box.

Person Visuals
The settings under the Person Visuals group allow you to adjust the visual profile's basic visuals. The
following settings are available:

Shape - Changes the shape of the currently selected visual profile to one of the other available shapes
in the patient shape library.
198
Head - Changes the hairstyle, hair color, and skin tone of the currently selected visual profile.

Shirt, Pants, and Shoes - Changes the color or fabric of the visual profile's clothing.

Accessories - Check the box next to an accessory to give the visual profile any of the accessories
listed here (such as stethoscopes or surgical masks). If you also click the name of one of the
accessories in this list, you will be able to use a box beneath the Accessories to change the
accessory's color or fabric.

Animations
You can use these settings to change the way this visual profile will move by changing its animation style.
Animations will not be discussed in this version of the User Manual. If you are interested in learning more
about this topic, please contact FlexSim Customer Support.

199
Assigning a Visual Profile to a PCI or Activity
Once you've created a visual profile and customized its settings, you can set that visual profile as the
default profile for a particular type of patient. You could also assign a visual profile to an activity so that a
patient's visual profile will change when that activity begins.

Assigning a Visual Profile to a PCI


You can assign a visual profile to a specific PCI (type of patient) in order to more easily distinguish
between different types of patients or to simply have patients with some visual variety.
To assign a visual profile to a PCI:

1. Open the Patient Classifications tool by clicking on the PCI button on the main toolbar.

2. In the PCI table, find the row of the PCI to which you want to assign a different visual profile. Click the
cell under the Visuals column to open a menu that will display all of the visual profiles that you have
created so far.

3. Select the name of the visual profile that should be assigned to this PCI.

Patient Arrival Patterns

If you have more than one PCI, make sure to design a patient arrival pattern that will
allow each type of PCI to arrive in your simulation model. See Patient Arrival Patterns
for more information.

Assigning a Visual Profile to an Activity


You can assign a visual profile to an activity if you want to change the visual appearance of patients when
they are doing a particular activity. For example, if a patient is going into surgery, you can make the patient
wear a surgery gown. Or you could change the color of a patient's shirt in order to indicate that something
about their status has changed.
To assign a visual profile to an activity:

1. Open the applicable patient track and select the activity that you would like to use to change a patient's
visual profile.

2. In Quick Properties under Advanced Functions, click the Properties button next to the Activity
Started Trigger box to open the Trigger Editor dialog box, as shown in the following image:

200
3. Click the Add new trigger instruction button to open a menu of available triggers.

4. Select Change then patient visuals. A new trigger instruction will appear in the dialog box, as shown
in the following image:

5. Click the arrow next to the New visual configuration box to open a menu that will display all of the
visual profiles that you have created so far.

6. Select the name of the visual profile that should be assigned to this activity.

7. Click OK to close the dialog box and save the changes.

When the activity starts, the patient's visual profile will change. Be aware that you can use this same
process for the Activity Finished Trigger if you want the visual profile to change at the end of the activity
instead.

201
Patient Overhead Text Display
Overhead text displays can sometimes be useful for identifying patients while a simulation model is
running. You can use the overhead text display to see the patient's identifying information such as their ID,
and their track and current activity. Sometimes these displays are useful for troubleshooting a model while
it runs.
By default a patient will not have an overhead text display while a simulation model runs. However, if you
click on a patient during a simulation run, you will see some text above a patient that displays the patient's
track, ID number, and current activity. You can customize the overhead text display so that it displays
different information or nothing at all.
The following sections will discuss two different methods for changing the patient overhead text display.

Overhead Display for Individual Patients


To change the overhead text display of an individual patient:

1. Click the patient to select it.

2. In Quick Properties, in the Overhead Display group, you can use the following settings to change the
patient's overhead display:

o Overhead Display - Use this menu to select what text should be displayed (if any). The default
is Activities (if highlighted), meaning that it will only display the patient's current activity when
the patient is selected in the model.

o Text Scale - Changes the size of the text when it is displayed.

o Opacity - Changes the transparency of the text when it is displayed.

Overhead Display for All Patients on a Track


To change the overhead text display for all patients on a given patient track:

1. Open the applicable patient track and select the first activity.

2. In Quick Properties under Advanced Functions, click the Properties button next to the Activity
Started Trigger box to open the Trigger Editor dialog box, as shown in the following image:

3. Click the Add new trigger instruction button to open a menu of available triggers.

4. Select Change then patient's overhead display. A new trigger instruction will appear in the dialog
box, as shown in the following image:

202
5. Double-click the blue text that says DISPLAY_ACTIVITIES to open a menu.

6. Select the type overhead display that patients will have after starting this activity:

o DISPLAY_ACTIVITIES - Display the name of the patient track, patient ID, and activity name.

o DISPLAY_NONE - No overhead text display.

o DISPLAY_TRIANGLE - Display a large triangle above patients so they can be easily found and
identified.

o DISPLAY_NAME - Display the name of the patient track and patient ID.

o DISPLAY_HIGHLIGHTED - Display the name of the patient track, patient ID, and activity name
when you click on the patient.

7. Click OK to close the dialog box and save the changes.

203
Introduction to Patient Arrival Patterns
Patient Arrival objects create the patients that will enter your simulation model. By changing the Arrivals
settings of Patient Arrival objects, you can affect how frequently patients will arrive in your simulation
model.
There are a number of possible arrival patterns you can use:

Inter-Arrival Times - Patients will arrive at the facility at random rates using a mathematical distribution
or other set of custom conditions.
Hourly Arrivals - Patients will arrive at different rates based on the hour and day of the week.
Appointments - Patients schedule an appointment and arrive at their scheduled appointment times.
Custom Arrivals - A variety of different types of patients will arrive at different rates based on the hour
and day of the week.

You can use one arrival pattern exclusively or you can use a combination of any of these arrival patterns
together.
To activate any or all of these arrival patterns:

1. Make sure you've added a Patient Arrivals object to your simulation model. (See Adding Objects to a
Model for more information.)

2. Click on the Patient Arrivals object in your simulation model to select it.

3. In Quick Properties under Arrivals, you'll see four checkboxes:

o Activate Inter-Arrival Times

o Activate Hourly Arrivals

o Activate Appointments

o Activate Custom Arrivals

4. These checkboxes allow you to choose which arrival pattern (or combination of arrival patterns) you
want to use. When you check a box next to any of the arrival patterns, the pattern will automatically
expand to give you more setting options for that particular pattern.

204
Inter-Arrival Times
Check the Activate Inter-Arrival Times box if you want patients to arrive at random rates using a
mathematical distribution or other set of custom conditions. This is the default arrival pattern used by
FlexSim HC because it is a quick way to get patients to arrive in a simulation model. However, it is more
likely you will want to use one of the other arrival patterns instead.
FlexSim HC has a wide range of possible mathematical distributions you can use to generate random
number sequences. Before reading this section, you might want to read about the Distribution Chooser tool
to get a better sense of how random mathematical distributions work in FlexSim generally.
The following image shows the settings available for Inter-Arrival Times:

Each setting will be explained the in the following sections.

Patient Arrival Pattern


The Patient Arrival Pattern box allows you to select, create, or delete patient arrival patterns. A patient
arrival pattern determines 1) how frequently a patient will arrive and 2) which type of patient (PCI) will
arrive at that time. In other words, you could use a particular patient arrival pattern to randomly determine
the frequency that patients with the specified Patient Classification Index (PCI) will arrive at the simulation
model.
To change the name of the current patient arrival pattern to something more meaningful to you, click inside
the Patient Arrival Pattern box to highlight the name. Type in a new name and then click somewhere
outside of the box to save the changes.
You can use more than one Patient Arrival Pattern if needed. When you run the simulation model, all of the
Patient Arrival Patterns will run simultaneously. To add a new Patient Arrival Pattern, click the Add button
. You'll notice that the Patient Arrival Pattern box will now change to say Patient Arrival 2 (or something
similar).
To delete a Patient Arrival Pattern, make sure the pattern you want to delete is currently selected in the
box. To select a pattern, click the arrow at the end of the box to open up a menu listing all the Patient
Arrival Patterns and select the correct pattern. Then, click the Delete button . You'll notice that the
Patient Arrival Pattern box will now change to display a different pattern name and it will no longer appear
in the menu.

Select the Correct Pattern

If you have created more than one Patient Arrival Pattern, make sure that you
have selected the correct the Patient Arrival Pattern in the Patient Arrival Pattern
box before you edit any of the other settings. The changes you make to the other
settings will only apply to the pattern that you have currently selected. For

205
example, if you want to have three Patient Arrival Patterns and you want to
change the settings to Patient Arrival Pattern 3, make sure that Patient Arrival 3 is
selected in the Patient Arrival Pattern box.

Inter-Arrival Time
The Inter-Arrival Time box determines how frequently patients should arrive. You can possibly use a
mathematical distribution strategy or another set of conditions to determine the frequency. (See Distribution
Chooser for a more detailed explanation of statistical distributions in FlexSim.)
By default, Inter-Arrival Time uses the exponential statistical distribution strategy, but this can be easily
changed.
If you click the arrow next to the Inter-Arrival Time box, a menu opens listing some of the different
methods you could use to change the how the Patient Arrivals object randomly measures the amount of
time in between arrivals. Although there are many options listed here, you will typically only use the first
option: Choose a statistical distribution.
If you select Choose a statistical distribution, it will open the Distribution Chooser tool. The Distribution
Chooser will help you select the appropriate statistical distribution that will randomly calculate how much
time will elapse between patient arrivals. It will also help you to select the appropriate parameters for your
statistical distribution. When you're done using the Distribution Chooser, it will create an expression based
on the options you selected. See Distribution Chooser for more information about this tool.

PCI
When the Patient Arrival object determines it is time for a patient to arrive, the PCI box will then assign the
new patient a patient classification index (PCI). In other words, the PCI box will determine which type of
patient will arrive.

Patient Classification Systems

If you would like to edit your current Patient Classification System, click the PCI
button next to the PCI box to open the Patient Classifications Tool.

In the PCI box, you can either select a specific type of patient (PCI) or you can use an expression to use a
more complex process for assigning the PCI. By default, the PCI box has a value of 1, representing PCI 1.
This means that all patients created by this Patient Arrival Pattern will be PCI 1 patients. NOTE: Even if
you renamed PCI 1 to something else, the PCI box will still use the number 1 to identify that particular PCI.
The important thing to keep in mind is that whatever value or expression you enter in the PCI box will affect
the types of patients that arrive in your simulation model. So, if you have a Patient Classification System
with 6 different PCIs, but you only type a 2 in the PCI box, only PCI 2s will use this patient arrival pattern.
If you click the arrow next to the PCI box, you'll open a menu that allows you to select which PCIs will use
this Patient Arrival Pattern. The menu lists all the current PCIs you have created so far. It also gives the
option to Use an expression, which opens up a sub-menu with more complex options for choosing PCI
patterns. Since you are less likely to use many of these expressions, only the Percent option will be
discussed here.

206
Choose Percent if you want a certain percentage of each PCI to arrive at random intervals in your model.
A dialog box will pop up that will guide you through the process, as shown as in the following image:

Click Add a new pair to add a row for each PCI you've created. NOTE: The maximum number of rows
allowed is 9. You can type a new value in the Percent box to change the percentage for that row (make
sure that all the percentages total up to 100). Use the arrow next to each row select the specific PCI you
want to apply that percentage to.

Randomly selecting all PCI types

If you want all of your different PCI types to arrive at random intervals in the
simulation model, you can use a FlexScript command called duniform. Let's
imagine you've created 15 different PCIs and want them all to arrive at random
times in the model. You could type the expression duniform(1,15) in the PCI box
to make each PCI type randomly enter your model. The duniform command will
randomly select a number between 1 and 15, which corresponds to each of the
PCI numbers in your model.

Arrival at Time 0
Check the Arrival at Time 0 box if you want the first patient to arrive when the simulation begins to run. If
the box is cleared, a patient will arrive at a random time based on the statistical distribution you selected.

207
Hourly Arrivals
Check the Activate Hourly Arrivals box if you want patients to arrive at different rates based on the hour
and day of the week. For example, you could set it so that ten patients come in at noon on a weekend as
opposed to only two patients at 3a.m. on a Wednesday.
The following image shows the settings available for Hourly Arrivals:

Each setting will be explained the in the following sections.

PCI
The PCI box helps you determine which types of patients should use the Hourly Arrivals pattern. The
Hourly Arrivals pattern is identical to the PCI box for the Inter-Arrival Times pattern. For that reason, see
Inter-Arrival Times - PCI for more information.

Arrival Spacing
The Arrival Spacing menu allows you to choose how much space should be in between patient arrivals.
The menu has three options:

Evenly spaced - The patients will arrive in regular intervals in a particular hour, evenly spaced out one
after another.
Randomly spaced - The patients will arrive at random intervals in a particular hour.
All at once - The patients will arrive all at once at the beginning of the hour.

Edit Hourly Arrivals Table


Clicking the Edit Hourly Arrivals Table button opens up the Hourly Arrivals schedule, as shown in the
following image:

208
The rows list all 24 hours in a day in military time and the columns list the seven days of the week. Each
cell represents the number of patients that will arrive each day during that particular hour.
When you double-click on a cell, you can type in a new number to change the number of patients arriving
that hour. You could possible also make it more complex by typing an expression for a random number
distribution. If you are comfortable with FlexScript, you could also create your own custom code in each
cell.

209
Appointments
Check the Activate Appointments box if you want patients to schedule an appointment and arrive at their
scheduled appointment times.
The following image shows the settings available for Appointments:

Each setting will be explained the in the following sections.

Variability
You can use the Variability box to build some randomness into how early or late patients arrive for their
scheduled appointments. You can either use a specific mathematical distribution or type a custom
expression.
If you click the arrow next to the Variability box, a menu opens listing some of the different methods you
could use to change the how much variability there is between the scheduled appointment and the
patient's actual arrival time. You will most likely not use any of these options, so they will not be explained
in this section of the User Manual. You will probably only use the first option: Choose a statistical
distribution.
If you select Choose a statistical distribution, it will open the Distribution Chooser tool. The Distribution
Chooser will help you select the appropriate statistical distribution that will randomly calculate how early or
late a patient arrives for their scheduled appointment. It will also help you to select the appropriate
parameters for your statistical distribution. When you're done using the Distribution Chooser, it will create
an expression based on the options you selected. See Distribution Chooser for more information about this
tool.
You can play around with different settings in the Distribution Chooser for creating variability in patient
appointment arrivals. For now, here's some sample code you can use type in this box:
-15 + normal(15,5.5,1)
This code makes it so that patients will randomly arrive somewhere between 15 minutes early or late to
their scheduled appointment. It uses the Normal statistical distribution (which is like a bell curve) so that the
majority of patients will appear roughly around the time they are scheduled to arrive, but a few could arrive
very early or late.

Repeat Interval
Use the Repeat Interval box to determine how frequently the appointment schedule should be repeated.
For example, if you create a schedule for a single day that you want to repeat on a daily basis, you would
indicate how frequently the schedule should be repeated here.
Because FlexSim HC measures time in minutes, you'll have to enter the time in minutes here. So, for
example, if you want a daily schedule to repeat every day, type 1440 in this box. (There are 1,440 minutes
in a single day.) To repeat an interval every 5 days, use 7,200.

210
Edit Appointments Table
Clicking the Edit Appointments Table button opens up the Appointments schedule, as shown in the
following image:

Each row represents an appointment. To add or subtract appointments, use the Rows box to increase or
decrease the number of rows in the table.
The first column is the Appointment Time. You can click on each cell in the Appointments Time column to
type in a different appointment time. Appointment times are formatted with days, hours, and minutes---each
separated by a colon. Monday is treated as day 1 and the hours use military time. For example, if you
wanted to create an appointment at 4:15p.m. on a Wednesday, you would format it as 03:16:15.
The second column is the PCI column. If you double-click one of the cells in this column, you can change
which type of Patient will be scheduled for this appointment. You should only use the numbers that
correspond with the PCIs that you created in the Patient Classification Tool. See Inter-Arrival Times - PCI
for more information..
The third column is the Actual Arrival Time. This column is not editable and is only here for display
purposes. If you want to create a discrepancy between the scheduled appointment time and the actual
arrival time, you should use the Variability box.
Lastly, if needed, you can add additional Label columns. You could possibly use labels to assign a patient
to a particular physician, for example. These labels should correspond with labels that you've created in the
Patient Classification Tool. See Creating Patient Classification Systems for more information about labels.

211
Custom Arrivals
Check the Custom Arrivals box if you want a variety of different types of patients to arrive at different
rates based on the hour and day of the week. The Custom Arrivals pattern is very similar to the Hourly
Arrival pattern, but it allows you to create different arrival patterns for different types of patients (PCIs).
The following image shows the settings available for Custom Arrivals:

Each setting will be explained in the following sections.

Repeat Interval
Use the Repeat Interval box to determine how frequently the custom arrival pattern should be repeated.
For example, if you create a schedule for a single day that you want to repeat on a daily basis, you would
indicate how frequently the schedule should be repeated here.
Because FlexSim HC measures time in minutes, you'll have to enter the time in minutes here. So, for
example, if you want a daily schedule to repeat every day, type 1440 in this box. (There are 1,440 minutes
in a single day.) To repeat an interval every 5 days, use 7,200.

Arrival Spacing
The Arrival Spacing menu allows you to choose how much space should be in between patient arrivals.
The menu has three options:

Evenly spaced - The patients will arrive in regular intervals in the specified time period, evenly spaced
out one after another.
Randomly spaced - The patients will arrive at random intervals in the specified time period.
All at once - The patients will arrive all at once at the beginning of the specified time period.

Edit Custom Arrivals Table


Clicking the Edit Custom Arrivals Table button opens up the Custom Arrivals table, as shown in the
following image:

212
Each row represents a specific period of time. To add or subtract periods of time, use the Rows box to
increase or decrease the number of rows in the table.
The first column is the Start Time. Double-click on the cells in this column to define the beginning of a
period of time. Periods of time are formatted with days, hours, and minutes---each separated by a colon.
Monday is treated as day 1 and the hours use military time. For example, if you wanted to create a period
that begins at 4:15p.m. on a Wednesday, you would format it as 03:16:15.
The second column is the End Time. Double-click on the cells in this column to define the end of a period
of time. These cells use the same formatting as the cells in the Start Time column.
The third column is the Number of Arrivals. Each cell represents the number of patients that will arrive
each day during that specified time period. When you double-click on a cell, you can type in a new number
to change the number of patients arriving that time period.
The last column is the PCI column. If you double-click one of the cells in this column, you can change
which types of patients will arrive during this period of time. You should only use the numbers that
correspond with the PCIs that you created in the Patient Classification Tool. See Creating Patient
Classification Systems for more information about creating different PCIs.

Duplicating periods of time

One nice thing about this table is that you can create duplicate periods of time.
This way you can create different arrival schedules for different PCI types who will
arrive during the same period of time.

213
The Distribution Chooser
Many different settings in FlexSim HC use the Distribution Chooser tool. Since it used extensively by many
of the Patient Arrival patterns, this chapter will describe how to use this tool in that context.

About the Distribution Chooser


When people use the word random to describe something, they often mean that it is chaotic and lacks a
clear, predictable pattern. However, statistical mathematicians have found that many seemingly random
events actually can be predicted with a certain degree of probability. For example, you might feel that the
rate at which patients arrive at a walk-in clinic is truly random, but there might actually be an underlying
pattern at work that isn't noticeable until you examine it statistically. Or it's possible that the amount of time
it takes to complete a particular medical procedure is highly variable, but there could be an underlying
patterns at work there too. For example, there is likely a minimum and/or maximum amount of time it takes
to complete the procedure. And you might find that 40% of the time, the procedure is finished within 5-10
minutes while 60% of the time it is finished in 10-20 minutes.
You can use the Distribution Chooser to possibly create some variability in:

How frequently patients arrive at your model, including whether they are early or late for their
appointments
The amount of time it takes to complete a particular process such as medical procedures, phone calls,
paperwork, etc.
The frequency that medical equipment breaks down and needs repair
The random unavailability of staff due to sickness or getting pulled away to work on projects for other
departments

The Distribution Chooser will help you select the appropriate statistical distribution that will randomly
calculate how much time will elapse between patient arrivals. It will also help you to select the appropriate
parameters for your statistical distribution. When you're done using the Distribution Chooser, it will create
an expression based on the options you selected.
You can also use ExpertFit to help analyze statistical data that you've gathered to determine which kind of
statistical distribution you should select using the Distribution Chooser.

Using the Distribution Chooser


Various settings that show up in the Quick Properties pane have a pull-down menu that gives an option
called Choose a statistical distribution. When you choose this option, it will open the Distribution
Chooser tool, as shown in the following image:

214
The Distribution Chooser allows you to select from many possible statistical distributions to generate
random numbers. You can change the settings for each statistical distribution so that it uses different
criteria or ranges of numbers to generate the random numbers. When you make changes to the settings,
the blue bar graph will update to display the probabilities that certain numbers will be generated.
In the Distribution Chooser, you can click the Distribution menu to select from many possible statistical
distributions. A few commonly used distributions are:

Bernoulli - Randomly generates one of two different numbers, kind of like a coin toss.

Exponential - Numbers at the low end of the distribution scale are more likely to be generated at
random.

Normal - Has a distribution strategy similar to a bell curve in which numbers in the middle of the
distribution scale are more likely to be generated at random.

Triangular - Similar to the normal distribution strategy, but has a greater range of numbers in the
middle of the distribution scale that are more likely to be generated at random.

Duniform and Uniform - Will randomly select numbers within a specific range. The only difference is
that duniform uses integers (e.g. whole numbers, no decimals) and uniform can use any number.

Each distribution method has a unique set of parameters that you can customize. These parameters are
located underneath the Distribution menu. You can try experimenting with different parameters to get
different statistical outcomes.
The bottom half of the Distribution Chooser contains a bar graph. The graph visually represents the
probability of a certain number being randomly generated by this distribution method. The bottom numbers
show the amount of time in minutes and the blue bars show the probability that those numbers will be
randomly generated. For example, in the preceding image, there is a high chance there will be 100 minutes
in between patient arrivals while there will be a low chance that there will be 75 minutes in between patient
arrivals.
After closing the Distribution Chooser, you'll notice that the box next to the menu will then be auto-
populated with a mathematical expression. The Distribution Chooser created that mathematical expression
based on the parameters you used. If you need to change these parameters, you can re-open the

215
Distribution Chooser at any time. To re-open the Distribution Chooser, click the Edit Parameters button
next to the box. You can also click the Code Edit button to write your own custom code if you are
comfortable using FlexScript. You can also edit the mathematical expression directly, but be aware that
this will make the Edit Parameters button unavailable.

216
Creating a Warm-up Period
You might want to create a warm-up period in your model. A warm-up period is a way of letting the model
run a little while before it actually begins. Warm-up periods can help you get more accurate data if you are
simulating a health care facility that is open constantly.
For example, imagine you are building a simulation model of a hospital ward. Because hospital wards
generally run 24 hours, 7 days a week, the simulation model would be inaccurate in the beginning while all
the patients were first beginning to arrive. But you can solve this problem by using a warm-up period. If you
create a warm-up period time, your model won't start collecting statistical data until the end of the warm-up
period, when it reaches a relatively normal, stable patient activity.
To create a warm-up period:

1. On the simulation control bar, click the arrow next to the Run Time box. This will open up a dialog box
where you can change the simulation's time settings, as shown in the following image:

2. In the Time of warmup period end box, type in what time you want the warm-up period to be
completed. Periods of time are formatted with days, hours, and minutes---each separated by a colon.
Monday is treated as day 1 and the hours use military time. For example, if you wanted to the warm-up
period to be complete at 4:15p.m. on a Wednesday, you would format it as 03:16:15.

3. Click OK to save your settings

When you reset and run your simulation model, it will still run during the warm-up period, but the simulation
statistics will reset after the warm-up period ends.

217
Routine Staff or Location Activities
After creating patient-centered activities for your simulation model, you might also want to simulate routine
staff or location activities that will run independently from the patients. For example, you might need to
simulate things such as staff schedules and shift changes, clerical work, janitorial work, or routine patient
care (such as checking vitals every hour).
You'll simulate these kinds of activities using three different tools, depending on your purpose, as explained
in the following table:

Tool Possible Activities

Staff schedules and shift changes


Shift Lunch breaks or other mandatory breaks
Schedules Equipment or location availability (e.g. making it so that a particular piece
of equipment or location is only available for use at specific times or days
of the week)

Global Staff meetings


Processes Routine patient care (such as checking vitals every hour)
Clerical work (such as answering phone calls)
Janitorial work

Random Occasional equipment break-downs


Interrupts Staff members who are occasionally unavailable at random times (such
as being asked to work on responsibilities for another department)

All of these independent activities could affect what happens in the simulation model and it might be
valuable to simulate them, depending on your simulation goals.

218
The Shift Schedules Tool
You can use the Shift Schedules tool to create shift schedules and break schedules for staff groups or
individual staff members. Additionally, you can also use the shift schedule tool to determine the hours that
a particular location, piece of medical equipment, or transport will be unavailable.
Each schedule resembles a spreadsheet where you can mark the time slots that a particular resource will
be available, off schedule, on lunch, or on break.
A few things to keep in mind about shift schedules:

You can create multiple schedules for your model

You can assign an entire resource group to a particular schedule or you can assign group members to
a schedule individually

You can assign locations or areas to a schedule, but they can only be listed as either available or off
schedule

Resources or locations can be assigned to more than one schedule if needed

The rest of the topics in this section will discuss how to use the Shift Schedules tool.

219
Adding and Managing Schedules
Each schedule resembles a spreadsheet where you can mark the time slots that a particular resource will
be available, off schedule, on lunch, or on break.
You'll edit schedules using the Shift Schedule tool. You can access the Shift Schedule tool using the
Toolbox. The Shift Schedule tool uses the tool components feature. This means that you will use the
Toolbox to create, rename, delete and create a duplicate copy of each schedule. (See Using the Toolbox
and Toolbar for more information.)
To create your first schedule:

1. If needed, click Toolbox on the toolbar to open the Toolbox in the left pane.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Shift Schedule. This will create a new patient track named Schedule1 in the Toolbox and will
open up the newly created track in the Shift Schedule tool.

Now you can begin editing the schedule, which will be discussed in the rest of the topics in this chapter.

220
The Shift Schedules Tool at a Glance
The Shift Schedule tool is the main tool you will use to create schedules for staff and locations. The main
elements of the Shift Schedule tool are labeled in the following image:

Each element will be explained in more detail in the following sections.

Tabs
At the top of the tool is a tab for each schedule that is currently open. (See Opening and Closing a Tool
Component for more information about opening the Shift Schedule Tool in the Toolbox.) The schedule that
is currently active will be highlighted in blue. (See Arranging Windows and Tabs for an explanation of how
you can change the display options for this tool window.)

Quick Properties
You can use the Quick Properties pane to edit the settings for this particular schedule:

221
Member Type - Use this pull-down menu to determine whether the schedule should apply to either
locations or resources (staff, transports, or equipment). By default, Resource will be selected from this
list, meaning that this schedule will only apply to staff members or other resources. If you want to
create a schedule for locations instead, you should select Location from this menu. Be aware that
once you add a resource or location to the Member List, this schedule will automatically become
locked as either a Resource or Location member type.

Break Option Settings - If you click the Break Option button next to the Member Type menu, you
will be able to edit the settings for each break option. The Break Option settings will be different
depending on whether you selected Resource or Location from the Member Type menu. (See Break
Option Settings and Location Break Option Settings for more information.)

Member List - Use the settings underneath the Member Type menu to assign specific resource
groups, resource group members, locations, or areas to this schedule. (See Adding Staff or Resources
to a Schedule for more information.)

The Triggers and Advanced settings in the Quick Properties pane will not be discussed in depth in this
version of the User Manual. In general, you can use the Triggers settings to change the attributes of the
resources or locations when they are unavailable. If you are comfortable with FlexScript, you can use the
Advanced settings to modify the code for the behavior of members when they go on or off break. If you
would like more information about these settings, please contact FlexSim Customer Support.

Schedule Table
The schedule table is used to apply different break options to a specific time slot. Each row represents a 15
minute increment of time, beginning at midnight and listed in military time. Each column represents a
specific day of the week.
You can select a single cell or a group of cells and then choose which break option should apply to those
cells. Select the appropriate break option and then click the Apply button. The cells will now display the
break option you just selected.
If the resources or locations are available at a given time slot, the cell will be blank. Otherwise, the cell will
list one of the other break options that have been applied to that time slot.

Break Options
When you select a cell or a group of cells in the Schedule Table, you can choose which break option
should apply to those time slots. If you choose Available, the staff or location will be available to work on
an activity during those time slots. If you choose one of the other break options, they will not be available
during that time (except under certain conditions).
The break options will be different depending on whether you selected Resource or Location from the
Member Type menu in Quick Properties.
Locations only have the Available and Off Schedule break options. See Location Break Option Settings
for more information about how to change what happens to a location when it is off schedule.
Resources (staff members, transports, or equipment) have the following break options:

Available
Off Schedule
Lunch
Break 1

222
Break 2

You can use these break options to indicate what type of break a staff member is on. You can determine
the behavior of the staff while they go on different types of breaks by using the break option settings. (See
Resource Break Option Settings for more information.)

223
Adding Staff or Resources to a Schedule
If all the staff or resources in your simulation model will use the same schedule in your simulation model,
you will only need to create one schedule and assign all the resources to it.
However, if you want to build a more complex schedule system and assign different staff members to
different schedules, you might want to put a little thought into the best method for building your scheduling
system.
There are basically two strategies for building a complex schedule system:

Assign different schedules to individual resource group members - You can create different
schedules and assign individual group members to those schedules. For example, if you have one
group of nurses with four members, you could assign two of the nurses (Nurse_Jane and Nurse_Joe)
to one schedule and the other two nurses (Nurse_Anne and Nurse_John) to another schedule.

Assign schedules to different resource groups - You can create multiple resource groups and
assign the entire group to that schedule. For example, you could create two different groups of nurses
(Nurses1 and Nurses2) and assign the different groups to two different schedules.

The strategy you use should be based on your simulation goals. Be aware that if you create different
resource groups, it could possibly mess up the Staff Requirements for certain activities. One way to get
around this problem is to create Alternate Groups for different shift schedules. See Creating Alternate
Resource Groups for more information.

Adding Resource Groups or Group Members


To add a new resource group or group member:

1. Open the schedule to which you want to add a group member. (See Opening and Closing a Tool
Component for more information about opening the Shift Schedule Tool in the Toolbox.)

2. In Quick Properties, under Members, make sure that Resource is selected in the Member Type
menu.

3. Click the Plus sign underneath the Member Type menu. This will open up a sub-menu listing all the
resource groups that currently exist in your model.

4. Select the name of the resource group you want to use. This will open up another sub-menu that lists
the name of the resource group at the top of the menu. It will also list all of the individual group
members who belong to that resource group.

5. At this point, you have a choice to make. You can click the name of the resource group if you want to
assign any member of that group to this activity. Or you could click on a specific group member to
assign that group member to this activity.

When you are finished, the resource group or group member should appear in the Member List. This
schedule will now apply to any resource listed in the member list.

The Eyedropper

224
You can use the Eyedropper tool to select the resource you want to use by
clicking on it in your simulation model. See Eyedropper for more information.

Removing Resource Groups or Group Members


To remove a resource group or group member:

1. Open the schedule from which you want to remove a group member. (See Opening and Closing a Tool
Component for more information about opening the Shift Schedule Tool in the Toolbox.)

2. In Quick Properties, under Members, click the name of the resource group or group member you
want to remove from the Member List. Clicking the name will highlight it.

3. Click the Delete button above the Member List.

The resource group or group member should no longer appear in the Member List.

225
Resource Break Option Settings
The Shift Schedule tool has five different break options for resource groups:

Available
Off Schedule
Lunch
Break 1
Break 2

When a staff member's schedule indicates they are Available (represented by a blank cell for that time
slot), that staff member will be available to be assigned to an activity. You can customize the settings for
the other four break options so that staff members will behave differently depending on the type of break
their schedule says they should be on. For example, you can change the conditions that determine
whether the staff member can begin their break, whether the staff can be taken off break early, etc.
To edit the resource break option settings, open the schedule you want to edit in the Toolbox. (See
Opening and Closing a Tool Component for more information about opening the Shift Schedule Tool in the
Toolbox.) Then in Quick Properties, click the Break Option button next to the Member Type menu.
This will open up the Scheduled Break Options dialog box, as shown in the following image:

You can use the default settings (shown in the previous image), or you can customize the settings.
Each of the settings will be discussed in the following sections.

Break Condition
The Break Condition setting allows you to determine if the break should be skipped under certain
conditions. The default is that the break will always occur. If you are comfortable with FlexScript, you can
type in a custom expression here to determine the conditions under which the break will occur. Be aware
that the expression should return either a true or a false value (true means they will take the break, false
means they will not take the break). If the expression is false, the staff member will skip the break entirely.

226
Priority
You can type a different number in the Priority box to change the priority level for this type of break. The
priority levels for breaks are the same as the priority levels for any other activity that a staff member could
be assigned to work on. Make sure you read and understand Staff and Resource Priorities before changing
the default priority settings.
Keep in mind that if this break has a higher priority level than other possible activities that the staff member
could work on, the staff member will not work on those activities until after the break is complete. If the
break has a higher priority level that is in a higher tier, the staff member will actually stop working on their
current activity and leave to go on break. For that reason, you should think carefully about what priority
level this break should have.

Variance
The Variance box can be used to change the amount of time the break will take, meaning that the staff
member might take less than or more than the full amount of time specified in the schedule. You can enter
a positive or negative number in this box or you can use a mathematical distribution to make the length of
the break vary randomly.
For example, if your staff member was scheduled to take a break from 9:00 to 9:15 and you typed a 5 in
this box, the break would end 5 minutes after the scheduled time slot, at 9:20. Keep in mind that variance
affects the actual duration of the break, not the specific times. If a staff member starts the break late (such
as at 9:05 in this example), the break would finish at 9:25.
You can click the pull-down menu next to this field and select Use an expression and then Choose a
Distribution to make the duration of the break slightly random. This will open up the Distribution Chooser
tool, which can help you choose a mathematical distribution strategy for creating random numbers. (See
the Distribution Chooser for more information.)

Max Delay
The Max Delay box allows you to determine how much time (in minutes) should pass before the staff
member skips this break entirely.
Many times, staff members will not go on a break until they are finished with their current activities and any
other activities that have a higher priority than the break. If you leave the Max Delay box empty (which is
the default), they will go on break any time once they are finished with the current activity and higher
priority activities.
If you type in 15, for example, then if the staff members do not finish their current activity or higher priority
activities within 15 minutes of their scheduled break time, the staff member will skip this break and keep
working.

Break Location
The Break Location box determines where the staff members will go while they are on their break. By
default, they will return to the colored rectangular square on the floor of the simulation model that
represents their primary resource group.
However, you can select any location object you've added to your model as their location instead. Click the
pull-down menu and use the menu options to choose the appropriate location.

227
If you choose CURRENT_LOCATION from the pull-down menu, the resource will remain in whatever
location they are in when the break begins and will not travel anywhere.

The Eyedropper

You can use the Eyedropper tool to select the location you want to use by
clicking on it in your simulation model. See Eyedropper for more information.

Allow Preemption
If the Allow Preemption check box is checked, it will be possible for the staff member to be forced to end
their break early and go work on any activities that are in a higher tier. This will be based on the priority
level you used in the Priority box and the priority level for other activities requesting this resource. (See
Staff and Resource Priorities for a deeper explanation of the priority levels and preemption.)
If the Allow Preemption check box is clear, staff members will never be pulled away from their break. You
should consider keeping this box clear for the Off Schedule break option, which is intended to be used for
staff members who are off-site.

Full Break After late Start


If you check the Full Break After Late Start check box, the staff members will take the normal time
allotted for their break regardless of what time the break began. So, if the break was scheduled to be 15
minutes long, the staff member will take the full 15 minutes no matter what time the break actually begins.
If the Full Break After Late Start check box is cleared, the staff members will only take the remainder of
the time allotted for their break regardless of when the break begins.

228
Adding or Removing Locations and Areas from a
Schedule
The process for adding or removing locations and areas from a schedule is identical to the process
outlined in Adding or Removing Staff from a Schedule. The only difference is that you should make sure
you select Location in the Member Type menu in Quick Properties.

229
Location Break Options Settings
Locations only have the Available and Off Schedule break options in the Shift Schedule tool. When a
location's schedule indicates it is Available (represented by a blank cell for that time slot), that location will
be available to be assigned to an activity. You can customize the break option settings that determine how
the location or area will change when it is listed as Off Schedule.
To edit the resource break option settings, open the schedule you want to edit in the Toolbox. (See
Opening and Closing a Tool Component for more information about opening the Shift Schedule Tool in the
Toolbox.) Then in Quick Properties, click the Break Option button next to the Member Type menu.
This will open up the Stop Object Flow dialog box, as shown in the following image:

This dialog box allows you to determine what will happen to the location when it is off schedule. In other
words, it will determine whether the location can continue receiving patients and/or sending the patient's
currently at that location to another location. The following options are available:

Close Inputs - The location will stop receiving patients or items.

Close Outputs - The location will stop sending patients or items and will instead keep them at this
current location.

Close Inputs and Outputs - The location will stop receiving and sending patients or items.

Stop Arrivals - If a Patient Arrival object is added to this schedule's member list, that Patient Arrival
object will not create new patients at this time. This is particularly useful if you are using the Patient
Inter-Arrival Pattern. See Introduction to Patient Arrival Patterns for more information.

Stop Object - This object will stop receiving and sending patients or items and will also stop processing
the patient or item.

230
The Global Processes Tool
Before reading this chapter, you should make sure you are familiar with the concepts discussed in the
chapter about Patient-Centered Activities.
You can use the Global Processes tool to simulate:

Staff meetings
Routine patient care (such as checking vitals every hour)
Clerical work (such as answering phone calls)
Machine maintenance or janitorial work that will occur periodically over time

In FlexSim HC, these kinds of activities are called global processes because they are not patient-centered
but are rather based will occur periodically or at regular intervals while while a simulation model runs. In
other words, these kinds of activities are not controlled by what the patient does and occur globally while
the entire simulation model is running.
Fortunately, the Global Processes tool is functionally identical to Patient Track Manager. Nearly all of the
same concepts apply. So once you know how to create patient-centered activities, it will be relatively easy
to learn how to make global processes. There are only a few key differences, as illustrated in the following
table:

Patient Track Manager Global Processes Tool

Activities are patient-centered, Processes are independent of patients, meaning they are
meaning they are controlled by the controlled by other events within the simulation model
patient's arrival and actions inside such as the passage of time.
the simulation model, etc.

Activities may or may not require a Processes almost always require a staff member
staff member

Activities begin when a patient Processes begin when a certain amount of time has
arrives in the simulation model or passed in the simulation model or when another event in
when another activity in the patient the model causes the process to begin. They could also
track finishes possibly begin as soon as the model starts.

Once an activity in the activity list is Processes can be repeated on a routine basis
complete, it usually cannot be
repeated by the same patient.

Activities rarely use the Advanced Processes frequently use the Advanced Activity settings
Activity settings, such as Advanced

231
Functions and Advanced Time
Controls

Because the Global Processes tool functions in a manner that is nearly identical to the Patient Track
Manager, the rest of the topics in this section will not explain how to use the Global Processes tool in great
detail (except for Adding and Managing Processes). Rather, the bulk of this chapter will give you some
examples of how to build a few of the commonly used global processes. Hopefully these examples can
give you a sense of how the global processes work and inspire you to create some of your own.

232
Adding and Managing Processes
You can think of a global process as being identical to a patient track in the Patient Track Manager.
You'll edit global processes using the Global Process tool. You can access the Global Process tool using
the Toolbox. The Global Process tool uses the tool components feature. This means that you will use the
Toolbox to create, rename, delete and create a duplicate copy of each process. (See Using the Toolbox
and Toolbar for more information.)
To create your first global process:

1. If needed, click Toolbox on the toolbar to open the Toolbox in the left pane.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Global Processes. This will create a new process named Process1 in the Toolbox and will open
up the newly created process in the Global Processes tool.

Now you can begin adding activities to the global process, which is nearly identical to the method you
would use to add and edit activities using the Patient Track Manager.

233
Process Example 1: Checking Patient Vitals
Imagine you are simulating a hospital ward and you want to simulate a nurse checking the vital signs for all
the patients in an area. Let's say you want a nurse to check them once in the morning around 8:00a.m.,
again at midday (12:00p.m.), and finally in the afternoon (4:00p.m.). The following steps discuss how you
would create this kind of global process:

1. Create a new global process and open it in the Global Processes tool. (See Adding and Managing
Processes for more information.)

2. In the activity list, select Activity 10, the default first activity.

3. In Quick Properties, under Activity Properties, click the Activity Type menu and select Custom.

4. Change the Activity Name to 10_Morning Vitals Check.

5. In the Predecessors group, clear the Use Predecessors check box. You would only use this option if
you want the process to begin immediately when the simulation model starts. (See Predecessors for
more information.)

6. In the Processing Time box, type 3. This will represent the 3 minutes that will transpire while the nurse
is checking each patient's vital signs. In other words, every time the nurse checks a patient, it will take
3 minutes to do so. When a nurse checks another patient, it will take another 3 mintues and so forth.
(See Processing Time for more information.)

7. In Staff Requirements, click the Plus button to add a new Staff Requirement row. Use the eyedropper
or the menu to select the appropriate staff resource group that should be assigned to work on this
activity. If needed, you can change the priority to a different number besides the default of 150. (See
Staff Requirements for more information.)

8. If needed, you can add any necessary pieces of equipment to the Equipment Requirements. (See
Equipment Requirements for more information.)

9. In the Advanced Function group, next to the Activity Started Trigger, click the Properties button
to open the Trigger Editor, as shown in the following image:

10. Click the Add new trigger instruction button. A menu will pop up with a few different trigger options.

11. Select Patient Rounds. This will open up a box explaining how to change the Patient Rounds settings.

12. In the Number of Locations line, change the blue number 2 to the number of location objects you
want the nurse to visit. For example, let's imagine we want the nurse to visit four possible beds in the
BedArea. We would change the 2 to 4.

13. In the Location list line, you will need to type out the names of each location you want the nurse to
visit. Each location should be separated by a comma with no spaces in between. For example, we

234
would change it to Bed1,Bed2,Bed3,Bed4. See the sidebar about Viewing Location Object Names
in the following section.

14. You will not need to edit any other lines in the editor.

15. Click OK to close the Trigger Editor and save your changes.

16. In Quick Properties, under Advanced Time Controls, in the Start Time box, type 01:08:00. This
will start the global process at 8:00 am on a Monday. (See Advanced Time Controls for more
information.)

17. In the Repeat Interval box, type 1440. This means that the activity will repeat every 1,440 minutes. In
other words, it will be repeated every day at 8:00a.m. If you wanted to repeat this activity every hour,
you would type 60 instead. NOTE: You could alternatively use the Activity Finished trigger to set the
amount of time that the activity should restart again.

To create the midday and afternoon vital signs checks, you would add two new activities to the global
processes. Re-name one 20_Midday Vitals Check and the other 30_Afternoon Vitals Check. For the
midday check (activity 20), you would set the start time as 01:12:00. For the afternoon check (activity
30), you would set the start time at 01:16:00.

Viewing Location Object Names

To view the names of various location objects in your model, go the FlexSim
Library. Under Patient Locations, right-click Processing to view a list of all the
Patient Processing areas in your model. Click any area to view the names of the
location objects in that area.

235
Process Example 2: Phone Call Answering System
Imagine you wanted to simulate a health care facility where patients will call to make appointments or to
ask follow-up questions about the treatment they received. Let's say you want the staff members in the
Receptionists group to primarily be in charge of answering the phones. But you might also want members
of the Nurses group to answer the phone if the members in the Receptionist group are too busy to take a
phone call.
First, you would need to create an alternate group to be in charge of answering the phones. (See Creating
Alternate Resource Groups for specific instructions about creating an alternate group.) You could possibly
name this group Phone_Call_Group. Add the Receptionists and Nurses groups to the Phone_Call_Group
(in that order because the order matters). Make sure you list the Receptionists group first in the alternate
group so that they will be the first group assigned to answer the call. Members of the Nurses group will only
answer the phone if there are no Receptionist group members available to do so.
Second, make sure you have added a Phone object to the simulation model. Phones can be found in the
Library in the Patient Locations group under the Processing category.
Now it's time to create the global process:

1. Create a new global process and open it in the Global Processes tool. (See Adding and Managing
Processes for more information.)

2. In the activity list, select Activity 10, the default first activity.

3. In Quick Properties, under Activity Properties, click the Activity Type menu and select Process.
(This should already be the default.)

4. Change the Activity Name to 10_Incoming Call.

5. In the Predecessors group, make sure the Use Predecessors check box is checked. This will make
sure this activity begins immediately when the simulation model starts. (See Predecessors for more
information.)

6. In the Processing Time box, you can use an expression to randomly simulate the amount of time
needed to handle the phone call. For example, you could type the expression T(1,5,3,1). This
expression uses the Triangular distribution method to create a random amount of time. 1 represents
the minimum amount of time a phone call will take (1 minute). 5 represents the maximum amount of
time a phone call will take (5 minutes). 3 represents the mode, which means that 3 will be the most
common number that is randomly generated. In other words, most phone calls will take 3 minutes to
handle. 1 tells the system to use FlexSim's first random number stream in this simulation. (See the
Distribution Chooser for more information about how random numbers are generated in FlexSim. Also
see Processing Time for more information generally.)

7. In Staff Requirements, click the Plus button to add a new Staff Requirement row. Click the pull-
down menu next to the row to open the menu of available staff resources. Click Choose a specific
resource, then Alternate Groups, then select Phone_Call_Group. If needed, you can change the
Priority to a different number besides the default of 150. (See Staff Requirements for more
information.)

8. In Staff Destination, use the eyedropper or the menu to select the Phone object as the location for this
activity. (See Staff Destination for more information.)

9. In the Advanced Time Controls group, you can type an expression in the Repeat Interval box to
randomly simulate the time that will elapse between phone calls while the simulation model is running.

236
For example, you could type the expression T(6, 20, 12, 1) in this box. This expression uses
the Triangular distribution method to create a random amount of time. 6 represents the minimum
amount of time between phone calls (6 minutes). 20 represents the maximum amount of time between
calls (20 minutes). 12 represents the mode, which means that 12 will be the most common number
that is randomly generated. In other words, there will be 12 minutes between phone calls. 1 tells the
system to use FlexSim's first random number stream in this simulation. (See the Distribution Chooser
for more information about how random numbers are generated in FlexSim.)

When you run the simulation model, you should notice that the one of the members of the Receptionists or
Nurses group will sometimes move to the Phone and will be unavailable to help a patient or work on
another activity until the phone call is finished.

237
Process Example 3: Staff Meetings
Imagine you want to simulate a half hour long staff meeting for all employees that will occur every Tuesday
at 8:30am before a clinic officially opens at 9:00am.
To create this global process:

1. Create a new global process and open it in the Global Processes tool. (See Adding and Managing
Processes for more information.)

2. In the activity list, select Activity 10, the default first activity.

3. In Quick Properties, under Activity Properties, click the Activity Type menu and select Process.
(This should already be the default.)

4. Change the Activity Name to 10_Staff Meeting.

5. In the Predecessors group, clear the Use Predecessors check box. You would only use this option if
you want the process to begin immediately when the simulation model starts. (See Predecessors for
more information.)

6. In the Processing Time box, type 30. This will represent the 30 minutes that will transpire while the
meeting is taking place. (See Processing Time for more information.)

7. In Staff Requirements, click the Plus button to add a new Staff Requirement row. Click the pull-
down menu next to the row to open the menu of available staff resources. Use the eyedropper or the
menu to select an individual staff member in your model. If needed, add additional Staff Requirement
rows by clicking the Plus button to add additional staff members until every staff member has been
added. If needed, you can change the Priority to a different number besides the default of 150. (See
Staff Requirements for more information.)

8. In Staff Destination, use the eyedropper or the menu to select the appropriate location in the
simulation model where the meeting should take place. (See Staff Destination for more information.)

9. In Quick Properties, under Advanced Time Controls, in the Start Time box, type 02:08:30. This
will start the global process at 8:30 am on a Tuesday. (See Advanced Time Controls for more
information.)

10. If your simulation model will run for longer than a week, you can use the Repeat Interval setting to
repeat the meeting every week. In Quick Properties, under Advanced Time Controls, in the Repeat
Interval box, type 10080, the number of minutes in a given week. Now the meeting will occur every
week.

When you run the simulation model, you should notice that all the staff members will move to the
designated meeting location at 8:30 on Tuesday.

238
The Random Interrupts Tool
The Random Interrupts tool is used to simulate the occasional random break-down of a machine or piece
of equipment.
The Random Interrupts tool will not be discussed in this version of the User Manual. If you would like more
information about this tool, please contact FlexSim Customer Support.

239
Running a Simulation
Once you've built the layout of your facility, set the appropriate patient arrival pattern(s), and created your
patient tracks and activities, you're ready to run your simulation. This topic will provide a high-level
overview of what happens when a simulation is running from start to finish. The rest of the topics in this
chapter will discuss the specific details of running a simulation in more depth. It will also discuss some best
practices to follow when running a simulation.

Overview
Running a simulation means that patients will begin to arrive at the facility and will start interacting with
staff and other objects in your simulation model. You will be able to visually see the patients and staff as
they move through the model. As your simulation runs, you will also be able to collect data about the model
that will help you to analyze and optimize your health care system. (See the chapter entitled Getting Data
from the Simulation for more information about data collection).
To run a simulation, you'll use the simulation control bar. (See Using the Simulation Control Bar for more
information.) When you're ready to begin the simulation, you will press the Reset button to refresh the
model. Then you will press the Run button to start the model running. (See Run Control Buttons for a more
detailed explanation of these buttons.)
By default, all simulations will begin on a Monday at midnight (01:00:00) and will end seven days later on
the following Monday at midnight (08:00:00). See Run Time Tools for information about how to change the
date and time that the simulation starts and ends.
You can also change how quickly the simulation model advances by either using the Step button (see Run
Control Buttons) or by changing the simulation run speed (see Run Speed Tools for more information).
While the simulation begins running:

1. The patients will begin to arrive at the health care facility using the patient arrival pattern(s) you set for
your Patient Arrival objects. (See Patient Arrivals and Appointments for more information.)

2. After arriving in your simulation model, patients will begin the first activity on their patient track. Patients
will proceed through all the activities on the activity list until they exit the simulation model.

3. If you have created any global processes for your staff members, they will begin working on those
global processes while the model is running.

4. This process will repeat itself until the simulation model is set to finish running.

Patient Identification

While your model runs, each patient that arrives in the simulation model will be
assigned a unique ID for tracking purposes. The ID will be based on: 1) the patient
track to which the patient is assigned, and 2) the order in which the patient arrived.
The first patient will be 1, the second will be 2, and so forth.

For example, the third patient to arrive for a track named Wellness would be identified
as Wellness_ID3.

240
Using the Simulation Control Bar
To run a simulation, you'll use the simulation control bar (also called the control bar for short), located
underneath the main menu and toolbar. The control bar contains most of the tools that you will need to run
your simulation model.
The control bar essentially has three different groups of tools you can use to control how your simulation
runs, as illustrated in the image below:

Each of these groups of tools will be discussed in the following sections.

Run Control Buttons


The Run Control buttons are the basic tools you will use to start and stop your simulation, as shown in the
following image:

These buttons are fairly intuitive to use since they closely resemble the playback controls on a media
player. However, a few of the buttons possibly work differently than you might expect. For that reason, you
should read the explanation of each button in the following table:

Button Keyboard
Icon Purpose
Name Shortcut

Reset Resets the simulation to the starting position and sets the time Ctrl + left
display (clock) on the run time tool to zero. It clears out any arrow
patients that are in the model and returns all resources to their
starting positions. You should always press the Reset button
when you are starting the simulation from its beginning.

Run Begins the model simulation. While the simulation is running, Ctrl + space
you'll notice that the time display on the Run Time tool will bar
begin to increase.

Stop Stops the model simulation. After pressing this button, the time Ctrl + space
display on the Run Time tool will stop increasing. bar

NOTE: It's probably better to think of the Stop button as


functioning more like a pause button that only temporarily

241
suspends the model simulation rather than ending it. If you
press the Run button again, it will resume running the
simulation from the point in time you pressed the Stop button
(unless you press the Reset button first).

Step Skips the model clock forward to the time of the next event that Ctrl + right
should occur in the model. The Step button essentially allows arrow
you to quickly skip through the events of the simulation one
event at a time.

NOTE: In more complex models that use global processes,


there might be several events scheduled to occur
simultaneously. If that is the case, there may be no visible
changes when you press the Step button.

Run Time Tools


The Run Time tools help you to monitor how much time has passed in the model. You can also use these
tools to determine when the simulation should start and/or stop running.

The model clock indicates how many minutes that have elapsed since the simulation started running.
FlexSim HC unfortunately doesn't have a method for changing the time display at this time.
By default, all simulations will begin on a Monday at midnight (01:00:00) and will end seven days later on
the following Monday at midnight (08:00:00).

Formatting Dates and Times

Periods of time are formatted with days, hours, and minutes-each separated by a
colon. Monday is treated as day 1 and the hours use military time. For example,
4:15p.m. on a Wednesday would be formatted as 03:16:15.

If you click the drop-down arrow to the right of the model clock, the start and stop time options will
appear. Using these options you can determine when the simulation should start or stop running:

Clock time for start of simulation - By default, all simulations will begin on a Monday at midnight. To
change the day of the week and/or time that a simulation begins, type a different time in this box. See
the previous tip box for an explanation about how format dates and times.

242
Time of warmup period end - Warm-up periods allow you to run the model a little while until the model
should reach a period of relatively normal, stable patient activity. For more information about this
setting, see Creating a Warm-up Period.

Clock time for end of simulation - By default, all simulations will end seven days later on the following
Monday at midnight. The model will stop when the model clock reaches the date and time entered in
this box. To change the day of the week and/or time that a simulation ends, type a different time in this
box. See the previous tip box for an explanation about how format dates and times.

Simulations Can Run Indefinitely

If you want a simulation to run without ending, you can leave the end time blank or
type 0. Also, when a simulation reaches its end time, it's more helpful to think of the
simulation as being paused rather than stopped. If you press the Run button on the
control bar again, the simulation model will continue running indefinitely.

Be aware that if you are using the Experimenter, you should always have a simulation
end time.

Run Speed Tools


The Run Speed tools allow you to change how fast the simulation will move while it is running, as shown in
the following image:

The model speedometer shows the current speed the simulation model is running. By default, models will
run at a rate of 3 simulation seconds per real-time seconds. You can make that number faster or slower
depending on how quickly you want to run the model.
You can use the slider button to manually adjust the run speed. Alternatively you can click on the drop-
down to open the speed options. You can select one of these options to change the speed. 1.00 will run
the model in real time, Maximum is the fastest speed, and Custom allows you to type the speed you
would like in the box below. 0.1 is the slowest custom speed you can set. Click the Set button to apply the
new custom speed settings.

Speed Control Shortcuts

You can use keyboard shortcuts to control the speed of the model. Ctrl+ the up
key will increase the speed. Ctrl + the down key will decrease the speed.

243
244
Preventing Simulation Model Errors
Sometimes when you run a model, you encounter strange problems or error messages that you don't know
how to fix. For example, you might find that a patient is stuck doing nothing somewhere in your model. The
following sections discuss a few things you should check before running your simulation model.

Are All Objects Connected and Destinations Specified?


Sometimes you'll notice that patients will get stuck in a particular location of the model and won't move on
to their next activity. This could be caused by one of three things:

The patient's current location and next location have not been connected in the Flowchart tool.
You did not assign a destination in either the Patient Destination or Staff Destination for that activity.
You have created network nodes that are not connected to the patient's next location.

Make sure that all your locations are connected in the Flowchart tool. See Connecting Locations and Item
Objects for more information.
Review all of your activities to make sure you have entered in an appropriate destination in either the
Patient Destination or Staff Destination settings for each activity.
Network Nodes are not explained in this version of the FlexSim User Manual. For help connecting network
nodes, please contact FlexSim Customer Support.

Have You Assigned Required Staff Members and Resources?


Many of the various activity types require you to assign staff members, transports, or equipment in order to
function properly. If you forget to assign these resources, you might get an error message that will cause
the simulation run to stop.
You might want to check any activities that use the activity types listed below to ensure you have added
the required staff and resources. (See Staff Requirements, Transport Requirements, and/or Equipment
Requirements for more information.)
Staff are required for:

Move Equipment > Process


Move Transport > Process
Escort Patient > Process
Transport Patient > Process

Transports are required for

Move Transport > Process


Transport Patient > Process

Equipment is required for:

Move Equipment > Process

245
Are the Predecessors Updated?
Before running your simulation, double-check that all your Predecessor settings are correct. (See
Predecessors for more information.)
By default, every new activity will have a check mark in the Use Predecessors box. With the exception of
the very first activity you create, every activity will list the previous activity in the activity list as its
predecessor.
Keep in mind that the Activity IDs listed as predecessors do not automatically update at any point after the
activity has been created. For that reason, when you change the Activity ID of any activity, you should
make sure you also change the Use Predecessors text box for any activities that list that activity as a
predecessor.
In that same vein, when you change the order that activities are listed in the activity list, you will need to
manually update the Use Predecessors text box for the affected activities.

246
Getting Data from a Simulation
Now that you've built your simulation model, it's time to begin collecting data from your simulation so that
you can optimize your health care facility.
There are a few different tools you can use to get useful data from a simulation:

Dashboards - You will use the dashboards to gather and display the statistics you are interested in
such as patient waiting times, length of stay, staff and location utilization, etc.

Experimenter - You can use the Experimenter to run your simulation model multiple times and see how
your results change if you change certain variables.

Saving and Exporting Data - Lastly, you can export any data you collect to an Excel spreadsheet or
CSV file.

The sections in this chapter will explain each of these tools and processes in more detail.

247
Statistics Dashboards
You will primarily use dashboards to gather and display statistics from your simulation. You could think of a
dashboard as being a blank canvas that you will fill with various widgets. A widget is a chart, graph, text, or
diagram that will display data about your simulation model. You can choose which widgets to display on
your dashboard based on the data you are most interested in analyzing.
Widgets on the dashboard are actually updated in real time while your simulation model is running. In other
words, you will be able to watch as the data displayed in each widget changes to reflect the latest
information that has been gathered from the simulation model.

Choosing the Right Widgets


In order to choose the right widgets to display on your dashboard, you need to determine what data you
want to gather. Think back to the simulation goals you identified when you were planning your simulation
model. Ask yourself what problem you are trying to solve in creating a simulation model. What data will be
the best help you to solve that problem?
A few of the more commonly used data points are:

How long are patient lengths of stay and wait times?


Are staff members, equipment, and/or locations being under or over used? How long are they idle and
how long are they busy?
How much does a particular procedure cost?
Where are patients spending the majority of their time? Is there a bottleneck somewhere in the system?
How much time has elapsed between one milestone to another?

Once you have a clear idea of what you want to measure in your simulation model, you should pick the
appropriate widgets that will gather and display the relevant data. See Widget Overview for an explanation
of the various widgets that are available.
If you don't find a widget that gathers the information you're interested in, you can use a Data Collector to
collect the relevant data and display it in a custom widget.

248
Adding and Managing Dashboards
You'll create statistics dashboards using the Dashboard tool. You can access the Dashboard tool using the
Toolbox. The Dashboard tool uses the tool components feature. This means that you will use the Toolbox
to create, rename, copy, and delete each dashboard. (See Using the Toolbox and Toolbar for more
information.)
To create your first dashboard:

1. Click Toolbox on the toolbar to open the Toolbox.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Dashboard. This will create a new dashboard named Dashboard in the Toolbox and will open
up the newly created track in the Dashboard tool.

Now you can begin adding widgets to the new dashboard. See Introduction to Widgets for more
information.

249
Introduction to Widgets
Once you've opened a dashboard, you'll notice that the Library (left pane) will change. It will no longer
show objects but will instead show a variety of widgets organized by category. If the Library doesn't change
immediately, try clicking inside the empty dashboard.
The following image shows a portion of the widget library:

The widget library is broken down into seven general categories based on functions and what type of
object they get data from:

Patients - Collect information based on patient behavior in the simulation model.


Locations - Collect information from location and area objects.
Resources - Gets data from resources (staff, equipment, and transports).
Item Objects - Generates statistics from item objects.
Model - Displays general information about the model such as the current date and time.
Model Controls - Adds buttons to control the model directly from the dashboard if needed.
User Defined - Used to add a custom widget that you created in the Data Collector tool.

See Widget Overview for an explanation of the various widgets that are available.

250
Adding Widgets
To add a widget from the Library to your dashboard:

1. Click on the widget and drag it into an empty spot on your dashboard.

2. A blank display box for the widget will appear on the dashboard and a dialog box will appear where you
can adjust the settings. Change the settings for the widget so that it gathers relevant data and visually
displays the data based on your preferences. (See Widget Settings at a Glance for more information.)

3. Click OK to save the changes and close the settings dialog box.

4. If needed, you can move or re-size the widget display box. (See Moving and Resizing Widget Display
Boxes for more information.)

If you need to change the settings later, simply double-click on the display box to open the settings dialog
box.
If you need to delete a widget, simply click on it and press the Delete key.

Widget Display

Even though the widget might be blank now, it will begin displaying information
once a simulation begins to run. The display will update and change in real time as
the simulation model runs until it is complete. If you reset a simulation model, it will
also reset the widget's display.

251
Moving and Resizing Widget Display Boxes
If needed, you can move or re-size the box that displays the widget, as shown in the following table:

Mouse
Task Instructions
Icon

Move the Move the mouse pointer to the edge of the display box. When the
display box pointer changes to a multi-directional arrow, drag the display box to
a new position.

Change the Move the mouse pointer to a black guiding box in the center of the
width left or right edge of the display box. When the pointer changes to a
horizontal double-headed arrow, drag the border to the right or left.

Change the Move the mouse pointer to a black guiding box in the center of the
height top or bottom edge of the display box. When the pointer changes to
a vertical double-headed arrow, drag the border up or down.

Change both Move the mouse pointer to a black guiding box in a corner of the
height and display box. When the pointer changes to a diagonal double-headed
width arrow, drag the border in any direction.

252
Widget Settings at a Glance
Every widget has a collection of settings that you can customize to gather and display the information you
want on your dashboard. When you add a widget, a dialog box with various settings will automatically
open. An example of a typical widget settings dialog box is shown in the following image:

Each group of settings will be explained in more detail in the following sections.

Display Box Title


The display box title affects the title that is displayed at the top of your widget. You can either use the
default title or type a custom title in this box.

253
Sample Sets
The sample sets determine which types of patients, resources, or item objects you want the widget to
gather data from. The sample sets that are available for you to choose will be based on the particular type
of widget you're using.
Widgets in the Patient category allow you to choose which types of patients you want to gather statistics
from based on their Patient Classification Index (PCI).
Some Location widgets allow you to can also gather statistics from different PCIs while others allow you to
gather statistics from areas.
Resource widgets allow you to choose the staff, equipment, or transports you want to get data from based
on their resource group.
Item Object widgets allow you to choose which item objects you want to get information from.
The Model and Model Control widgets do not us sample sets.

Reported Data Sets


The reported data sets are generally a group of checkboxes that allow you to further limit the states, areas,
resource groups, milestones, or cost types you want to track and display in the widget.
Check a specific checkbox to include the data from that object and clear the checkbox to ignore it.

Visual Display Settings


Using these settings, you can change the visual appearance of a widget. For example, you can choose
whether you want to display a bar graph, pie chart, line graph, text, etc. You can also choose the color
palette and other visual settings.

Experimenter Settings
The Experimenter settings are for use in conjunction with the Experimenter. See the section about the
Experimenter for more information.

Miscellaneous Settings
A few widgets have some additional miscellaneous settings that appear roughly below the reported data
set checkboxes.

254
Widget Overview
This section will provide a basic description of each widget, organized by category. Widgets are listed in
the order they appear in the Library.

Patients
The following table provides a description of each patient widget:

Sample
Widget Name Type of Data Collected Data Sets
Sets

Milestone Times The amount of time patients spend PCIs Any milestones you
doing an activity that has been assigned have added to an
a milestone. (See Milestones for more activity
information.)

Milestone to The amount of time that elapses from PCIs Uses pairs of any
Milestone Times the beginning or end of one milestone milestones you have
to the end of another. added to activities

State Times How long patients are in various states PCIs A variety of different
such as receiving direct care, waiting for possible patient states
a location or resource, etc.

Wait Times How long patients wait to use a PCIs Both areas and
particular location or resource resource groups you
have added to your
model

Throughput The number of patients that have exited PCIs Not available
the facility

Model Census The number of patients that are PCIs Not available
currently in the model

255
Left Without The number of patients who left the PCIs Not available
Being Seen model without receiving services
(LWBS)

Length of Stay The amount of time patients stay at the PCIs Not available
(LOS) facility

Costs The total fixed and/or variable costs for PCIs Fixed costs and
patients variable costs

Distance The total distance traveled by patients PCIs Not available


Traveled

Timeline A snapshot of the minimum and PCIs Not available


maximum amount of time a patient
spends doing each activity

Locations
The following table provides a description of each location widget:

Sample
Widget Name Type of Data Collected Data Sets
Sets

Throughput The number of patients that have exited PCIs Any areas you
a particular area have added to the
model

Census The number of patients that are currently PCIs Any areas you
in a specific area have added to the
model

Dwell Time The amount of time patients remain in a PCIs Any areas you
specific area have added to the
model

256
Processing State How long areas are in various states Areas A variety of
Times such as occupied, vacant, waiting for different possible
maintenance, etc. area states

Other State Times How long areas are in various states Areas Additional possible
such as interrupted, off schedule, etc. area states

Cumulative Patient The total amount of time areas are in Areas A variety of
Processing various states such as occupied, vacant, different possible
Utilization waiting for maintenance, etc. area states

Cumulative The total amount of time areas are in Areas Additional possible
Location Utilization various states such as interrupted, off area states
schedule, etc.

Resources
The following table provides a description of each resource widget:

Widget Name Type of Data Collected Sample Sets Data Sets

Staff State Times The amount of time staff Staff resource A variety of different
members are in various states groups possible staff states
such as performing a task, in
transit, waiting for a task, etc.

Equipment and The amount of time equipment Equipment and A variety of different
Transport State or transports are in various transport possible equipment
Times states such as utilized, idle, resource groups and transport states
interrupted, etc.

Costs The total cost of using any staff, Staff, equipment, Not available
equipment, or transport and transport
resources resource groups

257
Staff Utilization The total amount of time staff Staff resource A variety of different
members are in various states groups possible staff states
such as performing a task, in
transit, waiting for a task, etc.

Equipment and The total amount of time Equipment and A variety of different
Transportation equipment or transports are in transport possible equipment
Utilization various states such as utilized, resource groups and transport states
idle, interrupted, etc.

Staff Distance The total distance traveled by Staff resource Not available
Traveled staff members groups

Item Objects
The following table provides a description of each item object widget:

Widget Name Type of Data Collected Sample Sets Data Sets

Throughput The number of items that have Item Objects Not available
exited a particular item object

Content The number of items that are Item Objects Not available
currently at a specific item object

Dwell Time The amount of time items remain Item Objects Not available
in a specific item object

Arrival State How long item arrival objects are Arrival Item A variety of different
Times in various states such as Objects possible item arrival
generating, idle, waiting to send, object states
etc.

258
Queue/Convey How long item queuing or Queuing or A variety of different
State Times conveying objects are in various Conveying Item possible item queuing
states such as occupied, vacant, Objects or conveying object
waiting to send, etc. states

Processing State How long item processing objects Processing A variety of different
Times are in various states such as Item Objects possible item
utilized, idle, waiting to send, etc. processing object
states

Exit State Times How long item exit objects are in Exit Item A variety of different
various states such as occupied, Objects possible item exit
vacant, waiting to send, etc. object states

Arrival Utilization The total amount of time item Arrival Item A variety of different
arrival objects are in various Objects possible item arrival
states such as generating, idle, object states
waiting to send, etc.

Queue/Convey The total amount of time item Queuing or A variety of different


Utilization queuing or conveying objects are Conveying Item possible item queuing
in various states such as Objects or conveying object
occupied, vacant, waiting to send, states
etc.

Processing The total amount of time item Processing A variety of different


Utilization processing objects are in various Item Objects possible item
states such as utilized, idle, processing object
waiting to send, etc. states

Exit Utilization The total amount of time item exit Exit Item A variety of different
objects are in various states such Objects possible item exit
as occupied, vacant, waiting to object states
send, etc.

Model
The following table provides a description of each model widget:

259
Widget Name Purpose

Costs The total cost accrued while a simulation is running

Time The current date and time within a simulation model while it is running

Custom Text Any custom text you want to display while the simulation model is running

Model Controls
The following table provides a description of each model widget:

Widget
Purpose
Name

Adds buttons that allow you to control how the simulation runs directly from
Run controls
the dashboard if needed.

Button Create a custom button

Edit Field Create an custom editable field

Drop Down Create a custom drop-down menu

User Defined
The Data Collector allows you to create a custom widget that will display in the dashboard. See Data
Collector for more information.

260
The Data Collector
Although the dashboard widgets collect a wide variety of data from a simulation model, you might
determine you want to collect different data than what is currently available. In that case, you can use the
Data Collector to create a custom widget for your dashboard.
Because the Data Collector is fairly complex, you should contact FlexSim Customer Support for
assistance. However, the following sections will provide an introduction to the Data Collector.

Adding and Managing Data Collectors


You can create a Data Collector using the Toolbox. Data Collectors use the tool components feature. This
means that you will use the Toolbox to create, rename, copy, and delete each Data Collector. (See Using
the Toolbox and Toolbar for more information.)

1. Click Toolbox on the toolbar to open the Toolbox.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Data Collector. This will create a new dashboard named DataCollector1 in the Toolbox and will
open a dialog box where you can edit the settings for the newly created Data Collector.

Now you can begin customizing your Data Collector, which will be discussed in the following sections.

Data Collector Settings


When you open a Data Collector from the Toolbox, the following dialog box will appear:

Each of these settings will be described in this section.


Recording Event - A pull-down menu that lists many possible events that could occur while a simulation
model is running. Select an event that you want the Data Collector to record, meaning you would like to the
Data Collector to gather data from this specific event.
Time Interval - Used to indicate a specific interval of time that the Data Collector should begin recording
(gather data) while your simulation model is running. This setting is only available when you select Time
Interval in the Recording Event menu.
Data Recording Criteria - Used to specify the conditions under which the Data Collector will record
(gather data). By default, the Data Collector will always record while the event selected in the Recording
Event menu is occurring.

261
Add/Remove Column - These buttons can be used to add or remove additional columns (rows) at the
bottom of the Data Collector.
Columns (Rows) - Each column (row) represents a piece of information that needs to be recorded by the
data collector. Keep in mind that each column will represent something that will be tracked and displayed
on the Data Collector widget on your dashboard. You can give each column a custom name in the first box.
You can also select whether you want to gather numerical data or textual data from the pull-down menu.
The third box is used to indicate what information you want to collect.

Adding a Data Collector Widget


Once you've created a Data Collector and edited its settings, you can add it to your dashboard using the
Data Collector widget, as shown in the following image:

Because the Data Collector widget is a little complex, you should contact FlexSim Customer Support for
help designing this widget.

262
The Experimenter
The Experimenter is a tool that enables you to run the same simulation model multiple times, changing one
or more variables each time to see if you get different results. There are a number of different variables
that can be tested in your model. For example, you could design an experiment to see what happens when
you run a simulation model with only one physician. Then you could run the same simulation model with
two physicians, three physicians, etc. Then you could compare something such as patient waiting times or
length of stay to see which number of doctors produces the optimal results. (See Variables for a more
exhaustive list of possible variables that could be tested.)
The Experimenter is helpful for getting a high-level overview of the conditions that will produce the best
possible solution for the problem you are trying to solve through simulation.
The following sections will discuss some important concepts related to the Experimenter and will explain
how to use it appropriately.

263
Key Terms and Concepts
The following is an explanation of some common terms and important concepts related to the
Experimenter:

Experiment
An experiment is a combination of changing variables that will be run multiple times with varying values
using the same simulation model.

Variable
A variable is a simple aspect of a simulation model that will be different in each scenario. You can test a
number of different variables in your model, such as:

Varying numbers of staff members, locations, transports, or pieces of equipment in your simulation
model
Different shift schedule arrangements or different hours of operation
Patient-centered activity settings or global process settings (such as the processing time or resource
assignments)
Different patient arrival schedules or patterns
Different model layouts

Also, if you are comfortable with FlexScript, you can also write your own custom code for the variables you
want to test.

Scenario
A scenario is a set of one or more variables that will change when a simulation model is run. The scenario
is where you define exactly what the value of a given variable will be each time the model runs a different
scneario.
For example, let's say you want to test how many doctors are needed at your facility to reduce patient
waiting times. In this case, the variable would be the number of doctors being used in the simulation model.
Therefore, each individual scenario would be the actual number of doctors that will be used each time the
simulation model is run. In one scenario, you could try using one doctor. In the second scenario, you could
use two doctors, and so forth.

Locations and Resources

If you are testing what happens if you use different numbers of locations,
resources, or staff members, be aware that your simulation model needs to have
the number of locations or resources that you actually want to test. For example, if
you want to test what a simulation model is like with up to four doctors, your
doctors group needs to have at least four doctor group members.

264
Replication
A replication is a single run of a simulation model for a specific scenario. If desired, you can decide to run
only one replication of a given scenario, but it would probably be better to run multiple replications to get
more accurate statistical data.
Each time the Experimenter runs a replication of a particular scenario, it will use a specific number stream
to generate any random numbers that are required by the simulation model. For example, the
Experimenter will use a specific random number stream if the simulation model requires patients to arrive
in random intervals or if a particular process takes a random amount of time to complete.
Each replication will have slightly different results because each one will use a different number stream to
generate random numbers. The more replications you run, the more your results will be statistically reliable
because predictable patterns will start to emerge.
One important thing to keep in mind is that the Experimenter will run an identical series of replications for
each variable being tested. When a replication is repeated for additional scenarios and variables, it will use
the same number stream to generate random numbers. Let's use the following image as an illustration:

In this example, the experiment will test two variables: the number of doctors being used, and the number
of nurses being used. The experiment will test two different scenarios for each variable: one staff member
(1 doctor and 1 nurse) and two staff members (2 doctors and 2 nurses).
If you were to run 20 replications of each scenario, the Experimenter would use 20 different combinations
of random number streams to generate the random numbers used in the first scenario of the first variable.
That same combination of 20 different random number streams would be used to test the second scenario.
The same combination would also be used to test the first scenario of the second variable and so forth.

265
The Experimenter at a Glance
You can open the Experimenter by clicking the Experimenter button on the main toolbar. Alternatively, you
could open the Experimenter by double-clicking the Experimenter button in the Toolbox.
When you open the Experimenter, you will see a dialog box with five different tabs. The purpose of each
tab will be explained in the following sections.

Scenarios
The Scenarios tab is shown in the following image:

You can use the table on the Scenarios tab to determine which variables you will test and how each
variable will change in each scenario of your experiment. For more information about using this tab, see
Designing Scenarios and Testing Variables.

Experiment Run
The Experiment Run tab is shown in the following image:

266
You will use the Experiment Run tab to run the actual experiment and monitor its progress until it is
complete. You can also use this tab to determine how many replications you will run for each scenario.
This tab can also control the data you will collect and export after the experiment is finished. See Running
an Experiment for more information.

Error Messages

You might see an error message if there is an error while an experiment is


running. You can possibly use the Output tab to troubleshoot the error if needed.

Advanced
The Advanced tab is shown in the following image:

267
The Advanced tab has many different triggers that you can use to change aspects of the simulation model
when an experiment or replication starts or ends. This tab is useful if you want something specific to
happen in the simulation model that you can't change until the actual model begins to run.
For example, you might possibly use the triggers at the end of the replication or experiment to help collect
and export data.

Output
The Output tab is shown in the following image:

The Output tab displays any error messages that might occur while you are running the experiments. You
can use these messages to troubleshoot any problems that might have occurred in a specific scenario and
a replication.

268
You can also display any messages that could have been produced in the output console in this tab.

Reducing errors

Try running your simulation model at least one time from start to finish before you
run an experiment. Once your simulation model can be run without any errors, you
are ready to use the Experimenter.

Explore
The Explore tab is shown in the following image:

The Explore tab allows you to explore a particular scenario and replication to view it in closer detail. You
can pick a particular scenario and replication and run the simulation model using the simulation run control
buttons. That way you'll be able to monitor a specific scenario or replication more closely to determine why
you may have gotten a particular error or a specific result.

269
Designing Scenarios and Testing Variables
To design the scenarios and test the variables in your experiment, you will use the Scenarios tab in the
Experimenter, which is shown in the following image:

The Scenarios tab is a table where each row represents a variable that you will test and each column
represents a different scenario. (See Key Terms and Definitions for more information about these terms.)
You can add or remove scenario columns by changing the number in the Scenarios box. In that same
vein, you can add or remove variable rows by changing the number in the Experiment Variables box.
If you double-click the heading cells, you can change the text that is displayed in each heading to give
each variable or scenario a custom name.

Adding and Changing Variables


A variable is a simple aspect of a simulation model that will be different in each scenario. To determine
which variable will change in each scenario:

1. Click a cell listed under the Variable column to open a menu listing all the types of variables that can
currently be changed in an experiment.

2. Select the types of variable you want to test.

3. After selecting the type of variable form the menu, a small dialog box will pop up that will allow you
specify exactly which variable you want to test. The dialog box will vary based on the variable you
selected. For example, if you choose Number of Resources in a Group, the dialog box will look like
the following image:

270
4. Enter in a title for your variable in the Title box.

5. Select the specific variable you want to test from the menu below the Title box. Some variables might
have more than one menu.

Variable settings

This version of the User Manual will not describe all of the available settings for each
variable. However, the variable settings are relatively easy to use and most users will
be able to figure them out through trial and error. If you would like more guidance as
you are designing your variables and scenarios, contact FlexSim Customer Support.

Adding and Changing Scenarios


Now that you have specified which variable you want to test, you will use the Scenario columns to indicate
how each variable will be different in each scenario. To change the variables in each scenario:

1. Click a cell listed under the Scenario column.

2. Type the value you want the variable to have when this scenario runs.

For example, imagine that you want to find the ideal number of doctors your model will need in order to
reduce patient waiting times. Imagine you have a group of four doctors in your simulation model named
DoctorsGroup. You would create a Scenario column for each doctor. In the first Scenario column, you
would type the number 1. That means that you would test how your simulation model runs with only one
doctor. In the second Scenario column, you would type 2 to test the model with two doctors, and so forth.

Testing Resource or Locations

If you want to test what your model is like with varying numbers of locations or
resources (staff, transports, equipment), you must make sure that you have added

271
the maximum number of locations or resources to your model. For example, if you
want to test what your model is like with 1-4 doctors, you must make sure you
have added at least four doctors to your doctors resource group in the simulation
model.

272
Running an Experiment
To run your experiment, you will use the Experiment Run tab in the Experimenter. When you first open the
Experiment Run tab, it is blank, as shown in the following image:

The following sections will explain the various stages of running an experiment.

Before Running an Experiment


You can change the Replications per Scenario setting to determine how many replications you should
run. By default, the Experimenter will run five replications. But you can increase or decrease that number if
needed.
You can edit the Run to Time settings and Warmup Time settings if desired. The Run to Time setting is
identical to and synced with the Clock time for end of simulation setting on the simulation control bar.
(See Run Time Tools for more information.) In other words, when you change the Run to Time setting in
the Experimenter, it will change on the simulation control bar as well (and vice versa).
In that same vein, the Warmup Time setting in the experiment is identical and synced with the Time of
warmup period end setting on the simulation control bar. (See Creating a Warm-up Period for more
information.)
You can check the Save output files for each replication if you want to create Output Data files for each
replication. To modify which output files are created, open the Statistics menu on the main menu and
select Output Raw Data.
You might also want to ensure that your Dashboard is set up to track the correct information before you run
your experiment. For example, you might need to edit the sample sets to ensure that the data for each
scenario and replication is displayed individually. See Dashboards for more information.

Running an Experiment
Click the Run Experiment button to begin the experiment. After a moment, the Experiment Status
progress bars will appear in the middle of the Experiment Run tab, as shown in the following image:
273
Each scenario will have a progress bar divided into sections for each replication that you are running. As
you watch, the red bar will gradually turn green, indicating the progress of the simulation run. When all the
bars are green, the experiment is finished.
If you would like to run the experiment again, click the Reset Experiment button to erase the Experiment
Status progress bars. Click the Run Experiment button to repeat the experiment.

Troubleshooting an Experiment
While you're running your experiment, you might receive some error messages about the simulation model.
You can use the Output and Explore tabs to troubleshoot the problem. You could also contact FlexSim
Customer Support.

274
Saving and Exporting Data
You can save and export data from the Dashboard or Experimenter. FlexSim HC can export all types of
data except visual representations of the data. You can export an Excel spreadsheet or a CSV file.

Exporting from the Dashboard


To export an Excel spreadsheet or CSV file from the Dashboard:

1. With the Dashboard open, in Quick Properties, click the Excel button to open the Export Dashboard
Data dialog box, as shown in the following image:

2. Click the Browse button to determine the directory and file name for the exported spreadsheet.

3. If needed, you can also limit the data that is included in the Excel spreadsheet by clearing any of the
checkboxes in the Dashboard Widgets or Data History Tables groups.

4. Check the Export to CSV if you want to export a CSV file rather than an Excel spreadsheet.

5. When finished click the Export Data button.

275
Exporting from the Experimenter
With the Experimenter open, in Experiment Run tab, click the Export Dashboard Data button to open the
Export Dashboard Data dialog box. Follow the same procedure listed in the previous section to export the
data.

276
Introduction to Tutorials
Tutorials can be useful for new users who want to start using FlexSim HC immediately and see what the
software is capable of. The tutorials will give you hands-on experience with many of the major tasks
involved the model building process. (See Overview of the Model Building Process for more information.)
Each set of tutorials correlates with one of the chapters in the User Manual. If you would like a deeper
explanation of the important concepts related to the tutorial you are working on, you can read the relevant
chapter using the links in the tutorial's introduction.

Skipping Tutorials
The tutorials are intended to be completed in consecutive order. However, you can skip a tutorial by using
the sample simulation models that came pre-installed with FlexSim HC. These sample tutorial models have
been completed up the point where the tutorial is supposed to begin.
Each tutorial's introduction explains how to open the completed simulation model for the tutorial you want
to begin with. Just remember to save the tutorial with a new name or in a new directory so that you don't
accidentally overwrite the sample tutorial file.

Using a Trial Version of FlexSim HC


If you are using a trial version of FlexSim HC, the software will have some limited capabilities. Your
simulation model will only allow up to 30 objects at a time.

277
Tutorial Case Study
The Franklin Family Clinic is a family medicine clinic with two physicians who see patients during regular
business hours on weekdays. The clinic is planning to build a new facility so that they can add an Urgent
Care clinic. The new Urgent Care Clinic will provide services to patients who are unable to get an
appointment at the Family Clinic and would prefer to walk-in and get treatment on a first-come, first-serve
basis. The Urgent Care clinic will be open from 9:00 a.m. to 8:00 p.m. daily.
You are the clinic administrator and you are not sure how many examination rooms, physicians, and
nurses you will need at your new facility in order to meet projected patient demands. For that reason, you
would like to use FlexSim HC to build a simulation model that will help you make these decisions about
your new facility before you embark on a costly construction project.

278
Tutorial 1.1 - Importing a Floor Plan
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Your first step in creating a simulation of the new Franklin Urgent Care clinic will be to build the basic
layout of the proposed facility. The architectural firm working on this project has sent you a proposed floor
plan for the annex that you will use as a guide in building the basic layout of the new facility. You will need
to import the floor plan to guide you as you place objects in your simulation model.

Tasks Covered
This tutorial will cover the following tasks:

1. Create and save a new simulation model


2. Import a floor plan file
3. Change the floor plan's visual settings
4. Scale the floor plan drawing

For More Information


This tutorial directly correlates with the chapter about Building a Layout of Your Facility, specifically the
sections about Creating or Importing Floor Plans. We recommend reading those sections before working
on this tutorial so that you understand the key concepts covered in this tutorial.
If you haven't already, you should also consider reading the chapter about Getting Started for a beginner's
introduction to the FlexSim HC. That chapter will provide a high-level overview of the process for building a
simulation model along with links to the appropriate sections of the User Manual for each stage of the
model-building process.

Files Needed
To complete this tutorial, you will start a new simulation model from scratch. When you are working on
Step Two, you will use one of the sample floor plan files that came automatically with FlexSim HC when
you first installed it. The tutorial will guide you to the appropriate file destination when you get to that point.

279
Step One - Create and Save a new Simulation Model
The first step in the process will be to create a simulation model and save it for the first time.

1. With FlexSim HC open, click the New Model button on the toolbar to open a new blank model.

2. Before going much further, you should save your new model. Click the Save Model button on the
toolbar.

3. Give your tutorial model an appropriate name such as My Tutorial Model.

Continue on to the next step.

280
Step Two - Import a Floor Plan File
Now that you've saved your new model, you are ready to import a floor plan file into your model. You will
use the Floor Plan Import Wizard to import your floor plan, which can be accessed from the Toolbox.

1. Open the Toolbox in the left pane by clicking the Toolbox button on the toolbar.

2. With the Toolbox open, click Add new tool and then click Floor Plan to open the Floor Plan Import
Wizard.

3. On the What type of background drawing do you have? page, select CAD Drawing. Click Next to
go to the next page.

4. On the Where is the AutoCAD file? page, click the Browse button to navigate to the tutorial floor
plan.

5. Navigate to your computer's Documents folder, then double-click on the FlexSimHC5 folder, then
Tutorials. In this folder, select the file named TutorialLayout.dwg and click the Open button. When
you select your file, it will automatically appear in the background of your simulation model. Click Next
to go to the next page.

The following image shows what your model should roughly look like after completing Step Two:

Continue on to the next step.

281
Step Three - Change the Floor Plan's Visual Settings
You notice when you look at the floor plan in the model that it's difficult to see some of the different parts of
the drawing---especially the walls. You'll change the floor plan's visual settings to make the drawing a little
more visible.

1. On the Customize layer visibility and color page, you'll see all of the different layers that were
included in the original floor plan drawing. There is a layer for each element. Each layer is currently
visible and has a square next to it that indicates its current color.

2. Click the gray-colored square next to the Walls layer to bring up a color sector tool, as shown in the
following image:

3. Change the color to white or some other color that contrasts well with the simulation model floor. Click
the OK button on the color selector tool. The walls will now be more visible in the floor plan.

4. Feel free to experiment with the other visual settings. For example, you can try clicking the Visibility
button to show or hide a particular layer in the drawing. You can also rename layers if needed.

5. When finished, click Next to go to the next page.

The following image shows what your model should look like after completing Step Three:

282
Zooming In and Out

Don't forget that you can zoom in and out of your model by using the mouse
wheel. See Navigating in FlexSim HC for more information.

Continue on to the next step.

283
Step Four - Scale the Floor Plan Drawing
FlexSim HC measures distance in meters. When you check with your architectural firm that provided you
with the CAD drawing, you discover that the CAD drawing they sent you uses feet to measure distance. In
this step, you will learn how to convert your drawing from feet to meters.

1. On the Do you need to change the spatial attributes? page, you can see a variety of settings that
can be used to adjust the floor plan. See Floor Plan Settings for a more in-depth explanation of each
setting.

2. Click the Scale menu to open it. Select feet to meters to convert your drawing. You'll notice that the
drawing will instantly shrink in size. If needed, you can use your mouse wheel to zoom in and out of
your model.

3. Click the Finish button.

4. Save your simulation model.

Now you've successfully imported a floor plan file into FlexSim HC. If you need to re-edit certain settings,
open the Toolbox. Under Floor Plans, you'll see your floor plan listed. When you right-click it and select
Properties, you'll re-open the Floor Plan Wizard where you can skip ahead by clicking the Next button
until you get to the page with the settings you want to change.
The following image shows what your model should look like after completing Step Four:

This completes Tutorial 1.1 - Importing a Floor Plan.

284
Tutorial 1.2 - Adding Location and Item Objects
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now that you've imported the floor plan file that you received from your architectural firm, you're ready to
begin adding some patient location objects to your simulation model. According to the simulation plan
you've created, you will need to add:

1 patient arrival object (a door)


1 check-in desk
1 waiting room
1 station for checking patient vitals
6 examination beds (one for each room)
1 x-ray machine
1 small laboratory
1 item cart
1 item exit
1 work station for doctors and nurses
1 patient exit object (a door)

Tasks Covered
This tutorial will cover the following tasks:

1. Add the objects to the model


2. Move, resize and rotate some of the objects
3. Change the shape and appearance of some objects
4. Change additional object settings
5. Add locations to a custom area

For More Information


This tutorial directly correlates with the chapter about Building a Layout of Your Facility, specifically the
sections about the following topics:

Introduction to Library Objects


Adding Objects to a Model
Adding Locations to an Area
Customizing Object Properties and Settings

We recommend reading those sections before working on this tutorial so that you understand the key
concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

285
Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 1-2.fsm to get started.

286
Step One - Add the Objects to the Model
In the Tutorial 1.1, you imported a floor plan of your proposed new facility. Now you will add some location
and item objects to your simulation model. You will drag and drop objects from the Library directly into your
simulation model. You can use the following image for guidance while placing the objects:

To begin placing objects:

1. Make sure the Library is open in the left pane. If it is not, click the Library button on the toolbar.

2. First you will add your patient arrivals object. This object will create the patients that will come to your
facility. Under Patient Locations, click the Arrivals menu. Select a Single Door object. Your mouse
pointer will change to the Add Object icon to indicate that you are in adding objects mode.

3. Click somewhere in the model. A Single Door will appear in the position that you clicked.

4. Right-click your mouse or press the Esc key to turn off adding objects mode.

5. Click on the Single Door and hold down your mouse to re-position it. Move it to the top right corner of
the large room on the left of the floor plan. You can use the preceding image to see if your placement is
correct.

6. Add the rest of the objects using the process listed in the previous steps. The following table will tell you
which objects to use for the other locations on your simulation plan. Again, use the image above for
guidance while placing the objects.

List Item
7. Library Object Purpose and Position in Model
Needed

287
Use the Registration object After patients arrive, the
1 check-in desk Found under Patient Registration desk is where
Locations in Patient patients will check in and be
Processing added to the waiting list
Place the desk in the alcove
opposite from the patient
arrivals door, close to the
restrooms and elevator

2 waiting room Use the WaitingRoom Patients will wait in the


object waiting room until they can
Found under Patient see a doctor
Locations in Queuing Place in the top leftmost
corner of the facility

3 station for checking Use the Chair object Before patients can see a
patient vitals Found under Patient doctor, they will go to this
Locations in Patient station to check their vital
Processing signs
Place in the center of the
facility in the small alcove
just inside the inner doors

4 examination beds Use the Exam Table (lay) Patients will be examined on
object an examination bed while
Found under Patient meeting with the doctor
Locations in Patient Place an examination bed in
Processing each of the 6 examination
rooms
NOTE: If you are using a
trial version of FlexSim HC,
you should only add 4
examination beds instead of
6

5 x-ray machine Use the Xray object Some patients might need
Found under Patient an x-ray as part of their
Locations in Patient treatment plan
Processing Place the x-ray machine in
the second to last room in
the bottom right corner of
the facility

6 small laboratory Use the Lab object Some patients will need to
Found under Item Objects have cultures or samples
in Processing sent to a laboratory for
analysis
Place the laboratory in the
room in the bottom right
corner of the facility

288
7 item cart Use the Item Cart object Items will arrive at the lab
(make sure it is an Item for processing via the item
Queuing object since there cart
is more than one item cart) Place the item cart near the
Found under Item Objects laboratory in the bottom
in Arrivals right corner of the facility

8 item exit Use the Item Exit object After items have been
Found under Item Objects processed at the lab, they
in Exit will be removed from the
simulation model using the
item exit object
Place the item exit near the
laboratory in the bottom
right corner of the facility

9 work station for Use the Nurse Station B Nurses and doctors will
doctors and nurses object work at this stations when
Found under Patient they are not working on
Locations in Patient patient activities
Processing Place the work station in the
bottom right corner of the
room to the right of the x-
ray room

10 patient exit Use the Single Door object Patient exit objects remove
(make sure it is an Exit patients from the simulation
class object since there is model when they leave the
more than one single door) facility
Found under Patient Place the exit next to the
Locations in Exit patient arrivals object

Save your simulation model when you're finished.


The following image shows what your model should look like after completing Step One:

Continue on to the next step.

289
Step Two - Resize and Rotate the Objects
Now that you've placed all the necessary location and item objects in your simulation model, it's time to
change the size and rotation of some of the objects. You can use the following image for guidance knowing
which objects should be resized and rotated:

1. You'll start by resizing the work station so that it fits the floor plan layout a little better. Click
NurseStation1 to highlight it. You'll notice that the axis arrows appear on the object (they look like
colored cones).

2. Click the left red axis arrow and hold down the mouse while you slowly move the mouse to the left.
You'll notice that the object begins to change its size.

3. Release the mouse when the left edge of NurseStation1 reaches the left line in the floor plan diagram.

4. Next you'll rotate the waiting room so that it is more accessible to patients using our mouse. Click
WaitingRoom1 to highlight it and make the axis arrows appear. Right-click the blue axis arrow that is
on the top of the waiting room. While holding down the mouse button, drag your mouse down the
screen. The waiting room will remain in its current position but will begin to rotate. Release the mouse
when the waiting room has rotated to the point that it looks like a letter C.

5. Next you'll rotate the two exam tables in the middle rooms so that they are facing the door. You'll use
Quick Properties to rotate the tables this time. Click ExamTable3 (or whichever table is in the top
middle examination room) to highlight it. You'll notice that the Quick Properties pane (right pane)
changes to show that object's settings.

6. In Quick Properties under Visuals, find the Rotate Z-axis box, as shown in the following image:

290
7. Click in the Rotate Z-axis box and change the number in the box to 180. Press the Tab key to save the
changes. The exam table will now rotate 180 degrees.

8. Repeat steps 5-7 for the exam table below it.

9. Next you'll rotate the laboratory so that it can be moved against the wall of the room it is in. You'll use
Quick Properties again. Click ItemProcessing1 (the laboratory) to highlight it.

10. In Quick Properties under Visuals, click in the Rotate Z-axis box and change the number 0 to -90.
Press the Tab key to save the changes. The laboratory will now rotate -90 degrees. Reposition the
laboratory so that it is against the right wall of the facility.

11. In Quick Properties under Visuals, click in the Rotate Z-axis box and change the number 0 to 90.
Press the Tab key to save the changes. The X-ray machine will now rotate 90 degrees.

12. Save your simulation model.

The following image shows what your model should look like after completing Step Two:

Continue on to the next step.

291
Step Three - Change Object Shapes and Appearance
After taking another look at the other objects available in the Library, you decide you'd like to use the
Triage object instead of the Chair object for your patient vitals station. Because both the chair and triage
objects are Patient Processing class objects, you can easily change the shape without having to use add
another object from the Library. You would also like to change the color of the triage object. Also, while you
were resizing the x-ray machine, you realized that you'd like it to be a different color as well.

1. You'll start by changing the shape of the chair in the patient vitals station. Click the Chair to highlight it.

2. In Quick Properties, under Visuals, open the Shape menu. Select Triage from the list. The chair will
change to the triage shape. The name of the object will also change.

3. If desired, you can move the Triage object against the wall in the patient vitals station.

4. While you're working with the Triage object, let's change its color. Make sure the Triage object is still
highlighted.

5. In Quick Properties, under Visuals, click the pull-down menu next to the Color box to open the color
selector.

6. Click one of the blue colors (or any other color that you would like). The object should now be a
different color.

7. Next you'll change the color of the x-ray machine using the eyedropper tool. Click Xray1 to highlight it.

8. In Quick Properties, under Visuals, click the eyedropper . Your mouse pointer will change to the
eyedropper.

9. Position the eyedropper over the upper gray part of the x-ray machine. The mouse pointer will change
to display RGB (162, 161, 157). Click the mouse to apply the color change.

10. Save your simulation model.

The following image shows what your model should look like after completing Step Three:

Continue on to the next step.

292
Step Four - Change Additional Object Settings
Now you decide you want to change some of the object's settings to add some complexity to your
simulation. You will change the waiting room capacity so that some patients will decide not to stay to see a
doctor if there are more than 5 people in the waiting room.

1. Click the WaitingRoom1 to highlight it.

2. In Quick Properties, under Patient Condition, click the pull-down menu next to Patient Leaves
Early.

3. Select Conditional Early Exit from the menu. That will open a box that will help you determine the
conditions that will cause patients to decide to leave early, as shown in the following image:

4. Double-click content(current) > 10 to select it as the Early Exit Condition. This will change the blue
text listed for that condition.

5. In the blue text, delete the number 10 and type 5 instead. This will make it so that if the waiting room's
capacity is more than 5 patients, other patients will decide to leave without seeing the doctor.

6. Click outside of this box to save the changes. If you need to edit these settings afterwards, you can
click the Properties button to re-open this screen.

7. Save your simulation model.

293
Step Five - Add Locations to a Custom Area
By default all locations in FlexSim HC are part of an area based on their object type. For example, all of the
Exam Tables in your simulation model are currently part of the ExamTableArea. (See Key Terms -
Locations and Areas for more information.) You decided you want to create a new custom area called
ExamRooms and assign all the Exam Table objects to that area. You will also rename a few other areas
for clarity.

1. First you will rename the TriageArea to PatientVitals. Click Triage1 to highlight it.

2. In Quick Properties under General Properties, click inside the Area box to highlight the text.

3. Delete TriageArea and type PatientVitals instead.

4. Next you will rename NurseStationArea to WorkStation. Click NurseStation1 to highlight it.

5. In Quick Properties under General Properties, click inside the Area box to highlight the text.

6. Delete NurseStationArea and type WorkStation instead.

7. Lastly, you will create our custom area and assign all the Exam Tables to the new area. Click on
ExamTable1 to highlight it.

8. In Quick Properties under General Properties, click inside the Area box to highlight the text.

9. Delete ExamTableArea and type ExamRooms instead.

10. Click somewhere outside the box to save the new area name.

11. Now click on ExamTable2 in the model to highlight it.

12. In Quick Properties under General Properties, click the pull-down menu inside the Area box to
highlight to open a list of the areas that have been created for this model so far.

13. Select ExamRooms from the menu.

14. Repeat steps 11 through 13 for all the other Exam Table objects.

15. You can use the Library to check that you have successfully added all the Exam Tables to the new
ExamRooms area. In the Library, under Patient Locations, right-click Processing. This will display all
the Patient Processing areas that have been created for this model so far.

16. Make sure you don't see TriageArea, NurseStationArea, or ExamTableArea listed on the menu. You
should see ExamRooms, Workstation, and PatientVitals instead. Select ExamRooms to see all the
locations that are part of this area. You should see all of the Exam Tables listed here, as shown in the
following image.

17. Save your simulation model.

The following image shows what your model should look like when you right-click Patient Process in the
Library after completing Step Five:

294
This completes Tutorial 1.2 - Adding Location and Item Objects.

295
Tutorial 1.3 - Connecting Locations and Item Objects
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now that you've added some location and item objects to your model, you will need to connect the objects
together so that patients can travel from one location object to another without getting stuck. You will use
the Flowchart tool to connect the locations.

Tasks Covered
This tutorial will cover the following tasks:

1. Connect the location objects


2. Connect the item objects

For More Information


This tutorial directly correlates with the chapter about Building a Layout of Your Facility, specifically the
sections about Connecting Locations and Item Objects. We recommend reading those sections before
working on this tutorial so that you understand the key concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 1-3.fsm to get started.

296
Step One - Connect the Location Objects
You will start by connecting the location objects together using the Flowchart tool.

1. Open the Toolbox in the left pane by clicking the Toolbox button on the toolbar.

2. With the Toolbox open, double-click Flowchart to open the Flowchart tool.

3. If you would like, you could pin the Flowchart tool window as a tab so that it fills the entire pane and is
easier to see. See Rearranging Windows and Tabs for specific instructions.

4. When you first open the Flowchart tool, you'll see shapes that represent each area in your simulation
model. The Flowchart tool only shows areas, not individual locations. For example, notice that
ExamsRooms (the custom area you created in Tutorial 1.2, Step Five) is one of the shapes. If you click
on that shape, the Quick Properties pane shows that there are 6 active locations (one for each Exam
Table).

5. You'll start by re-arranging the shapes so that they are in the order the patients will go to each area.
Click on a shape and drag it to another position in the flowchart. The following image can be used as a
guide to show you a suggested arrangement for each shape:

297
6. Click the Connect Shapes button on the toolbar to enter connection mode and to begin connecting
shapes.

7. You can form a connection between two shapes by clicking on two shapes while in connection mode.
The first shape you click will have a going to the second shape you click.

8. NOTE: Press the Esc key to exit connection mode. To disconnect objects, click the Disconnect
Shapes button on the toolbar to enter disconnection mode.

The following table explains which connections you will need to make (not necessarily needed in this
order):

Going from Going to Purpose

1 PatientArrivalsArea RegistrationArea When patients first arrive, they will need to go to


the registration desk to check in.

2 PatientArrivalsArea WaitingRoomArea Patients might go to the waiting room when they


first arrive if there is a line in front of the
registration desk.

3 RegistrationArea WaitingRoomArea Patients will go to the waiting room after checking


in.

4 RegistrationArea PatientExitArea Patients might leave if the waiting room is too


crowded.

5 WaitingRoomArea RegistrationArea Patients will go to the registration desk after


waiting in the waiting room if there was a line
earlier.

6 WaitingRoomArea PatientExitArea Patients might leave if the waiting room is too


crowded.

7 WaitingRoomArea PatientVitals Patients will have their vital signs checked after
waiting in the waiting room.

298
8 WaitingRoomArea ExamRooms Patients might sometimes go directly from the
waiting room to the exam room.

9 PatientVitals WaitingRoomArea Patients might have to return to the waiting room if


there is not an exam room open.

10 PatientVitals ExamRooms Patients will go to one of the exam rooms after


having their vital signs checked.

11 ExamRooms XrayArea Sometimes a patient might need to use the x-ray


machine after they've met with the doctor in the
exam room.

12 ExamRooms PatientExitArea A patient will often leave the facility after having
met with the doctor in the exam room.

13 XrayArea ExamRooms Sometimes a patient might need to return to exam


room after getting an X-ray.

14 XrayArea PatientExitArea Sometimes a patient will leave the facility after


getting an x-ray.

The following image shows what your flowchart should look like after completing Step One:

299
Continue on to the next step.

300
Step Two - Connect the Item Objects
Now you need to connect the item objects in your simulation model. Item objects are designed to handle
items such as lab specimens rather than patients. Because they operate differently, they are connected in
a separate flowchart in the Flowchart tool. You will need to connect your item objects in your simulation
model so that your laboratory will function properly.

1. With the Flowchart tool open, click the Item Objects button on the Flowchart tool to switch to the Item
Objects page.

2. On the Item Objects page, you'll see shapes that represent each item object in your simulation model.

3. You'll start by re-arranging the shapes so that they are in the order the patients will go to each area.
Click on a shape and drag it to another position in the flowchart. The following image can be used as a
guide to show you a suggested arrangement for each shape:

4. Click the Connect Shapes button on the toolbar to enter connection mode and to begin connecting
shapes.

5. In this order, click the ItemArrivals1 shape, then the ItemProcessing1 shape, then ItemExit1. This
will make it so that items are stored in the queue when they arrive, then are processed, then exit the
laboratory.

6. NOTE: Press the Esc key to exit connection mode. To disconnect objects, click the Disconnect
Shapes button on the toolbar to enter disconnection mode.

The following image shows what your flowchart should look like after completing Step Two:

This completes Tutorial 1.3 - Connecting Locations and Item Objects.

301
Tutorial 2.1 - Adding and Changing Staff and
Resources
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now that you've built the basic layout of your facility and created the connections between all the objects,
it's time to begin adding staff members and other kinds of resources. According to the simulation plan
you've created, you will need to add:

2 nurses
2 doctors
1 receptionist
1 Dynamap machine (for checking patient vitals)
1 wheelchair

Tasks Covered
This tutorial will cover the following tasks:

1. Add staff and resources to a model


2. Add group members to a resource group
3. Rename resource groups and group members
4. Move and rotate group members
5. Change a group member's appearance

For More Information


This tutorial directly correlates with the chapter about Adding Staff and Resources. We recommend reading
those sections before working on this tutorial so that you understand the key concepts covered in this
tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.
If you are using a trial version of FlexSim HC, there is a limit on how many objects you can have in a
simulation model. You can overcome this limitation by using the pre-built simulation model for this tutorial.
See the following sidebar about skipping previous tutorials for more information.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.

302
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 2-1.fsm to get started.

303
Step One - Add Staff and Resources to a Model
In the Tutorial 1, you built the basic layout of your proposed new facility. Now you will add some resources
to your simulation model. Resources are objects that can move around freely in the model such as staff
members, medical equipment, and transports. You will drag and drop resources from the Library directly
into your simulation model.
Keep in mind that when you add a resource, you are really adding a resource group. When you first add a
resource to a model, you are adding a resource group that only has one group member. If you want to add
more of that type of resource, you'll add more members to the group. Adding additional group members will
be covered in Step Two.
You can use the following image to guide where each resource should be placed:

To begin adding resources:

1. Make sure the Library is open in the left pane. If it is not, click the Library button on the toolbar.

2. First you will add the receptionist resource group. Under Resource Groups, click the Staff menu.
Select a Receptionist. Your mouse pointer will change to the Add Object icon to indicate that you
are in adding objects mode.

3. Click somewhere in the model. A Receptionist will appear in the position that you clicked.

4. Right-click your mouse or press the Esc key to turn off adding objects mode.

5. Now you are going to re-position the staff member. Be aware that moving staff resources is a little
tricky. You need to make sure you click on the resource group rather than the individual resource group
member. The resource group is the colored square underneath the group member. (See Selecting a
Resource Group or Group Member for more information.) Click on the Receptionist group and hold
down your mouse to re-position the object. Move the group so that it is behind the Registration desk.
NOTE: Put it a little farther behind the center of the desk. Otherwise the receptionist won't face patients
who come to the desk. You can use the preceding image to see if your placement is correct.

304
6. Add the rest of the resources using the process listed in the previous steps. The following table will tell
you which objects to use for the other locations on your simulation plan. Again, use the image above
for guidance on where to place the objects.

Resource
7. Library Object Position in Model
Needed

Use the RN object Place near


1 nurse Found under Resource Groups in NurseStation1
Staff

2 doctor Use the MD object Place near


Found under Resource Groups in NurseStation1
Staff

3 Dynamap machine Use the Dynamap object Place near patient vitals
Found under Resource Groups in area
Equipment

4 wheelchair Use the wheelchair object Place near


Found under Resource Groups in NurseStation1
Transport

Save your simulation model when you're finished.


The following image shows what your model should look like after completing Step One:

Continue on to the next step.

305
Step Two - Add Group Members to a Resource
Now that you've added the necessary resource groups to the simulation model, you will add a few group
members to the RN group and the MD group.

1. Click the RNs group (not the group member) to highlight it. (See Selecting a Resource Group or Group
Member for more information.)

2. In Quick Properties under Edit Group, click the up arrow next to the Total Members box and
increase it to 2. You'll notice there are now two RN group members in your simulation model. Move the
group to a different position if needed.

3. Now click on the MDs group (not the group member) to highlight it. Repeat step 2 for this group to add
an additional member.

Save your simulation model when you're finished.


The following image shows what your model should look like after completing Step Two:

Continue on to the next step.

306
Step Three - Rename Groups and Group Members
Now that you've added the resource groups and the appropriate resource groups, you can rename the
groups and group members. You'll change the name of MD_1 and MD_2 to MD_A and MD_B. You will do
the same thing for the two RNs. Then, since the Franklin Family Clinic refers to their MDs as Physicians,
you'll change the name of the MDs group to Physicians.

1. Click MD_1 (not the MDs group) to highlight it. (See Selecting a Resource Group or Group Member for
more information.)

2. In Quick Properties, under General Properties, click inside the Name box. Delete the 1 and replace it
with an A so that it now reads MD_A. Click anywhere outside of the box to save the changes.

3. Repeat steps 1 and 2 for MD_2, changing the name to MD_B.

4. Repeat steps 1 and 2 for RN_1, changing the name to RN_A.

5. Repeat steps 1 and 2 for RN_2, changing the name to RN_B.

6. Now you're going to change the name of the MDs resource group to Physicians. Click the MDs group
(not the individual members) to highlight it.

7. In Quick Properties, under General Properties, click inside the Name box. Delete the MDs and
replace it with Physicians. Click anywhere outside of the box to save the changes.

Notice that when you click either of the individual group members that their name changed when you
changed the resource group name. For example, MD_A is now Physician_A.
Save your simulation model when you're finished.
Continue on to the next step.

307
Step Four - Move and Rotate Group Members
Now you'll move and rotate some of the resource groups and group members so that they are facing the
appropriate direction. You can move or rotate the entire resource group or you can move or rotate
individual resource group members. Both methods will be demonstrated in this tutorial step.

1. You'll start by rotating the Receptionist. Click Receptionist_1 (not the Receptionist group) to highlight
it.

2. In Quick Properties under Edit Group Member, in the Rot Offset box (which stands for Rotational
Offset), change the number to -90. Press Tab to save the changes. Now the Receptionist is facing the
door of the facility.

3. Now you'll rotate the entire RNs group. Click the RNs group (not the individual group members) to
highlight it.

4. In Quick Properties under Visuals, find the Rotate Z-axis box, as shown in the following image:

5. Change the number 180 to 0. Press Tab to save the changes. Now the RNs should be facing the work
station.

6. Now you'll rotate the Physicians group. Click the Physicians group (not the individual group members)
to highlight it.

7. In Quick Properties under Visuals, find the Rotate Z-axis box. Change the number 180 to -90. Press
Tab to save the changes.

8. This time you will try changing the position of the Physicians group members so that their position is
offset from the base of the Physicians group. Click on Physician_A to highlight it.

9. In Quick Properties under Edit Group Member, notice that the X Offset and Y Offset boxes both
have the value 0.

10. Now click on Physician_A and drag it so that it is in front of one of the computers at the work station.
Do the same for Physician_B. Notice that the X Offset and Y Offset boxes now have different values
in it. Those values indicate where Physician_A and Physician_B will be located relative to the black
square that represents the Physicians group.

11. Notice that if you were to click the Physicians group box and drag it around the screen that both the
group members would move relative to the group's new position.

Save your simulation model when you're finished.


The following image shows what your model should look like after completing Step Four:

308
Continue on to the next step.

309
Step Five - Change Staff Member's Appearance
You can customize each individual staff member so that they look more like the actual people who work at
your facility if you'd like. In this step, you'll change one of the doctors to a female and one of the nurses to a
male. You will also change the color of their clothing and add some accessories.

1. Click on Physician_A to highlight it.

2. In Quick Properties, under Person Visuals, open the Shape menu and select Female. The physician
will now appear to be female.

3. Click the pull-down arrow next to the Shirt box to open the color selector. Select white from the color
selector. The physician's shirt will now change to white.

4. Click the pull-down arrow next to the Pants box to open the color selector. Select black from the color
selector. The physician's pants will now change to black.

5. In Accessories menu, check the Stethoscope box to give the physician an accessory.

6. Click RN_B to highlight it.

7. In Quick Properties, under Person Visuals, open the Shape menu and select Male.

8. Click the pull-down arrow next to the Shirt box to open the color selector. Select dark blue from the
color selector. The RN's shirt will now change to dark blue.

9. Click the pull-down arrow next to the Pants box to open the color selector. Select dark blue from the
color selector. The RN's pants will now change to dark blue.

10. You can experiment with some of the other visual settings if desired.

Save your simulation model when you're finished.


The following image shows what your model should look like after completing Step Five:

This completes Tutorial 2.1 - Adding and Changing Staff and Resources.

310
Tutorial 2.2 - Creating Alternate Resource Groups
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Since the Urgent Care facility will be open in the evenings and on weekends, you'll create a daytime shift
and an evening shift. Each shift will have one nurse and one doctor. In a later tutorial, you will use the Shift
Schedule tool to create different schedules for each shift.

Tasks Covered
This tutorial will cover the following tasks:

1. Create alternate resource groups


2. Adding members to the alternate groups

For More Information


This tutorial directly correlates with the chapter about Adding Staff and Resources, specifically the section
about Creating Alternate Resource Groups. We recommend reading those sections before working on this
tutorial so that you understand the key concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 2-2.fsm to get started.

311
Step One - Create Alternate Resource Groups
You'll start by making two new alternate groups and renaming them Day_Shift and Evening_Shift.

1. Click Toolbox on the toolbar to open the Toolbox.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Alternate Groups. This will create a new group named AlternateGroup1 in the Toolbox and will
open up the newly created group in the Alternate Group tool, as shown in the following image:

4. You'll come back to the Alternate Group tool in a moment, so leave it open. In the Toolbox, right-click
AlternateGroup1 and select Rename from the menu. Change the name of AlternateGroup1 to
Day_Shift and hit the Enter key.

5. Now we'll create a second alternate group. In the Toolbox, right-click Alternate Groups and select Add
Alternate Groups from the menu. This will create a new group named AlternateGroup1 in the Toolbox
and will open up the newly created group as another tab in the Alternate Group tool.

6. In the Toolbox, right-click AlternateGroup1 and select Rename from the menu. Change the name of
AlternateGroup1 to Evening_Shift and hit the Enter key.

Save your simulation model when you're finished.


The following image shows what your model should look like when viewing the Alternate Group tool after
completing Step One:

Continue on to the next step.

312
Step Two - Add Members to the Alternate Groups
Now you'll go back to the Alternate Group tool and add RN_A and Physician_A to the Day_Shift group.
Then we'll add RN_B and Physician_B to the Evening_Shift group.

1. With the Day_Shift tab open in the Alternate Group tool, click the Plus button . This will open up a
sub-menu listing all the resource groups that you've added to your model so far.

2. Select Staff Groups, then RNs, then RN_A. RN_A will now appear in the group member list.

3. Click the Plus button . Select Staff Groups, then Physicians, then Physician_A.

4. Now open the Evening_Shift tab and repeat steps 1-3 only making sure you add RN_B and
Physician_B to this group instead.

5. If desired, you can close the Alternative Group tool now by clicking on the X in the top right corner of
the tool.

Save your simulation model when you're finished.


The following image shows what your model should look like when viewing the Alternate Group tool after
completing Step Two:

This completes Tutorial 2.2 - Creating Alternate Resource Groups.

313
Tutorial 3.1 - Creating Patient Tracks and Activities
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now that you have built your facility and added all your locations and resources, it's time to begin building a
patient track for the Urgent Care Clinic. Patient tracks are the lists of activities that patients will complete
from the moment they enter the facility until they leave. In this tutorial, you will create a track for the
average patient that will come to the Urgent Care Clinic to be examined by a doctor.
The standard patient will likely use the following process:

1. The patient arrives and registers with the receptionist at the front desk

2. The patient waits in the waiting room until an examination room is free

3. A nurse checks the patient's vital signs and escorts the patient to the examination room

4. The patient waits in the examination room and is then seen by the doctor

5. At this point, a patient could possibly be given a treatment or a diagnostic test:

o Some will be given a prescription

o Some will be given a shot or immunization

o Some will be given an x-ray

o Some will need to have a culture or specimen taken from them

o Some will only consult with the doctor and will not receive any treatment

6. The doctor will educate the patient about their treatment plan

7. The patient will then leave the facility

Tasks Covered
This tutorial will cover the following tasks:

1. Create a new patient track


2. Add a milestone and a location to an activity
3. Add a processing time
4. Assign staff to an activity
5. Keep a staff member
6. Assign equipment to an activity
7. Release a staff member
8. Use the same staff member from earlier

314
For More Information
This tutorial directly correlates with the chapter about Patient-Centered Activities. We strongly recommend
reading those sections (especially the section about Key Concepts) before working on this tutorial so that
you understand the concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 3-1.fsm to get started.

315
Step One - Create a New Patient Track
Your first task is to create a patient track for the standard patients that will come to the Urgent Care Clinic.
The track will be named Standard.

1. Click Toolbox on the toolbar to open the Toolbox.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Patient Track. This will create a new track named Track1 in the Toolbox and it will also open up
the newly created track in the Patient Track Manager.

4. You'll come back to the Patient Track Manager in a moment, so leave it open. In the Toolbox, right-click
Track1 and select Rename from the menu. Change the name of Track1 to Standard and press the
Enter key.

Save your simulation model when you're finished.


The following image shows what your model should look like when viewing the Patient Track Manager after
completing Step One:

Continue on to the next step.

316
Step Two - Add a Milestone and Location
Now you will begin working on the activities in your patient track. You'll notice that your patient track
already has an activity added to it by default. You will modify this activity so that patients assigned to the
Standard track will arrive at the facility and walk to the registration desk.
You will begin by adding a milestone that will mark the time that patients arrive at the facility. Milestones
are not necessary but they are useful for gathering statistical data from the simulation model. Lastly, you
will add a location as the destination for this first patient activity.

1. With the newly created Standard track open in the Patient Track Manager, click on activity 10, which is
the first activity listed in the track.

2. In Quick Properties, under Milestone, click the first pull-down menu and select Arrival. Notice that the
name of the activity is updated to 10_Arrival. (See Milestones for more information.)

3. Also notice that in Quick Properties, under Activity Properties, the default Activity Type setting is
Patient Travels Unattended. You will not change this setting because you want the patient to walk
into the facility unattended during this first activity. (See Overview of Activity Types for more
information.)

4. Now we will indicate which location the patient should travel to during this activity. In Quick Properties,
under Patient Destination, click the arrow next to the blank box to open a menu.

5. Select Choose a specific destination, then RegistrationArea, then RegistrationArea. (See How
Patients and Staff Move to Locations or Areas for more information.) You can use the eyedropper to
select locations as well, which will be demonstrated in Step Four.

Take a moment to look at Quick Properties, under Predecessors. Notice that the Use Predecessors box
is checked and that the box below it is empty, meaning there are no activity IDs listed in it. This means that
this activity will automatically begin when the patient first arrives at the facility. (See How Activities Begin
for more information.)
Now any patients that are assigned to the Standard track will walk in the facility and go to the Registration
desk inside the Registration Area.
Save your simulation model and continue to the next step.

317
Step Three - Add a Processing Time
Now you will add a second activity to the patient track. During this activity, the patient will check in at the
Registration desk and begin the registration process, which involves completing paperwork, paying co-
pays, updating contact information, etc.
Your office estimates the registration process time for a returning patient is about 2 minutes. However, new
patients will have a longer registration process time because there is more paperwork to complete. New
patients typically take between a minimum of 4 minutes to complete the paperwork and a maximum of 11
minutes, with most patients taking an average of 6 minutes. Your office also estimates that approximately
35% of the incoming patients will be new.

1. With the Standard track open in the Patient Track Manager, click the Plus button to add a new
activity. An activity numbered 20 will appear below the first activity.

2. In Quick Properties, under Milestone, click the first pull-down menu and select Registration. Notice
that the name of the activity is updated to 20_Registration. (See Milestones for more information.)

3. Also notice that in Quick Properties, under Activity Properties, the default Activity Type setting is
Process. You will not change this setting because you want the patient to go through the registration
process during this activity. In FlexSim HC, the word process is a generic term for any kind of time-
sensitive event in the model. A process can represent anything you want it to represent: a patient
examination, collecting a blood sample, performing an X-ray, prescribing medications, etc. These
processes are simulated in the model by a simple time delay, equivalent to the amount of time it takes
to complete the process. In this case, the process will represent the registration process.

4. Under Processing Time, click the arrow next to the empty box to open a pull-down menu. Select
Based on percentages from the menu to open a dialog box to help you determine the processing time
for a certain percentage of patients.

5. Under the There is a . % chance column in the first row, delete 50 and type 35 to represent the 35% of
patients that will be new. In the second row, delete 50 and type 65 to represent the remaining 65% of
patients.

6. Under the that the Processing Time will be... column click the drop down arrow next to the box at the
end of the first row to open a menu. Select Use an expression, then Choose a Distribution to open
the Distribution Chooser. The Distribution Chooser will help you select an appropriate statistical
distribution to randomly calculate the processing time for new patients, as shown in the following
image:

318
7. In the Distribution menu, select triangular. The triangular statistical distribution pattern generates
random numbers similar to a bell curve in which numbers at the middle of the distribution scale will get
selected more frequently. The triangular distribution should be perfect for generating the processing
time for new patients.

8. Type 4.0 in the Minimum box to represent the minimum number of minutes it takes a new patient to
complete the paperwork.

9. Type 11.0 in the Maximum box to represent the maximum number of minutes.

10. Type 6.0 in the Mode box to represent the average amount of time it takes patients to complete the
paperwork.

11. Click outside the Distribution Chooser to save the changes. The appropriate expression will now appear
in the second column of the first row.

12. Under the that the Processing Time will be... column for the second row, type 2 to represent the 2
minutes it will take returning patients to complete the registration process.

13. Press the OK button to save the changes.

Save your simulation model and continue to the next step.

319
Step Four - Assign Staff
Now that you've created a Registration activity and added the processing time for new and returning
patients, you need to assign a staff member to work with the patient during this activity. You will assign the
Receptionist resource group to this activity.
Lastly, after the registration activity, you will add a new activity that will send the patient to the waiting
room. While creating this activity, this tutorial will demonstrate how to use the eyedropper tool to select a
location.

1. Make sure that activity 20_Registration is still selected in the Activity List.

2. In Quick Properties, under Staff Requirements, click the Plus button to add a new Staff
Requirement row.

3. Click the arrow next to the Staff Requirement row to open a menu. Select Choose a specific
resource, then Staff Groups, then Receptionists, then Any member from Receptionists. The Staff
Requirement row will now read "Any member from Receptionists". (See How Staff and
Resources Are Assigned to an Activity for more information.) You can use the eyedropper to select
staff members as well, which will be demonstrated in Step Five.

4. Notice that the Priority box has the number 150 in it. This refers to the priority this activity will have
when the FlexSim system is determining which activity a staff member should work on. For now, keep
the priority at 150 but be aware that the Receptionist might be re-assigned to work on a higher priority
activity if needed. (See Staff and Resource Priorities for more information.)

5. Next you'll create the activity that will send the patient to the waiting room. With the Standard track
open and activity 20 selected in the Patient Track Manager, click the Plus button to add a new
activity. An activity numbered 30 will appear below the second activity.

6. In Quick Properties, under Activity Properties, click the Activity Type menu and select Patient
Travels Unattended.

7. In the Activity Name box, change the name of the activity to 30_Waiting Room.

8. In the Patient Destination group, click the Eyedropper button next to the empty box. The mouse
will change to an eyedropper to indicate that you are in sampling mode.

9. Click the WaitingRoom1 to sample it. A menu will pop up that will allow you to choose either the
WaitingRoom1 location or the WaitingRoomArea. Select WaitingRoomArea.

Now a Receptionist will help the patient during the Registration activity and then the patient will go to the
waiting room afterwards.
Save your simulation model and continue to the next step.

320
Step Five - Keep a Staff Member
Next you'll need to create a sequence of activities to simulate checking the patient's vitals before the
examination:

A nurse will escort the patient from the waiting room to the patient vitals area.

The nurse will use the Dynamap machine to check the patient's vitals.

The nurse will escort the patient back to the waiting room area until an examination room is available.

The patient will be escorted from the waiting room area to the examination room using the same nurse
that was used in the preceding activities.

After assigning the nurse to the first activity in this sequence, you will want to keep that particular nurse for
the next two activities. Keeping a staff member means that this particular nurse will not be reassigned to
work on any other tasks until after the nurse has checked the patient's vital signs and escorted the patient
back to the waiting room. You will release the nurse in the last activity in this sequence.
You'll start by creating the activity in which the nurse will escort the patient from the waiting room to the
patient vitals area:

1. With the Standard track open and activity 30 selected in the Patient Track Manager, click the Plus
button to add a new activity. An activity numbered 40 will appear below the latest activity.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Escort
Patient > Process.

3. In the Activity Name box, change the name of the activity to 40_Escort to Patient Vitals.

4. In the Patient Destination group, click the Eyedropper button next to the empty box to select a new
destination.

5. Click the Triage1 location to sample it. A menu will pop up that will allow you to choose either the
Triage1 location or the PatientVitals area. Select PatientVitals.

6. In the Processing Time group, type 0 into the empty box to skip the process time for this activity. (The
nurse will check the patient vitals in the next activity.)

7. Now we will assign a nurse to work on this activity. In the Staff Requirements group, click the Plus
button to add a new Staff Requirement row.

8. Click the Eyedropper button next to the new row to assign a staff member to the activity.

9. Click the colored box underneath the RNs group to sample it (make sure you don't click on one of the
individual group members). A menu will pop up that will allow you to choose either Any member from
RNs or First used from RNs. Select Any member from RNs.

10. Click the Keep button next to the Staff Requirement row to keep this staff member assigned to this
patient for the next two activities. The button will change to a red padlock to indicate that this staff
member is locked and is being kept by this patient. This will ensure that the nurse doesn't get assigned
work on another activity during these three activity sequences. (See Keeping and Releasing Staff
Members for more information.)

321
Save your simulation model and continue to the next step.

322
Step Six - Assign Equipment
Now you'll create the next activity in this sequence in which the nurse will check the patient's vital signs
using the Dynamap machine:

1. With the Standard track open and activity 40 selected in the Patient Track Manager, click the Plus
button to add a new activity. An activity numbered 50 will appear below the latest activity.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Move
Equipment > Process.

3. In the Activity Name box, change the name of the activity to 50_Check Patient Vitals.

4. In the Processing Time group, type 4 into the empty box to represent the four minutes it takes to
check the patient's vitals.

5. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

6. Click the arrow next to the Staff Requirement row to open a menu. Select Used in an earlier activity to
open a dialog box, as shown in the following image:

7. Click the Which earlier activity? menu and select 40_Escort to Patient Vitals.

8. Since you only created one Staff Requirement row in activity 40, you don't need to change any other
settings in this dialog box. Click OK to save the changes and close the dialog box.

9. Click the Keep button next to the Staff Requirement row to keep this staff member assigned to this
patient for the next two activities. The button will change to a red padlock to continue keeping this
staff member assigned to this patient for the next activity.

10. In the Equipment Requirements group, click the Plus button to add a new Equipment Requirement
row.

11. Click the Eyedropper button next to the new row to assign equipment to the activity.

12. Click the colored square beneath the Dynamap machine to sample it. A menu will pop up that will allow
you to choose either Any member from Dynamaps or First used from Dynamaps. Select Any
member from Dynamaps.

13. Click the Return Type menu and select High Priority Return to ensure that the nurse returns the
equipment to its proper place after checking the patient's vitals.

Save your simulation model and continue to the next step.


323
Step Seven - Release a Staff Member
Next you will create an activity in which the nurse escorts the patient back to the waiting room. Then you
will release (stop keeping) the nurse so that the nurse can go work on other activities while the patient is in
the waiting room.

1. With the Standard track open and activity 50 selected in the Patient Track Manager, click the Plus
button to add a new activity. An activity numbered 60 will appear below the latest activity.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Escort
Patient > Process.

3. In the Activity Name box, change the name of the activity to 60_Escort to Waiting Room.

4. In the Patient Destination group, click the Eyedropper button next to the empty box. The mouse
will change to an eyedropper to indicate that you are in sampling mode.

5. Click the WaitingRoom1 to sample it. A menu will pop up that will allow you to choose either the
WaitingRoom1 location or the WaitingRoomArea. Select WaitingRoomArea.

6. In the Processing Time group, type 0 into the empty box to skip the process time for this activity.

7. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

8. Click the arrow next to the Staff Requirement row to open a menu. Select Used in an earlier activity to
open a dialog box.

9. Click the Which earlier activity? menu and select 40_Escort to Patient Vitals.

10. Since you only created one Staff Requirement row in activity 40, you don't need to change any other
settings in this dialog box. Click OK to save the changes and close the dialog box.

11. Click the Keep button that looks like a padlock next to the Staff Requirement row until it changes to a
green padlock to release this staff member after this activity is complete.

Save your simulation model and continue to the next step.

324
Step Eight - Reuse Staff Members
Lastly you will create an activity in which the nurse escorts the patient to an examination room once one
becomes available:

1. With the Standard track open and activity 60 selected in the Patient Track Manager, click the Plus
button to add a new activity. An activity numbered 70 will appear below the latest activity.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Escort
Patient > Process.

3. In the Activity Name box, change the name of the activity to 70_Escort to Exam Room.

4. In the Patient Destination group, click the Eyedropper button next to the empty box. The mouse
will change to an eyedropper to indicate that you are in sampling mode.

5. Click ExamTable1 or one of the other exam tables to sample it. A menu will pop up that will allow you
to choose either the ExamTable1 location or the ExamRooms area. Select ExamRooms.

6. In the Processing Time group, type 0 into the empty box to skip the process time for this activity.

7. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

8. Click the arrow next to the Staff Requirement row to open a menu. Select Choose a specific
resource, then Staff Groups, then RNs, then First used from RNs. That way, you will use the same
nurse that was working with this patient in earlier activities.

Now the nurse will take a patient to any examination room as soon as one becomes available. If there is
not one available, the patient will remain at the waiting room until one is available.
Save your simulation model.
This completes Tutorial 3.1 - Creating Patient Tracks and Activities.

325
Tutorial 3.2 - Creating Decision Point Activities
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
At this point in your patient track, a doctor will come and examine the patient. After the examination the
patient could receive a number of possible treatments. Your office estimates that:

45% will need a prescription


20% will need a specimen taken for further testing (such as a blood sample, throat culture, etc.)
10% will need a shot or immunization
5% will need an x-ray
20% will not receive a treatment (because treatment is unnecessary)

Lastly, you will create one final activity in which the patient leaves the facility.

Tasks Covered
This tutorial will cover the following tasks:

1. Create a doctor examination activity


2. Create variable activities
3. Change Next Activity settings
4. Change Predecessor settings
5. Send a staff member to another location
6. Send an item to a laboratory
7. Require an additional staff member
8. Assign a transport to an activity
9. Return to a reserved location

For More Information


This tutorial directly correlates with the chapter about Patient-Centered Activities. We strongly recommend
reading those sections (especially the section about Key Concepts) before working on this tutorial so that
you understand the concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.

326
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 3-2.fsm to get started.

327
Step One - Create a Doctor Examination Activity
First, you will design the activity in which a doctor examines the patient for a variable amount of time. To
add the doctor examination activity:

1. With the Standard track open and activity 70 selected in the Patient Track Manager, click the Plus
button to add a new activity. An activity numbered 80 will appear below the latest activity.

2. In Quick Properties, under Milestone, click the first pull-down menu and select MD Exam. Notice that
the name of the activity is updated to 80_MD Exam.

3. Next we'll make the length of the exam time a variable length. In the Processing Time group, click the
arrow next to the empty box to open a menu. Select Choose a statistical distribution to open the
Distribution Chooser tool.

4. In the Distribution Chooser, open the Distribution menu and select triangular.

5. You do not need to change the Minimum or Maximum settings because you want the minimum to be 5
minutes and the maximum to be 15 minutes.

6. In the Mode box, type 7.0 to change the average examination time to 7 minutes.

7. Click OK to save the changes and close the Distribution Chooser.

8. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

9. Click the Eyedropper button next to the new row to assign a staff member to the activity.

10. Click the black colored box that represents the Physicians group to sample it. A menu will pop up that
will allow you to choose either Any member from Physicians or First used from Physicians. Select
Any member from Physicians.

Save your model and continue on to the next step.

328
Step Two - Create Variable Activities
Now you'll create the variable treatment activities. For now you will just create the basic shell for these
activities. You will edit the settings for each activity in a later step.

1. With the Standard track open and activity 80 selected in the Patient Track Manager, click the Plus
button to add a new activity. An activity numbered 90 will appear below the latest activity.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Decision
Point.

3. In the Activity Name box, change the name of the activity to 90_Treatment Decision Point.

4. You'll come back to this activity in just a moment. For now, we're going to create the very last activity in
the patient track that will come after all of the possible treatments. In the final activity, the patient will
leave the facility. With the Standard track open and activity 90 selected in the Patient Track Manager,
click the Plus button to add a new activity. An activity numbered 100 will appear below the latest
activity.

5. In Quick Properties, under Activity Properties, click the Activity Type menu and select Patient
Travels Unattended.

6. In the Milestone group, click the first pull-down menu and select Departure. Notice that the name of
the activity is updated to 100_Departure.

7. In the Patient Destination group, click the Eyedropper button next to the empty box.

8. Click the PatientExit1 object to sample it. A menu will pop up that will allow you to choose either the
PatientExit1 location or the PatientExitArea. Select PatientExitArea.

9. Now let's create the shell of the treatment activities. Click on activity 90 in the activity list to select it.

10. Then click the Plus button to add a new activity. An activity numbered 91 will appear in between 90
and 100.

11. In Quick Properties, under Activity Properties, in the Activity Name box, change the name of the
activity to 91_Prescription.

12. You might want to indent the activity names of the treatment so that it is easier to see the relationship
between these activities and the Decision Point activity. In the Activity Name, add 5 spaces in front of
91_Prescription. After adding the spaces, your activity list should look like the following image:

329
13. Fortunately, any new activities you add after activity 91 will automatically be indented. The following
table explains which additional activities you need to add and what their names should be:

Activity Number Activity Name

92 92_Specimen

93 93_Immunization

94 94_X-ray

95 95_Return from X-ray

After adding the activities, your activity list should look like the following image:

Save your simulation model and continue on to the next step.

330
Step Three - Change Next Activity Settings
Now you will set up the relationship between these activities so that Activity 90 causes one of the four
treatments to occur. Then all the treatments will end with Activity 100 in which the patient leaves the
facility.

1. Click activity 90 in the activity list to select it.

2. In Quick Properties, under Next Activity, click the arrow next to the empty box to open a menu.
Select Based on percentages to open a dialog box.

3. Click Add new pair in the top right corner of the dialog box to add a new row. Repeat this process until
there are five rows.

4. Under the There is a . % chance column in the first row, delete 20 and type 45 to represent the 45% of
patients that will be get a prescription.

5. Under the that the Next Activity will be... column click the drop down arrow next to the box at the end
of the first row to open a menu listing all the current activities in the activity list. Select 91. (Activity 91 is
the prescription treatment.)

6. The following table lists the percentages and activities that you should choose for the other rows:

Percentage Activity Number

20 92

10 93

5 94

20 100

When you're finished, the dialog box should look roughly like the following image:

331
Click OK to save your changes and close the dialog box. Save your simulation model and continue to the
next step.

332
Step Four - Change Predecessor Settings
Lastly, you will change the predecessor settings for all of the treatment activities.

1. Click activity 91_Prescription in the activity list to select it.

2. In Quick Properties, under Predecessors, clear the Use Predecessors check box.

3. A warning box will appear that will ask whether you want to continue. Click Yes.

4. Repeat this process for activities 92_Specimen, 93_Immunization, and 94_X-ray. Because activities
94 and 95 are two parts of the same treatment, do not change the predecessor settings for activity
95_Return from X-ray. It should start after activity 94 is complete.

5. Click on activity 100_Departure in the activity list to select it.

6. In Quick Properties, under Predecessors, in the box below the Use Predecessors check box, delete
the number 90. Replace it with the following expression: 91 OR 92 OR 93 OR 95. Now the patient
will leave the facility after any of the treatment activities are completed.

7. Click outside the box to save the changes.

Now the structure of your Decision Point activities is set in place.


Save your simulation model and continue to the next step.

333
Step Five - Send Staff to a Different Location
Now you will edit the settings for the prescription treatment activity. The doctor will return to the work
station to send an electronic prescription to the patient's pharmacy and the patient will then exit the facility.

1. Click activity 91_Prescription in the activity list to select it.

2. In Quick Properties, under Processing Time, type 2 in the empty box to represent the two minutes it
will take to send the prescription.

3. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

4. Click the Eyedropper button next to the new row to assign a staff member to the activity.

5. Click the black colored box that represents the Physicians group to sample it. A menu will pop up that
will allow you to choose either Any member from Physicians or First used from Physicians. Select
First used from Physicians.

6. In the Staff Destination group, click the arrow next to the box to select a different location. Select
Choose a specific destination, then Areas, then WorkStation, then NurseStation1.

Now the doctor will go to the Work Station to send the electronic prescription while the patient remains in
the examination room.
Save your simulation model and continue to the next step.

334
Step Six - Send Items to a Lab
Now you will edit the settings for the specimen treatment activity. In this activity, a nurse will get a
specimen (such as a blood sample, throat culture, etc.) and it will be sent to the facility's laboratory for
testing. For now, you will only simulate the process of sending the item to the lab. You will set up the lab
process in a later tutorial.

1. Click activity 92_Specimen in the activity list to select it.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Process >
Send Item.

3. In Quick Properties, under Processing Time, type 4 in the empty box to represent the four minutes it
will take to collect the specimen.

4. In the Item Destination group, click the arrow next to the box to open a menu. Select Choose a
specific destination, then Item Objects, then Item Queuing, then ItemQueuing1.

5. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

6. Click the Eyedropper button next to the new row to assign a staff member to the activity.

7. Click the blue colored box that represents the RNs group to sample it. A menu will pop up that will allow
you to choose either Any member from RNs or First used from RNs. Select First used from RNs.

Now any specimens taken from the patient will be sent to the laboratory for testing.
Save your simulation model and continue to the next step.

335
Step Seven - Require Additional Staff
Now you will edit the settings for the immunization treatment activity. In this activity, a nurse will join the
doctor to assist in administering an immunization to the patient.

1. Click activity 93_Immunization in the activity list to select it.

2. In Quick Properties, under Processing Time, type 4 in the empty box to represent the four minutes it
will take to administer the immunization.

3. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

4. Click the Eyedropper button next to the new row to assign a staff member to the activity.

5. Click the black colored box that represents the Physicians group to sample it. A menu will pop up that
will allow you to choose either Any member from Physicians or First used from Physicians. Select
First used from Physicians to use the same doctor.

6. Click the Plus button to add a second Staff Requirement row.

7. Click the Eyedropper button next to the new row to assign a staff member to the activity.

8. Click the blue colored box underneath the RNs group to sample it (make sure you don't click on one of
the individual group members). A menu will pop up that will allow you to choose either Any member
from RNs or First used from RNs. Select First used from RNs to use the same nurse.

Now both the doctor and the nurse will help to administer the immunization to the patient.
Save your simulation model and continue to the next step.

336
Step Eight - Assign a Transport
Now you will edit the settings for the x-ray treatment activity. Although in real life, not every patient who
needs an x-ray will require a wheelchair, for the purposes of this tutorial you'll require a staff member to
transport a patient from the exam room to the x-ray machine and back.

1. Click activity 94_X-ray in the activity list to select it.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Transport
Patient > Process.

3. In the Patient Destination group, click the Eyedropper button next to the empty box.

4. Click the Xray1 object to sample it. A menu will pop up that will allow you to choose either the Xray1
location or the XrayArea. Select XrayArea.

5. Check the Reserve Current Location box to ensure that the current exam room will not be taken by
anyone else while the patient is getting the x-ray.

6. In the Processing Time group, type 10 in the empty box to represent the ten minutes it will take to
complete the x-ray.

7. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

8. Click the Eyedropper button next to the new row to assign a staff member to the activity.

9. Click the blue colored box underneath the RNs group to sample it (make sure you don't click on one of
the individual group members). A menu will pop up that will allow you to choose either Any member
from RNs or First used from RNs. Select First used from RNs to use the same nurse.

10. In the Transport Requirements group, click the Plus button to add a new Transport Requirement
row.

11. Click the Eyedropper button next to the new row to assign a transport to the activity.

12. Click the gray colored box underneath the Wheelchairs group to sample it (make sure you don't click
on one of the individual group members). A menu will pop up that will allow you to choose either Any
member from Wheelchairs or First used from Wheelchairs. Select Any member from
Wheelchairs to use any wheelchair.

13. In the Return Type menu, select Low Priority Return.

Save your simulation model and continue to the next step.

337
Step Nine - Return to a Reserved Location
Now the nurse will wheel the patient to the x-ray room. Next, you'll edit the settings so that the nurse
transports the patient back the examination room.

1. Click activity 95_Return from X-ray in the activity list to select it.

2. In Quick Properties, under Activity Properties, click the Activity Type menu and select Transport
Patient > Process.

3. In the Patient Destination group, click the arrow next to the empty box to open a menu. Select
Location reserved by patient to open a dialog box, as shown in the following image:

4. Click the arrow next to the If no location was reserved, then the Patient Destination will be box to
open a menu. Select WaitingRoomArea and then WaitingRoomArea as the alternate destination if
the patient can't return to the original examination room.

5. In the Processing Time group, type 0 in the empty box to skip the process.

6. In the Staff Requirements group, click the Plus button to add a new Staff Requirement row.

7. Click the Eyedropper button next to the new row to assign a staff member to the activity.

8. Click the blue colored box underneath the RNs group to sample it (make sure you don't click on one of
the individual group members). A menu will pop up that will allow you to choose either Any member
from RNs or First used from RNs. Select First used from RNs to use the same nurse.

9. In the Transport Requirements group, click the Plus button to add a new Transport Requirement
row.

10. Click the Eyedropper button next to the new row to assign a transport to the activity.

11. Click the gray colored box underneath the Wheelchairs group to sample it (make sure you don't click
on one of the individual group members). A menu will pop up that will allow you to choose either Any
member from Wheelchairs or First used from Wheelchairs. Select First used from Wheelchairs to
use the same wheelchair.

12. In the Return Type menu, select Low Priority Return.

Now your first patient track is officially finished. This completes Tutorial 3.2 - Creating Decision Point
Activities.

338
Tutorial 3.3 - Creating Additional Patient Tracks
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now you'll create a simple patient track for patients with a high acuity level, meaning the patients might
require emergency treatment and hospitalization. You will design a track in which a staff member will alert
the staff members about the emergency situation and then call for an ambulance to transport the patient to
a hospital. While the ambulance is on its way, a doctor will try to stabilize the patient in one of the
examination rooms.
Because the patient has a high acuity level, you will design a track in which other staff members stop the
activities they are currently working on and immediately help patients with a high acuity.

Tasks Covered
This tutorial will cover the following tasks:

1. Copy a track
2. Change activity priority levels
3. Delete activities

For More Information


This tutorial directly correlates with the chapter about Patient-Centered Activities, specifically the sections
about Staff and Resource Priorities. We recommend reading those sections before working on this tutorial
so that you understand the key concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 3-3.fsm to get started.

339
Step One - Copy a Track
For convenience sake, you will copy the Standard patient track and use it as the basis for a new patient
track that will be named Acute.

1. Click Toolbox on the toolbar to open the Toolbox.

2. Expand the Patient Tracks group if needed.

3. Under Patient Tracks, right-click Standard and select Duplicate Standard from the menu. A new
track named Standard_2 will appear.

4. In the Toolbox, right-click Standard_2 and select Rename from the menu. Change the name of
Standard_2 to Acute and press the Enter key.

5. Double-click Acute to open this track as another tab in the Patient Track Manager. Notice that the
Acute track is an exact copy of the Standard track.

Save your simulation model and continue to the next step.

340
Step Two - Change Activity Priority Levels
Now you will need to delete unnecessary activities from the new track and edit the settings of the
remaining activities. In particular, you will need to change the activity priority levels so that staff members
stop working on their current activities and go help the acute patient immediately.
You'll start by changing the Registration activity. During the revised activity, the receptionist will stop
working on any other activities and go alert staff members that there an acute patient has arrived who
demands immediate attention.

1. With the newly created Acute track open in the Patient Track Manager, click 20_Registration in the
activity list to select it.

2. In Quick Properties, under Activity Properties, change the Activity Name to 20_Alert Staff.

3. In the Processing Time, type 2 to represent the amount of time it will take the receptionist to alert the
staff of the patient's condition and call for an ambulance.

4. In Staff Requirements in the Priority box, delete 150 and type 250 instead. Because this activity's
priority is in a higher tier than other activities, the receptionist will stop any other activities and
immediately work on this activity. (See Staff and Resource Priorities for more information.)

5. In the Staff Destination group, change the location by clicking the Eyedropper button next to the
box. Click NurseStation1 to make it the new destination. Now the receptionist will go to the work
station to alert staff that an acute patient has arrived demanding immediate attention.

Save your simulation model and continue to the next step.

341
Step Three - Delete Activities
Since patients on this track are going to skip going to the patient vitals center and just have their vitals
checked in the examination room, you'll delete some of the patient vitals activities. You will also delete the
Decision Point and treatment activities. As a result of deleting these activities, you'll need to update the
activity IDs and some of the activity settings, including the predecessor settings.

1. Click 40_Escort to Patient Vitals in the activity list to select it.

2. On the Patient Track Manager toolbar, click the Delete button to delete this activity.

3. Repeat this process, deleting the following activities:

o 50_Check Patient Vitals

o 60_Escort to Waiting Room

o 90_Treatment Decision Point

o 91_Prescription

o 92_Specimen

o 93_Immunization

o 94_X-ray

o 95_Return from X-ray

When you're finished, activities 10, 20, 30, 70, 80, and 100 will still be on the track. Next, you'll update the
settings for activity 70.

1. Click 70_Escort to Exam Room in the activity list to select it.

2. In Quick Properties under Activity Properties, change the Activity ID to 40.

3. In the Predecessors group, change the predecessor ID to 30.

4. In Staff Requirements, click the Eyedropper button next to the Staff Requirement row to change
the assigned staff.

5. Click the blue colored square that represents the RNs group to open a menu. Select Any member
from RNs.

6. In the Priority box, delete 150 and type 250 instead.

Now you'll update the settings for activity 80.

1. Click 80_MD Exam in the activity list to select it.

2. In Quick Properties under Activity Properties, change the Activity ID to 50.

3. In the Predecessors group, change the predecessor ID to 40.


342
4. In Staff Requirements, click the Plus button to add a new Staff Requirement row.

5. Click the Eyedropper button next to the new Staff Requirement row to add a nurse.

6. Click the blue colored square that represents the RNs group to open a menu. Select First used from
RNs.

7. In the Priority box, delete 150 and type 250 instead.

Lastly, you'll update the settings for activity 100.

1. Click 100_Departure in the activity list to select it.

2. In Quick Properties under Activity Properties, click the Activity Type menu and change it to
Transport Patient > Process.

3. Change the Activity ID to 60.

4. In the Predecessors group, change the predecessor ID to 50.

5. In Staff Requirements, click the Plus button to add a new Staff Requirement row.

6. Click the Eyedropper button next to the new Staff Requirement row to add a doctor.

7. Click the colored square that represents the Physicians group to open a menu. Select First used from
Physicians.

8. In the Priority box, delete 150 and type 250 instead.

9. In Transport Requirements, click the Eyedropper button next to add the wheelchair. Click the
colored square that represents the Wheelchairs group to open a menu. Select Any member from
Wheelchairs.

10. In the Return Type menu, select Low Priority Return.

This concludes Tutorial 3.3 - Creating Additional Patient Tracks.

343
Tutorial 4.1 - Creating Patient Classifications
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Since you have two tracks for two different types of patients (a Standard track and an Acute track), you will
now create the two types of patients that will use these tracks. You will rename these patients after their
respective tracks (Standard and Acute) and will change the speed and acuity of the patients that will use
the Acute track.

Tasks Covered
This tutorial will cover the following tasks:

1. Create different patient classifications


2. Assign patients to a patient track

For More Information


This tutorial directly correlates with the chapter about Adding Patients. We recommend reading those
sections (especially the section about Patient Classifications) before working on this tutorial so that you
understand the concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 4-1.fsm to get started.

344
Step One - Create Different Patient Classifications
Your first task will be to open the Patient Classifications tool and create the two different types of patients
that will arrive at your health care facility: Standard patients and Acute patients.

1. Click the PCIs button on the main toolbar to open the Patient Classifications tool.

2. The Patient Classifications tool resembles a table in which each row represents a different type of
patient. Notice that there is only one type of patient by default. Click the up arrow next to the PCIs box
to increase the number of rows to 2.

3. Now you will rename the two PCIs for easy reference. Double-click the cell that says PCI 1. Type the
word Standard and hit the Enter key to save your changes.

4. Double-click the cell that says PCI 2. Type the word Acute and hit the Enter key to save your changes.

Save your simulation model when you're finished.


The following image shows what the Patient Classifications tool should look like after completing Step One:

Continue on to the next step.

345
Step Two - Assign Patients to a Patient Track
Next you will assign each Acute patients to the Acute patient track. Notice that the Standard patients are
already assigned to the Standard track by default, so you won't need to change that setting. You will also
adjust the speed and acuity settings for the patients on the Acute track.

1. With the Patient Classifications tool open, click on the cell underneath the Track column for the Acute
patient row. This will open up a menu listing all the tracks that have been created for this simulation
model so far.

2. Select Acute from the menu.

3. Now you will change the speed and acuity of the patients on the Acute track. Click on the cell
underneath the Speed column for the Acute row to highlight it.

4. Type 20 to change the speed to 20 meters per hour. Hit the Enter key to save the changes.

5. Click on the cell under the Acuity column for the Acute row to highlight it.

6. Type 2 and hit the Enter key to save the changes.

Save your simulation model when you're finished.


The following image shows what the Patient Classifications tool should look like after completing Step Two:

This completes Tutorial 4.1 - Creating Patient Classifications.

346
Tutorial 4.2 - Changing Patient Visuals
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now that you've created two types of patients, you will create different visual profiles for each type of
patient. Having different visual profiles will make it easy to quickly distinguish between the two types of
patients when you are watching a simulation model run.
You will also create four additional versions of the visual profile for the Standard patient that will have four
different shirt colors. You will assign each of the different shirt colors to one of the different treatment
activities a patient might do after the Treatment Decision Point activity. Having different shirt colors will
make it easy for you to quickly distinguish which type of treatment a patient has received when you are
watching a simulation model run.

Tasks Covered
This tutorial will cover the following tasks:

1. Create new visuals profiles


2. Change visual profiles
3. Assign visual profiles to a PCI
4. Assign visual profiles to an activity

For More Information


This tutorial directly correlates with the chapter about Adding Patients. We recommend reading those
sections (especially the section about Patient Visuals) before working on this tutorial so that you
understand the concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 4-2.fsm to get started.

347
Step One - Create New Visual Profiles
Now you will create make six different visual profiles.

1. Click the PCIs button on the main toolbar to open the Patient Classifications tool if needed.

2. Click the Patient Visuals button on the Patient Classifications tool to open the Patient Visuals tool.

3. You'll notice that there are already two different visual profiles in the patient gallery by default. Click on
the Man shape in the patient shapes library and drag it into the patient gallery.

4. Repeat step 3 to add three more Man shapes to the patient gallery.

The following image shows what the patient gallery should look like after completing Step One:

Save your simulation model and continue on to the next step.

348
Step Two - Change Visual Profiles
Next you will rename each visual profile and change the shirt colors of the visual profiles that will represent
different treatments.

1. With the Patient Visuals tool open, click on the Man visual profile in the patient gallery to select it.

2. In Quick Properties, under General Properties, in the Name box, type the Standard and click outside
of the box to save the new name.

3. Repeat steps 1 and 2, changing the name of the other visual profiles. The following table explains how
the visual profiles should be renamed:

Visual Profile New Visual Profile

Woman Acute

Man2 Prescription

Man3 Specimen

Man4 Immunization

Man5 Xray

4. Click the Specimen visual profile in the patient gallery to select it.

5. In Quick Properties, under Person Visuals, click the arrow next to the Shirt box to open the color
selector.

6. Select a green color and click OK.

7. Repeat steps 4 through 6, changing the color of the Immunization visual profile to blue and the Xray
visual profile to orange.

The following image shows what the patient gallery should look like after completing Step Two:

349
Save your simulation model and continue on to the next step.

350
Step Three - Assign Visual Profiles to a PCI
Now you will assign a visual profile to the two different PCIs in the Patient Classification tool.

1. With the Patient Classifications tool open, click on the cell underneath the Visuals column for the
Standard patient row. This will open up a menu listing all the visual profiles that have been created for
this simulation model so far.

2. Select Standard from the menu.

3. Click on the cell underneath the Visuals column for the Acute row.

4. Select Acute from the menu.

The following image shows what the Patient Classifications tool should look like after completing Step
Three:

Save your simulation model and continue on to the next step.

351
Step Four - Assign Visual Profiles to an Activity
Now you will assign a visual profile to each of the different treatment activities in the Standard track.

1. Click the Patient Tracks button on the main toolbar to open a menu listing all the patient tracks that
have been created so far.

2. Click Standard to open it in the Patient Track Manager.

3. Click activity 91 to select it.

4. In Quick Properties, under Advanced Functions, click the Properties button next to Activity
Started Trigger to open the Trigger Editor dialog box, as shown in the following image:

5. Click the Add new trigger instruction button to open a menu of available triggers.

6. Select Change then patient visuals. A new trigger instruction will appear in the dialog box, as shown
in the following image:

7. Click the arrow next to the New visual configuration box to open a menu that will display all of the
visual profiles that you have created so far.

8. Select Prescription from the menu.

9. Click OK to close the dialog box and save the changes.

10. Repeat this process for the rest of the treatment activities. The following table explains which visual
profiles should be assigned to which activity:

Activity Number Visual Profile

92 Specimen

93 Immunization

95 Xray

352
Save your simulation model.
This completes Tutorial 4.2 - Changing Patient Visuals.

353
Tutorial 4.3 - Creating Patient Arrival Patterns
This tutorial will be based on the hypothetical situation described in the tutorial's Case Study, in which you
are simulating a new Urgent Care clinic to determine how many examination rooms, physicians, and
nurses are needed in order to meet patient demand.
Now that you've created two different types of patients, you need to change the settings on the Patient
Arrivals object so that it introduces both types of patients into your simulation model.
Your office conducted a time study about patient arrival times. Based on this study, your office predicts that
the peak hours of operation will be from 9am to noon daily and that Mondays, Saturdays, and Sundays will
be the busiest days. Nearly all patients will be Standard patients. Acute patients will not arrive very
frequently. Your task in this tutorial will be to design a patient arrival system that will model this kind of
behavior.
Lastly, since the new health care facility will only be open from 9am to 8pm daily, you will set these hours
of operation using the Shift Schedule tool so that patients do not arrive at the simulation model when the
facility is closed.

Tasks Covered
This tutorial will cover the following tasks:

1. Create an Hourly Arrival Schedule


2. Change an Inter-Arrival Pattern
3. Set the hours of operation

For More Information


This tutorial directly correlates with the chapter about Adding Patients. We recommend reading those
sections (especially the section about Patient Arrival Patterns) before working on this tutorial so that you
understand the concepts covered in this tutorial.

Files Needed
You will use the same simulation model you created in the previous tutorials to complete this tutorial.

Skipping Previous Tutorials

If you don't want to complete the previous tutorials, FlexSim HC comes with a
simulation model that is already complete up to this point. To open this simulation
model and get started, click the Open Model button on the main toolbar.
Navigate to your computer's Documents folder. Then double-click FlexSimHC5
and Tutorial Models. Open HC Tutorial 4-3.fsm to get started.

354
Step One - Create an Hourly Arrival Schedule
First you will create an Hourly Arrival Schedule on your Patient Arrivals object. This schedule will be used
to model the arrival of patients who will use the Standard track.

1. Click the PatientArrivals1 object in the simulation model to select it.

2. In Quick Properties, under Arrivals, check the Activate Hourly Arrivals box. Once this has been
activated, it will expand to show several other available settings.

3. Notice that the PCI box displays the number 1. This means that the Hourly Arrivals schedule will apply
to the first PCI listed in the Patient Classifications tool. In this case, it will apply to the Standard
patients. Since you want the Standard patients to use the Hourly Arrival pattern, you will not need to
change this setting.

4. Notice that the Arrival Spacing setting shows that Randomly spaced is currently selected. You will
not change this setting because you want the patients to arrive at random intervals during the hour.

5. Click the Edit Hourly Arrivals Table button to open the Hourly Arrivals Table.

6. In this table, the columns represent the days of the week and the rows represent each of the 24 hours
in a day in military time.

7. Start by clicking on the cell under the Mon column for the 9h - 10h row.

8. Type 3 and hit the Tab key to move to the next cell in the row. This represents the 3 patients that will
arrive from 9:00 to 10:00 on a Monday.

9. The following table explains how many patients should arrive each day and hour so that you can fill in
the Hourly Arrivals table correctly:

10. Mon Tue Wed Thu Fri Sat Sun

0h - 1h

1h - 2h

2h - 3h

3h - 4h

4h - 5h

355
5h - 6h

6h - 7h

7h - 8h

8h - 9h

9h - 10h 3 2 2 2 2 3 3

10h - 11h 4 3 3 3 3 4 4

11h - 12h 4 3 3 3 3 4 4

12h - 13h 4 3 3 3 3 4 4

13h - 14h 3 2 2 2 2 3 3

14h - 15h 2 1 1 1 1 2 2

15h - 16h 2 1 1 1 1 2 2

16h - 17h 3 2 2 2 2 3 3

17h - 18h 2 1 1 1 1 2 2

18h - 19h 3 2 2 2 2 3 3

356
19h - 20h 2 1 1 1 1 2 2

20h - 21h 2 1 1 1 1 2 2

21h - 22h

22h - 23h

23h - 24h

10. Press the OK button to save the changes and close the Hourly Arrivals Table.

The following image shows what the Hourly Arrivals Table should look like after completing Step One:

357
Save your simulation model and continue to the next step.

358
Step Two - Create an Inter-Arrival Pattern
Now you will create an Inter-Arrival Pattern on your Patient Arrivals object. This schedule will be used to
model the arrival of patients who will use the Acute track. The Acute Patients won't come in very frequently.
They will arrive at random perhaps once or twice during the day, which is why the Inter-Arrival Times
method will work well for that type of patient.

1. Click on PatientArrivals1 in your simulation model to select it if needed.

2. In Quick Properties, under Arrivals, make sure that the Activate Inter-Arrival Times box is checked.

3. Notice that the Patient Arrival Pattern 1 is selected in the first pull-down menu. Since we will only
need to use one patient arrival pattern, you will not need to change this setting.

4. Next you will set how much time will elapse between patients on the Acute track. Click the arrow next to
the Inter-Arrival Time box to open a menu.

5. Select Choose a statistical distribution to open the Distribution Chooser tool. The Distribution
Chooser will help you select an appropriate statistical distribution to randomly calculate the time
between patient arrivals, as shown in the following image:

6. In the Distribution menu, select normal.

7. Type 1440 in the Mean box to represent the average number of minutes between patients (a full day).

8. Type 300 in the Std Dev box to represent the range of standard deviation or variation between random
times.

9. Click the OK button to save the changes and close the Distribution Chooser.
359
10. In Quick Properties, under Arrivals, click the arrow next to the PCI box to open a menu listing all the
PCIs that have been created so far.

11. Select Acute from the menu. Notice that the PCI box now displays the number 2. This means that this
patient arrival pattern will apply to the second PCI listed in the Patient Classifications tool. In this case,
it will apply to the Acute patients.

12. Clear the Arrival at Time 0 check box so that patients don't immediately start arriving in the simulation
model.

The following image shows what the Arrivals settings for PatientArrivals1 should look like after completing
Step Two:

Save your simulation model and continue to the next step.

360
Step Three - Set the Hours of Operation
Now you will set the hours of operation for the PatientArrival1 object so that it doesn't create Acute patients
at times when the Urgent Care Clinic is closed.

1. Click Toolbox on the toolbar to open the Toolbox.

2. Click Add new tool at the top of the Toolbox. This will open a menu of possible tools.

3. Select Shift Schedule. This will create a new schedule named Schedule1 in the Toolbox and will open
up the newly created schedule in the Shift Schedule tool.

4. If desired, you can pin the Shift Schedule as a tab. (See Arranging Windows and Tabs for more
information.)

5. You'll come back to the Shift Schedule tool in a moment, so leave it open. In the Toolbox, right-click
Schedule1 and select Rename from the menu. Change the name of Schedule1 to Operating_Hours
and hit the Enter key.

6. Now turn your attention back to the Shift Schedule tool. With Operating_Hours open, in Quick
Properties, click on the Member Type menu.

7. Select Location to make this Shift Schedule apply only to patient location objects.

8. Beneath that menu, click the Plus button to open a menu of patient location objects.

9. Select PatientArrivalsArea, then PatientArrivalsArea to add the Patient Arrivals object to the
schedule.

10. Notice that the Shift Schedules tool looks like a table where the columns represent the days of the
week and the rows represent each of the 15 increments of time in military time for the full day. Start by
clicking on the cell under the Monday column for the 00:00 - 00:15 row. While still holding down the
mouse, drag the mouse to select the range of cells going from this cell to the cell in the Sunday
column for 08:45 - 09:00 row.

11. Make sure that Off Schedule is selected in the menu in the top right corner of the table. Click the
Apply button to change the currently selected cells to Off Schedule. Each cell should now be set to
Off.

12. Click the cell under the Monday column for the 20:00 - 20:15 row. While still holding down the mouse,
drag the mouse to select the range of cells going from this cell to the cell in the Sunday column for
23:45 - 24:00 row.

13. Click the Apply button to change the currently selected cells to Off Schedule. Each cell should now be
set to Off. Be aware that the remaining blank cells are considered Available.

14. Lastly, in Quick Properties, click the Properties button next to the Member Type box to open the
Location Break Options dialog box, as shown in the following image:

361
16. In the Stop Action menu, select Stop Arrivals to ensure the Patient Arrivals object doesn't create
patients while the facility is closed.

17. Click OK to save the changes and close the dialog box.

Save your simulation model.


This completes Tutorial 4.3 - Creating Patient Arrival Patterns.

362
License Activation Concepts
The License Activation window is found in the main menu option Help > License Activation. From this
window, you can activate standalone licenses, return licenses, repair licenses, configure the client to use a
concurrent license server, view license rights held in Flexnet trusted storage, and upgrade standalone
licenses.

Topics
Licensing
License Server
Repairing Licenses
View Licenses
Upgrading Licenses

Licensing
FlexSim does not require a license for its trial version. The trial allows you to create 20 objects in your
model and run that model with various scenarios.
If you would like to purchase a license for this software you may contact our sales department at (801)
224-6914 or email us at sales@flexsim.com

363
Once you have successfully activated a license from either your company's server or the FlexSim license
server, many of the menu options that were grayed out in the demo mode will be available for use. You will
also see your license type in the Help > About FlexSim window or the Start Page.
For an explanation of errors received while activating/returning licenses, visit the reference page.

Repairing Licenses
On the repair tab, you will see any disabled licenses on your computer. Licenses are held in Flexnet
trusted storage on a computer. Certain information about the licenses are stored in various places on your
hard disk and registry. Tampering with these locations may break the license trust flags, which disables the
license. This may happen with some registry cleaners or Windows restore points. If your license was
disabled, then you can use the repair tab to generate an xml repair request file. Email that file to FlexSim
support using the website (www.flexsim.com/support) and then you will be emailed back a repair response
xml file to process on the repair tab. Processing the repair response from FlexSim's support team will
repair the trust flags on your disabled license and allow it to be used again.

License Server

If you are using a concurrent server license, you can configure the clients to connect to the server using
this tab. Check the box and enter the license server ip address. Press the Apply Configuration button.
FlexSim will immediately try to connect to the server and check out license features.
Before attempting to connect the clients to a concurrent server, you must activate your licenses on the
server and start a License Server Manager program on the server. Instructions and files necessary for

364
configuring the server are available in the LAN License Tools download available in the account section of
the FlexSim website if you have a concurrent server license on your FlexSim account.
The Windows registry entry for FLEXlm, our license manager, stores any locations that FlexSim has looked
for a license server or file, and it can store multiple locations. So, whenever you enter a new value in the
Concurrent License Server Address and restart FlexSim, it adds more entries to the registry. If you have
successfully checked out a license from a server, FlexSim may still successfully check out a license from
that server when you start FlexSim, even if the "Use concurrent licensing" box is unchecked.
If you have multiple types of licenses on your server, such as Enterprise and Runtime licenses, you can
check the "Only checkout features for license type:" box and select the feature set that you want to check
out. This will tell FlexSim to only try to check out the features required for that type of license instead of
requesting every available feature. You can also use the "Checkout optquest feature" checkbox to specify
whether the Optquest feature should be checked out.
For help with troubleshooting concurrent server errors, visit the reference page.

View Licenses
On the view licenses tab, you can see the contents of this computer's Flexnet trusted storage.
Licenses are not in any way tied to any FlexSim installation. Your computer itself is licensed. The actual
FlexSim install or version doesn't matter at all. One license can license every FlexSim program on the
computer. You simply use the FlexSim program to activate/return/view licenses on the computer for
simplicity. The licenses are not tied to an installation of FlexSim.
For example, you could install FlexSim, activate a license, uninstall FlexSim, and then install FlexSim
again, and your license will still be there. The FlexSim programs are entirely separate from where licenses
are stored on your computer in Flexnet trusted storage.
It doesn't matter what version of FlexSim you use to activate or return licenses; they are calling exactly the
same code.
You can have just one license of 5.1 on the computer and that license will work with both 5.0.4 and 5.1.0
just fine. You don't need multiple licenses to license multiple FlexSim programs. The license is not tied to
the installation. The license is tied to the computer. Any FlexSim programs on a licensed computer will
work. However, a computer that has a 5.0 license won't be able to run 5.1 software. The computer's
license must be >= the version number of the software in order to run.
If you uninstall FlexSim without first returning your license, you will need to reinstall Flexnet in order to
return the license so that you can move it to another computer. Because licenses are tied to the computer,
not the FlexSim installation, you do not need to return your license if you are simply uninstalling and
reinstalling FlexSim.

Upgrade Licenses
On the upgrade licenses tab, you can request upgrades to your licenses. This is necessary to run newer
versions of the software. For instance, if you previously had FlexSim 5.0 installed and you upgraded to 5.1,
you would need to also upgrade your license to 5.1.
The process to upgrade a license to a newer version has three steps:

1. The FlexSim License Server needs to be told to upgrade the license, which creates a new Activation ID
for the upgrade.
2. The old license needs returned to the FlexSim License Server.
3. The new license needs activated on the client machine.

365
This process can be done manually by returning any old licenses, pressing the Upgrade Licenses button
on the "My Licenses" page in the account section of the FlexSim website, and then activating the new
Activation IDs on that page (you may need to refresh the licenses page table).
The Request Upgrades button on the Upgrade Licenses tab automates this process into a single button
click by sending http requests to the FlexSim server. If this automatic process doesn't work, then you can
do it manually instead.
To upgrade server licenses, you must manually return the licenses and then activate the new licenses.

366
License Activation Example

Topics
Activating a Standard License
Activating through your License Server
Returning a License
Repairing a License
Activate a Concurrent License

Activating a Standard License


This will take you through the steps necessary to activate a standard FlexSim license through the FlexSim
License Server. If your company has it's own license server, see the Activating through your License
Server section. If your company is using a concurrent license server, see the Activate a Concurrent
License section.

Login to your FlexSim.com account


First you'll need to retrieve an available license from your FlexSim account.

Go to http://www.flexsim.com/account/ and login.

Find an available license

Once logged in, go to the 'my licenses' page.


Expand your Flexsim Standard folder to show your available licenses.

367
You can see the number of seats available to the right, as well as expiration dates for timed and
maintenance licenses.

Activate the license

Copy the Activation ID for an available license. The activation ID will start with flexsim.com.
Paste the Activation ID into the Activation ID field.
Press the Activate button.

Note: If your license is timed, then you may need to check the Use Expiration Date box and enter the
expiration date in the format 23-NOV-2009 before activating.
For an explanation of errors received while activating licenses, visit the reference page.

Activating through your License Server


In the Activate tab of the License Activation window, check the Activate through your company's
license server button.
Enter the ip address of your company's license server in the License Server Address field.

368
Press the Activate button.

For an explanation of errors received while activating licenses, visit the reference page.

369
Returning a License

Returning a Standard License

Select the license you want to return from the License dropdown menu.
Press the Return button.

Returning to your company's License Server

Check the Return to your company's license server button.


Enter the ip address of your company's license server in the License Server Address field.
Press the Return button.

For an explanation of errors received while returning licenses, visit the reference page.

370
Repairing a License

Repairing a Standard License

Select the corrupted license from the License dropdown menu.


Press the Generate XML Request... button.
Email the request file to support@flexsim.com
Once the FlexSim support team sends you the XML response file, press the Process XML
Response... button and select the response file.
Press the Repair button.

Repairing a license through your company's License Server

Check the Repair through your company's license server button.


Enter the ip address of your company's license server in the License Server Address field.
Press the Repair button.

371
Activate a Concurrent License

Check the Use concurrent licensing button.


Enter the ip address of your company's license server in the License Server Address field.
Press the Save Configuration button.

For more information on setting up a concurrent license server, see the documentation in the LAN License
Tools.

372
License Activation Reference

Topics
Common Activation Errors
Common Return Errors
Troubleshooting Concurrent License Server Errors

Common Activation Errors

Operations Error 7288

Operations error 7288 means that your license has already been successfully activated on a computer. In
order to activate the license, you must find the computer that contains the license and return it. You can
find the computer that contains the license by checking the output of View Licenses on any computers that
you may have activated the license on.

Error 50041

Error 50041 usually means that your computer is not connected to the internet or your network/firewall
settings are preventing communication with the FlexSim license server. The license activation mechanism
uses soap requests sent through http port 80. Make sure this type of communication is available on your
network.

373
Common Return Errors

Operations Error 7466

Operations error 7466 means that returns are disabled on your license. Your license is configured to be a
one-time activation onto a computer. If you believe your license should be able to transfer from one
computer to another, contact your local distributor or FlexSim support to discuss the situation.

Troubleshooting Concurrent Server Errors


1. Make sure the client computer is connected to the server on a local area network. Be sure you can ping
the server at the address specified.
2. Make sure that the server has valid licenses using the menu option Tools > View License Rights in
the flexsimserveractutil.exe program on the server. This program is contained in the LAN License Tools
available for download on the FlexSim website.
3. Make sure that the server's License Server Manager program (lmadmin or lmtools) is properly
configured and has licenses available for use.
4. Consult the Flexnet License Administration Guide for additional details on how Flexnet server licenses
work. This manual can be found at http://www.globes.com/support/fnp_utilities_download.htm.
5. If you still are still having troubles, contact FlexSim Support. Be sure to send them the information that
is printed when you press Tools > View License Rights in the flexsimserveractutil.exe program and also
a screenshot of the Dashboard view in lmadmin (or the Status Enquiry output from lmtools).

374
Writing Logic in FlexSim
FlexSim provides two options for writing custom logic: FlexScript and C++. FlexScript is generally preferred
to C++ since the code works immediately in the model without having to be compiled. When speed is an
issue, C++ code runs faster than FlexScript, but must be compiled. If you want to code in FlexScript, but
run with the speed of C++, you can toggle between these options in the Build menu.
FlexScript is nearly identical to C++ in its syntax and application, but is simplified for ease of use. This topic
covers the programming options available in FlexScript.

Topics
Where to get help
General Rules
Variable Types
Declaring and Setting Variables
Math Operations
Comparing Variables
Relating Variables
Setting and Changing Variables
Executing Commands
Flow Constructs

Where to get help


Whenever you need help with what commands to use and how to use them, you can refer to the
"Commands" documentation found through FlexSim's Help menu.

General Rules
Here are some general rules you will need to know when creating your own logic.

language is case sensitive (A is not the same as a)


no specific format is required (free use of spaces, tabs and line returns is encouraged)
numbers are double precision floating point values unless otherwise specified.
text strings are usually entered between quotes. mytext"
parenthesis follow a function call and commas separate the arguments of the function.
moveobject(object1,object2);
a function or command will always end with a semi-colon
parenthesis can also be used freely to make associations in your math and logic statements.
curly braces are used to define a block of statements.
to comment out the rest of a line use //
dont use spaces or special characters in name definitions (_ is ok).
named variables and explicit values can be interchanged in writing expressions.

375
Variable Types
FlexSim uses just four variable types. Each of the four types can also be used in an array structure. The
following explains each of these types.

Single Variables

Type Description

int integer type

double double precision floating point type

string text string

treenode reference to a FlexSim node or object

Array Variables

Type Description

intarray an array of integer types

doublearray an array of double types

stringarray an array of string types

treenodearray an array of treenode types

For more information on how the treenode (or FlexSim node) type works, refer to the FlexSim tree
structure.

Declaring and Setting Variables


The following are some examples of how to declare and set variables.
int index = 1;

double weight = 175.8;

string category = "groceries";

treenode nextobj = next(current);

376
Declaring and Setting Array Variables
The following are examples of how to use array types.
intarray indexes = makearray(5); // makes an array with 5 elements

indexes[1] = 2; // in FlexSim, arrays are 1-based

indexes[2] = 3;

indexes[3] = 2;

indexes[4] = 6;

indexes[5] = 10;

doublearray weights = makearray(3);

fillarray(weights, 3.5, 6.7, 1.4); // fillarray is a quick way of setting the array
values

stringarray fruits = makearray(2);

fruits[1] = "Orange";

fruits[2] = "Watermelon";

treenodearray operators = makearray(4);

operators[1] = centerobject(current, 1);

operators[2] = centerobject(current, 2);

operators[3] = centerobject(current, 3);

operators[4] = centerobject(current, 4);

Math Operations
The following list show different math operations that can be performed on values.

377
Floating Point Example Integer Example
Operation
(=solution) (=solution)

+ 1.6+4.2 (=5.8) 2+3 (=5)

- 5.8-4.2 (=1.6) 5-2 (=3)

* 1.2 * 2.4 (=2.88) 3*4 (=12)

/ 6.0/4.0 (=1.5) 20/7 (=2)

% (integer mod) 34%7(=6)

sqrt() sqrt(5.3) (=2.3)

pow() pow(3.0,2.2) (=11.2) pow(3,2) (=9)

round() round(5.6) (=6)

frac() frac(5.236) (=0.236)

fabs() fabs(-2.3) (=2.3)

fmod() (floating point


fmod(5.3,2) (=1.3)
mod)

Be aware as you write your logic that, by default, all values in FlexSim are double precision floating point,
so you will usually be using the operations as they apply to floating point numbers.
Note: By performing operations on floating point numbers, some precision may be lost.
Note: Be careful in using these operations while mixing integer types with floating point types, or with using
just integer types. For example, the / operator will return an integer if both operators are integers. This may
not be what you want to get out of the operation, in which case you will need to use floating point types
instead of integer types. Note also that C++ will interpret the literal number 5 as an integer type. If you want
it to interpret the number as a floating point type, enter 5.0 instead of just 5.

Comparing Variables
The following table shows different operations for comparing two values or variables.

Operation Example (solution)

378
> (greater than) 1.7>1.7 (false)

< (less than) -1.7 < 1.5 (true)

>= (greater than or equal to) 45 >= 45 (true)

<= (less than or equal to) 45 <= 32 (false)

== (equal to) 45 == 45 (true)

!= (not equal to) 45 != 35 (true)

comparetext() comparetext(getname(current),"Processor5")

Warning: The == operator can often cause problems if you are comparing two double precision floating
point values, and one or both of those values have been calculated using math operations. When doing
math operations, floating point values may lose some precision. Since the == operator will only return true
if all 64 bits of each value are exactly the same, even a small precision loss will cause the == operator to
return false. In such cases, you will want to instead verify that the two values are within a range of each
other. For example: fabs(value1 - value2) < 0.000001, will return true if the two values are practically equal
for all intents and purposes.

Relating Variables
The following table shows different operations for relating several comparisons.

Operation Example

&& (logical AND) x>5 && y<10

|| (logical OR) x==32 || y>45

! (logical NOT) !(x==32 || y>45)

min() min(x, y)

max() max(x, y)

Setting and Changing Variables


The following tables show ways of setting and changing variables.

379
Operation Example

= x = x + 2;

+= x += 2; (same as x = x + 2)

-= x -= 2; (same as x = x - 2)

*= x *= 2; (same as x = x * 2)

/= x /= 2; (same as x = x / 2)

++ x ++; (same as x = x + 1)

-- x --; (same as x = x - 1)

Executing Commands
Executing a command in FlexSim is made of following parts. First type command's name, followed by an
open parenthesis. Then enter each parameter of the command, separating multiple parameters by
commas. Each parameter can be a variable, an expression of variables, or even a command itself. Finish
the command with a close parenthesis, and a semi-colon. For detailed information on the commands, their
functionality and parameter lists, refer to the "Commands" documentation found through FlexSim's Help
menu. For a quick reference of the most used commands in FlexSim, refer to the section on basic
modeling functions.

Syntax Examples

coloryellow(current);

setrank(item, 3 + 7);
commandname(parameter1,parameter2,parameter3...);
setitemtype(item,
getlabelnum(current,
"curitemtype"));

Flow Constructs
The following are constructs which allow you to modify the flow of your code.

380
Logical If Statement
The if statement allows you to execute one piece of code if an expression is true, and another piece of
code if it is false. The else portion of the construct is optional.

Construct Examples

if (test expression) if (content(item) == 2)

{ {

code block colorred(item);

} }

else else

{ {

code block colorblack(item);

} }

Logical While Loop


The while loop will continue to loop through its code block until the test expression becomes false.

Construct Examples

while (test expression) while (content(current) == 2)

{ {

code block destroyobject(last(current));

} }

Logical For Loop


The for loop is like the while loop, except that it is used usually when you know exactly how many times to
loop through the code block. The start expression is executed only once, to initialize the loop. The test
expression is executed at the beginning of each loop and the loop will stop as soon as this expression is
false, just like the while loop. The count expression is executed at the end of each loop, and typically
increments some variable, signifying the end of one iteration.

Construct Examples

381
for(start expression;test for (int index = 1;index <=
expression;count expression) content(current);index++)

{ {

code block colorblue(rank(current,index));

} }

Logical Switch Statement


The switch statement allows you to choose one piece of code to execute out of several possibilities,
depending on a variable to switch on. The switch variable must be an integer type. The example below
sets the color of items of type 1 to yellow, type 5 to red, and all other types to green.

Construct Examples

int type = getitemtype(item);

switch (switchvariable)
switch (type)

{
{

case casenum:
case 1:

{
{

code block;
coloryellow(item);

break;
break;

}
}

default:
case 5:

{
{

code block;
colorred(item);

break;
break;

}
}

}
default:

382
{

colorgreen(item);

break;

Redirection
Each of the flow constructs described can be redirected mid-execution with either a continue, break or
return statement. The following explains how each of these statements work.

Construct Examples

Only valid in For and While loops. Halts the current iteration of the loop and goes
continue; on to the next iteration in the loop. In a For loop the counter is incremented before
continuing.

Only valid in For, While and Switch statements. Breaks out of the current For,
While or Switch block and continues with the line immediately following this block.
break;
Nested statements only break out of the current statement and continue on in the
containing statement.

Returns out of the current method entirely and continues with the line following
the code that called this method. The 0 is required in Flexscript commands
return 0;
(picklists and triggers included) because all Flexscript commands return a double
type.

383
Basic Modeling Functions and Logic Statements
Here we have provided a quick reference for commands that are used most often in FlexSim. For more
detailed information on these commands, refer to the command index.

Topics
Referencing Commands
Object Attributes
Object Spatial Attributes
Object Statistics
Object Labels
Object Control
Object Variables
Tables
TaskExecuter Control
Prompts and Printouts
Advanced Functions

Object Referencing
The following commands and access variables are used in referencing objects in FlexSim.

current and item

current - the current variable is a reference to the current resource object. It is often an access
variable in pick lists.
item - the item variable is a reference to the involved item for a trigger or function. It is often an
access variable in pick lists.

Referencing Commands

command(parameter
Explanation Example
list)

This returns a reference to the first


first(node) ranked object inside of the object first(current)
passed

This returns a reference to last


last(node) ranked object inside of the object last(current)
passed

384
This returns a reference to the
rank(node, ranknum) object at a given rank inside the rank(current, 3)
object passed

This returns a reference to the


inobject(object, portnum) object connected to the input port inobject(current, 1)
number of the object passed

This returns a reference to the


outobject(object, portnum) object connected to the output outobject(current, 1)
port number of the object passed

This returns a reference to the


centerobject(object,
object connected to the center centerobject(current, 1)
portnum)
port number of the object passed

This returns a reference to the


next(node) next ranked object of the object next(item)
passed

This returns a reference to the


prev(node) previous ranked object of the prev(item)
object passed

This returns the object found at


node("/Floor1/Processor",
node(path, startnode) path in the tree beginning from
model())
startnode

Object Attributes

command(parameter list) Explanation

getname(object) This returns the name of the object

setname(object, name) This sets the name of the object

getitemtype(object) This returns the itemtype value of the object

setitemtype(object, num) This sets the itemtype value of the object

setcolor(object, red, green, blue) This sets the color of the object

colorred(object) This sets the color of the object to red, blue, green,
colorgreen, blue, white, random... white, etc.

385
setobjectshapeindex(object,
This sets the 3D shape of the object
indexnum)

setobjecttextureindex(object,
This sets the 3D texture of the object
indexnum)

Object Spatial Attributes

command(parameter list) Explanation

xloc(object)
These commands return the x, y, and z locations of the
yloc(object)
object
zloc(object)

setloc(object, xnum, ynum,


This sets the x, y, and z location of the object
znum)

xsize(object)
ysize(object) These commands return the x, y, and z size of the object
zsize(object)

setsize(object, xnum, ynum,


This sets the x, y, and z size of the object
znum)

xrot(object)
These commands return the x, y, and z rotation of the
yrot(object)
object
zrot(object)

setrot(object, xdeg, ydeg, zdeg) This sets the x, y, and z rotation of the object

Object Statistics

command(parameter
Explanation
list)

content(object) This returns the current content of the object

getinput(object) This returns the input statistic of the object

386
getoutput(object) This returns the output statistic of the object

setstate(object, statenum) This sets the current state of the object.

getstatenum(object) This returns the current state value of the object

getstatestr(object) This returns the current state of the object as a string

getrank(object) This returns the rank of the object

setrank(object, ranknum) This sets the rank of the object

This returns the time the flow item entered the object it is
getentrytime(item)
currently in

getcreationtime(item) This returns the time the flow item was created

Object Labels

command(parameter list) Explanation

getlabelnum(object, "labelname")
This returns the value of the object's label
getlabelnum(object, labelrank)

setlabelnum(object, "labelname",
value)
This sets the value of the object's label
setlabelnum(object, labelrank,
value)

getlabelstr(object, "labelname") This gets the string value of the object's label

setlabelstr(object, "labelname",
value) This sets the string value of the object's label
setlabelstr(object, labelrank, value)

This returns a reference to the label as a node. This


label(object, "labelname")
command is often used if you have a label that is used as
label(object, labelrank)
a table.

assertlabel(object, "labelname",
This command creates a label called "labelname" if it
DATATYPE_NUMBER)
doesn't currently exist on object, or returns a reference to
assertlabel(object, "labelname",
the label if it already exists.
DATATYPE_STRING)

387
Object Control

command(parameter list) Explanation

closeinput(object) This closes the input of the object

openinput(object) This re-opens the input of the object

closeoutput(object) This closes the output of the object

openoutput(object) This re-opens the output of the object

sendmessage(toobject, fromobject, This causes the message trigger of the object to


parameter1, parameter2, parameter3) fire

senddelayedmessage(toobject, delaytime,
This causes the message trigger of the object to
fromobject,
fire after a certain delay time
parameter1, parameter2, parameter3)

This tells the object to stop whatever its operation


stopobject(object, downstate)
is and go into the given state

This allows the object to resume whatever its


resumeobject(object)
operation is

This closes the output of the object, and


stopoutput(object)
accumulates stopoutput requests

This opens the output of the object once all


resumeoutput(object)
stopoutput requests have been resumed

This closes the input of the object, and


stopinput(object)
accumulates stopinput requests

This opens the input of the object once all


resumeinput(object)
stopinput requests have been resumed

insertcopy(originalobject, This inserts a new copy of the object into the


containerobject) container

This moves the object out of its current container


moveobject(object, containerobject)
into its new container

388
Object Variables

command(parameter list) Explanation

This returns the number value of the variable with the


getvarnum(object, variablename)
given name

setvarnum(object, variablename, This sets the number value of the variable with the
value) given name

This returns the string value of the variable with the


getvarstr(object, variablename)
given name

setvarstr(object, variablename, This sets the string value of the variable with the given
string) name

This returns a reference to the variable with the given


getvarnode(object, variablename)
name as a node

Other

Tables

command(parameter list) Explanation

gettablenum("tablename", rownum,
colnum) This returns the value in the specified row and
gettablenum(tablenode, rownum, colnum) column of the table
gettablenum(tablerank, rownum, colnum)

settablenum("tablename", rownum,
colnum, value)
settablenum(tablenode, rownum, colnum, This sets the value in the specified row and
value) column of the table
settablenum(tablerank, rownum, colnum,
value)

gettablestr("tablename", rownum, colnum)


This returns the string value in the specified row
gettablestr(tablenode, rownum, colnum)
and column of the table
gettablestr(tablerank, rownum, colnum)

389
settablestr("tablename", rownum, colnum,
"value")
settablestr(tablenode, rownum, colnum, This sets the string value in the specified row and
"value") column of the table
settablestr(tablerank, rownum, colnum,
"value")

settablesize("tablename", rows, columns)


This sets the size of the table in rows and
settablesize(tablenode, rows, columns)
columns
settablesize(tablerank, rows, columns)

gettablerows("tablename")
gettablerows(tablenode) This returns the number of rows in the table
gettablerows(tablerank)

gettablecols("tablename")
gettablecols(tablenode) This returns the number of columns in the table
gettablecols(tablerank)

clearglobaltable("tablename")
clearglobaltable(tablenode) Sets all number values in the table to 0
clearglobaltable(tablerank)

TaskExecuter Control
For more information on controlling TaskExecuters, refer to the task sequence section.

Prompts and Printouts

command(parameter list) Explanation

pt(text string) Prints text to the output console

pf(float value) Prints a floating point value to the output console

pd(discrete value) Prints an integer value to the output console

pr() Creates a new line in the output console

msg(title, caption) Opens a simple Yes, No, Cancel dialog

userinput(targetnode, Opens a dialog box where you can set the value of a node in
prompt) the model

concat(string1, string2, etc.) This returns the string concatenation of two or more strings

390
Advanced Functions
Here are more advanced functions that you might use. We do not provide their parameter lists here. For
more information, refer to the command summary.
Node commands - node(), nodeadddata(), getdatatype(), nodetopath(), nodeinsertinto(), nodeinsertafter(),
getnodename(), setnodename(), getnodenum(), getnodestr(), setnodenum(), setnodestr(), inc()
Data changing commands - stringtonum(), numtostring(), tonum(), tonode(), apchar()
Node table commands - setsize(), cellrc(), nrows(), ncols()
Node table commands - setsize(), cellrc(), nrows(), ncols()
Model run commands - cmdcompile(), resetmodel(), go(), stop()
3D custom draw code commands - drawtomodelscale(), drawtoobjectscale(), drawsphere(), drawcube(),
drawcylinder(), drawcolumn(), drawdisk(), drawobject(), drawtext(), drawrectangle(), drawline(),
spacerotate(), spacetranslate(), spacescale()
Excel commands - excellaunch(), excelopen(), excelsetsheet(), excelreadnum(), excelreadstr(),
excelwritenum(), excelwritestr(), excelimportnode(), excelimporttable(), excelclose(), excelquit()
ODBC commands - dbopen(), dbclose(), dbsqlquery(), dbchangetable(), dbgetmetrics(), dbgetfieldname(),
dbgetnumrows(), dbgetnumcols(), dbgettablecell(), dbsettablecell()
Kinematics - initkinematics(), addkinematic(), getkinematics(), updatekinematics(), printkinematics()

391
Code Editor

The Code Editor window allows you to edit code for picklists and triggers throughout FlexSim. The window
can be used as a floating window (default), or it can be docked into the main FlexSim window in any
configuration. Just click the tab or the title bar and drag it over the Dock Windows icon.

Throughout FlexSim you will see icons. Clicking this icon will open the Code Edit window and allow
you to edit that picklist or trigger's code. Alternatively, many right click menu's (like in the Tree Window)
have the option Explore > As Code that will also open a Code Edit window.
When you open up the Code Editor, you'll likely see some header statements that will look something like
this:

treenode current = ownerobject(c);

treenode item = parnode(1);

For more information about item and current see the Item and Current section.
Within the code window, you can specify whether you want your code to be interpreted as FlexScript or
compiled as C++ (in which case you will need to compile your model). You can also check the FlexScript

syntax by pressing the button.

Code Builders
When you are editing code in the Code Editor, or entering values in a picklist field, the Library Icon Grid
changes to display a list of Code Builders.

392
These Code Builders can be dragged into your Code Editor or picklist field to give you the correctly
formatted command. Use the tab key to select each commented section of the template code. ie
/*"labelname"*/

You can also filter the Code Builder list by typing in the field.

393
DLL Functionality
You can also specify the given field as accessing a function from a dll. In this case you would not provide
the code as the text, but would provide the path to the dll as well as the name of the function to call. To
create such dll you would need to use a special Visual C++ project. This project is available on the user
community. The code field itself will need to specify two strings, each enclosed in quotes. The first string is
the path to the dll. The second string is the name of the function. When you press the DLL radio button a
message will appear that will let you create a template specifying the two strings.

Locking Code
There is also a "Locked" checkbox at the bottom of the view. This checkbox should only apply to FlexScript
or C++ code. It lets you lock the code state of the field to either FlexScript or C++. In the main Build menu,
there are two options to make all code either C++ or FlexScript. We provide this option so that modellers
can have both the ease of use of FlexScript (code works immediately when editing in FlexScript, without
having to compile) as well as the run-speed of C++ (since it is compiled, it runs much faster than
FlexScript). While in the model building phase you can use FlexScript, so that your code is interpreted
immediately after you write it. Then, once your model is ready to run, you can choose the Build>Make all
code C++ option, compile, and run to get the speed of C++. However, there may be some code that you
write that cannot be converted from FlexScript to C++ or vice versa because it uses features specific to
that language. In this case you would click the to lock the code state of the given field. This would also
be important if you chose one of the menu options: Make all code C++ or Make all code FlexScript.

Tab Bar (Queue1 - OnEntry) - Displays the current object and trigger/picklist being edited.

- Displays this help page.

- Removes all template code. Template code may be found in picklists and triggers and takes the form
of: /***popup:Conditional*/ and /** \nCondition: *//***tag:expression*//**/

- Checks syntax for compile errors.

- Toggles the current code as Flexscript.

- Toggles the current code as C++ code. Editing C++ code requires compiling the model. See When
to Compile.

- Toggles the current code as DLL linked.

394
- Locks the toggled state of the code. This does not lock the code from being edited, but rather locks the
Flexscript, C++ and DLL toggle. This can be necessary if you want your object triggers to be C++ code as
the property editors automatically toggle the code to be Flexscript.

- The Sampler allows you to insert code into your code editor to reference objects, set labels, get
values etc. For more information see the Sampler page.
Apply All - Saves all changes to all code editors currently docked in the same window.
Apply - Saves changes to the currently active code.
Ok - Saves changes and closes the currently active code.
Cancel - Cancels any unsaved changes and closes the currently active code.

395
Debugging Overview

How It Works
Within the FlexSim code editor, there is a margin on the left side of the line numbers. By clicking in the
margin, you can add a breakpoint to that line of code. The breakpoint will appear as a in the margin. You
can delete the breakpoint by clicking the . When a line of code with a breakpoint is executed, FlexSim
will enter debug mode. While debugging, you will only be able to interact with certain areas of the program
including the debugger tools the tree window, output consoles and a limited number of other windows. The
code window will change to give you tools for debugging.

The debug() Command

The debug() command can be placed in any flexscript code. It acts just like a breakpoint; it will pause the
model and open the debug window when it is executed. However, it will pause the model even when
breakpoint debugging is disabled.
This command makes it possible to have conditional breakpoints.

Controls

Next Line - The yellow arrow shows you what line will be executed next. By pushing the Next Line button,
that line will be executed and the yellow arrow will move to the next line of code to be executed.
Step Into - This button can be used when a line of code contains certain function calls. It allows you to
follow the code execution into the function and proceed line by line. When the function is finished, the
debugger will return to the code that called the function. The only functions you can follow in this way are
nodefunction, executefsnode, and any custom user commands.
Continue - This will cause the FlexScript execution to continue until it reaches another breakpoint. If the
code currently being executed finishes, then it will leave debug mode.

396
Stop Simulation Clock - This button will stop the model's simulation clock. This is particularly useful if the
model is running quickly, as the Continue button may cause FlexSim to re-enter debug mode almost
instantly when it continues.

397
Breakpoints

The Breakpoints window is available through the Debug menu. It is a treeview with checkboxes showing
you what breakpoints have been added to code in the model. You can disable breakpoints by clicking the
checkbox next to the line number where they are. You can disable all the breakpoints by unchecking the
"Enable Breakpoint Debugging" box. Checking and unchecking these boxes will only affect whether a
breakpoint is enabled or disabled, it will not actually delete the breakpoint. To delete a breakpoint, you can
highlight it in this window and press the delete key or click on its in the code window. Disabled
breakpoints will appear as a in the margin and will not cause the FlexScript execution to stop for
debugging.
You may right click on a breakpoint in the breakpoints window to explore the associated code.

398
399
Call Stack

This area shows the current call stack, which is a function call history. The most recent call is always at the
top of the list. In this case, the OnEntry function was called by the OnRecieve function, which was called by
the OnTimerEvent function.
You may right click on any line of the call stack to explore the associated code or node in the tree.

400
Code Profiler

The Code Profile window profiles all the flexscript code being executed in your model.
Enable Flexscript Code Profiling- Check this box to enable Code Profiling. Code profiling will remain
enabled even if the Code Profile window is closed.
Reset Code Profile Data - Clears the currently accumulated profile data.
Self Time (ms) - This is the total amount of time in milliseconds that the code has taken to execute since
the model began.
Total Time (ms) - This is the Self Time plus any time spent calling other functions like User Commands
within the code.
Hit Count - This is the total number of times the code has been executed.
Path - The path to the flexscript node being executed.

Self Time vs Total Time


In most cases the Self Time and Total Time will be equal. However, you'll notice above that the Self Time
and Total Time of the Queue1>variables/exittrigger are different. Within the exit trigger, a user command
called changeLabelValues is called. The Total Time of the Queue's exit trigger is equal to it's Self Time +
changeLabelValue's Self Time.

401
Event List

The Event List is accessed from the Debug menu > Event List.
The Event List shows all the pending events for the model. It is useful for seeing when different events will
occur in order to debug modeling issues. If you have a problem that happens during a particular event, the
Event List is useful for seeing information about that event to help track down the source of the problem.
If you want to only view the events for a particular object, you can right-click on the object in the 3D View
and select View > View Object Events.
Time - This is the time that the event occurs.
Object - This is the path to the object, relative to the model, that the event affects.
Event Type - This is the type of event. It is the event code and will show a number value for event codes
without registered names. You can use the "seteventlistlegendentry" application command to register a
name for custom event types.
For example: applicationcommand("seteventlistlegendentry", 102, "My Event Type", 0); will set event code
102 to show "My Event Type" as its name in the list.
Involved - This is the path to the involved object for the event.
Event Data - This value's use depends on the event and may not be used for all event types.

Filters
The Event List can be filtered based on the Time, Object and Involved columns. Columns with an active

filter will display a . To add/edit a filter, left-click on the header name for the desired filter.
Time - Each time filter has a begin (left) and an end (right) field. Only events that occurred within those two

times will be displayed. To add a filter, click the icon. To remove a filter, click the icon.

Object - This list allows you to filter the event list by which object generated the event. To include or
exclude an object in the list, check or uncheck the box next to its name.

402
Involved - This list allows you to filter the event list by which object is involved in the event. To include or
exclude an object in the list, check or uncheck the box next to its name.

403
Event Log

The Event Log is accessed from the Debug menu > Event Log.
When Enable Loggin is checked, the Event Log will create a record of events that occur in the model. It is
useful for seeing the order in which certain events took place. For each event that happens in the model,
multiple entries may be made in the Event Log to explain what happened during that event. These multiple
entries will all have the same time and all be logged simultaneously when you press the Step button. The
event log will be cleared when the model is reset.
Some exceptions will be recorded in the event log. The entry immediately preceeding the exception entry
will give you a clue as to where the code is that caused the exception to happen. This is particularly useful
if the exception was caused by improper code in an object's trigger. More information about the exception
may be available in the System Console. The model may not be behaving correctly if there are exceptions
happening in the code.
Enable Logging - This will enable or disable event logging. The model will run much slower when logging
is enabled so you should disable logging when you are finished using the event log.
Start Time - If you only want to log a specific time period, you can enter a start time for when the logging
will begin. This will automatically be applied after editing this field without having to reset and rerun the
model.
End Time - Optionally, you can specify an end time for when you want the logging to stop. If the end time
is less than or equal to the start time, it will be ignored.
Settings - Within the settings window, you can set up which events should be recorded in the event log.
Events that have already been recorded will not be affected by changing these settings. Events that occur
after changing these settings will only be recorded if they are enabled here.

404
Export - This will export the Event Log as a csv file. If will only export valid events, ignoring any events that
have been filtered out.

The Table
Time - This is the time that the event happened. The entries happened in order from top to bottom. Entries
recorded with the same time happened in the order shown and may have happened during the same
model event.
Event - This is the type of event. You can enable or disable logging for certain event types in the Settings
window.
Object - This is the path to the event's object.
Involved - This is the path to the involved object for the event.
P1 - P4 - These values depend on the event and may not be used for all event types. Usually they give you
information about what parameters were passed into the event or more information about the event type.
This is useful for debugging if parameter values are not what you expect them to be.

Filters
The Event Log can be filtered based on the Time, Event, Object and Involved columns. Columns with an

active filter will display a . To add/edit a filter, left-click on the header name for the desired filter. Event
log entries that are no longer displayed because they have been filtered will not be exported with the
Export button.
Time - Each time filter has a begin (left) and an end (right) field. Only events that occurred within those two

times will be displayed. To add a filter, click the icon. To remove a filter, click the icon.
405
Event - This list allows you to filter the list by which event or trigger the event was associated with. To
include or exclude an event from the list, check or uncheck the box next to its name.

Object - This list allows you to filter the list by which object generated the event. To include or exclude an
object in the list, check or uncheck the box next to its name.

Involved - This list allows you to filter the list by which object is involved in the event. To include or exclude
an object in the list, check or uncheck the box next to its name.

406
Local Variables

This area shows you the current values of any locally defined variables. As you step through the code,
these values will update immediately so you can see what is happening. Often, models may not behave
correctly because variables in code are not what they are expected to be. This window allows you to see
exactly what the variables are.
Alternatively, you can mouse over variables in the Code Edit window to see their current value.

Keep in mind, the yellow arrow is pointing to the next line to be executed, so if a new variable is being
initialized, you will not be able to see its value until after that line has been executed.

407
Watch Variables

This area allows you to specify other variables or expressions that you want to see, such as global
variables. By pushing the + button, you can increase the number of lines in the table. The - button will
delete the row that was last clicked in the table. You can double-click on a gray area of the table to enter a
variable or expression. Its value will be displayed to the right This can help explain why certain conditional
statements, such as used in "if" statements aren't behaving as expected. It also allows you to see global
variables that otherwise are not visible on the Local Variables tab.

408
Command Helper
The Command Helper is a quick reference for flexscript commands. It can be accessed by two methods:

1. From the Help menu.


2. By pressing F1 while hovering the cursor over a flexscript command.

- Go to the previous command topic.

- Go to the next command topic.

- Search the command list.


User Commands that the modeler creates will also appear in the Command Helper and in the Command
Reference.

409
410
Event Log
Index FlexSim HC at a Glance
Floor Plan Settings
Activating Your License Getting Data from a Simulation
Activity IDs Hourly Arrivals
Activity Names How Activities Begin
Adding a New Tool Component How Patients and Staff Move to Locations or Areas
Adding an Activity How Staff and Resources Are Assigned to an
Adding and Managing Dashboards Activity
Adding and Managing Patient Tracks Importing a Floor Plan File
Adding and Managing Processes Inter-Arrival Times
Adding and Managing Schedules Introduction to Connecting Locations and Item
Adding Locations to an Area Objects
Adding Objects to a Model Introduction to Floor Plans
Adding or Removing Locations and Areas from a Introduction to Key Concepts About Activities
Schedule Introduction to Patient Arrival Patterns
Adding Patients Introduction to Patient Classifications
Adding Resources to a Model Introduction to Patient Visuals
Adding Staff or Resources to a Schedule Introduction to Specific Activity Type Settings
Adding Widgets Introduction to Staff and Resources
Additional Patient Location Settings Introduction to the Library Objects
Advanced Functions Introduction to the Toolbox and Toolbar
Advanced Time Controls Introduction to Tutorials
Appointments Introduction to Widgets
Assigning a Visual Profile to a PCI or Activity Introduction to Windows and Tabs
Basic Activity Settings Key Terms and Concepts
Basic Modeling Functions Key Terms and Definitions
Breakpoints License Activation Concepts
Building a Layout of Your Facility License Activation Example
Building Complex Patient Tracks and Activity Lists License Activation Reference
Call Stack Local Variables
Changing Floor Plans Location Break Options Settings
Changing the Appearance of Staff Resources Managing Visual Profiles
Changing the Shape and Appearance of Objects Milestones
Code Editor Most Activities are Patient-Centered
Code Profiler Move Equipment > Process
Command Helper Move Transports > Process
Copying a Tool Component Moving and Resizing Widget Display Boxes
Costs Moving Groups and Group Members
Creating a Warm-up Period Moving, Resizing, and Rotating Objects
Creating Alternate Resource Groups Navigating in FlexSim HC
Creating Patient-Centered Activities Next Activity
Custom Activity Type Opening and Closing a Tool Component
Custom Arrivals Overview of Activity Types
Customer Support Overview of Adding and Managing Activities
Customizing Object Properties and Settings Overview of the Model Building Process
Data Gathering Strategies Patient Destination
Debugging Overview Patient Overhead Text Display
Decision Point Patient Travels Unattended
Deleting a Tool Component Planning a New Simulation Model
Designing Scenarios and Testing Variables Predecessors
Equipment Requirements Preventing Simulation Model Errors
Escort Patient > Process Process > Send Item
Event List Process > Send Message

411
Process Example 1: Checking Patient Vitals Step Three - Change the Floor Plan's Visual
Process Example 2: Phone Call Answering System Settings
Process Example 3: Staff Meetings Step Three - Delete Activities
Process Step Three - Rename Groups and Group Members
Processing Time Step Three - Set the Hours of Operation
Rearranging Windows and Tabs Step Two - Add a Milestone and Location
Renaming A Tool Component Step Two - Add Group Members to a Resource
Renaming Groups and Group Members Step Two - Add Members to the Alternate Groups
Reorganizing Tool Components Step Two - Assign Patients to a Patient Track
Resizing Windows and Tabs Step Two - Change Activity Priority Levels
Resource Break Option Settings Step Two - Change Visual Profiles
Routine Staff or Location Activities Step Two - Connect the Item Objects
Running a Simulation Step Two - Create an Inter-Arrival Pattern
Running an Experiment Step Two - Create Variable Activities
Saving and Exporting Data Step Two - Import a Floor Plan File
Selecting a Resource Group or Group Member Step Two - Resize and Rotate the Objects
Staff and Resource Priorities The Data Collector
Staff Destination The Distribution Chooser
Staff Requirements The Experimenter at a Glance
Statistics Dashboards The Experimenter
Step Eight - Assign a Transport The Flowchart Tool at a Glance
Step Eight - Reuse Staff Members The Global Processes Tool
Step Five - Add Locations to a Custom Area The Patient Classifications Tool at a Glance
Step Five - Change Staff Member's Appearance The Patient Track Manager at a Glance
Step Five - Keep a Staff Member The Patient Visuals Tool at a Glance
Step Five - Send Staff to a Different Location The Random Interrupts Tool
Step Four - Assign Staff The Shift Schedules Tool at a Glance
Step Four - Assign Visual Profiles to an Activity The Shift Schedules Tool
Step Four - Change Object Settings Training Classes
Step Four - Change Predecessor Settings Transport Patient > Process
Step Four - Move and Rotate Group Members Transport Requirements
Step Four - Scale the Floor Plan Drawing Troubleshooting Floor Plans
Step Nine - Return to a Reserved Location Tutorial 1.1 - Importing a Floor Plan
Step One - Add Staff and Resources to a Model Tutorial 1.2 - Adding Location and Item Objects
Step One - Add the Objects to the Model Tutorial 1.3 - Connecting Locations and Item
Step One - Connect the Location Objects Objects
Step One - Copy a Track Tutorial 2.1 - Adding and Changing Staff and
Step One - Create a Doctor Examination Activity Resources
Step One - Create a New Patient Track Tutorial 2.2 - Creating Alternate Resource Groups
Step One - Create Alternate Resource Groups Tutorial 3.1 - Creating Patient Tracks and Activities
Step One - Create an Hourly Arrival Schedule Tutorial 3.2 - Creating Decision Point Activities
Step One - Create and Save a new Simulation Tutorial 3.3 - Creating Additional Patient Tracks
Model Tutorial 4.1 - Creating Patient Classifications
Step One - Create Different Patient Classifications Tutorial 4.2 - Changing Patient Visuals
Step One - Create New Visual Profiles Tutorial 4.3 - Creating Patient Arrival Patterns
Step Seven - Release a Staff Member Tutorial Case Study
Step Seven - Require Additional Staff Using ExpertFit
Step Six - Assign Equipment Using the Flowchart Tool
Step Six - Send Items to a Lab Using the Simulation Control Bar
Step Three - Add a Processing Time Using this Manual
Step Three - Assign Visual Profiles to a PCI Visual Profile Settings
Step Three - Change Next Activity Settings Watch Variables
Step Three - Change Object Shapes and Welcome to FlexSim Healthcare
Appearance What Are Simulations?

412
What Happens During an Activity
What's New?
Widget Overview
Widget Settings At a Glance
Writing Logic in FlexSim

413

Anda mungkin juga menyukai