Police said the shooting took place at the University Hospital in Ostrava on Tuesday morning.
According to police, officers arrived at the hospital five minutes after they received calls about a shooting at 7:19 am (06:19 GMT).
Prime Minister Andrej Babis told Czech Television that the shootings occurred at close range in the waiting room, and Health Minister Adam Vojtech reported that the assault left six people dead.
The assailant was at large, with police searching for him.
Police published the picture of a man they initially said they had identified as the suspect on Twitter but later clarified that he had been a witness, saying they were searching for another person.
Czech Television said police led a handcuffed man out of the hospital but did not acknowledge if he was a suspect.
The hospital was evacuated and police were working to secure the surrounding areas.
The motive behind the attack was not immediately clear.
It was the worst shooting in the country since 2015, when a man shot eight people dead at a restaurant in Uhersky Brod.