Synchronisation des vaccinations Version beta

Dans la suite, on utilise les désignations suivantes :

  • vaccinations serveur : vaccinations enregistrées dans la base de données de MesVaccins.net
  • vaccinations client : vaccinations enregistrées dans la base de données locale du logiciel métier
La documentation technique du service de synchronisation est disponible sur la référence technique.

Description

Ce service permet de synchroniser vaccinations serveur et vaccinations client en résolvant d’éventuels conflits d’édition.

Étape 1 : Envoi des vaccinations client
Le client envoie la liste des vaccinations enregistrées dans le logiciel métier.
Étape 2 : Comparaison avec vaccinations serveur et détection des conflits
Le service de synchronisation reçoit la liste des vaccinations client ; il la compare aux vaccinations serveur pour produire une liste unifiée des vaccinations et détecte d'éventuels conflits.
Étape 3 : Résolution des conflits
Cette étape a lieu si le serveur a détecté des conflits d'édition à l'étape précédente. Une intervention manuelle de l'utilisateur est alors nécessaire pour que client puisse résoudre ces conflits.
Étape 4 : Mise à jour des vaccinations clients
Après la résolution d'éventuels conflits par le client, le serveur renvoie une liste de vaccinations résultant de la fusion entre données client et données serveur. Cette liste doit être répliquée à l'identique dans le base de données locale du logiciel métier.

Le service de synchronisation doit être appelé par le client dans les conditions suivantes :

  • après modification des vaccinations client dans le logiciel métier ;
  • à l’ouverture du dossier patient ;
  • avant consultation des vaccins à faire.

Étape 1 : envoi des vaccinations client

Le logiciel client envoie la liste des vaccinations clients à MesVaccins.net. Les données envoyées doivent prendre la forme d’un objet JSON comportant le timestamp de dernière synchronisation et les vaccinations locales au client.

Étape 2 : Comparaison avec vaccinations serveur et détection des conflits

Une vaccination en conflit est une vaccination pour laquelle deux modifications ont été effectuées de manière concourante sur le client et sur le serveur.

L’API se base sur la date de dernière synchronisation et les dates de dernière modification pour déterminer si des modifications concourantes ont été effectuées.

L’algorithme de détermination des cas de conflit est résumé par ce tableau :

Action sur le client Action distante Résultat
Création Déjà existant Conflit de doublon, necéssite la fusion manuelle des données
Modification Déjà existant Conflit de doublon, necéssite la fusion manuelle des données
Modification Modification Conflit d'édition, necéssite la fusion manuelle des données
Modification Suppression Conflit de suppression, à résoudre manuellement
Modification RAS Pas de conflit, la version cliente devient la référence
Suppression Modification Conflit de suppression, à résoudre manuellement
Suppression Suppression Pas de conflit, la vaccination est supprimée du carnet
Suppression RAS Pas de conflit, la vaccination est supprimée du carnet
Modification/Suppression Vaccination validée sur administration Conflit d'édition, car il est n'est pas possible de modifier une vaccination validée sur administration par un tiers
RAS Modification Pas de conflit, la version serveur reste la version de référence
RAS Suppression Pas de conflit, la vaccination est supprimée sur le client
RAS RAS Pas de conflit

Étape 3 : Résolution des conflits

Une fois la liste des conflits reçue par le client, ce dernier demande une intervention manuelle à l’utilisateur, qui doit choisir entre les données côté client ou côté serveur.

Une fois les conflits résolus par l’utilisateur, le client renvoie la liste des vaccinations avec les confirmations des résolutions de conflit.

L’étape 2 recommence tant que les conflits n’ont pas tous été résolus.

Étape 4 : Mise à jour des vaccinations client

Ce service renvoie la liste mise à jour des vaccinations. Chaque vaccination dans la liste comporte les données suivantes :

  • identifiant dans la base de données MesVaccins.net
  • identifiant local dans le logiciel métier
  • vaccin
  • date
  • caractère de rappel
  • timestamp de création
  • timestamp de dernière mise à jour

Cette liste doit être répliquée de manière exacte par le client. Pour cela, ce dernier parcourt la liste unifiée des vaccinations, et pour chaque vaccination :

  • s’il existe un identifiant local, mettre à jour la vaccination correspondante dans la base locale ;
  • si l’identifiant local est nul, créer une nouvelle vaccination dans la base locale.

De plus, si une vaccination locale n’apparait pas dans la liste unifiée, cette dernière doit être supprimée de la base locale.