Skip to content

Commit 8e26b5d

Browse files
author
renaud gaudin
committed
updated README
1 parent 364ed4f commit 8e26b5d

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

README.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,104 @@
11
# hamed
2+
3+
`hamed`**RAMEDCollect**») est un outil d'assistance à la gestion des collectes de données mobile (ODK) pour l'identification des indigents du RAMED.
4+
5+
Il est déployé au niveau des SLDSES (Service Local du Développement Social et de l'Économie Solidaire) sur une machine dédiée (Ubuntu Desktop) qui sert à la fois de serveur et de client.
6+
7+
Il est essentiellement une interface Web interagissant avec une instance ONA locale via son API.
8+
9+
## Fonctionnement
10+
11+
* Création d'une `Collect` représentant une mission d'enquête sociale dans une commune (recensement basé sur une liste de potentiels indigents – ~ 100).
12+
* Génération auto d'un XLSForm basé sur celui d'enquête sociale générique (changement `ID` et `title`).
13+
* Création auto du `XForm` sur ONA.
14+
* Ajout du rôle `dataentry-only` pour le compte `agent` sur le formulaire.
15+
* L'utilisateur peut ensuite:
16+
* Configurer ses tablettes (ODK Collect) pour le formulaire créé.
17+
* Former les enquêteurs et déclencher la mission.
18+
* Une fois la collecte terminée, tous les formulaires sont soumis à ONA.
19+
* Cloture d'une `Collect`, mettant un terme à la première étape du processus:
20+
* Désactivation du formulaire sur ONA.
21+
* Téléchargement des données JSON.
22+
* Génération d'un CSV contenant les nom/age/sexe des cibles.
23+
* Génération d'un XLSForm pour *scanner* les certificats signés
24+
* Création du formulaire de *scan* sur ONA.
25+
* Ajout du CSV sur le formulaire ONA.
26+
* Ajout du rôle `dataentry-only` pour le compte `agent` sur le formulaire.
27+
* L'utilisateur peut ensuite :
28+
* Consulter un aperçu des données des cibles
29+
* Copier les fichiers PDF (formulaire d'enquête sociale *condensé* généré, certificat de résidence non signé, certificat d'indigence non signé) sur une clé USB.
30+
* Imprimer tous les documents (3 par cible) via la fonction *Impression USB* de l'imprimante.
31+
* Étudier les enquêtes sociales et soumettre tous les documents à la mairie de la commune pour signature.
32+
* Une fois les documents signés reçus :
33+
* Configurer une tablette avec le formulaire de *scan*.
34+
* *Scanner* les documents avec la tablette (le formulaire scan un code bar présent sur chaque document puis demande la prise de photo des deux certificats signés).
35+
* Finalisation d'une `Collect`:
36+
* Désactivation du formulaire *scan* sur ONA.
37+
* Téléchargement des donnés ONA.
38+
* Génération des différents exports (exports XLSX ONA et JSON)
39+
* Export des médias (photos de toutes les pièces d'identité)
40+
* L'utilisateur peut alors :
41+
* Envoyer l'export XLSX à ses partenaires (Direction Régionale et Nationale, ANAM) par e-mail.
42+
* Tenter la télétransmission des données à l'ANAM.
43+
* Exporter toutes les données sur clé USB via l'outil fourni.
44+
* Faire remonter la clé USB et les copies dure via le circuit physique.
45+
46+
47+
## Équipements
48+
Tous les équipements sont à l'usage du SLDSES et non dédié à l'identification des indigents du RAMED.
49+
50+
* Un onduleur
51+
* Un routeur WiFi `Linksys E900`
52+
* `dd-wrt.v24-21061_NEWD-2_K2.6_mega-nv64k`
53+
* WAN DHCP, LAN DHCPD, DNSMasq
54+
* Un ordinateur de bureau `HP EliteDesk 800G2SFF`
55+
* `Ubuntu 16.04.2 LTS Desktop`
56+
* `ramed-server.cercle`, `ona.cercle`
57+
* Users: `sldses` (Unity), `ona` (ONA, hamed)
58+
* Un NAS `WD MyCloud 2TB`
59+
* `nas.cercle`
60+
* Dossier `Public` avec drivers imprimante et documentations.
61+
* Dossier `SLDSES` pour archives/backups (aucun backup automatique).
62+
* Une imprimante `Canon iR1435iF`
63+
* `printer.cercle`
64+
* Impression USB (mode recto-verso)
65+
66+
## Mode avancé
67+
Un *mode avancé* permet d'effectuer des opérations destructrices de données:
68+
69+
* Changement de l'état de la `Collect` (`STARTED`, `ENDED`, `FINALIZED`)
70+
* Suppression des donnés du formulaire de *scan* (hamed + ONA)
71+
* Suppression de toutes les données (scan et enquête sociale, hamed + ONA)
72+
* Suppression individuelle de cible (hamed + ONA)
73+
74+
Ces opérations ne font pas partie de la routine d'utilisation et sont donc invisibles et inaccessibles par défaut.
75+
Elles peuvent être activées via:
76+
77+
* L'utilisateur utilise le lien *Activer le mode avancé* dans la documentation.
78+
* Il communique le numéro affiché au support (BDD DNDS) qui a accès à ce document et lui communique le numéro de déverrouillage.
79+
* Le mode avancé est alors activé pour la journée.
80+
81+
### ActivationCode
82+
Le `RequestCode` est une chaine composée du `cercle_id` et de la date (`33170301` pour Douentza –33– le 1 mars 2017) chiffrée par décalage (Caesar Cipher) avec un pas de `x``x` vaut l'heure de la demande.
83+
84+
L'alphabet est a-z suivi de 0-9.
85+
86+
La librairie [`hamed-advanced`](https://github.com/yeleman/hamed-advanced) permet le chiffrement/déchiffrement et un binaire Windows est fourni à la DNDS.
87+
88+
Exemple:
89+
90+
* `RequestCode: RLLJPILJN` (Douentza, 15/3/2017 à 17h)
91+
* `ActivationCode: IPMLL` (074 –day of year, 33 –Douentza)
92+
93+
94+
## Déploiement
95+
96+
* Django settings:
97+
* `COLLECT_DOCUMENTS_FOLDER = "/home/shared/Collectes-RAMED"`: Chemin absolu pour l'export des fichiers (dossiers, médias, etc).
98+
* `WEBSOCKET_SERVER_PORT = 8888`: Port du serveur Websocket (lancé via le mgmt command `socket_server` servant à gérer l'export USB avec feedback de la progression.
99+
* `ALLOWED_HOSTS = ['ramed-server.cercle', 'ramed-server', 'localhost']`
100+
* `FOLDER_OPENER_SERVER = "http://localhost:8000"`: URL du *serveur* permettant d'ouvrir `nautilus` sur un chemin en particulier. Utilisé pour *Voir les fichiers à imprimer*.
101+
* Ajouter au démarrage de la session Unity `python3.6 /home/ona/hamed/extras/folder-opener.py`
102+
* Django Model `Settings`: `ona-server`, `ona-username`, `ona-token`, `cercle-id` (doit être dans `locations.py`), `dataentry-username`, `upload-server`.
103+
104+

0 commit comments

Comments
 (0)