Skip to content
Snippets Groups Projects
brazil.R 8.86 KiB
Newer Older
Vincent DUPONT's avatar
Vincent DUPONT committed
### Brazil tab

##################
### Data objects
##################

# Positive incidence
BR_sub <- reactive({
  
  date1 <- as.Date(paste0(input$BRdates[1],"-01-01"))
  date2 <- as.Date(paste0(input$BRdates[2],"-12-31"))
  
  br_df %>%
    sivep_filter_notif(plasm = "Any", minAge = 0, maxAge = 100) %>%
    filter(DT_NOTIF >= date1 & DT_NOTIF <= date2)
})

# Tabulate
BR_tab_pos_incidence <- reactive({
  sub <- sivep_filter_notif(BR_sub(), type = "AP")
  as.data.frame(incidence(sub$DT_NOTIF, interval = 30))
})

BR_tab_pregnant <- reactive({
  sub <- sivep_filter_notif(BR_sub(), preg = "Pregnant")
  as.data.frame(incidence(sub$DT_NOTIF, interval = 30))
})

BR_tab_falci <- reactive({
  sub <- sivep_filter_notif(BR_sub(), plasm = "Falci_assoc")
  as.data.frame(incidence(sub$DT_NOTIF, interval = 30))
})

BR_tab_non_falci <- reactive({
  sub <- sivep_filter_notif(BR_sub(), plasm = "Non_falci")
  as.data.frame(incidence(sub$DT_NOTIF, interval = 30))
})

BR_tab_imported_cases <- reactive({
  sub <- subset(BR_sub(), PAIS_INF != "Brasil")
  as.data.frame(incidence(sub$DT_NOTIF, interval = 30))
})

BR_tab_lvc <- reactive({
  BR_sub() %>%
    select(DT_NOTIF, ID_LVC) %>%
    mutate(month = floor_date(DT_NOTIF, "month"), pos = if_else(ID_LVC == "Yes", "Yes", "No")) %>%
    select(month, pos) %>%
    group_by(month, pos) %>%
    dplyr::summarise(count=n()) %>%
    spread(pos, count) %>%
    replace_na(list(Yes = 0, No = 0)) %>%
    mutate(prop = Yes/(No+Yes)*100) %>%
    select(month, prop)%>%
    as.data.frame()
})

BR_tab_symptons <- reactive({
  BR_sub() %>%
    select(DT_NOTIF, SINTOMAS, RES_EXAM) %>%
    mutate(month = floor_date(DT_NOTIF, "month"), pos = if_else(SINTOMAS == "Without symptons" & RES_EXAM != "Negative", "Yes", "No")) %>%
    select(month, pos) %>%
    group_by(month, pos) %>%
    dplyr::summarise(count=n()) %>%
    spread(pos, count) %>%
    replace_na(list(Yes = 0, No = 0)) %>%
    mutate(prop = Yes/(No+Yes)*100) %>%
    select(month, prop)%>%
    as.data.frame()
})

BR_tab_active_search <- reactive({
  BR_sub() %>%
    select(DT_NOTIF, TIPO_LAM) %>%
    mutate(month = floor_date(DT_NOTIF, "month"), pos = if_else(TIPO_LAM == "Active search", "Yes", "No")) %>%
    select(month, pos) %>%
    group_by(month, pos) %>%
    dplyr::summarise(count=n()) %>%
    spread(pos, count) %>%
    replace_na(list(Yes = 0, No = 0)) %>%
    mutate(prop = Yes/(No+Yes)*100) %>%
    select(month, prop)%>%
    as.data.frame()
})

BR_tab_passive_search <- reactive({
  BR_sub() %>%
    select(DT_NOTIF, TIPO_LAM) %>%
    mutate(month = floor_date(DT_NOTIF, "month"), pos = if_else(TIPO_LAM == "Passive search", "Yes", "No")) %>%
    select(month, pos) %>%
    group_by(month, pos) %>%
    dplyr::summarise(count=n()) %>%
    spread(pos, count) %>%
    replace_na(list(Yes = 0, No = 0)) %>%
    mutate(prop = Yes/(No+Yes)*100) %>%
    select(month, prop)%>%
    as.data.frame()
})

BR_tab_imported_cases_prop <- reactive({
  BR_sub() %>%
    select(DT_NOTIF, PAIS_INF) %>%
    mutate(month = floor_date(DT_NOTIF, "month"), pos = if_else(PAIS_INF != "Brasil", "Yes", "No")) %>%
    select(month, pos) %>%
    group_by(month, pos) %>%
    dplyr::summarise(count=n()) %>%
    spread(pos, count) %>%
    replace_na(list(Yes = 0, No = 0)) %>%
    mutate(prop = Yes/(No+Yes)*100) %>%
    select(month, prop)%>%
    as.data.frame()
})

BR_tab_age <- reactive({
  BR_sub() %>% 
    select(ID_PACIE, ID_DIMEA) %>%
    mutate(ID_PACIE_ADJ = ifelse((ID_DIMEA == "Days" | ID_DIMEA == "Months"), 0, ID_PACIE))
})

BR_tab_sex_prop <- reactive({
  BR_sub() %>% 
    select(SEXO) %>%
    filter(SEXO == "Male" | SEXO == "Female") %>%
    droplevels() %>%
    count(SEXO)
})

BR_tab_symptons_prop <- reactive({
  BR_sub() %>% 
    select(SINTOMAS) %>%
    count(SINTOMAS)
})

BR_tab_occupation_prop <- reactive({
  BR_sub() %>% 
    select(COD_OCUP) %>%
    count(COD_OCUP)
})

