-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.R
78 lines (66 loc) · 2.48 KB
/
test.R
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
######################################################
#Script pour avoir les informations sur les ruptures #
######################################################
#Fonction pour savoir s'il y a rupture
rupture <- function(x, medicament){
#Variables pour le comptage
totalRupture <<- 0
comptageRupture <- function(x2, medicament2){
#Variables pour le comptage
stockout <<- 0
compteurRupture <- 0
dateRupture <- 0
#Loop
for (i in seq_len(nrow(x2))){
if(!is.na(x2[i, medicament2])){
#Conditions pour les ruptures
## Première rupture
if(x2[i,medicament2] == 88 & compteurRupture == 0) {
dateRupture <- x2[i, "DateViste"]
compteurRupture <- compteurRupture + 1
}
## Deuxième rupture date différente
if(x2[i,medicament2] == "88" & compteurRupture > 0 & x2[i, "DateViste"] > dateRupture) {
incrementationRupture <- as.integer(x2[i, "DateViste"] - dateRupture)
compteurRupture <- compteurRupture + incrementationRupture
dateRupture <- x2[i, "DateViste"]
}
## rupture > 7 jours
if(compteurRupture >= 7 & stockout == 0) {
stockout <<- stockout + 1
}
## ravitaillement
if(x2[i,medicament2] != "88" & x2[i,medicament2] != 0 & compteurRupture > 0) {
stockout <- 0
compteurRupture <- 0
dateRupture <- 0
}
}
}
totalRupture <<- totalRupture + stockout
}
#Ranger par ordre date
x[order(x$DateViste),]
#Séparation par villages/mois
interaction(x$monthCategory, x$VillageASC)
monthByVillage<- split(x, list(x$monthCategory, x$VillageASC))
#Loop a travers les villages/mois
lapply(monthByVillage,comptageRupture, medicament2 = medicament)
}
#Fonction pour vérifier les ruptures pour chaque médicaments
##Variables pour le rapport
rupturePart <- c()
listeMedicament <- c("Coartem0515", "Coartem1525", "Coartem2535", "Coartem35", "Artenether", "SRO", "Albendazole", "Vitamines100000UI", "Vitamines200000UI", "Paractamol", "MILD", "Kit")
##Calculs des ruptures
getRupture <- function(x) {
for (i in seq_along(listeMedicament)){
rupture(x, listeMedicament[i])
rupturePart <- c(rupturePart, totalRupture)
}
#Sending the demographic information to the report line
lineReport <<- c(lineReport, rupturePart)
}
namesRupture <- c()
for (i in seq_along(listeMedicament)) {
namesRupture <- c(namesRupture, paste("Rupture", listeMedicament[i]))
}