Well, this is not beyond the scope of workflow functionality. You need to think a bit and plan your fuctionality. Since workflow normally waits for a future date so let me give you a simple solution for this.
- Create a custom field at contact named next birthday
- Create two workflows:
#1 Update Next Birthday (This workflow sets the next birthday first time and will not execute thereafter)
Fire this workflow on create of contact/account or on change of birthday field.
If Birthday contains data Then
Update Contact Next Birthday Field by adding 12 Months in Birthday field
2) Birthday Reminder (This workflow sends reminder emails and updates Next Birthday Field after each execution by adding 12 months)
If Next Birthday contains data Then
Wait untill 5 days Before Birthday
Send Email reminder to user - Receptionist
Update Next Birthday = After 12 months of Current birthday
Hope it will work out.