Table Of Contents
Section 1: Introduction
Section 1.1: COVID-19, A Brief History
Section 1.2: Toll on Hospitals
Section 1.3: How can the United States Increase Hospital Preparedness?
Section 1.4: Supplemental Information
Section 1.5: Previous Work
Section 2: Exploratory Data Analysis
Section 3: Methods and Results
Section 3.1: USA Case Study
Section 3.2: New Jersey Case Study
Section 3.3: New York Case Study
Section 3.3.1: New York City Case Study
Section 3.4: Virginia Case Study
Section 4: Conclusions
Section 5: Limitations and Future Work
Section 6: References
Section 1: Introduction
Section 1.1: COVID-19, A Brief History
Novel Coronavirus, also known as SARS-CoV-2 or COVID-19, is a global pandemic that has spread at an exponential rate since originating in Wuhan, China in late 20191. As of May 9th, 2020, there have been over 4 million confirmed cases and over 250,000 associated deaths2. Symptoms of the virus include fever, chills, tremors, myalgias, headaches, dysphagia, and dyspnea3. The virus yields a 7% fatality rate due to these symptoms eventually progressing to significant alveolar damage and eventual respiratory failure4. As of today, no antiviral treatments or preventative vaccines specifically targeting and protecting against COVID-19 exist5. As a result, both the confirmed case incidence and death rate of the virus continue to increase.
In the United States alone, the number of confirmed cases has eclipsed 1.3 million, and governments across the country have been implementing quarantine and lock down measures due to the acute threat since late March 20206. However, as time elapses, protests, led by disgruntled and frustrated citizens with the intent to coerce governments into reopening, have been increasing in frequency7. Due to this trend, several questions have arisen: Is the country ready to open again? Is social distancing even working? How long will social distancing last?
To answer these questions, it is vital to consider the incidence and prevalence of COVID-19 cases around the country. Although experts are pointing to certain locales reaching the asymptotical region of the growth curve in terms of daily cases, incidences continue to skyrocket in other locales. As a result, epidemiologists and infectious disease professionals continue to recommend contingency measures and social distancing.
Section 1.2: The Toll on Hospitals
One thing both the proponents and opponents of social distancing can agree on is the fact that hospitals around the country are still being bombarded by this high incidence of confirmed COVID-19 cases. Nurses, doctors, and social workers, among others, are working tirelessly to treat patients in critical condition, risking their own healthy status. This constant exposure, combined with consecutively working several hours at a time without a break, has taken its toll on medical professionals. Lorna M. Breen, previously a doctor in Manhattan, where the pandemic has been ruthless in its reign, committed suicide on April 29th, 2020, citing devastating scenes of the toll COVID-19 took on patients as well as her hectic schedule as reasons for her self-inflicted injuries that ultimately proved fatal8.
Additionally, hospitals around the country have been facing severe shortages of necessary protective equipment such as masks, gloves, and eye guards9. Medical equipment necessary for the treatment of the disease itself is also running out in certain hospitals, and automobile companies have even started to manufacture items such as respirators to lessen the shortages10. Despite this, equipment scarcity is a constant threat to the country’s ability to survive the pandemic with minimal damage until an antiviral treatment, preventative vaccine, or herd immunity is achieved.
Section 1.3: How can the United States Increase Hospital Preparedness?
The lack of medical supplies, citizens adhering to social distancing/quarantine, and availability of a treatment or vaccine simply exponentiates the virus’s already severe threat: Hospitals in the United States haven’t faced such a steady influx of patients since arguably the Spanish Flu pandemic of 191811. This begs the question: What region(s) of the country currently or will soon require the most emergent hospital aid due to the pandemic?
This question is important for governments to consider for several reasons. If an area is deemed more vulnerable to the pandemic, acute funding, medical equipment, and even healthcare professionals can be sent to lessen the toll. Furthermore, reallocating resources to more emergent areas can help decrease the skyrocketing incidence of COVID-19 as a whole, as domino effects can occur in which one region falls to the pandemic and exponentially spreads the virus to two or more other regions. Finally, answering this question can simply help raise the awareness of American citizens to what is occurring in areas of the country that they are not privy to. This can aid in the countrywide acceptance of vital contingency measures that can serve to bring an end to the current situation.
Section 1.4: Supplemental Information
The following is an attempt to answer the bolded question above using data visualization in the R language and analyzing locales based on the current total COVID-19 cases per staffed hospital bed. RStudio was utilized as the IDE for this study. The following libraries were also utilized:
library(maps)
library(ggplot2)
library(leaflet)
library(mapdata)
library(dplyr)
library(plotly)
library(tidyverse)
library(lubridate)
library(rio)
library(plyr)
library(leaflet.providers)
library(riskyr)The United States was used as the country of interest. First, the United States was analyzed by state to determine the most vulnerable states in terms of confirmed cases per staffed hospital bed. Within the United States, the states of New Jersey, New York, and Virginia were then analyzed by county to determine which counties in each of these states are most vulnerable using the same metric. New York City was also analyzed as proof-of-concept that this analysis can be extended to the narrowest locality and even be utilized to identify vulnerable boroughs of a metropolis.
Section 1.5: Previous Work
Since the current COVID-19 pandemic has only been existent since late 2019, there is relatively limited previous work on this topic in terms of region vulnerability predictions. However, plotting geospatial data using the maps and leaflet packages has been extensively performed with many applications, including population density, political voting layouts, and other census data. The methodology outlined below can be seen as an extension of this work, as it uses a distribution of staffed hospital beds, analogous to population density, as well as total COVID-19 cases, to generate a metric of vulnerability for each subregion within a certain locale.
Furthermore, data visualization simply based on total COVID-19 cases has been performed extensively as the pandemic has progressed. Institutions such as the Centers for Disease Control and Prevention as well as Johns Hopkins University have been updating their websites almost instantaneously for real-time visualization of case rate and death rate during the current pandemic.
Previous works similar to the methodology that will be outlined can be found listed below. Some of these works were used as inspiration for the methodology of this report:
Making Maps with R| Using Leaflet| Geocomputation with R| Johns Hopkins COVID data| Center for Disease Control and Prevention COVID-19 Visualization| RStudio and COVID-19| UVA COVID-19 Surveillance Dashboard| COVID-19 Epidimiology with R
Section 2: Exploratory Data Analysis
The variables that will be emphasized in this report primarily include the accumulated number of confirmed total COVID-19 cases by subregion, as of May 8th, 2020, as well as the quantity of staffed hospital beds within the subregion.
At the country level, the vulnerability is determined by states as the subregion in the case of the United States. It is important to qualitatively assess the distribution of staffed hospital beds by state when deeming a state as vulnerable to the pandemic. However, it is not feasible to map all of the hospitals in the entire country out by their coordinates, where this may be possible at the state level. Therefore, it is easier to focus on the region of the staffed hospital beds rather than the location:
## NAME StaffedBeds
## Alabama : 1 Min. : 835
## Alaska : 1 1st Qu.: 3640
## Arizona : 1 Median :10195
## Arkansas : 1 Mean :14351
## California: 1 3rd Qu.:16956
## Colorado : 1 Max. :74624
## (Other) :46
## [1] 746275
The output above depicts summary statistics of the distribution of staffed beds across all of the states (subregions) in the United States. This will be a useful statistic in determining state vulnerability to the pandemic, as it will be the divisor to generate a metric of total COVID-19 cases as a function of hospital distribution in each state. The average number of hospital beds in each state was determined to be 14,351 staffed beds. The total number of staffed beds in the country is 746,275 beds.
usa_covid_data <- read_csv(url("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv"))
usa_covid_data_frame <- usa_covid_data %>% as.data.frame(stringsAsFactors = FALSE)
usa_data_covid_clean <- select(usa_covid_data_frame, c(date, state, cases))
usa_data_covid_cleaner <- usa_data_covid_clean %>% dplyr::group_by(state) %>% dplyr::summarize("Cases" = sum(cases))
head(usa_data_covid_cleaner)## # A tibble: 6 x 2
## state Cases
## <chr> <dbl>
## 1 Alabama 207425
## 2 Alaska 12405
## 3 Arizona 219857
## 4 Arkansas 89442
## 5 California 1452020
## 6 Colorado 438960
Another country level summary statistic that is important to consider is the number of confirmed COVID-19 cases in each state. This will be the numerator, or primary factor, in assessing vulnerability of a subregion.
At the state level, the vulnerability is determined by county as the subregion. It is important to qualitatively assess the hospital distribution layout within a state, as this can generate initial expectations as to which regions should be the most vulnerable.
## Hospital County StaffedBeds lng lat
## 1 Palisades Medical Center Hudson 202 -74.0129 40.8009
## 2 AtlantiCare Regional Atlantic City Atlantic 540 -74.5421 39.4761
## 3 Bayonne Medical Center Hudson 163 -74.1124 40.6682
## 4 Bayshore Medical Center Monmouth 169 -74.1917 40.4055
## 5 Bergen New Bridge Medical Center Bergen 1020 -74.0629 40.9570
## 6 Cape Regional Medical Center Cape May 149 -74.8169 39.0875
The output above shows a sample of a data frame for the hospitals in New Jersey based on name, county, staffed beds, longitude, and latitude. This is helpful for later plotting the hospitals and assessing the staffed beds in each county within a state, or even borough within a metropolis:
nj_hospital_beds <- select(nj_hospitals, c("County", "StaffedBeds"))
nj_hospital_beds <- nj_hospital_beds %>% mutate(County = as.factor(toupper(County))) %>%
dplyr::group_by(County = County) %>% dplyr::summarize(StaffedBeds = sum(StaffedBeds))
head(nj_hospital_beds)## # A tibble: 6 x 2
## County StaffedBeds
## <fct> <dbl>
## 1 ATLANTIC 739
## 2 BERGEN 2942
## 3 BURLINGTON 569
## 4 CAMDEN 1984
## 5 CAPE MAY 149
## 6 CUMBERLAND 325
The output above depicts how to analyze the counties of New Jersey in terms of total staffed beds given the data frame used previously. The number of staffed beds per county will be what the vulnerability metric is determined with respect to (divisor).
In summary, vulnerability in the methodology outlined below will be assessed based on confirmed COVID-19 cases per staffed hospital bed in the subregions of interest. This will be the metric in determining which region(s) of the United States require the most emergent healthcare aid due to the pandemic.
Section 3: Methods and Results
Section 3.1: United States Case Study
This section aims to identify the region(s) of the United States by state where healthcare systems are most vulnerable to the current COVID-19 pandemic. It outlines the methodology of the entire study explicitly in a step-by-step process applied to the United States.
Step One: Mapping hospitals and determining staffed beds in each state
usa_states_geo@data <- left_join(usa_states_geo@data, usa_hospitals_df, by = "NAME")
pal <- colorNumeric("magma", NULL)
usa_hospitals_map <- leaflet(usa_states_geo) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-95.7129, lat=37.0902, zoom = 2) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,
fillColor = ~pal(log10(StaffedBeds)),
label = ~paste0(toupper(NAME), ": ", formatC(StaffedBeds, big.mark=",", format="d"), " Staffed Beds"), color = "black") %>%
addLegend(pal = pal, values = ~log10(StaffedBeds), opacity = 1.0,
labFormat = labelFormat(transform = function(x) round(10^x)), title = "Staffed Beds")
usa_hospitals_mapFigure 1: Choropleth Map of Total Staffed Beds by State in the United States
As can be seen in Figure 1 and the associated code chunks above, the rgdal package was utilized to read OGR data from a .json file that represented the state boundaries of the United States. The .json file was obtained from this site. A data frame including the total staffed beds of each state was created using data obtained from the American Hospital Directory. Combined with the geospatial polygon data, the states were plotted as polygons with the fill of each polygon determined by the quantity of total staffed beds; a choropleth map was created of the United States in terms of total staffed beds by state.
Using this figure, it was determined that the states of California, Texas, Florida, and New York possessed the highest amounts of total staffed beds (74624, 58328, 56074, and 57288, respectively). This suggests that these states are likely most readily able to handle the COVID-19 pandemic based on staffed beds alone. Wyoming was found to have the least amount of staffed hospital beds at 1,261.
Step Two: Mapping the total amount of COVID-19 Cases per State
usa <- map_data("usa")
usa_states <- map_data("state") %>% mutate(State = as.factor(toupper(region)))
usa_data <- read_csv(url("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv"))
usa_data_frame <- usa_data %>% as.data.frame(stringsAsFactors = FALSE)
usa_data_clean <- select(usa_data_frame, c(date, state, cases))
usa_data_cleaner <- usa_data_clean %>% dplyr::rename(State=state, Cases=cases) %>%
mutate(State = as.factor(toupper(State)))
usa_data_current <- filter(usa_data_cleaner, date == "2020-05-08")
usa_covid <- inner_join(usa_states, usa_data_current, by = "State")
ditch_the_axes <- theme(
axis.text = element_blank(),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.border = element_blank(),
panel.grid = element_blank(),
axis.title = element_blank()
)
usa_with_cases <- ggplot(data=usa_covid, mapping = aes(x = long, y=lat, group=group, label = State)) +
geom_polygon(data =usa_covid, aes(fill=Cases), color = "black") +
theme_bw() + coord_fixed(1.3) +
ditch_the_axes
usa_with_cases <- usa_with_cases + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Total Cases")Figure 2: Choropleth Map of Total COVID-19 Cases by State in the United States
As can be seen in Figure 2 and the associated code chunks above, the maps and mapdata packages were utilized in conjunction with ggplot2 and plotly to map the total number of COVID-19 cases by each state with a choropleth map. Confirmed case data was obtained from the nytimes and source found on GitHub. The COVID-19 cases were joined by state to the states obtained from the mapdata package. Data was filtered to only include cases on the most recent date at the time (May 8th, 2020).
Note that this choropleth map does not include Hawaii, Alaska, US Territories, or the District of Columbia secondary to limitations of the mapdata package.
The results demonstrate that New York possesses the highest quantity of total confirmed COVID-19 cases at 335,804. Close behind is New Jersey at 135,454 cases. Virginia pales in comparison at 22,342 cases. This suggests that the hospitals of New York and New Jersey will be the most vulnerable to the pandemic.
Step Three: Reconciling the COVID-19 Cases with Hospital Preparedness by Marking Cases per Staffed Bed
usa_hospitals_with_beds <- usa_hospitals_df %>% dplyr::rename(State = NAME) %>% mutate(State = toupper(State))
usa_covid_with_beds <- left_join(usa_covid, usa_hospitals_with_beds, by = "State")
usa_covid_with_beds <- usa_covid_with_beds %>% mutate(CasesPerBed = Cases / StaffedBeds)
usa_with_cases_and_beds <- ggplot(data=usa_covid_with_beds, mapping = aes(x=long, y=lat, group=group, label=State))+
geom_polygon(data=usa_covid_with_beds, aes(fill=CasesPerBed), color ="black") +
theme_bw() + coord_fixed(1.3) +
ditch_the_axes
usa_with_cases_and_beds <- usa_with_cases_and_beds + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Cases per Staffed Bed")Figure 3: Choropleth Map of Total COVID-19 Cases per Staffed Bed in each State
As can be seen in Figure 3 and the associated code chunks above, a choropleth map of the total COVID-19 cases per staffed hospital bed in each state was obtained through utilization of a combination of the methods and packages outlined in Steps 1 and 2.
The results demonstrate that, in coordinance with the results from Step 2, New Jersey and New York (descending order) are the states in which hospitals are most vulnerable to the COVID-19 pandemic. The total confirmed COVID-19 cases per staffed hospital bed in these states was determined to be 6.70 and 5.86, respectively. Montana was demonstrated to be the least vulnerable state, with a finding of 0.2080 total confirmed COVID-19 cases per staffed bed.
Section 3.2: New Jersey Case Study
This section applies the methodology to the state of New Jersey, which was determined to be the most vulnerable state in America in the previous section. The methodology is outlined again at the level of the state for clarity and reproducibility, and will be used to determine the most vulnerable county within the state of New Jersey.
Step One: Generating a Map of all of the Hospitals in New Jersey
nj_counties <- rgdal::readOGR("https://raw.githubusercontent.com/deldersveld/topojson/master/countries/us-states/NJ-34-new-jersey-counties.json")
nj_hosp_map <- leaflet(nj_counties) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-74.4057, lat=40.0583, zoom = 7) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,label = ~paste0(toupper(NAME)), fillColor = "darkorchid", color = "black")
princeton_icon <- makeIcon(
iconUrl = "princeton.png",
iconWidth = 30, iconHeight = 40,
iconAnchorX = 10, iconAnchorY = 29,
)
for(row in 1:nrow(nj_hospitals))
{
hospital <- nj_hospitals[row, "Hospital"]
staffed_beds <- nj_hospitals[row, "StaffedBeds"]
long <- nj_hospitals[row, "lng"]
lat <- nj_hospitals[row, "lat"]
nj_hosp_map <- nj_hosp_map %>% addMarkers(lng = long, lat = lat,
label = ~paste0("Hospital: ", hospital,"; Staffed Beds: ",
staffed_beds), icon = princeton_icon)
}Figure 4: Map of the Hospitals in New Jersey
As can be seen in Figure 4 and the associated code chunks above, the rgdal and leaflet packages were used to read in geospatial .json data of New Jersey counties and plot these counties with the hospitals (utilizing longitude and latitude coordinates) that are in New Jersey. The .json file of New Jersey counties was obtained from Github, while the hospital data frame was created using data obtained from the American Hospital Directory. Longitudes and latitudes of each hospital were searched for manually.
As demonstrated qualitatively in the figure, the hospitals of New Jersey (outlined by the Orange Icon) are concentrated in the northeastern region of the state. As such, these localities should theoretically be most prepared for the COVID-19 pandemic and accordingly should have the least total COVID-19 Cases per Staffed Bed.
Step Two: Mapping the Total COVID-19 Cases by County in the state of New Jersey
counties <- map_data("county")
nj_county <- subset(counties, region == "new jersey") %>% dplyr::rename(County = subregion) %>%mutate(County = as.factor(toupper(County)))
other_county_data <- read_csv(url("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv"))
nj_data_frame <- other_county_data %>% dplyr::filter(date=="2020-05-08", state=="New Jersey")
nj_data_clean <- select(nj_data_frame, c("date", "county", "cases"))
nj_data_cleaner <- nj_data_clean %>% dplyr::rename(County = county, Cases=cases) %>%
mutate(Cases=as.numeric(Cases), County=as.factor(toupper(County)))
nj_data_cleaner$County <- mapvalues(nj_data_cleaner$County, from ="UNKNOWN", to ="ATLANTIC")
nj_data_cleaner$County <- as.factor(toupper(nj_data_cleaner$County))
nj_covid <- inner_join(nj_county, nj_data_cleaner, by = "County")
nj_with_cases <- ggplot(data =nj_covid, aes(x=long, y=lat, group=group, label=County)) +
geom_polygon(data = nj_covid, aes(fill=Cases), color ="black") + coord_fixed(1.3) +
theme_bw() + ditch_the_axes
nj_with_cases <- nj_with_cases + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Total Cases")Figure 5: Choropleth Map of the Total COVID-19 Cases by New Jersey County
As can be seen in Figure 5 and the associated code chunks above, the maps, mapdata, and plotly packages were utilized to plot the total COVID-19 cases in each New Jersey County. County COVID-19 data was obtained from Github. Data was filtered utilizing dplyr such that it only reflected the most recent date at the time (May 8th, 2020). A choropleth map was generated.
The results demonstrate that Bergen County contains the most COVID-19 confirmed cases in New Jersey (16,709 cases), closely followed by Hudson County (16,520 cases). Overall, cases are heavily concentrated in the northeastern region of the state, indicating that population density may play a role in vulnerability to the pandemic as well. Salem County was determined to have the last amount of COVID-19 confirmed cases at 363.
Step Three: Mapping the Total COVID-19 Cases per Staffed Bed by New Jersey County
nj_hospital_beds <- select(nj_hospitals, c("County", "StaffedBeds"))
nj_hospital_beds <- nj_hospital_beds %>% mutate(County = as.factor(toupper(County))) %>%
dplyr::group_by(County = County) %>% dplyr::summarize(StaffedBeds = sum(StaffedBeds))
nj_hospital_beds
nj_covid_with_beds <- left_join(nj_covid, nj_hospital_beds, by = "County")
nj_covid_with_beds <- nj_covid_with_beds %>% mutate(CasesPerBed = as.numeric(Cases/StaffedBeds))
nj_with_cases_and_beds <- ggplot(data=nj_covid_with_beds, aes(x=long, y=lat, group=group, label=County)) +
geom_polygon(data = nj_covid_with_beds, aes(fill = CasesPerBed), color = "black") + coord_fixed (1.3) +
theme_bw() + ditch_the_axes
nj_with_cases_and_beds <- nj_with_cases_and_beds + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Cases Per Staffed Bed")
ggplotly(nj_with_cases_and_beds)Figure 6: Choropleth Map of the Total COVID-19 Cases per Staffed Bed by New Jersey County
As can be seen in Figure 6 and the associated code chunks above, a combination of the methods utilized in Steps 1 and 2 were utilized in generating a choropleth map of the total confirmed COVID-19 Cases per staffed hospital bed by New Jersey County.
The results demonstrate that Passaic County is the most vulnerable subregion within New Jersey (14.51 cases per staffed bed), closely followed by Hudson County (14.40 cases per staffed bed). Since New Jersey was deemed to be the most vulnerable state in Section 3.1, the results suggest that Passaic County may be the most vulnerable county in the country. The results closely match the expectation based on total COVID-19 cases (Step 2) that the northeastern region of New Jersey would be most vulnerable, yet they also refute the expectation based on the hospital distribution (Step 1). This signifies that population density likely has a large role in making a county vulnerable to the pandemic, which makes sense given that COVID-19 is a highly contagious disease without any existing preventative vaccines or antiviral treatments.
Section 3.3: New York Case Study
This section applies a similar methodology as Section 3.2 but to the state of New York rather than New Jersey. New York was determined to be the second-most vulnerable state to the COVID-19 pandemic based on Section 3.1. This section attempts to identify which county, however, is most vulnerable within the state of New York.
Step One: Generating a Map of all of the Hospitals in New York
ny_counties <- rgdal::readOGR("https://raw.githubusercontent.com/deldersveld/topojson/master/countries/us-states/NY-36-new-york-counties.json")
ny_hosp_map <- leaflet(ny_counties) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-75.0060, lat=43.7128, zoom = 6) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,label = ~paste0(toupper(NAME)), fillColor = "lightblue", color = "black")
apple_icon <- makeIcon(
iconUrl = "apple.png",
iconWidth = 25, iconHeight = 25,
iconAnchorX = 10, iconAnchorY = 14,
)
for(row in 1:nrow(ny_hospitals))
{
hospital <- ny_hospitals[row, "Hospital"]
staffed_beds <- ny_hospitals[row, "StaffedBeds"]
long <- ny_hospitals[row, "lng"]
lat <- ny_hospitals[row, "lat"]
ny_hosp_map <- ny_hosp_map %>% addMarkers(lng = long, lat = lat, label= ~paste0("Hospital: ", hospital, "; Staffed Beds: ", staffed_beds), icon = apple_icon)
}Figure 7: Map of the Hospitals in New York
As can be seen in Figure 7 and the associated code chunks above, the hospitals of New York, obtained from American Hospital Directory, were plotted using leaflet onto the counties of New York, with the .json file obtained from Github and read into RStudio utilizing the rgdal package. The hospitals are represented by the apple icon on the map.
The results demonstrate that the New York hospitals are highly concentrated in the southeastern region of the state, which may match expectations as this is the densest in the country in terms of population (New York City and Long Island). The hospitals in the upstate and northern regions of the state, by comparison, are far less concentrated and rather sparsely distributed, as qualitatively demonstrated by Figure 7.
Step Two: Mapping the Total COVID-19 Cases by County in New York
ny_county <- subset(counties, region == "new york") %>% dplyr::rename(County =subregion) %>% mutate(County = as.factor(toupper(County)))
ny_data_frame <- other_county_data %>% dplyr::filter(date=="2020-05-08", state =="New York")
ny_data_clean <- select(ny_data_frame, c("date", "county", "cases"))
ny_data_cleaner <- ny_data_clean %>% dplyr::rename(County = county, Cases = cases) %>%
mutate(Cases = as.numeric(Cases), County = as.factor(toupper(County)))
setdiff(ny_county$County, ny_data_cleaner$County)
ny_data_cleaner$County <- mapvalues(ny_data_cleaner$County,
from = c("ST. LAWRENCE", "NEW YORK CITY"),
to = c("ST LAWRENCE", "NEW YORK"))
ny_data_cleaner$County <- as.factor(ny_data_cleaner$County)
ny_covid <- inner_join(ny_county, ny_data_cleaner, by = "County")
ny_covid_clean <- ny_covid %>% filter(County!="Bronx" && County != "KINGS" && County != "RICHMOND" && County != "QUEENS")
ny_with_cases <- ggplot(data = ny_covid, aes(x=long, y=lat, group=group, label = County)) +
geom_polygon(data = ny_covid, aes(fill = Cases), color = "black") + coord_fixed(1.3) +
theme_bw() + ditch_the_axes
ny_with_cases <- ny_with_cases + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Total Cases")
ggplotly(ny_with_cases)Figure 8: Choropleth Map of the Total COVID-19 Cases by New York County
As can be seen in Figure 8 and the associated code chunks above, the maps, mapdata, and plotly packages were utilized to generate a choropleth map of the total COVID-19 cases by New York County. COVID-19 data was obtained from Github, as mentioned previously in Section 3.2. It is important to note here that New York county, as seen in the figure, is a combination of Queens, Staten Island, Brooklyn, the Bronx, and Kings counties due to the limitations of the data obtained from Github. The data was filtered to only include the total confirmed cases at the most recent date at the time (May 8th, 2020).
The results demonstrate that the total confirmed COVID-19 cases are maximally concentrated within New York County (187,157 total cases), as no other county shares even a hint of red based on the shading of the choropleth map. In fact, the next leading county was Nassau County, at 37,812 total cases (just under 150,000 cases lower than New York County).
Step Three: Mapping the Total COVID-19 Cases per Staffed Bed by County in New York
ny_hospital_beds <- select(ny_hospitals, c("County", "StaffedBeds"))
ny_hospital_beds <- ny_hospital_beds %>% mutate(County = as.factor(toupper(County))) %>%
dplyr::group_by(County=County) %>% dplyr::summarize(StaffedBeds = sum(StaffedBeds))
ny_covid_with_beds <- left_join(ny_covid, ny_hospital_beds, by = "County")
ny_covid_with_beds <- ny_covid_with_beds %>% mutate(CasesPerBed = as.numeric(Cases/StaffedBeds))
ny_with_cases_and_beds <- ggplot(data = ny_covid_with_beds, aes(x=long,y=lat, group=group,label=County)) +
geom_polygon(data=ny_covid_with_beds, aes(fill=CasesPerBed), color="black") + coord_fixed(1.3) +
theme_bw() + ditch_the_axes
ny_with_cases_and_beds <- ny_with_cases_and_beds + scale_fill_gradientn(colours=rev(heat.colors(7)), name = "Cases Per Staffed Bed")
ggplotly(ny_with_cases_and_beds)Figure 9: Choropleth Map of the Total COVID-19 Cases per Staffed Bed by New York County
As can be seen in Figure 9 and the associated code chunks above, a choropleth map was generated of the total confirmed COVID-19 Cases per staffed hospital bed in each county in the state of New York. A combination of the methods utilized in Step 1 and Step 2 above were utilized were extended for this application.
The results here are surprising, as they demonstrate that Rockland County is the most vulnerable county in the state of New York (18.2678 cases per staffed bed). Suffolk County also had a higher value than New York County (10.88 versus 8.05, respectively). This suggests that population density ultimately accounts for the overlying distribution of hospitals in an area, which can account for the deviation of the results from expected.
New York County, with a population exceeding 3 million, likely has the highest hospital density due to the acute need for many emergency rooms and acute care settings stemming from the highly concentrated population density.
Section 3.3.1: New York City Case Study
This section attempts to find the most vulnerable borough of New York City between Queens, Brooklyn, Manhattan, Staten Island, and the Bronx. The same methodology applied to New Jersey and New York is utilized for New York City. However, in this case study, the subregion studied is the New York City burrow rather than state county.
An advantage of this case study includes utilizing leaflet for all maps.
Step One: Generating a Map of the Hospitals in New York City by Borough
nyc_burrows <- rgdal::readOGR("Borough Boundaries.geojson")
nyc_hosp_map <- leaflet(nyc_burrows) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-74.0060, lat=40.7128, zoom=10) %>%
addPolygons(stroke = TRUE, smoothFactor = 0.2, fillOpacity = 1,
label = ~paste0(toupper(boro_name)),
fillColor = "orange", color = "black")
nyc_icon <- makeIcon(
iconUrl = "nyc.png",
iconWidth = 60, iconHeight = 70,
iconAnchorX = 30, iconAnchorY = 49,
)
for(row in 1:nrow(nyc_hospitals))
{
hospital <- nyc_hospitals[row, "Hospital"]
staffed_beds <- nyc_hospitals[row, "StaffedBeds"]
long <- nyc_hospitals[row, "lng"]
lat <- nyc_hospitals[row, "lat"]
nyc_hosp_map <- nyc_hosp_map %>% addMarkers(lng = long, lat = lat, label= ~paste0("Hospital: ", hospital, "; Staffed Beds: ", staffed_beds), icon = nyc_icon)
}
nyc_hosp_mapFigure 10: Map of the Hospitals in New York City
As can be seen in Figure 10 and the associated code chunks above, the rgdal and leaflet packages were used in conjunction to read in geospatial .json data of New York City boroughs (obtained from here), and plot the hospitals (obtained from American Hospital Directory) on top. The hospitals are represented by the Empire State Building icon, and latitude and longitude coordinates of each hospital was searched for manually.
As demonstrated qualitatively in the figure, Staten Island contains the least number of hospitals (2 hospitals), and by extension should be the most vulnerable borough. The other boroughs are demonstrated to be roughly evenly distributed in terms of hospital density.
Step Two: Generating a Choropleth Map of Staffed Beds of each Borough of New York City
nyc_hospital_beds <- select(nyc_hospitals, c("County", "StaffedBeds")) %>% dplyr::rename(boro_name = "County")
nyc_hospital_beds <- nyc_hospital_beds %>% mutate(boro_name = as.factor(boro_name)) %>%
dplyr::group_by(boro_name = boro_name) %>% dplyr::summarize(StaffedBeds=sum(StaffedBeds))
nyc_hospital_beds_2 <- nyc_hospital_beds %>% mutate(Cases = case_when(boro_name == "Bronx" ~ 40454, boro_name == "Manhattan" ~ 22042, boro_name == "Brooklyn" ~ 47402, boro_name == "Queens" ~ 54959, boro_name == "Staten Island" ~ 12535))
nyc_burrows@data <- left_join(nyc_burrows@data, nyc_hospital_beds_2, by = "boro_name")
pal_2 <- colorNumeric("Blues", NULL)
nyc_beds_map <- leaflet(nyc_burrows) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-74.0060, lat=40.7128, zoom = 10) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,
fillColor = ~pal_2(log10(StaffedBeds)),
label = ~paste0(toupper(boro_name), ": ", formatC(StaffedBeds, big.mark=",", format="d"), " Staffed Beds"), color = "black") %>%
addLegend(pal = pal_2, values = ~log10(StaffedBeds), opacity = 1.0,
labFormat = labelFormat(transform = function(x) round(10^x)),
title = "Staffed Beds")Figure 11: Choropleth Map of Staffed Beds by Borough in New York City
As can be seen in Figure 11 and the associated code chunks above, a choropleth map with fill based on the total staffed hospital beds of each borough was generated for New York City. Data for staffed beds was obtained from the American Hospital Directory.
The results demonstrate that Manhattan has the highest quantity of staffed beds at 9,779. Staten Island lies at the other end, determined to possess the least number of staffed hospital beds at 927. Brooklyn, Bronx, and Queens were demonstrated to possess 5848, 3896, and 2809 staffed beds, respectively.
Step Three: Generating a Choropleth Map of Total COVID-19 Cases of each Borough in New York City
pal_3 <- colorNumeric("viridis", NULL)
nyc_cases_map <- leaflet(nyc_burrows) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-74.0060, lat=40.7128, zoom = 10) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,
fillColor = ~pal_3(log10(Cases)),
label = ~paste0(toupper(boro_name), ": ", formatC(Cases, big.mark=",", format="d"), " Total Cases"), color = "black") %>%
addLegend(pal = pal_3, values = ~log10(Cases), opacity = 1.0,
labFormat = labelFormat(transform = function(x) round(10^x)),
title = "Total Cases")Figure 12: Choropleth Map of Total COVID-19 Cases by Borough in New York City
As can be seen in Figure 12 and the associated code chunks above, a choropleth map with fill based on the Total COVID-19 Cases of each Borough was generated for New York City. The COVID-19 confirmed case data was obtained from NYCHealth and the data was filtered to only include the most recent date at the time (May 8th, 2020).
The results demonstrate that the pandemic has ravaged Queens the most (54,959 total cases), closely followed by Brooklyn and the Bronx (47,402 total cases and 40,454 total cases, respectively). Manhattan and Staten Island, in descending order, have been affected the least relative to the other boroughs (22,042 total cases and 12,535 total cases, respectively)
Step Four: Generating a Choropleth Map of Total COVID-19 Cases per Staffed Hospital Bed of each Borough in New York City
nyc_burrows@data <- nyc_burrows@data %>% mutate(CasesPerBed = Cases/StaffedBeds)
nyc_cases_with_beds_map <- leaflet(nyc_burrows) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-74.0060, lat=40.7128, zoom = 10) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,
fillColor = ~pal_3(log10(CasesPerBed)),
label = ~paste0(toupper(boro_name), ": ", formatC(CasesPerBed, big.mark=",", format="d"), " Total Cases per Bed"), color = "black") %>%
addLegend(pal = pal_3, values = ~log10(CasesPerBed), opacity = 1.0,
labFormat = labelFormat(transform = function(x) round(10^x)),
title = "Total Cases per Bed")Figure 13: Choropleth Map of Total COVID-19 Cases per Staffed Bed by Borough in New York City
Finally, as can be seen in Figure 13, the total COVID-19 cases and staffed beds by borough were reconciled to generate a choropleth map of the Total Cases per Staffed Bed in each Borough of New York City.
The results demonstrate that Queens is the most vulnerable borough of New York City, currently possessing 19 total COVID-19 Cases per staffed hospital bed. The next closest is Staten Island, at 13 total cases per bed, likely due to the two hospitals shown in Figure 10. Then comes The Bronx, at 10 total cases per staffed bed, which is closely followed by Brooklyn (8 total cases per staffed bed). Manhattan, likely due to the dense hospital distribution shown in Figure 10 and high number of staffed beds shown in Figure 11, was demonstrated to possess the least number of cases per staffed hospital bed at 2.
Section 3.4: Virginia Case Study
This section aims to identify the most vulnerable county, in terms of total COVID-19 cases per staffed hospital bed, in the state of Virginia. This was done as proof-of-concept since it is the state of my residence. However, the case study showcases limitations of the methodology outlined in this report.
Step One: Generating a Map of the Hospitals in Virginia by County
va_counties <- rgdal::readOGR("https://raw.githubusercontent.com/deldersveld/topojson/master/countries/us-states/VA-51-virginia-counties.json")
va_hosp_map <- leaflet(va_counties) %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels) %>%
setView(lng=-79.523, lat=37.92, zoom = 6.45) %>%
addPolygons(stroke=TRUE, smoothFactor = 0.2, fillOpacity = 1,label = ~paste0(toupper(NAME)), fillColor = "lightblue", color = "black")
cavelierIcon <- makeIcon(
iconUrl = "Cavelier.png",
iconWidth = 35, iconHeight = 35,
iconAnchorX = 10, iconAnchorY = 29,
)
for(row in 1:nrow(va_hospitals_df))
{
hospital <- va_hospitals_df[row, "Hospital"]
staffed_beds <- va_hospitals_df[row, "StaffedBeds"]
long <- va_hospitals_df[row, "lng"]
lat <- va_hospitals_df[row, "lat"]
va_hosp_map <- va_hosp_map %>% addMarkers(lng = long, lat = lat, label = ~paste0("Hospital: ", hospital,"; Staffed Beds: ", staffed_beds), icon=cavelierIcon)
}Figure 14: Map of the Hospitals in the state of Virginia
Using the methodology outlined previously, a map of the hospitals in Virginia was obtained. Hospital data was obtained from the American Hospital Directory and each hospital is represented in the figure by the University of Virginia logo. The coordinates of each hospital were searched for manually.
The results (Figure 14) demonstrate that hospitals are heavily concentrated in the far northern, eastern, and western regions of the state, but rather sparsely distributed within the central and southern regions. Furthermore, some counties do not possess hospitals (see Highland, Buckingham, and Campbell).
Step Two: Generating a Choropleth Map of the Total Confirmed COVID-19 cases in each county of Virginia
states <- map_data("state")
virginia <- subset(states, region == "virginia") %>% mutate(County = as.factor(toupper(subregion)))
va_county <- subset(counties, region == "virginia") %>% dplyr::rename(County = subregion) %>% mutate(County = as.factor(toupper(County)))
virginia_data <- read_csv(url("https://www.vdh.virginia.gov/content/uploads/sites/182/2020/03/VDH-COVID-19-PublicUseDataset-Cases.csv"))
virginia_data_frame <- virginia_data %>% as.data.frame(stringsAsFactors = FALSE)
virginia_data_clean <- select(virginia_data_frame, c("Report Date", "Locality", "Total Cases"))
virginia_data_cleaner <- virginia_data_clean %>% dplyr::rename(County= Locality, Cases = "Total Cases", Date = "Report Date") %>%
mutate(Date = mdy(Date),
Cases=as.numeric(Cases))
virginia_data_cleaner <- virginia_data_cleaner %>% mutate(County = as.factor(tolower(County)))
virginia_data_cleaner$County <- mapvalues(virginia_data_cleaner$County, from = c("alexandria", "bristol", "buena vista city", "charlottesville", "chesapeake", "colonial heights", "covington", "danville", "emporia", "fairfax city", "falls church", "franklin city", "fredericksburg", "galax", "harrisonburg", "hopewell", "lexington", "lynchburg", "manassas city", "manassas park", "martinsville", "norton", "petersburg", "poquoson", "portsmouth", "radford", "richmond city", "richmond county", "roanoke county", "roanoke city", "salem", "staunton", "waynesboro", "winchester", "franklin county", "williamsburg"), to = c("fairfax", "washington", "rockbridge", "albemarle", "norfolk", "dinwiddie", "alleghany", "pittsylvania", "greensville", "fairfax", "fairfax", "franklin", "spotsylvania", "carroll", "rockingham", "prince george", "rockbridge", "campbell", "prince william", "prince william", "henry", "wise", "prince george", "york", "norfolk", "montgomery", "richmond", "richmond", "roanoke", "roanoke", "roanoke", "augusta", "augusta", "frederick", "franklin", "york"))
virginia_data_cleaner$County <- as.factor(toupper(virginia_data_cleaner$County))
virginia_data_current <- filter(virginia_data_cleaner, Date == "2020-05-08")
virginia_covid <- left_join(va_county, virginia_data_current, by = "County")
va_with_cases <- ggplot(data=virginia_covid, aes(x=long, y=lat, group = group, label=County)) +
geom_polygon(data = virginia_covid, aes(fill=Cases), color = "black") + coord_fixed(1.3) +
theme_bw() +
ditch_the_axes
va_with_cases <- va_with_cases + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Total Cases")Figure 15: Choropleth Map of Virginia based on Total Confirmed COVID-19 Cases by County
Using methodology outlined previously, a choropleth map of the state of Virginia filled by Total COVID-19 confirmed cases was generated by county (Figure 15). COVID-19 data was obtained from Virginia Department of Health and filtered to only include the most recent date at the time (May 8th, 2020).
As can be seen in the figure, the results demonstrate that Fairfax County possesses the highest number of total confirmed COVID-19 confirmed cases at 5,338. Other counties do not really come close (second highest is Prince William County at 2,474 confirmed cases).
Step Three: Generating a Choropleth Map of the Total Confirmed COVID-19 cases per Staffed Hospital Bed in each county of Virginia
va_hospital_beds <- select(va_hospitals_df, c("County", "StaffedBeds"))
va_hospital_beds <- va_hospital_beds %>% mutate(County = as.factor(toupper(County))) %>% dplyr::group_by(County = County)
va_hospital_beds
va_hospital_beds <- va_hospital_beds %>% dplyr::summarize(StaffedBeds = sum(StaffedBeds))
va_hospital_beds
va_hospital_beds$County <- mapvalues(va_hospital_beds$County, from = c("CHESAPEAKE", "PORTSMOUTH"), to = c("NORFOLK", "NORFOLK"))
setdiff(va_hospital_beds$County, virginia_covid$County)
virginia_covid_with_beds <- left_join(virginia_covid, va_hospital_beds, by = "County")
virginia_covid_with_beds[is.na(virginia_covid_with_beds)] <- 1
virginia_covid_with_beds <- virginia_covid_with_beds %>% mutate(CasesPerBed = as.numeric(Cases/StaffedBeds))
va_with_cases_and_beds <- ggplot(data=virginia_covid_with_beds, aes(x=long, y=lat, group = group, label=County)) +
geom_polygon(data = virginia_covid_with_beds, aes(fill = CasesPerBed), color = "black") + coord_fixed(1.3) +
theme_bw() +
ditch_the_axes
va_with_cases_and_beds <- va_with_cases_and_beds + scale_fill_gradientn(colours = rev(heat.colors(7)), name = "Cases Per Staffed Bed")Figure 16: Choropleth Map of Virginia based on Total COVID-19 Confirmed Cases per Staffed Bed by County
As can be seen in Figure 16 and the associated code chunks above, a choropleth map of the state of Virginia filled by Total COVID-19 Confirmed Cases per Staffed Bed by county was generated.
Contrary to the results suggested from Figure 15, Buckingham County was demonstrated to possess the most cases per staffed hospital bed (225). However, herein lies a limitation of the methodology in that Buckingham does not contain any hospitals (see Limitations and Future Research). Fairfax County was found to possess among the least number of cases per staffed bed at 2.94. This can be explained by the high concentration of hospitals present in Northern Virginia (Figure 14).
Conclusions
The United States was analyzed to determine which region(s) of the country are most vulnerable to the current COVID-19 pandemic using a top-down methodology. The total number of confirmed cases to date (May 8th, 2020) was taken for each subregion, whether it be the state, county, or borough of NYC, and divided by the number of staffed hospital beds present in the subregion. This obtained a metric of cases per staffed bed, which corresponded to vulnerability via a positive relationship. Hospitals were also plotted by their longitudes and latitudes to qualitatively assess their distribution and generate expected trends.
At the level of the United States, the state of New Jersey was determined to be the most vulnerable, with a finding of 6.7033 cases per staffed bed. New York closely followed behind, found to possess 5.8617 cases per staffed bed. These states were analyzed further to determine which counties are most vulnerable within.
Regarding New Jersey, the most vulnerable state, it was determined that Passaic County is the most vulnerable subregion, with a finding of 14.51 total confirmed COVID-19 cases per staffed bed. Hudson County closely followed suit with a finding of 14.40 total cases per staffed bed.
Rockland County was determined to be the most vulnerable county in the state of New York, with a finding of 18.2678 cases per staffed bed. Rockland’s metric was nearly double the next highest value (New York County; 10.88 cases per staffed bed). However, this analysis may have been skewed due to the limitations of the maps and mapdata package not allowing for analysis of Queens, Bronx, and Brooklyn Counties.
To further this analysis, New York City was analyzed by borough to determine which of Queens, Brooklyn, Bronx, Staten Island, and Manhattan is most vulnerable. This showcased that the methodology can be applied to the narrowest of localities. It was determined that Queens is the most vulnerable borough of New York City, with a staggering 19 total COVID-19 cases per staffed hospital bed finding.
Virginia was also analyzed, and it was determined that Buckingham County, with a finding of 225 cases per bed, was the most vulnerable based on the methodology. However, this showcases a limitation of the methodology used due to Buckingham County not possessing any hospitals (a staff bed value of 1 was utilized for clarity).
Overall, the methodology was able to effectively illustrate which region(s) of the United States are in most acute need of healthcare aid based on the number of total COVID-19 cases per staffed hospital bed. Using this methodology, governments can reallocate funding to help healthcare systems that are most in need. Furthermore, manufacturers can acutely direct medical equipment reinforcements to the regions the methodology finds are the most vulnerable to the pandemic. This can help curtail the growing incidence of COVID-19 and fight the pandemic until an antiviral treatment or preventative vaccine is discovered.
Limitations and Future Work
Although the methodology outlined in this paper is effective, several limitations exist. Primarily, the hospitals utilized may not have been representative of the entire population of hospitals within the United States. This can be clearly seen in the Virginia case study, in which Buckingham County was found to be the most vulnerable due to the locale not possessing any healthcare centers. Similarly, this methodology would fail when applied to other states in which there are an extensive quantity of subregions which may or may not contain the metric required (in this case, hospitals). That being stated, only major hospitals were included in this study, and the outcomes may have been very different in the case that urgent care centers or small, privately owned hospitals were taken into account. Future research should take these types of smaller care centers into account, in addition to utilizing other types of care centers such as nursing homes and hospice centers which can also provide critical care during a pandemic. Another change to address this limitation is including transportation networks (roads, highways, etc.) and combining some subregions into larger regions based on distance. Taking population density into account and generating an underlying heat map to the data might also help to understand which counties can be combined to avoid the possibility of a subregion not possessing the metric of interest.
Another limitation includes the instantaneous data utilized rather than a continuous source over time since the COVID-19 outbreak in the United States first occurred. Since the total accumulation of confirmed cases was filtered to only include data of May 8th, 2020, there was no time factor taken into account. This can render the methodology inconsequential in the late stages of the pandemic, as the growth rate may be slowing down but the total amount of confirmed cases will always accumulate. Future research on the methodology should take into account the incidence rates of a recent period (e.g. one week or past five days) in the locality and incorporate this into the vulnerability rating. This would help in giving the metric a sense of urgency, and could possibly be performed by plotting the choropleth maps over time using a slider in the plotly or shiny packages.
Finally, an additional limitation of the methodology outlined above is the limited sample size of case studies. The COVID-19 pandemic is globally ravaging several countries, not just the United States. Therefore, it is important to consider the scope as the world rather than a lone country. Although this may not be entirely necessary due to the United States currently leading the world in total confirmed cases, it can help to prevent future outbreaks of the virus.
Future avenues of research additionally include extending the methodology to other contagious diseases currently devastating other regions of the world such as malaria, HIV-AIDS, Ebola, and OrthoHantavirus. Furthermore, memory can be implemented into this method to prevent future outbreaks from ravaging the same locales and not learning from history. This analysis can be extended to other applications for preventing risk such as the migration of an invasive species or identifying what locales are most in need of a certain technology.
Overall, however, the analysis should take into account more variables such as population density, transportation routes, distance of hospital from each county, and metropolitan areas.
References
- https://www.ncbi.nlm.nih.gov/books/NBK554776/
- https://ourworldindata.org/grapher/total-deaths-covid-19
- https://www.cdc.gov/coronavirus/2019-ncov/symptoms-testing/symptoms.html
- https://jamanetwork.com/journals/jamainternalmedicine/article-abstract/2763184
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7117787/
- https://www.healthaffairs.org/doi/10.1377/hlthaff.2020.00455
- https://www.washingtonpost.com/politics/inside-the-conservative-networks-backing-anti-quarantine-protests/2020/04/22/da75c81e-83fe-11ea-a3eb-e9fc93160703_story.html
- https://www.nytimes.com/2020/04/27/nyregion/new-york-city-doctor-suicide-coronavirus.html
- https://www.nbcnews.com/news/uts-news/government-watchdog-hospitals-face-severe-shortages-medical-gear-confusing-guidance-n1177256
- https://www.cnbc.com/2020/05/06/coronavirus-ford-and-3m-begin-shipping-respirators-to-frontline-health-workers.html
- https://www.cdc.gov/flu/pandemic-resources/1918-pandemic-h1n1.html