Skip to content
Snippets Groups Projects
Commit 32502351 authored by Vincent DUPONT's avatar Vincent DUPONT
Browse files

Trycatch on Google Analyics

parent f0b80be5
No related branches found
No related tags found
No related merge requests found
Doc.Rmd 0 → 100644
# Documentation du Projet Malaria Lite 1.2
## Structure du Projet
Le projet est composé de trois fichiers principaux :
- `notes_time_series.R` : Analyse des séries temporelles
- `server.R` : Configuration et logique du serveur Shiny
- `ui.R` : Interface utilisateur de l'application
## 1. notes_time_series.R
Ce script permet l'analyse des séries temporelles des cas de malaria.
### Fonctionnalités principales :
- Calcul de l'incidence des cas au fil du temps
- Décomposition des séries temporelles pour identifier les tendances et la saisonnalité
- Filtrage et analyse des données par centre de santé
- Visualisation des tendances temporelles
### Détails du code :
```r
# Calcul de l'incidence
consultation_date <- JSON_cons_har$consultation_date
inc <- as.data.frame(incidence(dates = consultation_date, interval = 1))
```
Cette section calcule l'incidence journalière des cas.
```r
# Décomposition des séries temporelles
inc_ts <- ts(inc$counts, frequency = 7)
inc_dec <- stl(inc_ts, s.window="periodic")
```
Cette partie décompose la série temporelle pour identifier les composantes saisonnières.
## 2. server.R
Fichier principal du serveur Shiny qui gère la logique de l'application.
### Configuration initiale :
- Chargement des bibliothèques nécessaires
- Importation des fichiers de traduction
- Chargement des fonctions utilitaires
- Initialisation des données géographiques et des consultations
### Modules principaux :
1. Module harmonisé (harmonized.R)
2. Module des localités harmonisées (harmonized_loc.R)
3. Module de téléchargement (download.R)
4. Module de classement (ranking.R)
5. Module de qualité d'information (infoq.R)
6. Module cartographique (map.R)
### Sécurité et conditions d'utilisation :
Le serveur implémente une boîte de dialogue modale avec les conditions d'utilisation en trois langues (portugais, français, anglais), conformément aux exigences de la CNIL.
## 3. ui.R
Interface utilisateur de l'application Shiny.
### Caractéristiques de l'interface :
- Thème : Purple skin
- Support multilingue (EN/FR/PT)
- Structure en dashboard avec barre latérale
- Intégration de Google Analytics
### Composants principaux :
```r
dashboardPage(
dashboardHeader(...), # En-tête avec titre
dashboardSidebar(...), # Barre latérale avec menu et sélection de langue
dashboardBody(...) # Corps principal avec contenu dynamique
)
```
## Notes d'implémentation
### Gestion des données géographiques :
- Utilisation de fichiers shapefile pour les données spatiales
- Support des coordonnées pour le Brésil (BR) et la Guyane française (GF)
- Gestion des identifiants uniques (id_sivep, id_cdps)
### Sécurité des données :
- Données anonymisées conformément aux exigences CNIL
- Traitement automatisé autorisé (Délibération N°2019-025)
- Restrictions d'usage commercial
### Performance :
- Chargement optimisé des données
- Utilisation de st_read pour les fichiers shape
- Gestion efficace des jointures de données
## Fonctions Utilitaires (dossier functions/)
### Fonctions de Gestion des Données
1. `consultation_har_ingest.R`
```r
# Fonction principale pour charger et prétraiter les données de consultation
consultation_har_ingest <- function(json.dir, json.file)
```
- Charge les données JSON des consultations
- Effectue le nettoyage des données (NA, dates, facteurs)
- Conversion des types de données appropriés
2. `area_har_ingest.R` et `healthcenter_har_ingest.R`
- Fonctions similaires pour charger les données des zones et centres de santé
- Utilise `data.table` pour une gestion efficace des données
### Fonctions de Filtrage et Analyse
1. `consultation_har_filter.R`
```r
consultation_har_filter <- function(df, source = "Any", new_attack, dateStart = "Any",
dateEnd = "Any", diagn = "Any", minAge = NULL,
maxAge = NULL, sex = "Any", active_diagn = "No")
```
- Filtrage flexible des données de consultation
- Gestion des critères multiples (date, diagnostic, âge, sexe)
- Support du filtrage FR-GF/BR
2. `decompose.R`
```r
decompose <- function(x)
```
- Décomposition des séries temporelles
- Calcul de l'incidence journalière
- Gestion des données manquantes
### Fonctions de Visualisation
1. `calendarHeat.R`
- Implémentation d'une carte de chaleur calendaire
- Basé sur le travail de Paul Bleicher
- Visualisation des données temporelles sous forme de calendrier
2. `addLegendCustom.R`
```r
addLegendCustom <- function(map, colors, labels, sizes, opacity = 0.5)
```
- Personnalisation des légendes pour les cartes
- Support des styles personnalisés
### Fonctions Utilitaires
1. `translate.R`
```r
tr <- function(text)
```
- Gestion de la traduction (EN/FR/PT)
- Utilise un système de clés de traduction
2. `last_update.R`
```r
last_update <- function(ftxt="data/dates_recup_donnees_syst_surveillance.txt")
```
- Gestion des dates de mise à jour
- Support pour BR et GF
3. `update_OSM_data.R`
- Mise à jour des données OpenStreetMap
- Récupération des informations sur les hôpitaux et cliniques
### Conversions et Exports
1. `consultation_json2csv.R`
- Conversion des données JSON en CSV
- Fonctions de lecture et écriture
- Prétraitement des données similaire à `consultation_har_ingest.R`
## Modules Shiny (dossier modules/)
### Modules d'Analyse Harmonisés
1. `harmonized.R`
- Analyse des données harmonisées entre BR et FR-GF
- Visualisations temporelles (incidence, âge, sexe, plasmodium)
- Filtres dynamiques (dates, cas, diagnostic, âge, sexe)
- Calculs réactifs des statistiques
2. `harmonized_loc.R`
- Analyse géographique des données harmonisées
- Visualisation par localisation (centres, zones de résidence, lieux d'infection)
- Support multi-pays (BR/FR-GF)
- Agrégation temporelle configurable
### Modules de Classement et Téléchargement
1. `ranking.R`
```r
# Fonctionnalités principales
- Classement des zones par nombre de cas
- Filtrage multi-critères (type, dates, diagnostic)
- Visualisation tabulaire avec tri dynamique
```
2. `download.R`
- Export des données filtrées
- Support de multiples formats (CSV, Excel, PDF)
- Sélection des zones géographiques
- Personnalisation des périodes
### Module Cartographique
`map.R`
- Interface cartographique interactive
- Intégration de données OpenStreetMap
- Visualisation des cas par zone
- Support des données GBIF pour Anopheles
- Couches WMS pour modèles de risque
### Modules de Qualité des Données
1. `infoq.R`
```r
# Analyse de la qualité des données
- Suivi des données manquantes
- Graphiques temporels de complétude
- Ventilation par source de données
```
2. `brazil.R` et `brazil_age.R`
- Analyses spécifiques aux données brésiliennes
- Visualisations démographiques
- Statistiques d'âge et de distribution
### Architecture de l'Interface
`server_ui.R`
- Configuration des menus et onglets
- Gestion du multilingue (EN/FR/PT)
- Construction dynamique de l'interface
- Gestion des événements utilisateur
Caractéristiques clés des modules :
1. Réactivité : Utilisation intensive de fonctions réactives Shiny
2. Modularité : Séparation claire des responsabilités
3. Multilingue : Support intégré de 3 langues
4. Performance : Optimisation des calculs et des rendus
5. Extensibilité : Architecture permettant l'ajout de nouveaux modules
## Structures des Données JSON
### Format des Données de Consultation (`consultation_harmonized.json`)
```json
{
"data": [
{
"id_consultation": "string", // Identifiant unique de consultation
"source": "string", // "BR" ou "FR-GF"
"consultation_date": "DD/MM/YYYY", // Date au format français
"id_center": "string", // Identifiant du centre de santé
"residence_place": "string", // Identifiant du lieu de résidence
"infection_place": "string", // Identifiant du lieu d'infection présumé
"patient_age": "number", // Âge du patient (0-100)
"patient_sex": "string", // "Male", "Female" ou "Desconhecido"
"diagnosis_result": "string", // Code du résultat (1-11)
"active_diagnosis": "boolean", // Diagnostic actif ou passif
"new_attack": "boolean" // Nouvelle attaque ou rechute
}
]
}
```
### Format des Centres de Santé (`JSON_healthcenter_har.csv`)
```csv
id_center,name,source,geocoded,x_coordinate,y_coordinate
"11/160050","Centre de Santé A","BR",true,-51.548,3.938
"CAM","CDPS Camopi","FR-GF",true,-52.339,3.167
```
### Format des Zones Géographiques (`unique_Spatial_referential.shp`)
- Format Shapefile contenant les polygones des zones
- Attributs obligatoires :
- country : "BR" ou "GF"
- name : Nom de la localité
- id_sivep : Identifiant SIVEP (Brésil)
- id_cdps : Identifiant CDPS (Guyane française)
- geocoded : Statut de géocodage
## Algorithmes de Décomposition Temporelle
### 1. Décomposition STL (Seasonal-Trend using Loess)
```r
# Fonction principale de décomposition
decompose <- function(x) {
# Préparation des données
date1 <- min(x)
date2 <- max(x)
# Calcul de l'incidence journalière
inc <- as.data.frame(incidence(dates = x, interval = 1))
# Complétion des dates manquantes
full <- data.frame(dates = seq(date1, date2, by = "day"))
inc <- dplyr::right_join(inc, full, by = "dates")
inc[is.na(inc)] <- 0
# Création de la série temporelle avec fréquence annuelle
inc_ts <- ts(inc$counts, frequency = 365)
# Décomposition STL
inc_dec <- stl(inc_ts, s.window="periodic")
# Extraction des composantes
df_dec <- as.data.frame(inc_dec$time.series)
df_dec <- cbind(df_dec, dates = inc$dates)
return(df_dec)
}
```
Composantes de la décomposition :
1. **Tendance (trend)** : Évolution à long terme
2. **Saisonnalité (seasonal)** : Motifs cycliques annuels
3. **Résidus (remainder)** : Variations non expliquées
### 2. Analyse des Pics Saisonniers
```r
# Identification des pics saisonniers
analyze_seasonality <- function(df_dec) {
# Calcul des quantiles pour identifier les pics
q <- quantile(df_dec$seasonal, c(.90))
sub <- subset(df_dec, seasonal >= q)
# Distribution mensuelle des pics
monthly_dist <- table(lubridate::month(sub$dates))
return(monthly_dist)
}
```
### 3. Calcul de l'Incidence
```r
# Calcul de l'incidence avec différentes agrégations
calculate_incidence <- function(dates, interval = 1) {
if(interval == 1) {
# Incidence journalière
inc <- group_by(dates = floor_date(consultation_date, "day"))
} else if(interval == 7) {
# Incidence hebdomadaire (ISO)
inc <- incidence(dates, interval = 7, iso_week = TRUE)
} else if(interval == 30) {
# Incidence mensuelle
inc <- group_by(dates = floor_date(consultation_date, "month"))
}
return(inc)
}
```
### Visualisation des Décompositions
1. **Carte de Chaleur Calendaire**
- Utilisation de `calendarHeat()`
- Visualisation jour par jour des cas
- Code couleur paramétrable (r2g, g2r, etc.)
2. **Graphiques de Tendance**
- Utilisation de Plotly pour l'interactivité
- Support du zoom et des survols
- Comparaison BR/FR-GF
3. **Analyse des Résidus**
- Tests de normalité
- Détection des valeurs aberrantes
- Autocorrélation
## Instructions de maintenance
Pour mettre à jour l'application :
1. Mettre à jour les fichiers JSON dans le dossier "data/"
2. Vérifier les dates de dernière mise à jour dans "data/dates_recup_donnees_syst_surveillance.txt"
3. Valider les traductions dans "locale/translation.bin"
4. Tester les fonctionnalités de filtrage et de visualisation
\ No newline at end of file
......@@ -198,7 +198,7 @@ output$HARLOC_plot_incidence <- renderPlotly({
return(plot_incidence)
})
# Information completeness
# Information completeness
output$HARLOC_information_completness <- renderUI({
tabBox(
width = 12,
......
......@@ -8,16 +8,6 @@ shinyUI(dashboardPage(
# APP Title
dashboardHeader(
title = "Malaria Tri-Front 0.1"
# tags$li(class = "dropdown",
# tags$a(href="http://ird.fr", target="_blank",
# tags$img(height = "20px", alt="IRD Logo", src="logo_ird.png")
# )
# ),
# tags$li(class = "dropdown",
# tags$a(href="http://fiocruz.br", target="_blank",
# tags$img(height = "20px", alt="Fiocruz Logo", src="logo_fiocruz.png")
# )
# )
),
# Sidebar
......@@ -36,12 +26,19 @@ shinyUI(dashboardPage(
# Body
dashboardBody(
# Google Analytics
tags$head(includeScript("https://www.googletagmanager.com/gtag/js?id=UA-121861538-1")),
tags$head(includeScript("google-analytics.js")),
# Google Analytics - Wrapped in tryCatch to handle connection errors gracefully
tags$head(
tags$script(
HTML(
"window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-121861538-1');"
)
)
),
# Render translated tab items from server.R
uiOutput("tabItems")
)
))
))
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment