Journalisation des accès

Accès en écriture et modifications des données

La journalisation des écritures dans MedShakeEHR est largement assurée par son système de gestion interne des données et par l’impossibilité pour un utilisateur de venir écraser des données entrées par un tiers (et dans une moindre mesure, ses propres entrées) sans laisser de traces (Voir Rien ne se perd, tout se transforme).

Une page de la configuration permet ainsi de suivre l’évolution des données entrées dans le logiciel puis d’affiner par dossier patient et même par champ de donnée.

Accès en lecture

MedShakeEHR ne logue pas dans sa base de données les accès aux dossiers patients ni même aux autres pages.
Il propose cependant (v4.3) les outils nécessaires pour exploiter avec la plus d’efficience possible les fonctionnalités natives du serveur Apache à ce sujet.

Prérequis

Le module apache mod_usertrack soit être installé et activé.

Mise en œuvre

Le code suivant est à adapter à l’installation et à ajouter à la configuration du virtualhost

CookieTracking On
CookieName apacheLogUserID
CookieDomain .domain.local
Define MEDSHAKEEHRLOGFILE /var/log/access_ehr.log
SetEnv MEDSHAKEEHRLOGFILE ${MEDSHAKEEHRLOGFILE}
LogFormat "%{%Y-%m-%d %H:%M:%S}t %A %r %{Cookie}n" usertrack
SetEnvIf Request_URI "\.png$|\.gif$|\.jpg$|\.svg$|\.js$|\.css$|\.map$|\.ico$" do_not_log
CustomLog ${MEDSHAKEEHRLOGFILE} usertrack env=!do_not_log



Ce code indique à mod_usertrack d’utiliser le cookie apacheLogUserID posé par MedShakeEHR à l’identification réussie d’un utilisateur (v4.3). Ce cookie contient l’ID numérique de cet utilisateur.
Il conviendra d’ajuster correctement la ligne Define MEDSHAKEEHRLOGFILE avec le chemin correct du fichier de log qui devra être accessible en lecture.
Pensez à redémarrer Apache pour que ces paramètres soient pris en considération.

Le fichier de log indiqué dans CustomLog sera alors peuplé avec ce type de lignes :

2018-10-18 12:51:26 127.0.0.1 GET /patients/ HTTP/1.1 3
2018-10-18 12:51:26 127.0.0.1 POST /patients/ajax/patientsListByCrit/ HTTP/1.1 3
2018-10-18 12:51:28 127.0.0.1 GET /patient/4/ HTTP/1.1 3



Notez l’ID utilisateur en fin de ligne, ici le 3.
Sur une page accessible à un utilisateur non logué, une valeur aléatoire sera générée en remplacement. Son caractère alphanumérique rend la chose facilement différenciable dans le fichier de log final.

Exploitation

Il existe (v4.3) un outil sommaire à l’intérieur même du logiciel (zone de configuration, onglet journaux) pour exploiter le log généré. Nous l’améliorerons par la suite si nécessaire.

Il est cependant simple et puissant d’exploiter le fichier en ligne de commande dans le terminal.
Voici par exemple comment obtenir la liste des dossiers patients ouverts un jour donné par l’utilisateur n°3 en utilisant grep :

grep -E '^2018-10-18.* /patient/[0-9]+/.* 13$' access_ehr.log

Notez enfin que nous revoyons pour les prochaines versions les appels ajax fait par le logiciel pour afficher dynamiquement des informations dans la page afin que l’url figurant dans le fichier de log soit plus parlante (appel en GET plutôt qu’en POST).

 

Article précédent

Personnalisation

Conception de factures types

 

Article suivant

Editeur : E.I.R.L. Bertrand Boutillier immatriculée sous le numéro 480 239 631 au tribunal de commerce de Saint-Brieuc
Hébergement : ONLINE (Scaleway), 8 rue de la ville l’Evêque - 75008 Paris, FRANCE (RCS PARIS B 433 115 904)