BR_tab_crosses_prop <- reactive({
  BR_sub() %>% 
    select(QTD_CRUZ) %>%
    count(QTD_CRUZ)
})

BR_tab_imported_uf <- reactive({
  BR_sub() %>% 
    select(UF_INFEC) %>%
    filter(UF_INFEC != "Amapá") %>%
    count(UF_INFEC)
})

BR_tab_imported_country <- reactive({
  BR_sub() %>% 
    select(PAIS_INF) %>%
    filter(PAIS_INF != "Brasil") %>%
    count(PAIS_INF)
})

##################
### Plots
##################

# Count positive cases
output$BR_count_incidence <- renderValueBox({
  valueBox(
    paste0(sum(BR_tab_pos_incidence()$counts), tr("cases2")), tr("positive_cases"), color = "purple"
  )
})

# Count pregnant cases
output$BR_count_pregnant <- renderValueBox({
  valueBox(
    paste0(sum(BR_tab_pregnant()$counts), tr("cases2")), tr("pregnant_cases"), color = "purple"
  )
})

# Count imported cases
output$BR_count_imported <- renderValueBox({
  valueBox(
    paste0(sum(BR_tab_imported_cases()$counts), tr("cases2")), tr("imported_cases"), color = "purple"
  )
})

# Plot incidences
output$BR_plot_incidence <- renderPlotly({
  plot_ly(data = BR_tab_pos_incidence(), x = ~dates, y = ~counts, type = 'scatter', mode = 'lines', name = tr("positive_cases_leg")) %>%
    add_trace(data = BR_tab_pregnant(), x = ~dates, y = ~counts, type = 'scatter', mode = 'lines', name = tr("pregnant_cases_leg")) %>%
    add_trace(data = BR_tab_falci(), x = ~dates, y = ~counts, type = 'scatter', mode = 'lines', name = tr("falciparum_assoc_leg")) %>%
    add_trace(data = BR_tab_non_falci(), x = ~dates, y = ~counts, type = 'scatter', mode = 'lines', name = tr("non_falciparum_leg")) %>%
    add_trace(data = BR_tab_imported_cases(), x = ~dates, y = ~counts, type = 'scatter', mode = 'lines', name = tr("imported_cases_leg")) %>%
    layout(xaxis = list(title = tr("date")), yaxis = list(title = tr("cases")))
})

# Plot proportions
output$BR_plot_proportions <- renderPlotly({
  plot_ly(data = BR_tab_lvc(), x = ~month, y = ~prop, type = 'scatter', mode = 'lines', name = tr("lvc_leg")) %>%
    add_trace(data = BR_tab_symptons(), x = ~month, y = ~prop, type = 'scatter', mode = 'lines', name = tr("asymptomatic_cases_leg")) %>%
    add_trace(data = BR_tab_active_search(), x = ~month, y = ~prop, type = 'scatter', mode = 'lines', name = tr("active_search_leg")) %>%
    add_trace(data = BR_tab_passive_search(), x = ~month, y = ~prop, type = 'scatter', mode = 'lines', name = tr("passive_search_leg")) %>%
    add_trace(data = BR_tab_imported_cases_prop(), x = ~month, y = ~prop, type = 'scatter', mode = 'lines', name = tr("imported_cases_leg")) %>%
    layout(xaxis = list(title = tr("date")), yaxis = list(title = tr("percentage")))
})

# Plot age (histogram)
output$BR_plot_age <- renderPlotly({
  plot_ly(data = BR_tab_age(), x = ~ID_PACIE_ADJ, type = "histogram") %>%
    layout(xaxis = list(title = tr("age"), domain = c(0,100)), yaxis = list(title = tr("cases")))
})

# Plot sex
output$BR_plot_sex <- renderPlotly({
  plot_ly(data = BR_tab_sex_prop(), labels = ~SEXO, values = ~n) %>%
    add_pie(hole = 0.6) %>%
    config(displayModeBar = FALSE) %>%
    layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
})

# Plot symptons
output$BR_plot_symptons <- renderPlotly({
  plot_ly(data = BR_tab_symptons_prop(), labels = ~SINTOMAS, values = ~n) %>%
    add_pie(hole = 0.6) %>%
    config(displayModeBar = FALSE) %>%
    layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
})

# Plot occupation
output$BR_plot_occupation <- renderPlotly({
  plot_ly(data = BR_tab_occupation_prop(), labels = ~COD_OCUP, values = ~n) %>%
    add_pie(hole = 0.6) %>%
    config(displayModeBar = FALSE) %>%
    layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
})

# Plot crosses
output$BR_plot_crosses <- renderPlotly({
  plot_ly(data = BR_tab_crosses_prop(), labels = ~QTD_CRUZ, values = ~n, sort = FALSE) %>%
    add_pie(hole = 0.6) %>%
    config(displayModeBar = FALSE) %>%
    layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
})

# Plot imported cases by state
output$BR_plot_imported_uf <- renderPlotly({
  plot_ly(data = BR_tab_imported_uf(), labels = ~UF_INFEC, values = ~n) %>%
    add_pie(hole = 0.6) %>%
    config(displayModeBar = FALSE) %>%
    layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
})

# Plot imported cases by country
output$BR_plot_imported_country <- renderPlotly({
  plot_ly(data = BR_tab_imported_country(), labels = ~PAIS_INF, values = ~n) %>%
    add_pie(hole = 0.6) %>%
    config(displayModeBar = FALSE) %>%
    layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
})