Tutoriel sur les Entités : Signalements de problèmes¶
traduction contribuée
De nombreuses organisations utilisent des formulaires pour recueillir des informations de la part de leurs communautés.
Par exemple :
des municipalités demandant à leurs habitants de signaler les lampadaires cassés, les arbres tombés, les trous dans la chaussée, etc.
des services publiques demandant à leurs bénéficiaires les problèmes rencontrés et ce qui pourrait être amélioré.
Dans ce tutoriel, vous utiliserez le concept d'entités pour mettre en place un flux de travail dans lequel les habitants d'une ville signalent des problèmes, que les employés municipaux peuvent ainsi résoudre.
See also
Vidéo des coulisses du développement de ce tutoriel.
Note
Seul ce tutoriel a été traduit en français, le reste de la documentation est présentement en anglais.
Objectifs¶
Créer des entités à partir de soumissions de formulaires
Accéder aux entités dans un formulaire de suivi
Mettre à jour des entités à partir de soumissions de formulaires
Saisir les signalements de problèmes à l'aide d'un formulaire simple¶
See also
Si vous n'avez pas encore l'habitude de construire des formulaires XLSForms, commencez par le tutoriel XLSForm.
Un formulaire de signalement peut être très simple. Pour que les employés municipaux puissent trouver et résoudre les problèmes signalés, il suffit de saisir un titre, une description du problème et le lieu ou il est rencontré. Pour cela, vous pouvez créer votre propre formulaire ou utiliser notre exemple.
Vous pourriez vous arrêter ici et construire une chaine de traitements autour de ce simple formulaire. Par exemple, vous pourriez publier le formulaire avec un lien d'accès public Lien d'Accès Public, créer un QR code contenant ce lien (en utilisant un service comme celui d'Adobe), et l'afficher dans l'espace public afin que les habitants s'en servent. Alors les employés municipaux pourront afficher les soumissions du formulaire dans Excel et ajouter une colonne dans une feuille de calcul partagée pour gérer la résolution des nouveaux problèmes.
Cette approche nécessite des interventions manuelles et de la coordination avec une feuille de calcul, pouvant être source d'erreur et chronophages. Utilisons plutôt les entités d'ODK pour faciliter la gestion des problèmes en temps réel.
Créer une entité pour chaque problème signalé¶
Nous aimerions que les signalements soient disponibles dans un autre formulaire afin que les employés municipaux puissent les prendre en charge et résoudre les problèmes. Pour cela dans ODK, nous pouvons utiliser les entités. Une entité représente un objet unique qui peut être partagé entre différents formulaires (voir Managing Entities in Central).
Démarrons en prenant notre formulaire Signaler un problème existant et faisons lui créer des Entités qui représenteront les problèmes signalés.
Ouvrez ou créez la feuille
entities
dans le formualireSignaler un problème
.Dans la colonne
list_name
, entrez le nom de la Liste d'Entités dans laquelle vous souhaitez créer des Entités :problemes
. Ce nom sera généralement un nom pluriel représentant une collection des objets que vous souhaitez partager entre vos formulaires.Dans la colonne
label
, entrez une expression qui définira l'étiquette de chaque signalement :${titre_du_probleme}
. Cette étiquette sera utilisée dans Central pour identifier chaque entité ainsi que dans les selections définies dans les formulaires de suivi.
Ces ajouts entraineront, à chaque soumission de formulaire, la création d'entités problemes
avec une étiquette définie par l'utilisateur et un identifiant unique généré automatiquement.
Dans notre exemple, vous voulez aussi rendre disponibles les détails et la localisation du problème dans le formualire de suivi.
Ouvrez la feuille
survey
du formualireSignaler un problème
.Trouvez ou ajoutez la colonne
save_to
(Elle n'est pas présente par défaut dans le modèle de XLSForm).Dans la colonne
save_to
du champ de formulaire qui capture la description du signalement, entrez le nom de la propriété de l'Entité où stocker cette valeur :details
Dans la colonne
save_to
du champ de formulaire qui capture la localisation du problème, entrez le nom de la propriété de l'Entité qui stockera cette valeur :geometry
. Utiliser le nom particuliergeometry
pour cette propriété vous permettra d'afficher lesproblemes
sur une carte dans le formualire de suivi (voir select one from map).
Voir le formulaire fonctionnel Signaler un problème .
Vérifiez que la création d'Entité fonctionne¶
Actuellement les entités ne peuvent pas être créées en mode "Ébauche de formulaire", vous devez donc publier votre formulaire pour le tester.
Rendez-vous dans un projet dédié aux tests de formulaires et aux tutoriels, créez en un si vous n'en avez pas (voir the guide on testing forms).
Warning
Vous pouvez créer votre formulaire dans un projet existant contenant de vrais formulaires mais notez que les listes d'entités ne peuvent pas être supprimées pour le moment, et donc que les signalements créés pendant vos tests existeront jusqu'à ce que Central permette leur suppression.
Cliquez sur le bouton Nouveau et chargez votre nouveau formulaire. Selon comment vous aurez créé votre formulaire, vous devrez peut-être d'abord le télécharger puis l'exporter en XLSX.
Corrigez tous les problèmes identifiés lors de la conversion puis publiez le formulaire.
Cliquez sur l'onglet Soumissions puis sur le bouton Nouveau afin d'utiliser le fomulaire web pour créer une ou plusieurs soumissions.
Rafraîchissez la table des soumissions pour voir les nouvelles, puis cliquez sur le bouton Plus de l'une d'entre elles pour en afficher les détails. Vous devriez voir que cette soumission a créé une Entité dans la liste
problemes
:
Afficher les problèmes signalés sur une carte¶
Créons maintenant un second formulaire qui sera utilisé par les employés municipaux pour voir les signalements sur une carte.
Créez un nouveau formulaire à partir du modèle de XLSForm. Nommez le fichier
Résoudre un problème
.Allez dans la feuille
settings
.Dans la colonne
form_title
, insérez un titre qui sera lu par les utilisateurs du formulaire :Résoudre un problème
Dans la colonne
form_id
, insérez un identifiant qui identifie de manière unique ce formulaire :resoudre_un_probleme
Ajouter un groupe contenant une "liste de champs" pour afficher plusieurs questions sur un même écran :
Allez à la feuille
survey
.Dans la colonne
type
, entrezbegin_group
Dans la colonne
name
, entrezentite
Dans la colonne
appearance
, entrezfield-list
Ajoutez une question permettant de sélectionner les problèmes signalés sur une carte :
Dans la colonne
type
, entrezselect_one_from_file problemes.csv
qui sera automatiquement liée à la liste d'Entitésproblemes
du fait de l'emploi du nom de fichierproblemes.csv
.Warning
Le nom de fichier spécifié est sensible à la casse et doit correspondre exactement au nom de la Liste d'Entités utilisée dans le formulaire de signalement de problèmes, sinon les deux formulaires ne partageront pas d'Entités.
Dans la colonne
name
, entrezprobleme
Dans la colonne
appearance
, entrezmap
Ajoutez une question de type note pour afficher les détails du signalement sélectionné :
Dans la colonne
type
, entreznote
Dans la colonne
name
, entrezdetails_du_probleme
Dans la colonne
label
, entrezDétails : instance('problemes')/root/item[name=${probleme}]/details
Note
Ne vous inquiétez pas si cela ne vous est pas familier. Copier l'expression telle qu'elle est. Vous pourrez en apprendre plus dans la feuille
List lookups
du modèle de XLSForm.
Fermer le groupe contenant la "liste de champs" :
Dans la colonne
type
, entrezend_group
Chargez ce formulaire sur Central dans le même projet que le formulaire
Signaler un problème
et essayez son ébauche. Si vous utilisez le QR code de l'ébauche dans l'application mobile Collect, vous verrez une carte de tous les signalements. Si vous utilisez le formulaire web pour tester, vous verrez une liste des signalements identifiés par leur étiquette (parce que la sélection sur carte n'est pas encore implémentée dans Enketo)
Vous pouvez maintenant voir les problèmes signalés sur une carte ! Quand un nouveau problème sera signalé, il apparaitra dans le formulaire de suivi dés qu'il sera mis à jour. Si vous êtes en ligne, les mises à jour sont réalisées automatiquement toutes les 15 minutes.
Collecte des informations à propos des mesures prises¶
Vous pouvez maintenant compléter le formulaire Résoudre un problème
pour collecter des informations à propos des actions réalisées par les employés municipaux.
Ajoutez un groupe contenant une liste de champs pour afficher plusieurs questions sur un même écran :
Allez à la feuille
survey
.Dans la colonne
type
, entrezbegin_group
Dans la colonne
name
, entrezaction
Dans la colonne
appearance
, entrezfield-list
Ajoutez une question de type "texte" pour décrire l'action entreprise :
Dans la colonne
type
, entreztext
Dans la colonne
name
, entrezaction_entreprise
Dans la colonne
label
, entrezDécrivez les actions entreprises
Ajoutez une question de type "select" pour définir le nouveau statut du problème :
Dans la colonne
type
, entrezselect_one statuts
Dans la colonne
name
, entrezstatut
Dans la colonne
label
, entrezQuel est le statut du problème après intervention ?
Allez à la feuille
choices
.Ajoutez une option pour les problèmes résolus :
Dans la colonne
list_name
, entrezstatuts
Dans la colonne
name
, entrezresolu
Dans la colonne
label
, entrezRésolu
Ajoutez une option pour les problèmes partiellement résolus nécessitant un suivi :
Dans la colonne
list_name
, entrezstatuts
Dans la colonne
name
, entreznecessite_suivi
Dans la colonne
label
, entrezNécessite un suivi
Mettez à jour votre ébauche de formulaire dans Central et essayez la pour vérifier que le formulaire fonctionne comme prévu.
Mettre à jour le statut des problèmes¶
Vous pouvez désormais saisir des informations sur les problèmes qui ont été résolus ou qui nécessitent encore une action. Mais les problèmes résolus apparaissent aussi toujours sur la carte du formulaire Résoudre un problème
. Cela peut induire les agents en erreur et entraîner une perte de temps passé sur des problèmes déjà résolus.
Nous devons trier et exclure les problèmes résolus de la liste de choix proposée dans le formulaire Résoudre un problème
, afin de proposer les seuls problèmes nécessitant une action.
Faisons en sorte que le statut d'une Entité de la liste problemes
soit mis à jour quand le formulaire Résoudre un problème
est rempli. Nous pourrons alors filtrer les problemes
ayant le statut
resolu
.
Déclarez que les soumissions de ce formulaire peuvent mettre à jour des Entités de la liste d'entités
problemes
:Allez à la feuille
entities
du formulaireRésoudre un problème
.Dans la colonne
list_name
, entrezproblemes
Supprimez la colonne
label
si elle existe car ce formulaire n'a pas besoin de mettre à jour cette propriété des Entitésproblemes
.Dans la colonne
entity_id
(vous pourriez devoir l'ajouter), mettez${probleme}
pour indiquer que la valeur de la questionprobleme
du formulaire est l'identifiant unique de l'Entitéprobleme
à mettre à jour.
Mettez à jour la valeur de la propriété
statut
de l'Entité :Allez à la feuille
survey
.Dans la colonne
save_to
(vous pourriez devoir l'ajouter) du champstatut
, mettezstatut
Excluez de la liste les problèmes ayant le statut
resolu
Dans la colonne
choice_filter
de la ligne de la questionprobleme
, mettezstatut != 'resolu'
pour indiquer que seuls les problèmes avec un statut autre que'resolu'
peuvent être proposés.
Note
Utiliser un filtre comme celui-ci signifie qu'il ne sera pas possible de modifier les soumissions sur le serveur, car l'entité sélectionnée qui a été résolue dans cette soumission sera filtrée lors de la modification. Dans de nombreux flux de travail basés sur les entités, les modifications des soumissions ne sont pas utiles et peuvent être évitées. Dans ce workflow, vous pouvez les autoriser en changeant le "choice_filter" en statut != 'resolu' or name = current()/..
Corrigez tous les problèmes identifiés lors de la conversion du formulaire puis publiez le. Les mises à jour d'entités ne fonctionnent actuellement qu'avec les formulaires publiés (pas les ébauches), comme les création d'Entités.
Voir le formulaire fonctionnel Résoudre un problème.
Essayez le workflow dans son intégralité¶
Signalons quelques problèmes avec le fromulaire web.
Dans Central, allez à la page de votre projet ou sur la page d'accueil et cliquez sur l'îcone
*
située à droite du formulaireSignaler un problème
. Cette îcone et le nombre inscrit à coté représente le nombre actuel de soumissions. Cliquer dessus vous enverra directement à l'onglet Soumissions.Cliquez sur le bouton Nouveau pour démarrer une nouvelle soumission.
Signalez quelques problèmes en différents endroits.
Vous pouvez prendre en charge quelques problèmes signalés avec le formulaire web, mais pour bénéficier de la carte, utilisez l'application mobile Collect.
Allez sur la page de votre projet dans Central.
Cliquez sur l'onglet Utilisateurs mobiles.
Crééz in nouvel Utilisateur Mobile avec le nom
Employe_1
.Scannez le QR Code de cet utilisateur avec Collect.
Cliquez sur l'onglet Accès aux formulaires.
Donnez à
Employe_1
l'accès au formulaireRésoudre un problème
. Vous pouvez ausi lui donner accès au formulaireSignaler un problème
.Ouvrez le formulaire
Résoudre un problème
et solutionnez quelques ! Assurez-vous de raffraichir la liste des formulaires disponibles en cliquant sur le bouton Remplir un formulaire (⟳) afin de disposer des statut les plus à jour.
Vous avez maintenant deux formulaires qui fonctionnent ensemble pour signaler et résoudre des problèmes, et qui peuvent aisèment être adaptés à d'autres contextes.
Note
Les problèmes solutionnés sont filtrés pour ne pas être affichés dans le formulaire Résoudre un problème
mais sont toujours envoyés à tous les téléphones. Cela sera deviendra inopérent aprés plusieurs dizaines de milliers de problèmes. Dans une version future d'ODK, il sera possible d'archiver les Entités qui ne seront plus utiles.
A vous de jouer¶
Pouvez-vous ajouter aux Entités une propriété
marker-color
définie à#FFFF00
(jaune) si le statut du problème estnecessite_suivi
? (astuce : utilisez un calcul (calculation
) avecif
)Pouvez-vous ajouter aux Entités une propriété
marker-symbol
contenant❗️
si le statut du problème estnecessite_suivi
?Pouvez-vous afficher les problèmes résolus sur la carte avec le symbole ✅ plutôt que de les filtrer hors de la liste ?
Pouvez-vous définir une contrainte qui affiche une erreur quand un problème résolu est sélectionné ? (remarque : cela est incompatible avec l'édition des soumissions sur le serveur, comme avec le "choice filter" original)