|
1 | 1 | # 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` où `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