Donate to this project

Development Project Status: Under Discussion

Total cost estimate (ex-Tax): 
Due date for completion of this stage: 
Project funding: 

You can donate money to this project by entering the amount above and clicking the 'Add to cart' button. In the Checkout process you can either choose to pay now (via Bank Transfer, Cheque or Pay Pal) or you can pledge the amount by choosing the 'Pledge a payment for a Development Project' method. If you make a pledge, then when we have 100% funding commitments, you will be notified by email and you can then action your payment. Note that development will not commence until all funds are received.

Project description: 

This project will provide rostering support in OpenVPMS.

  • users are rostered using calendars. Each user has their own calendar
  • user availability is determined by calendar events, which have a start time, end time and location
  • when assigning clinicians to appointments, restrict them to those that are rostered on
  • extend the Booking API to enable clinician availability to be queried

Rostering Workspace

A new Rostering workspace will be added to Workflow, listed under Tasks.

This will display a table of all users that are associated with the current practice Location and their associated calendar.

The first column in the table will contain the user name.
Subsequent columns will represent the days. If a user is rostered:

  • on, the cell will be coloured differently:
    • if they are rostered on at the current location
    • if they are rostered on at a different location
    • if they are rostered on at both the current and different location on the same day
  • off, the cell will be blank

If a user has no calendar, the row next to their name will display:

'User has no calendar. Click Edit to create one.

Double clicking a cell, or clicking Edit will display the calendar for the associated user.

Calendar Editing

A calendar is used to roster a user on or off.
This is displayed as a grid, with the columns representing the days, and the rows representing the times.
Calendar events are placed to determine when a user is rostered on.
Each event contains a:

  • practice location
  • optional schedules that the user may be scheduled to

Calendar blocks may be placed to determine when a user is on leave etc.

Events may not overlap with other events or blocks.


When a clinician has a roster, attempting to select them for an appointment when they are not rostered on will display a warning:

<Name> is not rostered on.

If a clinician already has an appointment at the same time, it will display a warning:

<Name> already has an appointment at this time for <schedule>.


In all cases, the user can keep the selected clinician, or choose a different one.          

Booking API

The booking API will be extended to:

  • return a list of clinicians who work at a location
  • return the availability of a clinician
    This will be determined from their roster, and any appointments that have already been scheduled for them
    The response will include an optional list of schedules, in case clinicians can be rostered to specific schedules in future
  • allow bookings to be made for a specific clinician
    If the clinician is not available at the time, a note will be added to the booking.


This project will not support:

  • synchronisation with 3rd party rosters or calendars.
    Plugins can be developed to provide this functionality.
  • rostering clinicians to specific schedules
    When making appointments, clinicians can be assigned to any schedule


Syndicate content