Anyone know of an opem source solution to the below?

Background
All staff in the hospital need to have an orientation and Fire training session before they are allowed to access the new site. Each session is 3 Hours long, however the system does not need to manage the number of slots only that the session exists on a particular day

Requirements
Ability to Add / Amend / Delete a session
Ability to Move a session to another day
Ability to move users on a particular slot to another session
Admin users are required to book staff onto the training session
A list of all staff will be required to be chosen from (This list to be supplied by Jo Adams)
Ability to show those that have not yet been booked onto a session and those that have.
Each session to have a pre determined max number of users allowed
Once max number reached no more users allowed to be booked and a message is shown
On slot display screen the number of available slots is to be shown in brackets next to the session name
Ability to select any day where available slots on a session are present

Reporting
Session report detailing all users attending session
Calendar report detailing the sessions for each day, max number of slots for the session and the number of slots available