Création d’une page (worklist ou synthèse) avec FormsStudio

Préambule

Pour bien comprendre cet article, en plus d’être autonome avec FormsStudio sur la création de formulaire, il est nécessaire d’avoir étudié certains points de la documentation :

  • 12. Inclusions multiples.
  • 13. Code distant.
  • 14. Requêtage.

Le code source de ce guide est disponible ici.

Lexique

Fiche : lorsqu’un utilisateur saisit un formulaire dans Easily puis l’enregistre, une fiche est enregistrée en base de données.

Généralités

Une page est créée de la même manière qu’un formulaire dans FormsStudio : elle dispose d’un modèle de données et d’une vue. En revanche, contrairement aux formulaires qui sont saisis par les utilisateurs puis enregistrés en base de données, une page n’est développée que pour afficher les données provenant de ces formulaires. Ses propres données ne sont donc pas enregistrées en base.

Il existe deux types de page :

  • Les worklists : ces pages permettent à l’utilisateur d’afficher la liste des fiches saisies sur un ou plusieurs formulaires. Il est possible d’ajouter des filtres particuliers permettant de personnaliser la recherche, comme l’intervenants créateur, une plage de date, etc. Les worklists peuvent afficher des fiches enregistrées sur plusieurs patients différents.

Pour accéder aux worklists : portail Medecin, menu Mes Patients, sous-menu Dossiers de spécialité, élément Listes du service.

  • Les synthèses : ces pages permettent à l’utilisateur d’afficher les données importantes d’un patient provenant d’un ou plusieurs formulaires.

Pour accéder aux synthèses : portail Medecin, menu Mes Patients, sous-menu Dossier clinique du patient, onglet Dossiers de spécialité dans la zone de gauche.

Création d’une page dans FormsStudio

Pour ajouter une page, faire un clic droit sur le nom du module dans l’explorateur de module (ou sur le dossier dans lequel ajouter la page), puis sélectionner Nouvelle page. Une fois la page créée, modifier ses propriétés pour lui donner un nom et pour spécifier son type : Synthèse ou Worklist.

Les propriétés peuvent être modifiées via la fenêtre Propriétés dans FormsStudio.

Développement d’une worklist

Le développement d’une worklist se fait en plusieurs étapes :

  • Création du modèle de données de la worklist.
  • Création de l’inclusion permettant de stocker la liste des fiches requêtées par la worklist.
  • Création de la vue de la worklist.
  • Développements C# permettant de requêter la liste des fiches et de les ajouter à l’inclusion.

Modèle de données de la worklist

Une worklist est une page permettant d’afficher à l’utilisateur la liste des fiches saisies sur un ou plusieurs formulaires, tous patients confondus. Le modèle de données d’une worklist doit contenir :

  • Les champs correspondants aux filtres pouvant être renseignés par l’utilisateur (ex : un champ date permettant de spécifier la date fonctionnelle minimum des fiches à requêter).
  • Un champ de type inclusion multiple permettant de stocker la liste des fiches requêtées.

Ci dessous, une nouvelle page nommée HowTo_Worklist et son modèle de données.

Création de l’inclusion

Chaque fiche requêtée doit être ajoutée à une inclusion multiple pour être ensuite affichée dans la worklist. Seul le modèle de données de l’inclusion doit être spécifié, la vue étant gérée directement dans la worklist via le contrôle Inclusion multiple en tableau.

Le modèle de données de l’inclusion doit contenir les colonnes à afficher dans la worklist pour chacune des fiches (ex : nom du patient, nom de l’intervenant, date fonctionnelle, etc.). Une fois l’inclusion créée, ne pas oublier de l’associer au champ inclusion multiple de la worklist.

Ci dessous, une nouvelle inclusion nommée HowTo_Ligne et son modèle de données.

Cette inclusion est ensuite rattachée au champ liste_fiches de la worklist.

Création de la vue de la worklist

La vue de la worklist est créée de façon identique à celle d’un formulaire. Les contrôles liés aux filtres (date minimum, maximum, etc.) sont ajoutés en haut de la vue. Le contrôle affichant la liste des fiches prend généralement place juste en dessous.

Le contrôle utilisé pour afficher l’inclusion multiple peut être une Inclusion multiple en tableau ou une Grille de données. Dans les deux cas, la méthode utilisée est la même : il est nécessaire d’ajouter une colonne par champ présent dans le modèle de données de l’inclusion (ex : une colonne nom du patient, une colonne nom de l’intervenant, etc.). Dans chacune de ces colonnes, un libellé généré peut être utilisé pour l’affichage des données de l’inclusion.

Un bouton de recherche est enfin ajouté au niveau des filtres pour lancer le requêtage. Ne pas hésiter à élargir la vue de la worklist, cette dernière pouvant prendre toute la largeur de l’écran à l’inverse des formulaires.

Création du formulaire à requêter

