synoptux

Synoptux (synoptique des actions en cours)

1 Description générale de Synoptux

Synoptux est un logiciel de suivi et de surveillance des tâches à réaliser pour les patients intégrant un service d'urgence ou toute autre structure comparable (service d'hospitalisation, par exemple). Il est particulièrement utile lorsque les actes devant être pratiqués émanent de plusieurs prescripteurs et concernent de nombreux intervenants. Synoptux a été conçu pour éviter les pertes d'information et pour assurer une vision instantanée et permanente des tâches à réaliser et de leur priorité. L'ergonomie du logiciel assure une utilisation simple, intuitive et rapide en évitant toute saisie superflue. L'exemple ci-dessous montre ainsi très simplement que :

  • Mireille DUPUICH attend en salle d'attente pour un poignet cassé,
  • deux patients sont en cours de traitement dans les Box S1 et S2, suivis par le docteur Sevin.
  • Philippe SILOUVA est en train de passer un scanner dans un autre service,
  • trois patients sont déjà sortis du service à 21h42, 16h28 et 16h29, pour aller à l'hôpital nord ou à la montagne

Toutes les actions effectuées pour un patient qui est inscrit dans synoptux sont archivées dans la base de données. Ces informations pourront si nécessaire être exploitées a postériori à des fins statistiques. On pourra, par exemple, obtenir le nombre d'actes effectués sur une période, ou le temps moyen nécessaire par tâche en période de stress, ou la durée passée par patient en salle d'attente, etc.

2 Mise en oeuvre du programme

SynopTux doit être installé dans l'arborescence classique de MedinTux, dans le dossier « Programmes ». Le package initial doit contenir l'exécutable Sypnotux et les fichiers de paramétrage synoptux.ini, synoptux.css et synoptux.cfg. Les données utilisées par SynopTux sont stockées dans une base MySql. Ce programme étant naturellement lié à Medintux, les tables peuvent être créées dans la base « drtuxtest » ou dans une base indépendante que nous appellerons par défaut « Synoptux ». Le démarrage de SynopTux nécessite, suite à l'installation du package synoptux, un paramétrage initial de l'accès aux bases de donnnées.

2.1 Paramètres généraux

Le fichier Synoptux.ini contient les paramètres suivants qui devront être adaptés avant le premier lancement du programme.

  • [Connexion_SynopTux] : Il s'agit des paramètres de connexion à la base de données contenant les tables box, taches, encours, etc…(Cette base peut être la même que celle utilisée par MedinTux).
  • [Connexion_MedinTux] : Il s'agit des paramètres de connexion à la base Medintux (Drtuxtest). Cette connexion n'est pas obligatoire, elle est utilisée pour afficher les précisions éventuelles relatives à une tâche.
  • [Interface]
    • Dossier_Entrees : Indiquer le chemin du dossier dans lequel seront déposés les fichiers texte d'entrée de patient dans le synoptique.Ce dossier doit exister, même si les entrées sont directement insérées dans les tables par le logiciel associé (Medintux).
    • Code_Box_Par_Defaut : il s'agit du code du box dans lequel seront placés les patients si aucun autre code box n'est précisé dans le fichier d'entrée.
    • Bouton_Acces_DrTux : Indiquer OUI ou NON selon que l'on souhaite faire apparaître un bouton de lancement de « drtux » à partir d'un patient inscrit dans SynopTux.
    • Chemin_du_calendrier : Indiquer le chemin complet d'accès au programme de Medintux permettant d'afficher un calendrier pour la saisie des heures de sortie.
    • Confirmation_Sortie_Definitive : Indiquer OUI , si l'on souhaite faire afficher une fenêtre de confirmation lors de la sortie définitive d'un patient du synoptique.
  • [Affichage] Il s'agit des tailles et couleurs des différentes éléments relatifs aux patients constituant le synoptique.Les couleurs des objets liés aux médecins, tâches sont paramétrables dans la gestion de ces mêmes tables.
  • [Timer]
    • Periodicite_controle_des_entrees : SynopTux contrôle régulièrement l'arrivée d'un nouveau fichier d'entrée dans le dossier paramétré ci-dessus, ou la création d'une nouvelle entrée dans la table « encours ».On indique ici le nombre de secondes séparant chaque contrôle. (par defaut 10 s)
    • Periodicite_clignotement_en_secondes : il s'agit de la vitesse de clignotement d'un patient ou d'une tâche lorsque qu'une tâche planifiée est en retard ou dure trop longtemps.Lorsque le patient est « déplié », c'est à dire que toutes les tâches lui étant affectées sont affichées, c'est la tâche en retard qui clignote. Lorsque le patient est « replié », c'est à dire que seul son nom apparaît, c'est le nom du patient qui clignote. (par defaut 1 s)
    • Periodicite_controle_alarme_en_secondes : on indique ici le la fréquence à la quelle Synoptux contrôle les retards éventuels sur chaque tâche. (par defaut 10 s)
    • Delai_avant_suppression_des_sorties_en_mn : Lorsque le traitement d'un patient est terminé, il est déplacé dans un box de type « Sortie ». On peut supprimer ce patient du box en utilisant la touche sortie. Synoptux supprime automatiquement les patients du Box Sortie après un certain délai paramétré ici. (par défaut 1440 mn, soit 24 h).

