The attacker also died on Monday but it was not clear if he took his own life or was killed by police at Mercy Hospital on the city’s South Side, Chicago Police Superintendent Eddie Johnson said.
Chicago “lost a doctor, pharmaceutical assistant and a police officer, all going about their day, all doing what they loved,” Mayor Rahm Emanuel said, fighting back tears.
“This just tears at the soul of our city. It is the face and a consequence of evil.”
Mercy Hospital said the staff who died were Tamara O’Neal, 38, an emergency room physician who never worked on Sunday because of her religious faith, and Dayna Less, 25, a first year pharmacy resident who had recently graduated from Purdue University.
Thousands expected to take part in 'Derry Day' this weekend
Linfield v Portadown Sunday clash: Breakers of the Sabbath will answer to God
Esmond Birnie: The protocol is not as claimed boosting growth in Northern Ireland
Crawfordsburn Country Park: Five PSNI officers injured bringing crowd of 600 under control - two teens arrested - parents asked to know where their children are
Search for missing man ends with body found on north coast
The officer was identified as Samuel Jimenez, 28, who joined the department in February 2017 and had recently completed his probationary period, Mr Johnson said.
Police said he was married and the father of three children.
The identity of the gunman was not immediately released.
The chain of events that led to the shooting began with an argument in the hospital parking area involving the gunman and Ms O’Neal, police said.
When a friend of Ms O’Neal tried to intervene, “the offender lifted up his shirt and displayed a handgun,” Mr Johnson said.
The friend ran into the hospital to call for help, and the gunfire began seconds later, with the attacker killing Ms O’Neal.
After Ms O’Neal fell to the ground, the gunman “stood over her and shot her three more times,” a witness named James Gray told reporters.
When officers arrived, the suspect fired at their squad car and then ran inside the hospital. The police gave chase.
Inside the medical centre, the gunman exchanged fire with officers and “shot a poor woman who just came off the elevator” before he was killed, Mr Johnson said, referring to pharmaceutical assistant Ms Less.
“We just don’t know how much damage he was prepared to do,” Johnson said, adding that Ms Less “had nothing to do with nothing”.
Jennifer Eldridge was working in a hospital pharmacy when she heard three or four shots that seemed to come from outside.
Within seconds, she barricaded the door, as called for in the building’s active shooter drills. Then there were six or seven more shots that sounded much closer, just outside the door.
“I could tell he was now inside the lobby. There was screaming,” she recalled.
The door jiggled, which Ms Eldridge believed was the shooter trying to get in. Some 15 minutes later, she estimated, a Swat team officer knocked at the door, came inside and led her away. She looked down and saw blood on the floor but no bodies.
“It may have been 15 minutes, but it seemed like an eternity,” she said.
Maria Correa hid under a desk, clutching her four-month-old son, Angel, while the violence unfolded.
Ms Correa was in the waiting area of the hospital for her mother-in-law’s doctor appointment when a hospital employee told them to lock themselves in offices.
She lost track of how many shots she heard while under the desk “trying to protect her son” for 10 to 15 minutes.
“They were the worst minutes of our lives,” Ms Correa said.
The Cook County Medical Examiner’s office said it has been notified that four people have died in the shooting.
The Chicago Police Department said one of its officers was shot in the attack and later died at a hospital.
Police said the suspected gunman is dead, but it is unclear if he took his own life or was killed by police.