There is absolutely no substitute for the human touch of when a receptionist personally tells patients that a physician is running behind schedule. Offering an apology to acknowledge the value of the patient's time and periodically updating patients goes a long way to de-fusing patient irritation. With long delays, it's better to offer re-scheduling than to have a patient leave, never to return. However make sure the schedulers discuss arrival times with patients.
Having the front desk know if the physician is "on-time" is also key. This should be communicated to the patient when they arrive. A couple weeks of time study data should give you enough information to estimate your average times in each stage so that you can tell the patient fairly accurately when they will be seen. Make sure this is discussed with the offending physicians and the related impact on patient satisfaction, even knowing getting behind schedule sometimes can’t be helped.