2.2 Saisie des données de base

Le fonctionnement de Synoptux est très simple. Sa finalité est d'afficher en permanence les box ainsi que les patients qui les occupent. La première étape est donc de saisir dans la table « box » la liste des endroits réels (ou virtuels) ou se trouvent les patients. L'affectation d'un patient dans un box nécessite également la création de tâches correspondant aux actes qui seront prescrits ainsi que les états potentiels de chaque acte. L'accès à ces tables se fait à partir du menu « Fichiers » .

2.2.1 Les Box ou lieux de présence ou zones de présence

Un box est caractérisé par :

  • un code alphanumérique qui devra être fourni par le logiciel maitre. (Medintux)
  • Le libellé qui apparaît sur le synoptique.
  • Les couleurs de fond du box et de son titre.
  • Le nombre de place . On indiquera ici , 1 pour les box classiques de soins, et un chiffre plus élevé pour les emplacements virtuels tels les salles d'attentes ou les sorties.
  • Le type de box : Le fonctionnement du logiciel diffère en fonction de ce type.
  • Attente : accueille les patients non encore pris en charge.
  • Soins : normalement un seul patient par box .
  • Absence provisoire : on déplace un patient dans ce type de box lorsqu'il est pris en charge par un autre service le temps d'un scanner par exemple. Le box occupé est ainsi libéré pour un autre patient.
  • Sortie : On y déplace les patients qui ont été totalement traités et qui ont quitté l'établissement.En fin de journée, on peut ainsi consulter dans ce box l'ensemble des traitements effectués.

2.2.2 Les états

Un Un état représente une étape que l'on souhaite visualiser dans le déroulement d'une tâche. On pourra ainsi, facilement distinguer grâce à ses couleurs, une tâche pas encore commencée, une étape en cours de réalisation ou un tâche terminée. On distinguera en particulier les états tels que « Annulé » ou « terminé » à l'aide de la case à cocher, afin de mettre à jour la date et l'heure de fin de tâche quand on sélectionnera ces états. Attention, il faut tenir compte de l'ordre alphabétique des codes, car c'est ainsi qu'il apparaîtront dans le tableau et les menus.

2.2.3 Les Tâches

