Création d’un nouveau module

Nom du module

Le module doit être désigné en interne par un nom court de 20 caractères maximum, sans lettre accentuée ou caractère spécifique ( ce qui peut être résumé ainsi [a-z0-9]{1,20} ).

Ce nom ne doit pas être redondant avec un autre et être le plus informatif possible sur le contenu du module.

Enregistrement du module

Le module doit être enregistré dans la table system de la base de données. Cela peut être fait par la commande SQL suivante :

INSERT INTO `system` ( `name`, `groupe`, `value`) VALUES ( 'nomDuModule', 'module', 'v0.0.0');

Cette étape effectuée, le module existe dans le logiciel et est accessible en particulier dans tous les outils de conception et de configuration.

Arborescence des fichiers du module

Il convient de s’inspirer des repositories existant pour déterminer l’arborescence à mettre en place pour le module.

Fichiers de base

/upgrade/nomDuModule/sqlInstall.sql
/.MedShakeEHR
/COPYING.txt
/versionMedShakeEHR-nomDuModule.txt

/upgrade/nomDuModule/sqlInstall.sql

C’est un dump SQL qui comprend l’intégralité des données en base nécessaire à l’exécution du module. Son contenu peut être récupéré automatiquement en zone de configuration dans le listing des modules installés et en demandant les détails spécifiques au module désiré.

Si des données spécifiques sont à intégrer au dump, il convient de créer une class msModNomDuModuleSqlGenerate qui étendra la class msSqlGenerate (voir exemple pour les modules gynécologie obstétrique et médecine générale).

/.MedShakeEHR

Fichier caché vide qui permet d’identifier un zip valide au moment de l’installation du module par glisser-déposer.

/COPYING.txt

Copie de la licence de distribution, a priori GPL v3.

/versionMedShakeEHR-nomDuModule.txt

Version du module exprimé de la façon suivante v1.0.0.

Autres fichiers

Les autres fichiers sont à déployer suivant les besoins et selon les recommandations de l’article Base, modules et plugins : principes et fonctionnement, en considérant comme exemple les repositories des modules déjà existants.

Class complémentaires

Les différents processus dans MedShakeEHR peuvent être amendés ou complétés en employant des class et méthodes particulières qui permettent principalement de transformer ou compléter les données aux étapes cruciales.

Dans les lignes suivantes *Name* représente le nom du module en minuscules, sauf première lettre en majuscule.

msMod*Name*CalcMed

Cette class permet d’ajouter des méthodes nécessaires aux calculs médicaux demandés par le module.
Il est fortement conseillé que la class créée étende msModBaseCalcMed qui comporte elle des calculs génériques, par exemple l’IMC ou les calculs nécessaires à la grossesse.

Cette class est en quelque sorte l’équivalent du fichier JavaScript commonName.js qui comporte lui les fonctions identiques nécessaires quand l’interactivité avec l’utilisateur l’exige.

msMod*Name*DataCourrier

Cette class permet d’extraire des informations préalablement à la génération d’un PDF (ou d’un courrier édité avant impression).
Les méthodes qui s’y trouvent doivent répondre à un nommage précis afin de pouvoir agir. Elles ne reçoivent qu’un argument : le tableau de données déjà retrouvées en fonction du type de document considéré.

Impression d’un compte-rendu

Les appels sont faits par msCourrier::getCrData() à l’impression d’un formulaire de consultation ou d’examen complémentaire.

Impression d’un règlement

Les appels sont faits par msCourrier::getReglementData() à l’impression d’un document de type règlement.

msMod*Name*DataCourrier::type_*nomDuType*_CompleteData($array) : fonctionnement identique à celui décrit au paragraphe précédent.

Impression d’un courrier (ou certificat)

Les appels sont faits par msCourrier::getCourrierData() avant la présentation dans l’éditeur de courrier.

Impression d’une ordonnance

Les appels sont fait par msCourrier::getOrdoData() à l’impression d’un document de type ordonnance.

msMod*Name*DataSave

Cette class permet d’ajouter des méthodes nécessaires à la transformation des données avant insertion en base (par exemple la mise en majuscule ou le formatage d’un numéro de téléphone). Attention, cette class ne doit pas servir pour la validation de la donnée.
Il est fortement conseillé que la class créée étende msModBaseDataSave qui comporte des méthodes génériques réutilisables.

Les méthodes à créer dans la class doivent être nommées tbs_*nomDuType*($value) et doivent retourner la $valeur passée transformée.

msMod*Name*Forms

Cette class permet de spécifier des méthodes qui pourront agir antérieurement à l’affichage du formulaire à l’écran ou postérieurement à la validation du formulaire par l’utilisateur.
Cette class doit étendre msForm.

Actions préaffichage

Elles sont possibles via 2 méthodes :

Actions post-validation

La méthode doPostPostFormGeneric() est exécutée après insertion des datas en base des données.

msMod*Name*ObjetPreview

Cette class permet de définir l’aperçu des objets figurants dans les historiques du dossier patient.
Elle étend la class msModBaseObjetPreview

Les méthodes présentes doivent renvoyer le html à inclure comme aperçu. Elles doivent être nommées getPreview*ModuleName**ObjetName*() où *ModuleName* est le nom court du module et *ObjetName* le nom unique de l’objet, typiquement le nom unique utilisé pour le type de la consultation qui génère la ligne d’historique.

 

Article précédent

 

Article suivant