The attacker allegedly hijacked a taxi and forced the driver to take him to Westville Hospital in the Indian Ocean port city, police spokesman Jay Naicker said.
“The suspect demanded to see a doctor or nurse and became impatient and began firing shots randomly,” Naicker said.
“In the ensuing pandemonium, three people sustained slight injuries believed to be from shrapnel flying off the concrete walls and floor when they were struck by the bullets.”
He then took two kitchen staff hostage, holding both women inside a first-floor room, he said.
Mark House, a patient being treated for depression, was chatting to his wife on the phone when he heard the gunshots and two hospital staffers ran into his room to hide.
“I thought I was going to die. I thought he will follow them in,” House told AFP.
“People were screaming. I could hear his muffled voice over the screams,” House said. “He was walking around the ward. He was a few metres away from my room.”
“The next moment, the door swung open, I froze, I thought it was him. It was the police. They evacuated me out.”
Hostage negotiators were at the hospital try to defuse the situation, Naicker said, while snipers were positioned outside the building.
Police did not name the gunman but did give his age.