Cette notion est également commune avec le logiciel maitre (Medintux), puisque c'est dans ce dernier que l'on va indiquer à synoptux les différentes tâches à réaliser pour un patient. Le code tâche, ainsi que les éventuelles heures de début et de fin devront être écrites dans le fichier d'entrée, ou directement dans la table « encours_taches » si l'alimentation de synoptux est directe. Pour chaque tâche on indique :

  • un code alphanumérique (connu de drtux)
  • un libellé qui apparaît dans le synoptique.
  • La couleur de la tâche sur le tableau, ainsi que la couleur qui apparaitra en clignotant, si cette tâche avait du retard par rapport à sa date de début ou de fin prévue.
  • La durée maximum prévue pour la réalisation de cette tâche. Si cette information est alimentée, et qu'aucune date de fin prévue n'est fournie lors de la création de la tâche, une date de fin prévue est calculée en fonction de la date de début de la tâche plus cette durée maximum. Cette date sera testée par le contrôle de dépassement de délai de synoptux.
  • Les différents états possible pour cette tâche.
  • La manière dont ont souhaite faire apparaître les tâches sur le synoptique :
    • Le choix bouton entraîne l'affichage pour chaque tâche de 3 boutons maximum contenant les libellés des états.
    • Le choix menu entraîne l'affichage d'un seul bouton contenant le libellé de l'état en cours. Un toucher sur ce bouton déroulera un menu contenant les autres états possibles.

2.2.4 Les responsables

Le nom du praticien qui suit le patient apparaît dans le synoptique.

  • Une couleur propre lui est affectée afin de faciliter la visibilité.
  • Le code du responsable doit être connu par Medintux, car il est associé à chaque nouvelle entrées dans le synoptique.
  • Ce code peut être le login utilisateur du médecin dans Medintux.

2.2.5 Les destinations de sortie

On enregistre dans cette table les destinations les plus probables pour un patient lorsqu'il quitte la clinique. Cette destination sera demandée à l'utilisateur lorsqu'il déplacera un patient d'un box de type « soins » vers un box de type « sortie ». La saisie se fait dans la zone de texte en haut de la fenêtre puis en cliquant sur valider.

2.2.6 Les destinations d'absence

Cette destination sera demandée lorsqu'un patient sera momentanément en déplacement dans un box de type « absence » pour subir un examen dans un autre service.

2.2.7 Paramétrages (Ini).

Cette fonction permet d'accéder directement au paramètres généraux contenus dans le fichier « synoptux.ini ». Les modifications apportées aux paramètres de connexion aux bases de données ne seront prises en compte qu'après un redémarrage du programme.

2.2.8 Mise en forme (css).

On accède ici au fichier synoptux.css qui contient les paramètres de mise en forme des objets du synoptique. (Police, taille, couleur, bordures, etc…)

2.3 Présentation des fenêtres

Lors du premier affichage, SynopTux affiche les box en fonction des tailles indiquées dans synoptux.ini. Il est nécessaire de procéder ensuite à un positionnement des box compatible avec la taille de l'écran. Cette opération peut se faire à partir du menu « Fenêtres ». Afficher tout d'abord les box en « mode fenêtre » afin de pouvoir déplacer et redimentionner chaque box selon les besoins. Appliquer ensuite un affichage en « mode cadre », puis « enregistrer les positions » pour conserver cette disposition à l'avenir.

2.4 Filtrage par responsable

Par défaut SynopTux affiche tous les patients présents dans tous les box. Il est possible de limiter l'affichage aux patients d'un seul médecin. Pour cela, utiliser le menu « Responsable » pour sélectionner un nom.

3. Mode opératoire du synoptique

Pour chaque patient présent dans un box, les actions suivantes peuvent être effectuées par un simple toucher du bouton concerné.

2.1 Patient

Permet d'afficher ou masquer le nom du patient par respect d'anonymat.

2.2 Plier - Déplier

Permet d'afficher ou masquer les tâches prescrites pour un patient. Par défaut dans les box de type absence ou sortie les patients sont repliés.

2.3 Appel DrTux

Permet de lancer le programme passé en paramètre lors de la création de l'entrée pour le patient. Dans l'environnement MedinTux, le programme appelé sera « drtux » qui ouvrira automatiquement la fiche du patient concerné. Pour cela le GUID du patient aura dû être intégré également lors de la création de l'entrée (voir interface d'entrée).

2.4 Supprimer la tâche

Ce bouton supprime simplement la tâche concernée pour ce patient.

2.5 Informations sur la tâche

