#' covid_tested_infected_ethnicity
#'
#' @param data
#' @param start_date
#' @param end_date
#' @param plot_chart
#' @param hospital_name
#'
#' @return
#' @export
#'
#' @examples
covid_tst_dtct_adm_died_ethn <- function(data, start_date, end_date, plot_chart = TRUE, hospital_name){
ethnicity_tested <- data %>%
dplyr::select(
person_id,
result_status,
arrival_dt_tm,
admission_dt_tm,
disch_dt_tm,
event_result_txt,
ethnicity,
gender,
orderable_type_code_desc_txt,
covid_snomed_code1_desc_confirmed
) %>%
dplyr::filter(arrival_dt_tm >= end_date | admission_dt_tm <= start_date) %>%
tidyr::replace_na(list(ethnicity = "Missing")) %>%
dplyr::filter(
orderable_type_code_desc_txt == "laboratory" |
orderable_type_code_desc_txt == "sars-cov-2" |
orderable_type_code_desc_txt == "sars2"
) %>%
dplyr::group_by(ethnicity) %>%
dplyr::summarise(tested = n()) %>%
dplyr::mutate(freq_tested = tested / sum(tested))
ethnicity_detected <- data %>%
dplyr::select(
person_id,
result_status,
arrival_dt_tm,
disch_dt_tm,
event_result_txt,
ethnicity,
gender,
orderable_type_code_desc_txt,
covid_snomed_code1_desc_confirmed
) %>%
dplyr::filter(arrival_dt_tm < start_date |
disch_dt_tm > end_date) %>%
tidyr::replace_na(list(ethnicity = "Missing")) %>%
dplyr::filter(
event_result_txt == "DETECTED" |
covid_snomed_code1_desc_confirmed == "Corona virus detected"
) %>%
dplyr::group_by(ethnicity) %>%
dplyr::summarise(detected = n()) %>%
dplyr::mutate(freq_detected = detected / sum(detected))
ethnicity_admitted <- data %>%
dplyr::select(person_id,result_status, arrival_dt_tm, admission_dt_tm, disch_dt_tm,event_result_txt,
ethnicity, gender, orderable_type_code_desc_txt, covid_snomed_code1_desc_confirmed) %>%
tidyr::replace_na(list(ethnicity = "Missing")) %>%
dplyr::filter(event_result_txt == "DETECTED" | covid_snomed_code1_desc_confirmed == "Corona virus detected") %>%
dplyr::mutate(arrival_admission_time = difftime(admission_dt_tm, arrival_dt_tm, units = "hours")) %>%
dplyr::mutate(ae_admitted = dplyr::if_else(arrival_admission_time <= 48, TRUE, FALSE)) %>%
dplyr::filter(ae_admitted == TRUE) %>%
dplyr::group_by(ethnicity) %>%
dplyr::summarise(admitted = n()) %>%
dplyr::mutate(freq_admitted = admitted / sum(admitted))
ethnicity_died <- data %>%
dplyr::select(person_id,result_status, arrival_dt_tm, admission_dt_tm, disch_dt_tm,event_result_txt,
ethnicity, gender, orderable_type_code_desc_txt, covid_snomed_code1_desc_confirmed, discharge_method_desc) %>%
tidyr::replace_na(list(ethnicity = "Missing")) %>%
dplyr::filter(event_result_txt == "DETECTED" | covid_snomed_code1_desc_confirmed == "Corona virus detected") %>%
dplyr::mutate(arrival_admission_time = difftime(admission_dt_tm, arrival_dt_tm, units = "hours")) %>%
dplyr::mutate(ae_admitted = dplyr::if_else(arrival_admission_time <= 48, TRUE, FALSE)) %>%
dplyr::filter(ae_admitted == TRUE & discharge_method_desc == "Patient Died") %>%
dplyr::group_by(ethnicity) %>%
dplyr::summarise(admitted_died = n()) %>%
dplyr::mutate(freq_admitted_died = admitted_died / sum(admitted_died))
covid_tested_detected <-
dplyr::full_join(ethnicity_tested, ethnicity_detected)
covid_test_detect_admitted <-
dplyr::full_join(covid_tested_detected, ethnicity_admitted)
covid_test_detect_adm_died <-
dplyr::full_join(covid_test_detect_admitted, ethnicity_died) %>%
dplyr::select(ethnicity, tested, freq_tested, detected, freq_detected, admitted,freq_detected, admitted_died, freq_admitted_died)
melted_cvid_dt_tst <- covid_test_detect_adm_died %>%
dplyr::select(ethnicity, tested, detected, admitted, admitted_died) %>%
tidyr::gather(key = "Event", value = "Value", tested, detected, admitted, admitted_died) %>%
tidyr::drop_na()
melted_cvid_dt_tst$Event <- factor(melted_cvid_dt_tst$Event, levels = c("tested", "detected","admitted", "admitted_died"),
labels = c("Tested", "Detected","Admitted", "Died"))
title_stub <-
": Number of patients covid tested, detected and admitted across ethnicity groups,"
hospital_name <- "ICHT"
start_date_title <-
format(as.Date(start_date), format = "%d %B %Y")
end_date_title <- format(as.Date(end_date), format = "%d %B %Y")
chart_title <-
paste(hospital_name,
title_stub,
start_date_title,
" to ",
end_date_title)
plot <-
ggplot2::ggplot(melted_cvid_dt_tst,
ggplot2::aes(ethnicity, y = Value, group = Event)) +
ggplot2::geom_line(aes(color = Event)) +
ggplot2::geom_point(aes(color = Event)) +
ggplot2::scale_color_manual(values = c('orange', 'blue', 'red', 'black')) +
ggplot2::scale_y_continuous(limits = c(0,NA), breaks = seq(0, round(max(melted_cvid_dt_tst$Value)), by = 30))+
#scale_color_brewer(palette = "Paired") +
theme_minimal() +
xlab("Ethnicity") +
ggplot2::labs(
title = chart_title,
subtitle = "Number of patients of covid AE tested, detected and admitted across ethnicity groups\nNote: (i)results are intended for management information only; (ii) Counts include only patients that were addmited through AE",
y = "Covid tested, detected, admitted and died n",
x = "Ethnnicity",
caption = "Source: GDHU, Imperial College"
) +
theme(axis.text.x = element_text(angle = 90)) +
ylab('Counts of AE tested, detected, admitted, died') +
theme(legend.position = "bottom")
plot
if(plot_chart == TRUE){
plot
}else{
covid_tested_detect_adm <- plot %>% purrr::pluck('data') %>% dplyr::select(ethnicity, Event, Value)
covid_tested_detect_adm
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.