Self-Rostering and Annualised Hours (or How to Keep Everyone Happy All of the Time). St.Emlyn’s

Introducing self-rostering and annualised hours 

Over the last few years, in response to our ever-growing popularity with the public, the number of consultants at the St.Emlyn’s ED in Virchester has significantly grown. This, in turn means that the role of the rota-master has become ever more onerous. The consultant body is composed of individuals with varying interests and who are at different stages of their careers and lives. Some people are flexible in their work patterns while others need to coordinate their shifts months in advance to fit with other commitments of their work or home life. The pattern of patient attendances has also changed over time; an increasing proportion of attendances happening outside of traditional office hours and the shifts worked have had to evolve in response.

Realising that there was no ‘one size fits all’ approach to this conundrum, we sought a solution that reduced rota-master responsibility while increasing the flexibility and autonomy for the individual consultants.

In recognition of these issues we have adopted two distinct but integrated concepts in our approach to the consultant rota: annualised hours and self-rostering. This blog explains how they work, the positives (of which there are many) and some of the downsides too.

Annualised Hours

The concept behind annualised hours is straight forward; Instead of calculating job hours on a weekly basis, the total number of hours, or for a UK consultant, programmed activities (PAs), per year is calculated. In line with RCEM guidelines we used a value of 42 weeks per year as a basis; that is 52 weeks less the entitled annual leave, study leave, professional leave and bank holidays1 (Ed – note that the study leave and professional leave has to be justified as per job plan, courses, activities etc). Next, we calculated the weekly number of pas that any individual worked, for example a consultant may be contracted for 10 PAs with 2 PAs for clinical administration, teaching and continued learning. This would mean that they are contracted to work 8 x 42 = 336 clinical PAs per year. We only took account of the direct clinical care PAs for the purposes of rostering. We work our SPAs flexibly and don’t roster for these on our ‘clinical roster’.


Self-rostering is also a simple concept – calculate how many shifts you have to work in a year then choose which shifts to work; the mechanics of how to actually do it were a little trickier. Here at St.Emlyn’s we have over 25 consultants who work in the ED, but that’s made up of all sorts of different job plans. Some of us work in critical care, some in paediatrics (some not), some work at one of our linked district general hospitals, some do pre-hospital care, others are in education, and of course we have our fair share of clinical directors too etc. This complexity is probably not that unusual and will be reflected in many emergency departments. We support this kind of portfolio career as a way of keeping interested and avoiding burnout. The complexity is a huge bonus individually but it makes the development of a standard model of what a consultant does impossible. Similarly the number of individuals involved and everyone’s commitments and responsibilities meant that a sit-down meeting once a month, or even once a quarter, was never going to be a practical option. We had to find an alternative way of ensuring that we had both adaptability and equity without all being in the same place at the same time to arrange it.

The Practicalities

I thought long and hard about how to actually go about this. A paper wall-chart is a glitch-free solution that never suffers from network issues but is limited by the need for physical proximity in order to view or edit it. On-line solutions involve more than wall space and drawing pins to set up but at least allow everyone access to the rota from anywhere in the world that has internet access. It can also provide a log of who, what and when changes are made in case of any disagreements.

After deciding that the Internet was the future, I looked at several commercially available software packages, and a few free ones, but I couldn’t find anything flexible or adaptable enough to fit in with our idiosyncratic work patterns. UK  consultants have contracts based around Programmed Activities (PAs). A PA is four hours during conventional working time and three hours in the evenings or at weekends. So if somebody wished to work a ‘late’ shift, they may start working in ‘standard’ time and work the last hours of their shift in ‘premium’ time.

After much deliberation I settled on creating our own site on Google sheets. This is a free but powerful spreadsheet software that can be accessed on almost any desktop, tablet or phone with internet access. Access can be controlled requiring users to log-in and then the owner can decide if the users are allowed to edit or just view the sheets. The cells in the spreadsheet can contain not only data but also formulae; and it’s  possible to manipulate the data using Google script, a relatively simple but powerful form of computer code based on Java script.

The On-Call Roster

The on-call remained under the control of the rota-master. A rolling roster is available with several months of on-calls mapped out in advance to facilitate swaps. All of the other shifts were available for self-rostering thought there were some limits imposed, for example, how many of each type of shift were available to be signed up for.

The Master Sheet

The basic concept of the sheet was fairly simple. A Master sheet was used to set the on-calls and then every consultant on the rota had an individual page to choose their own shifts. The Master sheet writes the on-calls to the individuals pages, and the individual pages write the selected shifts to the Master sheet. Scripts are used in the background to limit the options of each cell on the spreadsheet page.

I’ve shown a simplified version of this below. The rota-master has assigned the on-calls for this period and they are visible on everyone’s pages. DocA  decides to sign up for day shifts on Wednesday and Friday. 

Screen capture from Google sheet Master Page
Master page

When DocA looks at his page he can see the on-call schedule. Shifts that are available to be chosen are labelled as ‘Available’. Clicking on a chosen cell will provide DocA with the options of selecting his own initials or leaving it as available. Signing up for a shift is simply a matter of clicking on that cell. To come out of the shift, DocA can select the same cell again and is offered a choice of ‘Available’ or ‘DocA’.

Screen shot from Google sheet Doc A edit
Doc A Selection

DocB may then decide to sign up for a shift on Thursday. When DocB looks at her page she can  see the on-call rota and the available shifts. She can see the shifts that DocA has chosen but these cells are locked for her. When DocB selects an available cell she is offered the options of ‘Available’ or ‘DocB’. This allows everyone to see which shifts have been selected and edit their own choices.

Screen shot from Google sheet Doc B edit
Doc B Selection


Screen shot from Google sheet Doc complete
Master Page with Selected Shifts

Only the rota masters can edit the eight weeks immediately before the current date. This allows last-minute swaps or changes but provides a period of stability before the rota is actually worked. This period of Week One to Week Eight makes up the ‘Current’ rota page. Weeks Nine to Sixteen were available for everyone to edit on the ‘Master’ page; individuals can sign up or sign out of shifts for that period to their heart’s content. The Archive page shows all the shifts that have taken place and there is a table that displays totals for all the shifts that everyone on the rota has completed.

Rolling the Rota

Every weekend, just after midnight on the Sunday night,  the magic happens; a time-triggered script runs that moves everything forwards by one week.  The week that has just passed is dumped on the ‘Archive’ page. Weeks Two to Seven all move up a slot and Week Nine from the editable page moves to the bottom of the Current page. The editable page also moves everything up one notch and a new week Sixteen is generated at the bottom.

The Weekly Update

I’ve shown a simplified version of the rota here with only three weeks in the Current section and three weeks in the Future, editable section. 

Screen shot from Google sheet overall view before update
Rota Page on the First Week

At the end of the week, Week One from the Current rota moves to the Archive page and the rest of the weeks jump up a block. Week Four from the Future rota moves to the bottom of the Current Rota and a new week is generated at the bottom of the Future rota.

Screen shot from Google sheet overall view after update
Subsequent Week Rota


The on-call shifts are automatically filled in from a separate spreadsheet page that is written and is available several months in advance. This means that the next sixteen weeks of the rota are always available to be viewed, avoiding a quarterly rush to sign up for 13 weeks on one day. The ultra-organised can sign up for each week as it becomes available and the more laid-back can let things slip for eight weeks or so and still sign up for their shifts in time. For people who have to work certain shifts there is an option to sign up for default shifts that automatically get added to the rota when it does its weekly update. For example, if you always wanted to do a day-shift on a Monday, then you could sign up for this on your default week and it would be automatically be filled in.

Avoiding Over or Under Working

