You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
68 lines
1.6 KiB
#' Retrieve Laboratory-Confirmed COVID-19-Associated Hospitalizations
|
|
#'
|
|
#' This function grabs all data for all networks, catchments, seasons, and ages.
|
|
#' In the future there will be ways of selecting just the desired target areas.
|
|
#'
|
|
#' @return data frame
|
|
#' @export
|
|
laboratory_confirmed_hospitalizations <- function() {
|
|
|
|
p <- cdccovidview:::app_params()
|
|
|
|
catch <- p$catchments[, c("networkid", "name", "area", "catchmentid")]
|
|
|
|
age_grp <- p$ages[, c("label", "ageid")]
|
|
|
|
seas <- p$seasons[, "seasonid", drop=FALSE]
|
|
colnames(seas) <- "ID"
|
|
|
|
.get_one <- function(net_id = 1, cat_id = 22) {
|
|
|
|
unclass(jsonlite::toJSON(list(
|
|
AppVersion = jsonlite::unbox("Public"),
|
|
networkid = jsonlite::unbox(as.integer(net_id)),
|
|
catchmentid = jsonlite::unbox(as.integer(cat_id)),
|
|
seasons = seas,
|
|
agegroups = data.frame(ID = 1:9L)
|
|
))) -> body
|
|
|
|
c(
|
|
`Content-Type` = 'application/json;charset=UTF-8'
|
|
) -> headers
|
|
|
|
httr::POST(
|
|
url = 'https://gis.cdc.gov/grasp/covid19_3_api/PostPhase03DownloadData', httr::add_headers(.headers=headers),
|
|
.CDCCOVIDVIEW_UA,
|
|
body = body
|
|
) -> res
|
|
|
|
httr::stop_for_status(res)
|
|
|
|
if (has_bom(res)) {
|
|
out <- sans_bom(res)
|
|
} else {
|
|
out <- httr::content(res, as = "text")
|
|
}
|
|
|
|
out <- jsonlite::fromJSON(out)
|
|
|
|
out <- as_tibble(out$datadownload)
|
|
|
|
colnames(out) <- gsub("-", "_", colnames(out))
|
|
|
|
out
|
|
|
|
}
|
|
|
|
lapply(1:nrow(catch), function(.idx) {
|
|
.get_one(
|
|
net_id = catch$networkid[.idx],
|
|
cat_id = catch$catchmentid[.idx]
|
|
)
|
|
}) -> res
|
|
|
|
out <- do.call(rbind.data.frame, res)
|
|
|
|
as_tibble(out)
|
|
|
|
}
|
|
|