Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Script d'analyse des données de consultation harmonisées
# Ce script examine en détail la structure et le contenu du fichier consultation_harmonized.json
# pour comprendre les patterns et caractéristiques des données
# Chargement des bibliothèques nécessaires
library(jsonlite) # Pour la lecture du fichier JSON
library(dplyr) # Pour la manipulation des données
library(tidyr) # Pour le nettoyage des données
library(lubridate) # Pour l'analyse des dates
library(ggplot2) # Pour la visualisation
library(stringr) # Pour la manipulation des chaînes de caractères
# Fonction principale d'analyse
analyze_consultation_data <- function(file_path) {
# Lecture du fichier JSON
print("Chargement des données...")
data <- fromJSON(file_path)$data
# 1. Analyse de la structure générale
print("\n=== Structure générale des données ===")
print("Nombre total d'enregistrements :")
print(nrow(data))
print("\nColonnes présentes :")
print(names(data))
# 2. Analyse par pays
print("\n=== Distribution par pays ===")
country_dist <- table(data$source)
print(country_dist)
# 3. Analyse temporelle
# Correction pour l'analyse temporelle
print("\n=== Analyse temporelle ===")
data$consultation_date <- as.Date(data$consultation_date, format = "%d-%m-%Y") # Changé de %d/%m/%Y à %d-%m-%Y
print("Période couverte :")
print(paste("Du", min(data$consultation_date, na.rm = TRUE),
"au", max(data$consultation_date, na.rm = TRUE)))
# 4. Analyse des diagnostics
print("\n=== Distribution des diagnostics ===")
diag_dist <- table(data$diagnosis_result)
print(diag_dist)
# 5. Analyse des données manquantes
print("\n=== Analyse des données manquantes ===")
missing_data <- sapply(data, function(x) sum(is.na(x)))
print("Nombre de valeurs manquantes par colonne :")
print(missing_data)
# 6. Analyse démographique
print("\n=== Analyse démographique ===")
print("Distribution des âges :")
age_summary <- summary(data$patient_age)
print(age_summary)
print("\nDistribution par sexe :")
sex_dist <- table(data$patient_sex)
print(sex_dist)
# 7. Analyse géographique
print("\n=== Analyse géographique ===")
print("Nombre de centres de santé uniques :")
print(length(unique(data$id_center)))
print("\nNombre de lieux de résidence uniques :")
print(length(unique(data$residence_place)))
print("\nNombre de lieux d'infection uniques :")
print(length(unique(data$infection_place)))
# 8. Création de visualisations
# Cas par mois
monthly_cases <- data %>%
mutate(month = floor_date(consultation_date, "month")) %>%
count(month, source)
# Sauvegarde du graphique des cas mensuels
print("\nCréation du graphique des cas mensuels...")
ggplot(monthly_cases, aes(x = month, y = n, color = source)) +
geom_line() +
labs(title = "Évolution mensuelle des cas",
x = "Date",
y = "Nombre de cas") +
theme_minimal()
ggsave("monthly_cases.png")
# 9. Analyse des patterns spécifiques
print("\n=== Patterns spécifiques ===")
# Nouvelles attaques vs récurrences
print("Distribution nouvelles attaques vs récurrences :")
attack_dist <- table(data$new_attack)
print(attack_dist)
# Diagnostic actif vs passif
print("\nDistribution diagnostic actif vs passif :")
active_diag_dist <- table(data$active_diagnosis)
print(active_diag_dist)
# 10. Génération de statistiques résumées par pays
print("\n=== Statistiques par pays ===")
country_stats <- data %>%
group_by(source) %>%
summarise(
n_cases = n(),
avg_age = mean(patient_age, na.rm = TRUE),
pct_male = mean(patient_sex == "Male", na.rm = TRUE) * 100,
pct_new_attack = mean(new_attack == TRUE, na.rm = TRUE) * 100,
n_centers = n_distinct(id_center),
n_residence_places = n_distinct(residence_place),
earliest_date = min(consultation_date),
latest_date = max(consultation_date)
)
print(country_stats)
# 11. Sauvegarde des résultats
print("\n=== Sauvegarde des résultats ===")
# Création d'un résumé structuré
summary_data <- list(
general = list(
total_records = nrow(data),
date_range = c(min(data$consultation_date), max(data$consultation_date)),
countries = as.list(country_dist)
),
diagnostics = as.list(diag_dist),
demographics = list(
age_summary = as.list(age_summary),
sex_distribution = as.list(sex_dist)
),
geography = list(
unique_centers = length(unique(data$id_center)),
unique_residences = length(unique(data$residence_place)),
unique_infections = length(unique(data$infection_place))
),
country_statistics = country_stats
)
# Sauvegarde au format JSON pour référence future
writeLines(toJSON(summary_data, pretty = TRUE), "analysis_summary.json")
return(summary_data)
}
# Exécution de l'analyse
results <- analyze_consultation_data("data/consultation_harmonized.json")