To ensure that everyone has an idea of where they should be up to with their shifts there are a couple of calculators available. There is one on each individual’s page that keeps tabs of how many shifts you have signed up for. There is another calculator related to the Archive page that shows how many shifts you have actually worked. This calculator also predicts roughly how many shifts you would be expected to have done by this point in the year; if you are at that level or above then the number shows up in green, if you are lagging behind it shows up in red. Simon’s section is shown below. This shows that at this point in time he has worked 210 PAs, he would have expected to have worked 205 by this point in the year and he has 18 more booked into the system at this time. In other words he is slightly ahead of where he should be, but not by too much. A similar calculation can be made for all consultants in the department such that we can see whether the entire team is ahead or behind where they should be at any point in the year.

Annual Leave

Annual leave in an annualised rota works in reverse to a standard rota as instead of booking your time off, you are booking your time on. Any time that you are not signed up for a shift is time off (Ed apart from non clinical DCC and SPA). That said, we still found that we had to take a note of leave to allow an oversight of when people were available or not so this was another page on the spreadsheet. Requesting leave on this sheet creates a time-stamp so it was very clear what was requested and by whom. Approved leave is then linked to a Google calendar and also appears on the individuals rota page when the relevant period is on the rota.

Swapping On-call Shifts

On-call swapping has also been automated using another sheet on the rota. The consultant adds their name to a column, and then completes the date and the type of shift that they wish to swap. Automated emails can be generated for the group to ask if anyone could cover it for them. Once someone agrees to cover the shift then they can add their name to the sheet and click to confirm; this time-stamps the agreement and generates emails to the individuals involved confirming the swap and updates the relevant parts of the rota to confirm the change. Or, swaps can just happen the old-fashioned way via a corridor conversation and the rota-master can update the change.

Back Ups

Google makes it easy to make copies of the whole spreadsheet and I did this several times a year as a form of back-up. I also set up a script to create a copy of the spreadsheet in the form of a Pdf file that is emailed to myself and my PA every week on a Sunday just before the update happens. A paper copy is printed off every week to maintain a hard copy.

The Good Bits

So, what is good about it. The whole thing has been relatively easy to implement due to my colleagues being open-minded about a new way of working. Overall the feedback has been overwhelmingly positive.Many of my colleagues describe it as the best thing we’ve ever done and those that have moved elsewhere tell us that they really miss the ability to flexibly self roster.

Other good points are that we have been able to link clinical administration time to the clinical shifts so that there is a direct correlation; the more clinical time that you work, the more admin time that you will receive. This is particularly useful for individuals who work more or less than full-time equivalent.

The annualised hours have also allowed much greater flexibility. It is no longer necessary to swap shifts or on-calls, individuals can simply do the shift and have the associated PAs removed from their pot. This also allows colleagues who may not be part of the main on-call rota to do the occasional on-call.

Recently, we were able to provide cover for our junior colleagues during their recent industrial action by using clinical PAs from our annual pot. Other departments within our Trust had lengthy debates about how the consultants would be remunerated for their additional work.

The flexibility has allowed us to easily redo the calculations to take account of altered job-plans or having new colleagues join our team. And this flexibility has allowed the introduction of single PA shifts which have proved very popular. This allows Consultants to attend a meeting in the morning but still provide a clinical shift in the afternoon or vice versa. It can also help with child care as it’s easy to arrange a 1PA shift around pick up or drop off at school. This temporary boost to consultant numbers helps the department cover meal times, or deal with surges in attendances.

The rota is transparent to all, we can all see what each member of the team is working, which department they are working in and how close to their predicted number of shifts they are. This openness and transparency means that nobody has anything to hide. There is no room here for complaining that someone else is/isn’t working as hard as you are. We all know what we are doing and we can see instantly whether it is ‘fair’ or not. It’s a great way of avoiding disputes about time, location and type of shifts (Ed – you’re being polite Craig, but we both know that problems can really flare up around this in other organisations, we just don’t get that as a result of openness).

