Procédure pour exploiter une relation 1-N dans des formulaires.
Introduction
Cet article vise à expliquer comment exploiter l’interface des relations entre varsets d’Epicraft pour créer une relation de type un 1-N dans une application Voozanoo 4 via du XML.
Dans cet article, tous les dataqueries sont saisis en tant que ressources XML. Un article sur le même sujet mais utilisant l’interface des sources de données pour la création des dataqueries existe ici.
Pré-requis
Voici les prérequis :
- Un projet dans EpiCraft associé à un projet Voozanoo 4.
- Dans ce projet :
- Une page Médecin associée au varset
docteur
. - Une page Patient associée au varset
patient
.
- Une page Médecin associée au varset
Objectif
L’objectif est de créer une relation 1-N entre docteur
et patient
(un médecin a plusieur patients) et de l’exploiter avec :
- Sur la page Médecin :
- un listing des patients du médecin ;
- un bouton pour ajouter un patient.
- Sur la page Patient :
- l’affichage de certains champ du médecin.
- un bouton pour aller vers le médecin.
Etape 1 : Créer la relation dans EpiCraft
Créer la relation dans EpiCraft via l’interface dédiée puis publier les actions :
Juste pour information, ceci automatiquement crée une nouvelle variable dans le varset patient
:
Etape 2 : Exploiter la relation dans les formulaires
Etape 2.1 : Afficher un listing des patients sur la page Médecin
Créer un dataquery pour récupérer la liste des patients d’un médecin
Premièrement, créer un dataquery sur la page médecin pour récupérer la liste des patients d’un médecin (à l’aide d’une propriété personnalisée form.dataquery) :
Ajouter un widget Table pour afficher les résultats obtenus
Ensuite, ajouter un widget Table pour afficher les résultats obtenus (à l’aide d’un bulk form.widget):
Ici, la valeur de paramètre sid
doit être celui du formulaire patients (la page de destination).
Etape 2.2 : Afficher un bouton “Ajouter un patient” sur la page Médecin
Créer le bouton
Premièrement, créer un bouton à l’aide d’un bulk dans EpiCraft :
Ici, la valeur de paramètre sid
doit encore être celui du formulaire Patient (la page de destination).
On note que l’on passe un id_data_from_doctor
en paramètre pour qu’il soit utilisé dans la page Patient.
Récupérer le paramètre passé pour lier la future fiche patient à son médecin
Deuxièmement, récupérer le paramètre passé pour lier la future fiche patient à son médecin :
D’abord avec une propriété personnalisée form.dataquery.main.column_simple sur la page patient :
Ensuite avec un propriété personnalisée form.dataquery.main.variable toujours sur la page patient:
Ceci va alimenter automatiquement la colonne patient.id_generaliste
avec le paramètre envoyé par le bouton.
Etape 2.3 : Afficher des champs du médecin sur la page Patient
Créer un dataquery pour récupérer les champs du médecin
Premièrement, il faut créer un dataquery pour récupérer les informations sur le médecin sur la page patient :
On note ici que la variable id_generaliste_from_patient
peut provenir de la base de données ou bien d’un paramètre.
Disposer les champs dans la page
Deuxièmement, afficher les champs du médecin à l’aide d’un bulk dans EpiCraft :
Etape 2.4 : Afficher un bouton vers le médecin sur la page Patient
Ici, on suppose que le dataquery créé à l’étape 2.3 existe déjà (on a besoin de son id_data
).
Il suffit alors de créer un bouton à l’aide d’un bulk :
Ici, la valeur de paramètre sid
doit encore être celui du formulaire Médecin (la page de destination).
On note que l’on passe un id_data
en paramètre pour arriver sur le bon médecin.