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 Visit
- Create two workflows:
#1 Update Next Visit (This workflow sets the next Visit first time and will not execute thereafter)
Fire this workflow on create of contact/account or on change of Visit field.
If Visit contains data Then
Update Contact Next Visit Field by adding 3 Months in Visit field
2) Birthday Reminder (This workflow sends reminder emails and updates Next Visit Field after each execution by adding 3 months)
If Next Visit contains data Then
Wait untill 5 days Before Visit
Send Email reminder to user - Receptionist
Update Next Visit= After 3 months of Current Visit