One of my sons is like this, he works himself up so much it breaks my heart. I was fortunate enough to have the best second grade teacher who coached me through dealing with it. Basically he works himself up so much, he was getting headaches, crying, getting sick and everything every time he had to go to school, if anything happened he didn't expect, or if there was something uncomfortable looming in his future. So here is what she helped me do:
-First, don't warn him of the bad stuff, it doesn't help anyone. When it is time for the bad stuff, basically make it a non-issue, In other words, do not respond to his reaction, only talk about what good things will happen after (go for ice cream, read a book, whatever, something good though).
-When it comes to going to school or having a sub, ignore poor reactions (sometimes this is where I have to walk away to hold it together) and focus over and over again on how excited you are to see him after school and hear about the substitute or how his day was.
-DO NOT SHOW YOUR ANXIETY OR CRY!!!!! This is the hardest but most important. They will learn the behavior from you, it is not all heredity. They will also feed off of you, if you are full of anxiety about him getting a shot and he knows it, it will only get worse. This was the hardest to control for me, but this is the one step I got the best results from.
Now these are pretty basic and it took me a year to deprogram him and myself. We still have some anxiety moments but very far a few between. I will assure you that you will feel like you are being mean and uncaring but it is quite the contrary. You are giving you son the tools you never got as a child. You won't regret it.
Good luck!