Ci dessous, le modèle de données et la vue du formulaire à requêter pour notre exemple. Il s’agit d’un simple formulaire permettant de saisir une date et un commentaire. La date peut être liée à la date fonctionnelle du formulaire.

Modèle de données

Vue

Développements C# du requêtage

Il est ensuite nécessaire de créer une Fonction distante dans le modèle de la worklist. Cette fonction doit être appelée au clic sur le bouton de recherche. Cette fonction distante a deux objectifs :

  • Requêter les fiches.
  • Ajouter les fiches à l’inclusion multiple pour les afficher dans la worklist.

Dans cette fonction distante, l’API SelectForms doit être utilisée pour requêter les fiches. La condition à renseigner dans ce SelectForms dépend des spécifications de la worklist à développer et notamment des filtres utilisés. Enfin, il suffit d’itérer sur la liste des fiches requêtées pour les ajouter à l’inclusion multiple liste_fiches.

Voici le code de la fonction distante à mettre en œuvre (cf fichier “Fonction distante.cs” en PJ).

Cette fonction peut être décomposée suivant différentes parties.

Test sur les filtres

Avant de lancer la requête, l’utilisateur doit obligatoirement avoir saisi une date minimum pour éviter de retourner un nombre trop important de résultat. Le champ date_min correspond à celui créé dans le modèle de données de la worklist.

Requêtage

Ici, le requêtage est effectué sur le formulaire HowTo_FormToQuery. La condition permet de ne retourner que les fiches créées depuis la date spécifiée dans le filtre. Ensuite, on ne continue le traitement que si des fiches ont été trouvées.

Initialisation des listes de chargement

L’objectif de cette worklist est d’afficher le nom des patients et des intervenants associés aux fiches requêtées. L’objet retourné par la méthode SelectForms ne possède pas ces informations, en revanche cet objet dispose de leurs identifiants respectifs (identifiant du patient et identifiant de l’intervenant pour chaque fiche). L’objectif est alors de stocker dans des listes les identifiants des patients et intervenants à récupérer pour ensuite les charger massivement. Ce chargement massif permet d’optimiser les performances de la worklist.

Les listes permettant de stocker les identifiants des patients et des intervenants sont créées ci-dessous.

var patientIdsToLoads = new HashSet<int>();
var intervenantIdsToLoads = new HashSet<int>();

Un objet C# de type HashSet correspond à une liste d’éléments devant être distincts les uns des autres.

Remplissage de l’inclusion

Une boucle permet ensuite d’itérer sur les fiches requêtées. Pour chacune d’entre elles, un objet Model_HowTo_Ligne est créé. Cet objet correspond à un élément de l’inclusion HowTo_Ligne. Les données du modèle de cette inclusion sont remplies avec celles de la fiche traitée par la boucle. Une fois l’objet renseigné, il est ajouté à la collection liste_fiches correspondant au champ de la worklist stockant la liste des fiches requêtées.

En parallèle, les listes de chargement sont aussi remplies avec les identifiants des patients et des intervenants de chacune des fiches. Une condition permet de ne traiter que les identifiants non encore ajoutés pour ne pas charger des doublons.

Chargement des patients et des intervenants

Les listes contenant les identifiants des patients et intervenants à charger sont ensuite passées en paramètre des fonctions de chargement. On récupère au final deux dictionnaires contenant les patients et intervenants en fonction de leurs identifiants.

var patientsLoaded = ModuleAPI.EasilyService.GetPatientsByIds(patientIdsToLoads.ToArray()).ToDictionary(p => p.Id);
var intervenantsLoaded = ModuleAPI.EasilyService.GetIntervenants(intervenantIdsToLoads.ToArray()).ToDictionary(i => i.Id);

Remplissage des noms des patients et intervenants

On itère ensuite sur les éléments ajoutés précédemment au champ liste_fiches. Pour chacun d’entre eux, on vérifie si les identifiants du patient et de l’intervenant ont bien été chargés plus haut. Si les dictionnaires contiennent bien les clés correspondantes, on renseigne une concaténation du nom et du prénom des patients et intervenants dans les champs prévus à cet effet. Ces champs sont ensuite affichés dans une colonne de la worklist.

Ajout de la worklist dans Easily

Maintenant que la worklist est terminée, il suffit de publier le module dans Easily via FormsStudio puis de paramétrer la worklist dans le dossier de spécialité voulu.

Pour paramétrer les pages dans un dossier de spécialité : portail Administrateur, menu Applications, sous-menu Dossiers de spécialité, élément Dossiers de spécialité.

Il faut ensuite éditer le dossier de spécialité dans lequel paramétrer la worklist, se rendre dans l’onglet Pages, et ajouter la worklist nouvellement créée.

Article Attachments

Was this article helpful?

Related Articles

Poster un commentaire

Vous devez être connecté pour pouvoir poster un commentaire.