Well, the macro tries to do things on the order you wrote, so if you wanted Greater Heal on your mouseover to take priority over doing damage to your target, the easiest way is making sure it comes first on the macro. Changing your macro, that would mean:
You could probably shorten that macro too, and check wether your target or mouseover is dead to make sure the macro doesn't fail due to that:
/cast [target=mouseover,help] Greater Heal; [harm]Smite; [target=mouseover,harm]Smite;[help] Greater Heal; Greater Heal
I didn't test it, but it should work.
/cast [@mouseover,help,nodead][help,nodead]Greater Heal; [harm,nodead][@mouseover,harm,nodead]Smite; Greater Heal