question

Christopher C3 avatar image
0 Likes"
Christopher C3 asked Christopher C3 edited

Ways to approach a 'medical rounding' situation

I'm looking for some conceptual pointers on how to get started with creating a 'medical ward rounding' activity within a model.

The background scenario is a ward of admitted patients, who trigger random processes (reflecting unplanned medical events etc).

I'd like to add to this a medical rounding task, where;

  1. A set group of staff gather,
  2. They travel together to each bedside in sequential order,
  3. Undertake some process time there and
  4. Trigger additional flows of activites (eg a non urgent blood sample) for the patient occupying the bed

The model has a particular interest in things like staff distances travelled, so getting this to work in the appropriate bed order is also really important.

All the modelling I've done to date has been 'patient' initiated; what I'm struggling to conceive here is how to approach the problem when I want to control the order the staff behave in externally from a patient flow, and that I want a resource to push a task onto a patient flow.

I've looked at lists (but got stuck on them being within the individual flows), creating separate process flow for just staff (but struggled to push tokens back onto the patient flow) and wait for event (but not worked out how to make sure staff are acquired by patients in right order).

Not necessarily looking for a full solution, but would be grateful for thoughts on what concepts/tools within Flexsim I should be exploring for this kind of activity as I'm not even sure what direction to start in. It feels like the global process route is most promising, but I'm not sure how to push tasks back onto the patient flow with this route.

(I'm surprised a similar question hasn't come up in forum, but can't find it through search - feel free to signpost. I've seen the patient-rounds example, but appears not to work in FS2020/22. I also can't see how this approach controls order of beds/patients visited)

FlexSim 22.0.1
patient rounds
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Christopher C3 edited

Here is an example model of how I would approach this:

Once a patient reaches a bed (which are acquired randomly), they push themselves onto a global list. When the rounding starts, the respective token in that process flow pulls all entries from that list, so it now has an array that contains all currently admitted patients.

In the model, each bed has a 'bedNum' label which dictates in what order they should be visited. This label is added to the list through an expression field. ('value' is the list entry, so the patient in this case -> 'value.up' returns the object the patient is currently in - the bed -> 'value.up.bedNum' returns the label value of the respective bed).

1655808802019.png

This make it possible to use the value as part of the query when pulling from the list and order the patients by the number of their beds. This way, the staff can visit each patient in the order they appear in the array, as they will be ordered by the bed number.

1655809000672.png

The additional activities this triggers do not necessarily have to be located in the patient flow. Instead you could create a token at a different point in the 'rounding flow' and write a reference to the current patient onto that token. I do understand that using the patient flow might be a lot easier due to the way the healthcare environment is set up.

A simple way to create an extra token in a patient flow instance is to send a message to that patient and use an event-triggered source to react to it. You can 'attach' up to three numeric values to the message, which you could use to store the information what process should be started in the patient flow. In the example model I send a 0 as the parameters in 60% of the cases and a number from 1-4 otherwise.

roundingExample_fm.fsm


· 2
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Christopher C3 avatar image Christopher C3 commented ·
Thank you. Grateful as ever for the generosity of knowledge sharing on this forum, and to have a worked example. That looks an elegant solution - on quick skim, there are new bits of syntax and ways of handling tokens for me to digest, so will take it away and study it in more detail.
0 Likes 0 ·
Christopher C3 avatar image Christopher C3 Christopher C3 commented ·

Thanks again. Have enjoyed getting under the skin of this, and it is indeed efficient. I found one issue as you increase model complexity which was that if a patient was discharged during the round, the simulation failed as there was a missing location in the list. I'm experimenting at the moment with a slightly different approach, of seeking the next bed to visit incrementally, meaning it adapts to a patient being away from the bed after the round is initiated.

Patient Rounding model v1.4

screenshot-2022-06-22-182223.png

I can see a potentially more adaptive solution of creating a duplicate of the global 'wardadmissions' list at the start of the flow and pulling off the list one at a time using a 'sort by' function for bed number, filtered by some kind of dynamic ‘available’ label, allowing patients to be incorporated into the round on their return, even if it was to a preceeding bed, but I am struggling at present to do the simple task of copying the tokens from one global list to another - will update further if I can crack this.

0 Likes 0 ·