I've created an intranet based, online multi-user diary which went live in early 2007. Written in PHP and using a MySQL database, it allows Counsellors, Student Services Staff and Students to make appointments.
It had to be a completely anonymous service with not even the Counsellors necessarily knowing the name of the client. This led to problems as I had to make sure clients couldn’t book more than one appointment. They would book their first appointment and then future sessions would be set up by their Counsellor.



The Staff side of the diary allows staff to quickly book and edit appointments. Each 'slot' is displayed in a different colour depending on which Counsellor is on duty. There is also information on the slot's availability, comments, icons to show who booked the appointment (counsellor, staff or student) and icons for afterwards to show whether the client attended or not.
To allow staff to quickly set the data for many slots, I set up the ability to apply a template to a date range in the diary. The template is then saved and can be applied to the diary.
On the student side of things, a basic grid is displayed showing which sessions and Counsellors are available for them to book. The client is only allowed to book one session and a hash of their username is stored. This also allows us to show them their appointment when they return to the page and allows them to cancel it in the future if they so wish. When a client books in this way an e-mail is sent to the Counsellor and a confirmation page for the client is made available for them to print out. If a client cancels an appointment another e-mail is sent to the Counsellor.