---
title: "Seguiment COVID-19 (proves):"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
source_code: embed
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
# Dades segons ABS i Regió
```{r, message=FALSE, warning=FALSE, comment="", results='hide'}
library(tidyverse)
library(data.table)
library(lubridate)
library(openxlsx)
library(crosstalk)
library(leaflet)
library(leaflet.extras)
library(rgdal)
library(sf)
dades = read.csv("https://analisi.transparenciacatalunya.cat/api/views/xuwf-dxjd/rows.csv?accessType=DOWNLOAD&sorting=true", encoding = "UTF-8")
SexeEDAT = fread("https://analisi.transparenciacatalunya.cat/api/views/qwj8-xpvk/rows.csv?accessType=DOWNLOAD&sorting=true", sep=",", encoding = "UTF-8")
dades = dades%>%
mutate(Data=dmy(Data))%>%
filter(Data%
mutate(Data=dmy(Data))%>%
filter(Data%
group_by(Data, RegioSanitariaDescripcio)%>%
summarise(IncidentsHomes = sum(NumCasos[SexeDescripcio=="Home" & ResultatCovidDescripcio=="Positiu"]),
IncidentsDones = sum(NumCasos[SexeDescripcio=="Dona" & ResultatCovidDescripcio=="Positiu"]),
IncidentsTotal = sum(NumCasos[ResultatCovidDescripcio=="Positiu"]),
ProvesHomes = sum(NumCasos[SexeDescripcio=="Home"]),
ProvesDones = sum(NumCasos[SexeDescripcio=="Dona"]),
ProvesTotals = sum(NumCasos))%>%
mutate(AcumulatPhomes = cumsum(IncidentsHomes),
AcumulatPdones = cumsum(IncidentsDones),
AcumulatP = cumsum(IncidentsTotal))
agregatTotal = dades%>%
filter(Data%
group_by(Data)%>%
summarise(IncidentsHomes = sum(NumCasos[SexeDescripcio=="Home" & ResultatCovidDescripcio=="Positiu"]),
IncidentsDones = sum(NumCasos[SexeDescripcio=="Dona" & ResultatCovidDescripcio=="Positiu"]),
IncidentsTotal = sum(NumCasos[ResultatCovidDescripcio=="Positiu"]),
ProvesHomes = sum(NumCasos[SexeDescripcio=="Home"]),
ProvesDones = sum(NumCasos[SexeDescripcio=="Dona"]),
ProvesTotals = sum(NumCasos))%>%
mutate(AcumulatPhomes = cumsum(IncidentsHomes),
AcumulatPdones = cumsum(IncidentsDones),
AcumulatP = cumsum(IncidentsTotal),
RegioSanitariaDescripcio = "Total")
DadesAgregatsFinal = agregatRS%>%
bind_rows(agregatTotal)
shp_RS = readOGR("SHP/RS_final.shp", GDAL1_integer64_policy = TRUE, encoding = "UTF-8", use_iconv = T)
shp_ABS = readOGR("SHP/ABS_2018.shp", GDAL1_integer64_policy = TRUE, encoding = "UTF-8", use_iconv = T)
shp_RS=spTransform(shp_RS, CRS("+proj=longlat +datum=WGS84"))
shp_ABS=spTransform(shp_ABS, CRS("+proj=longlat +datum=WGS84"))
```
column {.sidebar data-width=250}
-------------------------------------
__INTRODUCCIÓ__
La següent pantalla busca elaborar un seguiment automatitzat dels resultats PCR (Polymerase Chain Reaction) de Catalunya i que es troben al repositori de dades obertes del portal Gencat. El document serveix de proves per, després, integrar les visualitzacions a la versió Shiny d'aquest _dashboard_.
Les dades reflecteixen els resultats de les proves PCR i, per tant, no s'ha de confondre mai amb els casos (nivell persona), ni haguts ni per haver.
__Fonts__
Dades obertes COVID-19
Cartografia Mapa Sanitari
Població assegurada 2020
__Enllaç al Shiny__
Seguiment COVID-19
__Dades disponibles fins:__
```{r}
datamax = dades%>%
filter(Data < today())
print(max(datamax$Data))
```
column
-------------------------------------
### Total positius acumulats per ABS (intervals basats en algoritme de Jenks)
```{r}
ABS_positius = dades%>%
filter(ResultatCovidDescripcio=="Positiu")%>%
filter(Data%
group_by(ABSCodi, ABSDescripcio)%>%
summarise(Positius = sum(NumCasos))
ABS_positius$ABSCodi = formatC(ABS_positius$ABSCodi, width = 3, flag = "0")
```
```{r}
cp_bins <- function(.data, var, n = 5, style = "jenks", round = 0, dig = 10){
# calculate breaks
breaks <- classIntervals(.data[[var]], n = n, style = style)
categories <- cut(.data[[var]], breaks = c(breaks$brks), include.lowest = TRUE, dig.lab = dig)
# parse categories
categories <- unique(categories)
categories <- gsub("[][()]", "", categories)
categories <- gsub(",", " ", categories)
categories <- word(categories, 2)
categories <- round(as.numeric(categories), digits = round)
bins <- c(1, categories)
# return output
return(bins)
}
```
```{r}
library(classInt)
shpABS_positius = merge(shp_ABS, ABS_positius, by.y="ABSCodi", by.x="CODIABS")
bins <- cp_bins(ABS_positius, var = "Positius", n = 5)
bins = bins[!is.na(bins)]
pal <- colorBin(c("#baeaff", "#97b5f4", "#3d67e9", "#363ede", "#2f16d3"), domain = c(1:500), bins = bins)
leaflet()%>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(data=shpABS_positius, fillOpacity = 0.8, weight = 0.5, color = "white", fillColor = ~pal(Positius),
popup = ~paste("ABS:: ",shpABS_positius$NOMABS,"
",
"Regió Sanitaria: ", shpABS_positius$NOMRS, "
",
"Positius acumulats: ", shpABS_positius$Positius)
)%>%
addPolygons(data=shp_RS, fillOpacity = 0, weight = 0.6, color = "black", fill=FALSE)%>%
addLegend(pal = pal, values = shpABS_positius$Positius, opacity = .5, title = "Positius acumulats")
```
### Positius diaris i acumulats
```{r}
library(plotly)
plot_ly(data = agregatTotal[agregatTotal$AcumulatP>0,], x=~Data, y=~AcumulatP, type="scatter", mode="lines", name="Acumulat", text = ~AcumulatP, mode="text", hovertemplate = paste('%{x}', "
Casos: ", '%{y}'))%>%
add_trace(y = ~IncidentsTotal, type="bar", name="Proves positives", text = ~IncidentsTotal, mode="text", hovertemplate = paste('%{x}', "
Casos: ", '%{y}'), tickformat = "digit")%>%
layout(yaxis = list(type = "log"), separators=".,")%>%
layout(xaxis=list(title="Data"), yaxis=list(title="Resultats PCR (log)"))%>%
layout(legend = list(x = 0.05, y = 0.9))%>%
config(displayModeBar = F)
```
column {data-width=450}
-------------------------------------
### Acumulat PCR positius per Regió
```{r}
poblacio = read.xlsx("Poblacio.xlsx")
```
```{r}
RS = agregatRS%>%
group_by(RegioSanitariaDescripcio)%>%
summarise(Acumulat = sum(IncidentsTotal))%>%
mutate(Frequencia = round(Acumulat/sum(Acumulat)*100, 2))%>%
left_join(poblacio, by=c("RegioSanitariaDescripcio" = "RS"))
RS = RS%>%
mutate(Taxa = round(( Acumulat/Poblacio )*100000, 2))%>%
select(-Poblacio)
library(DT)
names(RS) = c("Regió", "Positius acumulats", "Freqüència", "Taxa bruta 100.000 hab.")
datatable(RS, rownames = F, options = list(lengthChange=F,scrollX = T,searching = FALSE, initComplete = JS("
function(settings, json) {
$(this.api().table().header()).css({
'font-size': '13px',
});
}
"), columnDefs = list(list(className = 'dt-center', targets = 0:3))))%>%
formatStyle(columns = colnames(.$x$data), `font-size` = "13px")
```
# Dades segons edat i sexe
column {.sidebar data-width=250}
-------------------------------------
__INTRODUCCIÓ__
La següent pantalla busca elaborar un seguiment automatitzat dels resultats PCR (Polymerase Chain Reaction) de Catalunya i que es troben al repositori de dades obertes del portal Gencat (Enllaç).
Les dades reflecteixen els resultats de les proves PCR i, per tant, s'ha de tenir en compte que no reflecteixen exactament el nombre de casos (nivell persona) en actiu.
__Fonts__
Dades obertes COVID-19
Cartografia Mapa Sanitari
Població assegurada 2020
__Dades disponibles fins:__
```{r}
datamax = dades%>%
filter(Data < today())
print(max(datamax$Data))
```
Column {.tabset}
-------------------------------------
### Evolutiu Catalunya (acumulat)
```{r}
SexeEDAT%>%
filter(ResultatCovidDescripcio =="Positiu")%>%
mutate(EdatRang = as.factor(EdatRang),
SexeDescripcio=as.factor(SexeDescripcio))%>%
group_by(Data, SexeDescripcio, EdatRang, .drop=FALSE )%>%
summarise(Resultats = sum(NumCasos))%>%
mutate(ID = paste0(SexeDescripcio, EdatRang))%>%
ungroup()%>%
mutate(Acumulat=ave(Resultats, ID, FUN=cumsum))%>%
select(-ID, -Resultats)%>%
mutate(Acumulat = ifelse(SexeDescripcio=="Home", Acumulat*-1, Acumulat))%>%
filter(Data>=dmy("15032020"))%>%
plot_ly(x = ~Acumulat,
y = ~EdatRang,
color = ~as.factor(SexeDescripcio),
colors=c("blue", "green"),
frame=~Data,
type = 'bar',
orientation = 'h',
hovertemplate = "%{label}:
Positius acumulats: %{x} ")%>%
layout(bargap = 0.05, barmode = "overlay",
xaxis = list(tickmode = 'array'),
paper_bgcolor='Transparent')%>%
animation_slider(currentvalue = list(prefix = "Data ", font = list(color="black"))
)%>%
layout(xaxis=list(title="PCR positius acumulats"),
yaxis=list(title="Grups d'Edat"))%>%
config(displayModeBar = F)
```