We have also seen consultants increase their commitment to out of hours working using this system. A few years ago we were asked to do more evening shifts, way beyond what we were contracted to do. We politely declined the opportunity (there were far fewer of us back then). When self rostering came in the team recognised that there is flexibility in working evening shifts AND there is a time premium for doing so. The result is that we have now effectively doubled our evening and weekend working by allowing the flexibility of self rostering. This is win:win for everyone. We get a better work:life balance, the department gets better cover, the juniors get more support and the team can flex and adjust to what works for everyone. It’s a great example of how a team that works to an opportunity (self rostering), will be far more successful than one that is pushed into change by a threat (the original idea to ‘make’ us work harder).

The Not So Good Bits

What’s bad about it? There was a pretty steep learning curve to get to grips with using spreadsheets and scripting to set the whole thing up. I’m very grateful to all the altruistic individuals who populate YouTube with their videos and patiently respond to queries from ‘noobs’ such as myself on internet forums.

There were a few glitches and teething problems in the system and I am grateful to my colleagues for patiently pointing them out. These problems have become less of an issue as the site has evolved over time and my understanding of spreadsheet function has blossomed from adding up columns of numbers to writing scripts that can run automatically.

While I’ve tried to keep the user interface as simple as possible, the system manages a lot of information from a lot of individuals, meaning that at some level there has to be a degree of complication. This has meant that someone with some understanding of the scripting involved has to be available to deal with any issues that arise.

One major concern with introducing this system was that everyone would sign up for all their shifts at the beginning of the year and leave the last three months of the year without any cover. There was an element of this in the first year but we have largely managed to control this by displaying an ‘expected’ value of shifts on each individual’s page; this lets everyone know if they are behind or ahead of their expected number for that time of year. We have also allowed everyone to carry a few shifts over or under.

This new system has failed to resolve certain issues, such as the fact that there are certain days or weeks that pretty much everyone wants to be off; for example when major conferences are being held locally. For these issues and other issues such as the fair distribution of bank holidays we have had to rely on the altruism and good nature of the consultant body and happily such an approach has overcome any potential issues.

We are also mindful that we have developed what we think is a fabulous system for consultants. If it is as good as we think could we, should we and would we do it for trainees too? That’s a question that has challenged us as non-consultant rota rules are far more complex.  We’d love to hear from anyone else who has done this in the UK.,


Overall, I would wholeheartedly recommend using both annualised hours and self-rostering. The tribulations of introducing this system have been overwhelmed by the benefits of the flexibility and autonomy it provides. The roster is clear, easily accessible and it is very easy to work out when people are working in the future and what shifts they have already completed. Google spreadsheets have provided an excellent platform for this system and after the work of setting up the system, it largely runs by itself with just the occasional adjustment. I really think that we would struggle to return to the old system. 


Craig Ferguson


Before you go please don’t forget to…


Creating successful, satisfying and sustainable careers in Emergency Medicine . Royal College of Emergency Medicine.–inetpub-wwwroot-medicaCreatingsuccessful,satisfyingandsustainablecareersinEmergencyMedicine_FULLREPORT.pdf. Accessed March 8, 2017.

Cite this article as: Craig Ferguson, "Self-Rostering and Annualised Hours (or How to Keep Everyone Happy All of the Time). St.Emlyn’s," in St.Emlyn's, March 10, 2017,