Cette icône représentant un oeil apparaît sur le bouton « tâche » si une information complémentaire est disponible. Pour visualiser cette information il suffit d'un toucher sur le bouton « tâche ». La fenêtre « information » sera effacée sur un simple toucher n'importe où sur l'écran.

2.6 Tâche

Affiche le libellé de la tâche et éventuellement un complément d'information très court fourni lors de la création de la tâche. (voir interface entrée)

2.7 Etat en cours (type menu)

Affiche le libellé de la tâche en cours. Pour changer d'état, un toucher sur ce bouton déroule un menu contenant la liste des états disponibles. Toucher le menu pour sélectionner le nouvel état. Si on sélectionne un état de type « fin de tâche », l'heure fin de tâche est enregistrée. On considère que la tache est terminée. Le contrôle d'alerte des délais dépassés ne traitera plus cette tâche. Si on sélectionne un état de type différent, cette date est alors effacée, et la tâche repasse sous contrôle.

2.8 Etat en cours (type bouton)

Dans ce cas, tous les états possibles apparaissent à l'écran. L'état en cours sera signalé par un effet graphique (selon paramètres css), comme un cadre rouge par exemple. Fonctionnement identique que ci-dessus pour la gestion des dates fin.

2.9 Informations sur le patient

Permet d'afficher l'historique des tâches effectuées pour le patient. (Date d'entrée, date de début et fin de chaque tâche, changement de responsable, déplacements, …)

2.10 Déplacer le patient

Permet de déplacer un patient d'un box à l'autre. Pour effectuer un déplacement, il faut toucher ce bouton pour le patient concerné dans le box d'origine, puis toucher le bouton box de destination. Lorsque le box de destination est de type « absence » ou « sortie », la liste des destinations possibles est affichée et il suffit de toucher un élément de liste pour terminer le déplacement. Si le box de destination est de type « sortie », le formulaire contenant la liste des destinations permet également de modifier l'heure de sortie.

2.11 Changement de responsable

Ce bouton qui affiche le nom du responsable en cours, permet aussi de faire apparaître la liste des médecins afin de sélectionner un nouveau responsable.

2.12 Heure d'entrée

Indique la date d'entrée du patient dans le synoptique. Cette information est inchangée jusqu'à la fin du traitement.

2.13 Heure de sortie

Indique l'heure du dernier déplacement dans un box. Si ce box est de type « Sortie », cette date représente la date de sortie du patient du service.

2.14 Box

Utilisé pour sélectionner le box de destination lors du déplacement d'un patient (voir bouton déplacer le patient).

4. Procédure d'entrée d'un patient

L'alimentation de synoptux à patir du logiciel « maitre » (Medintux) peut se faire de deux manières. Soit par création d'un fichier interface de type txt, soit par l'alimentation directe des tables synoptux.

4.1 Par fichier texte.

Le fichier interface contenant les éléments permettant d'enregistrer un nouveau patient dans synoptux doit être créé dans le répertoire dont le nom est paramétré dans le fichier synoptux.ini. Synoptux explore le contenu de ce dossier avec une périodicité également paramétrée dans synoptux.ini. Le nom de ce fichier texte n'a aucune importance, mais il doit avoir une extension « .txt », et le format doit être de type INI. Le fichier contient deux types d'informations.

  • Un paragraphe [Entree] qui fournit les informations propres au patient,
  • un ou plusieurs paragraphes [Tache_x] , où x est un numéro de tâche de 1 à x. Ces paragraphes Tâches ne sont pas obligatoires pour la création du patient dans Synoptux et peuvent être créés a posteriori dans plusieurs fichiers consécutifs , mais toujours accompagnés du paragraphe Entree. C'est le GUID patient qui permet de faire le lien pour les ajouts suivants.

Un exemple de fichier est présenté ci-dessous. Les informations entre parenthèses sont propres à cette documentation et ne doivent pas apparaître dans le fichier.

[Entree] (Obligatoire, Début de paragraphe)

  • Code_Box=B1 (facultatif, par défaut on prendra le box paramétré dans synoptux.ini)
  • Nom_Patient=SILOUVA (Obligatoire, Nom du patient)
  • Prenom_Patient=Philippe (Obligatoire, Prénom du patient)
  • GUID_Patient=90-325a-c-99h-dd2d246e29c3 (Obligatoire, Code unique du patient, GUID pour Medintux, permet d'ajouter des tâches après une entrée partielle.)
  • Code_Responsable=ro (Obligatoire, Code du médecin responsable)
  • Commentaire=Coup de couteau ! (facultatif, Commentaire court sur le motif d'entrée)
  • Programme_Annexe=../../Programmes/drtux/bin/drtux.exe (facultatif, Lien vers un programme annexe de consultation du patient )
  • Arguments_Annexe=Lucette+Lucette+7543d90c-325a-4a9c-9901-d2246e2bb9c3+6521+ABID+LISA+D:/MedinTux/Programmes/Manager/bin/Manager.ini+D:/MedinTux/Programmes/Manager/bin/DataBase.cfg (facultatif, Arguments à passer au programme ci-dessus)

[Tache_1] (Début de paragraphe Tache = Obligatoire)

  • Code_Tache=PAN (Code Tache = Obligatoire)
  • Priorite=1 (Numéro de priorité de 1 à x = facultatif, Synoptux affiche les tâches en tenant compte de cet ordre, mais après la date de début et de fin )
  • Commentaire=Voir médecin avant (facultatif, Information courte qui sera affichée sur le bouton Tâche )
  • Heure_Debut_Prevue=10h20 (facultatif, Heure de début prévue pour cette tâche. Si cette heure est renseignée, le contrôle de l'heure dépassée sera actif)
  • Heure_Fin_Prevue=10h50 (facultatif, Heure de fin prévue pour cette tâche. Si cette date est renseignée le contrôle de l'heure dépassée sera actif)
  • PrimKey_Blob=160651 (facultatif, Clé d'un Enregistrement dans la table « rubriqueshead » de medintux. Si ce code est renseigné, un icône représentant un œil sera affiché devant le nom de la tâche, et un toucher sur le bouton tâche affichera le contenu du texte (blob).
  • Nom_Lecteur_Note=C:/Program Files/Adobe/Reader 9.0/Reader/AcroRd32.exe (facultatif, Nom d'un programme permettant de lire un fichier d'information dont le nom est donnée ci-dessous.
  • Nom_Fichier_Note=D:/tmp/PDF_tmp/CR ECHO DOPP PULSE.pdf (facultatif, Nom d'un fichier d'information associé à la tâche. Si c'est deux dernières données sont renseignées, un icône représentant un œil sera affiché devant la tâche Incompatible avec la notion de PrimKey_Blob)

4.2 Par accès direct à la base.

L'alimentation directe des tables synoptux suit la même logique. Le programme synoptux teste régulièrement la création d'un nouvel enregistrement dans les tables « encours » et « encours_taches » afin de rafraîchir l'écran avec les nouvelles entrées immédiatement. Pour exemple, voici les instructions SQL permettant d'alimenter ces deux tables.

Création d'une entrée dans la table « encours » ; (La primary key et un autoincrement).

INSERT INTO encours  
(EC_CodeBox, EC_NomPatient, EC_PrenomPatient, EC_Medecin, EC_GUIDPatient, EC_Replier, EC_Commentaire, 
EC_HeureEntree, EC_ProgAnnexe, EC_ArgsAnnexe )
VALUES ('" + CodeBox + "','" + NomPatient + "','" + PrenomPatient + "','" + CodeResp + "','" + GuidPatient + "','1','" + Commentaire + 
"','" +QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") + "','" + ProgAnnexe + "','" + ArgsAnnexe + "')";

Création d'une tâche dans la table « encours_taches ». Le numéro de tâche (n° de ligne) est un autoincrement.

INSERT INTO encours_taches 
(EN_PK_encours, EN_Code_tache, EN_Comment, EN_HeureDebPrevue, EN_HeureFinPrevue, EN_Priorite, 
EN_PrimKey_blob, EN_NomFicNote, EN_NomProgNote )
VALUES ('" + QString::number(EC_PK) + "','" + QString::number(NumTache) + "','" + CodeTache + "','" + Commentaire + "','" +
QString::number(EC_PK) + "','"  + CodeTache + "','" + Commentaire + "','" + DateDeb  + "','" + DateFin      + "','" + Priorite      + "','"
+ PrimKey_blob   + "','" + NomFicNote   + "','" + NomProgNote   + "')";

Il faut donc récupérer la clé de l'encours après création dans la table « encours » avant la création des tâches.

Exemple d'une macro de création de tâche à insérer dans un menu déroulant : cette macro vérifie si le patient est déjà dans la table en cours, si il n'y est pas, il le crée et crée dans la foulée la tâche.

{{\
{{REM=------------------- definir le code de la tache ---------------------- }}\
{{:: VAR_SET(CodeTache,ECG)}}\
{{REM=------------------- definir le commentaire --------------------------- }}\
{{:: VAR_SET(CommentaireTache, {{:: Extract (Observation ,Circonstances :,Heure d'Arrivée SU)}})}}\
{{REM=------------------- definir la priorite ------------------------------ }}\
{{:: VAR_SET(PrioriteTache, 3)}}\
{{REM=------------------- recuperer le code en cours pour ce patient ---------------------- }}\
{{:: VAR_SET(EN_PK_encours, {{:: SQL_SELECT ( ST_encours , EC_PK , WHERE EC_GUIDPatient='{{GUID}}', 1,%,,%0)}})}}\
{{REM=------------------- si code en cours pour ce patient vide ---------------------- }}\
{{REM= inserer le patient }}\
{{:: VAR_SET(NotToDo,{{:: SI(S,{{VAR=EN_PK_encours}},=,,SQL_EXEC,NO_)}})}}\
{{REM=------------------- recuperer le GUID de l'utilisateur en cours ---------------------- }}\
{{:: VAR_SET(GUID_User, {{:: SQL_SELECT ( Personnes , GUID , WHERE Login='{{USER LOGIN MEDECIN}}', 1,%,,%0)}})}}\
{{REM=------------------- requete d'inscription du patient dans la salle d'attente ---------------------- }}\
{{:: {{VAR=NotToDo}}(INSERT INTO ST_encours (EC_CodeBox,EC_NomPatient,EC_PrenomPatient,EC_Medecin,EC_GUIDPatient,EC_Replier,EC_Commentaire,EC_HeureEntree,EC_ProgAnnexe,EC_ArgsAnnexe) VALUES ('A1','{{NOM PATIENT}}','{{PRENOM PATIENT}}','{{VAR=GUID_User}}','{{GUID}}','1','URGENCES MARIGNANE','{{DT=yyyy-MM-dd hh:mm:ss}}','../../drtux/bin/drtux','{{USER LOGIN MEDECIN}}|{{USER LOGIN MEDECIN}}|{{GUID}}|{{SQL_GET_DOSS_PK}}'))}}\
{{:: VAR_SET(EN_PK_encours, {{:: SQL_SELECT ( ST_encours , EC_PK , WHERE EC_GUIDPatient='{{GUID}}', 1,%,,%0)}})}}\
{{REM=------------------- inscrire une tache pour ce patient ---------------------- }}\
{{:: SQL_EXEC(INSERT INTO ST_encours_taches(EN_PK_encours,EN_Code_tache,EN_Comment,EN_HeureDebPrevue,EN_HeureFinPrevue,EN_Priorite)VALUES('{{VAR=EN_PK_encours}}','{{VAR=CodeTache}}','{{VAR=CommentaireTache}}','{{DT=yyyy-MM-dd hh:mm:ss}}','{{:: DATE_CALC({{DT=dd-MM-yyyy hh:mm:ss}},600,+,S,yyyy-MM-dd hh:mm:ss)}}','{{VAR=PrioriteTache}}'))}}\
}}
synoptux.txt · Dernière modification: 2014/02/12 09:39 par 82.216.155.232