I've found that it's best to just ask the physician when shadowing would be most convenient and then make every attempt to accommodate their schedule, regardless of class. That being said, definitely opt out of dates conflicting with labs, exams or reading days, and try not to miss the same class more than once. Let your professor know what's going on in advance if it's a smaller section, they'll understand. Use good judgement.
I think that a solid day of shadowing is worth a day of lecture in almost any case. As long as you're responsible and make up the notes you've missed (and don't skip class frequently), you'll be just fine.
Besides the school year, there's always the summer. Just be sure to ask in advance as there are usually other pre-meds afoot around that time.
As for weekends, it really depends on the doctor. Everyone has a different schedule, and some may very well keep a few weekend shifts. I would suggest being up front with the physician if it's really that big of a deal to you. Just remember to be respectful and cognizant of the fact that they're helping you out here.