+ [OE-4046] Implemented patient unavailability ranges for operation scheduling
+ [OE-4046] prevent operations being booked into period patient is unavailable
+ [OE-4046] don't allow patient to be marked as unavailable for the same day as the current operation booking.
+ removed invalid delete function from admin for patient unavailable reasons
+ [OE-4047] initial introduction of max procedures and unavailable reasons on sessions.
+ [OE-4047] manage unavailable reason through session admin.
+ [OE-4047]:
  - display max procedures
  - bookable check against max procedure count
  - abstract helper class call for easier testing
+ [OE-4047] make sure patient available check works when patient has no unavailable date periods.
+ [OE-4047]
  - fix for test on active bookings
  - pas through for current procedures from operation to booking
+ [OE-4047] display procedure count availability
+ [OE-4047] display warnings in operation view when session is overbooked
+ [OE-4047] use filtered list for unavailable reasons in theatre diary session form.
+ [OE-4049] initial work to assign referral to operation booking
+ [OE-4049] missing migration file
+ [OE-4049] validation behaviour on the operation referral element
+ [OE-4049] display referral information in view
+ [OE-4049] only show referral selection form element when it can be changed
+ [OE-4049] calculate default referral for operation
+ [OE-4049] added tests for referral choices method
+ [OE-4049] allow referral to be set when scheduling, but not rescheduling
+ [OE-4049] enhanced schedule tests with refactoring to improve testability