One doctor is dead and several are critically injured after a man dressed as a doctor opened fire at the Bronx Lebanon Hospital in New York.
Several emergency workers are being described as heroes after trying to help - and they are now fighting for their lives.
Police confirmed five people were seriously injured, a sixth had gunshot wounds to his leg and a woman, a doctor, was dead as well as the gunman, who had reportedly killed himself.
CBS reported that the NYPD has identified the shooter as Dr Henry Bello, a former employee at Bronx Lebanon Hospital.
According to a law enforcement official, the shooter was wearing a lab coat and had the rifle concealed inside it, AP reported.
"It was a horrific situation unfolding in place that people associate with care and comfort... But even in the midst of this horror there were many, many acts of heroism," de Blasio said.
"We didn't know what was going on, we were scared. I heard people screaming. ... I pushed the chair to the door so nobody could come in. I got scared. I started crying, I didn't know what to do."
An employee wearing green scrubs who got out safely told CBS News he saw blood on the floor and people crying as left the hospital.
He said he barricaded himself in a room until police came to evacuate him.
"I've been here five years and it's the first time I've seen something like this," he told CBS News.
Patients on stretchers and in wheelchairs had been evacuated and were now waiting outside the hospital.
Deputy White House press secretary Sarah Huckabee Sanders said President Donald Trump was aware of the incident.
Earlier, police went floor to floor searching for the 35-year-old gunman, as hospital staff barricaded themselves inside.
The suspect was described as a black male, 6 feet tall, wearing a white lab coat, possibly carrying an M16 rifle under it.
The incident began at 2:50 p.m. at 173rd Street and Grand Concourse in the Mt Eden section, according to CBS New York.
A patient on the tenth floor of the hospital told CBS that a "code red" alarm went off and he barricaded himself inside his room. He was later evacuated along with other patients.
NYPD told people in the area to avoid 1650 Grand Concourse due to the incident.
New York's mayor has been briefed on the situation.
A fire official said one injured doctor was being treated by people inside the hospital using a fire hose as a tourniquet.
US national law enforcement agency the Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) has tweeted it has sent special agents to the hospital to help police.