16 thoughts on “Self-Rostering and Annualised Hours (or How to Keep Everyone Happy All of the Time). St.Emlyn’s”

  1. Thanks Craig for outlining the amazing work you’ve done in putting this together. Without doubt it is the system that delivers great rostering for the department AND great flexibility for us. There is no way I could manage my life without this and I’m so thankful for what you have done.

    It really is a win : win system. The hospital/department gets better senior cover, we get a better work life balance and the patients get a motivated and engaged wowrkforce.

    If anyone else is thinking of doing this then my advice is JFDI.


    1. I agree, awesome work Craig. I have been fiddling with this on the back burner for a few weeks in excel – however this looks fantastic. You have me duly motivated do dive into the mysterious world of google sheets. Any links to snippets of functional code / dummy sheets greatly received….:-) (If you don’t ask – you don’t get…) 🙂

      1. Nanette Bothma

        I have to admit to some Google sheet envy here. I run our consultant rota, with a bespoke excel document that I have written, and have contemplated self rostering (I already calculate based on annualised hours). Main concern I have is the “getting together 4x a year for a selfrostering session” as described by the Brighton team. The script you are describing seems to mitigate these sessions. And Google is really good for online collaboration in real time. I would love to have look at the script functionality – perhaps you will consider an offer to share with other rota masters?
        (If you don’t ask – you don’t get…) ????

  2. Sounds like you’ve done an amazing job. Are you intending to publish a mini-manual/in depth guide with script etc so other depts can copy your great work? Also do you think you’ll be able to do this for trainees? (as per Royal Melbourne for example)

    1. Hi Tom, thanks for your comments. I might consider posting something more in-depth about the scripting and linking it here if there is an interest for it, though I wouldn’t pretend to be an expert. The principles of the coding are pretty simple: there are lists of variables, ‘if, else’ statements and loops.

      E.g. my list of doctors = DocA, DocB, DocC…
      If Cell1 contains DocA then colour it in red, or else if it contains DocB colour it in green.
      Do this for Cell1, then go back and do it to Cell2… and then for every cell up to Cell100.

      The rest is vocabulary and syntax. As I’ve used Google sheets I’ve not had to worry about graphics or user interface.

      I’ve discussed this system with our trainees. The issue for them is that we have limited numbers of trainees and fixed hours that we need to cover. We can just about manage the department with two consultants on the shop floor; we know that four is better but we can be a little flexible in how we fill the day. With our trainees, we need to have a senior trainee covering morning, late and night shifts and we have just about enough trainees to provide this. So there is no flexibility in the system.

      We could have some sort of closed self-rostering system, where you could swap shifts around like pebbles on a board without ever being able to create or destroy them. However, the trainees I spoke with didn’t feel that would give them any benefit over the current system that where shifts are assigned and then swapped if necessary.

      I’m not sure what system they use in the Royal Melbourne but would be interested to hear more about it.

    2. I will have to ask Craig as it’s his work. I think there are plans to make it available in some form or other.

      As for trainees, then in principle there is no reason why not. However, the limitations and restrictions imposed by the new contract lead to far less flexibility than in the past, and an enormous difference in flexibility when you look at consultant rotas. Personally I think this is awful. If we could build better flexibility and adaptability into trainee rotas the benefits would be huge. EM would be able to retain trainees better (in my opinion) and could indeed become a better option than some other specialities.

      The biggest problem is for those on NTN contracts, and thus in official training programs subject to the new rota. Paradoxically they then potentially get the worst deal and least flexibility in training. In contrast here in Virchester we have a number of doctors on zero-hour contracts (wait – they might not be as bad as some of the newspapers say) as they take a break between training programs. In that year they get a system of employment (vital for appraisal, supervision, revalidation etc.) and a flexible working pattern that suits them. They can also engage with education and training opportunities with us. They are not limited in other work and they can fit their life around a job in a good department with an interesting case load and (OK I’m biased) supportive consultatns. Thus far these contracts seem very popular, though it’s early days.



  3. Great work Craig! Have been a fan of ASR ever since I heard Rob Galloway in Brighton explain it in detail at RCEM a few years ago. Google sheets w Javascript is a flexible platform for everyone to use. In terms of user interface, did you consider or or I’ve used the former in Melbourne and I know the latter 2 are used widely in N America. Thoughts?

    1. Hi Cian, thanks for your comments. I looked a variety of systems before deciding to go it alone but didn’t find anything suitable for three main reasons:
      1. I wanted self-rostering rather than just using software to write a rota and assign shifts.
      2. Shifts had paid in attributed time (PAs) rather than money
      3. I also wanted to do things like link clinical administration time to clinical shifts. E.g. a shift from 0800 – 1600h attracts 2.25 PAs, that is 2 PAs (2 x 4 h) of clinical work plus 1 hour of associated admin time that can be worked flexibly.

      Maintaining control of the system has been really useful as it has meant that we’ve been able to adapt it at our convenience rather than have to wait for someone from IT to get back to us with a quote.

      I also considered writing something based on iPhones or iPads as I had a little experience of ‘app’ writing but I didn’t want to limit us to using Apple hardware.

  4. Hi Craig

    How do you manage the timing of the release of shifts? I.e. Are some good people hitting ‘refresh’ at midnight to ensure their choice of shifts like a delirious EP trying to secure SMACC tickets?

    We are looking at moving to this system and are trying to plan for such problems. Do you guys do night shifts and are these at 3 hour per pa too or at a more premium rate?



    1. Hi Chris, the shifts update every week so there is no great rush. There is also the default option, so if you want the same shift every week you can just choose it as a default and it will automatically be completed for you. We don’t do night shifts yet, but I think that is only a matter of time. When we move to full night shifts it would be for a higher PA rate that the ‘normal’ premium shifts.

      1. Andrew Webster

        In Leeds we run an annualised rota too, which counts up the different shifts etc. It does not do the self rostering, but autocalculates etc. We have 35 consultants to manage. Currently we do a googleforms for requests around paired/single late shifts, which day best for lates, whether they want to opt into nights for PA’s or not. We also have a sheet to mark down study leave and non-availability.
        It does require a little bit of rota management. But works for us. I am going to look at Craigs work to see if it would help us. We run a set number of shifts that have to be filled across two sites. We rarely have planned extra shifts unless induction etc.

        If anyone wants to see how we do ours I could share too via googledrive

      2. Hi Andrew

        I also have > 20 consultants to manage (in Plymouth) and can’t get my head around the self-rostering yet. I have a fairly complex excel sheet with formulas that calculate based on annualisation. I would love to see how you do it, as I suspect you have the same complexities with the large group and probably very variable job plans. I also have google forms (which can automatically enter requests onto a shared calendar).
        I am just always interested to see what other people do…always looking to improve the process.


  5. Amazing work. Like others I am teetering on the brink of full self-rostering (we are already annualised) but will need some buy in and support from colleagues. I currently do the whole shift allocation manually but have excel do the calculations.

    I am proficient at Excel including writing array formulae but have no experience with Google sheets or scripts. How much time (hours) would you estimate it would take to produce a rota like this from scratch? Is there a particular website that can get me started with the script function of Google sheets?

  6. Hi, I’ve had a few requests for some more technical information on how to do this with Google sheets. I’m in the process of setting up a mock rota page; I’ll provide a link for this on here which will show the principles of how to go about it.

  7. Ok, so I’ve made up a simple rota with working scripts to share. You need to have a Google account and be signed in to use scripts. It’s easy and free if you don’t already have an account. The link to the rota site is here:

    Please use ‘File’ then ‘Make a copy’ to make your own copy to play around with so that you don’t break it for anyone else. If you go to ‘Tools’ then ‘Script editor…’ you should see the associated script.

    This is a simplified version to show the principles of how I’ve made up our system.

    The ‘DocA’ page allows DocA to sign in or out of shifts, likewise for DocB and DocC. This applies to working weeks and the default week. The ‘Master’ sheet shows all the filled and unfilled shifts. There is a button linked to a script that causes the top week to be archived and the bottom week to be filled in from the default week on all the pages. In practice this happens at a set time rather than by pressing a button.

    The ‘Validation’ page is the easiest way I found to store the names and validation lists. Normally this page is hidden.

    I hope that this page is of value to those of you who have expressed an interest in creating your own systems. Let me know if you have any trouble accessing this page, however beyond this I’m afraid I really don’t have time to answer specific enquiries regarding scripting.

    BW Craig.

  8. Pingback: Beligian EM at BeSEDiM 2018. - St.Emlyn's

Thanks so much for following. Viva la #FOAMed

Scroll to Top