GithubHelp home page GithubHelp logo

medchain's Introduction

Medchain - Projet mastercamp 2021

Samuel BADER, Yann COURTEMANCHE, Enzo FILANGI, Adrien GIRARD, Jonathan WITT

Rappel du sujet

Un acte médical est souvent associé à une ordonnance émise par un professionnel de santé. Cette ordonnance est traditionnellement rédigée sur une feuille de papier. Afin -entre autres-de réduire cette consommation significative de papier, l’idéal serait de supprimer ce support physique.

Une solution pour dématérialiser les ordonnances médicales. Le but est d’avoir le même niveau de confiance dans ce document (notamment par rapport aux pharmacies et à la règlementation en vigueur), un niveau de sécurité optimal (pour éviter par exemple une modification de l’ordonnance qui peut se révéler catastrophique), et une communication encore plus fluide entre les professionnels de santé, la CPAM, les mutuelles, etc...La solution miracle serait-elle par exemple la technologie blockchain?

Présentation de la solution

Medchain est un système visant à remplacer les ordonnances papier par une version dématérialisée. Nous proposons un système innovant et sécurisé à destinations des médecins, des pharmacies, et de la population.

Notre système propose aux médecins de remplir une ordonnance numérique qui sera anonymisée puis stockée sur nos serveurs. Son ou sa patient(e) recevra ensuite un email contenant un code représentant cette ordonnance, qu'il ou elle pourra stocker dans une application mobile. Une fois arrivée à la pharmacie, il suffira de présenter le code que le ou la pharmacien(ne) pourra scanner afin d'obtenir le détail de l'ordonnance et délivrer les médicaments.

Installation

Commencez par cloner le repository GitHub disponible à cette adresse.

Dépendances

Librairies

Placez vous à la racine du projet, puis exécutez les commandes suivantes (cela peut prendre un moment en fonction de votre connexion internet et de la rapidité de votre disque dur) :

$ cd server
$ npm install
$ cd ../pharmacist
$ npm install
$ cd ../doctor
$ npm install
$ cd ../patient
$ npm install

Base de données

Veuillez exécuter le script Database Initialize.sql situé dans "MedChain\sql" pour recréer la base de données. Par la suite, si vous souhaitez rétablir les valeurs par défaut, veuillez exécuter le script Default values.sql situé dans "MedChain\sql\other scripts"

Données d'environnement

Afin de pouvoir fonctionner correctement, le serveur nécéssite certaines informations à la fois sensibles et dépendantes de la machine sur lequel il est exécuté. Ainsi, un fichier .env doit être créé dans le dossier "server". Ce fichier n'est pas stocké sur git afin d'éviter de publier des informations sensibles et pour ne pas que les informations de chaque membre du projet soient en conflit.

Voici le contenu de ce fichier, à personnaliser avec vos informations lorsque les consignes entre crochets l'indiquent :

SECRET= [une suite de caractères aléatoires]
DB_PASSWORD= [le mot de passe de l'utilisateur MySQL ayant tous les droits sur la base de données medchain]
DB_USER = [l'utilisateur MySQL ayant tous les droits sur la base de données medchain]
DOMAIN= mg.sbader.fr
APIKEY= [Clé d'API mailgun : https://www.mailgun.com/]
DB_HOST = localhost

Pour les autres applications, les variables d'environnement sont stockées dans .../src/environments/, cependant celles-ci sont les mêmes pour tous et n'ont donc pas à changer. Notez cependant que le serveur doit être exécuté sur le port 3000 (ce qui est le cas par défaut). De plus, en lançant les applications en mode production, le backend distant hébergé sur notre serveur cloud sera utilisé.

Exécution

Nous conseillons d'utiliser un IDE produit par JetBrains, dans le cas présent, Webstorm. En effet, nous avons laissé dans notre repository le dossier .idea/runConfigurations dans lequel nous avons inclus l'ensemble des commandes à taper pour lancer les diverses parties du projet. Il suffit d'utiliser le menu déroulant en haut à droite pour sélectionner une composante et la lancer.

Autrement, nous avons également configuré les package.json de chaque application pour que la commande npm start exécute chaque programme. Cependant, il est nécessaire d'employer à la place la commande npm start:electron pour les application doctor et pharmacist afin d'avoir l'expérience réelle de l'utilisateur. En effet, npm start ouvrira l'application dans le navigateur, pratique pour le développement, tandis que npm start:electron ouvrira l'application dans Electron, pratique pour avoir une application de bureau.

À noter que procéder ainsi lancera l'application patient dans votre navigateur. Pour l'utiliser correctement, il vous sera nécéssaire d'ouvrir les DevTools de votre navigateur (crtl + shift + i) pour émuler un appareil mobile (dimensions recommandées, 360*640). Si vous souhaitez y avoir accès depuis votre téléphone, vous pouvez vous rendre sur https://medchain.sbader.fr/ (vous pouvez aussi y accéder sur PC en redimensionnant avec les DevTools puis en rafraîchissant la page)

Essayer les applications

Avec des données prédéfinies

Voici une liste d'identifiants afin de pouvoir tester les applications

  • Médecin

    • Identifiant : 00000000001
    • Mot de passe : azerty
  • Pharmacien

    • Identifiant : enzo.filangi
    • Mot de passe : 1234

Voici également quelques ordonnances de test

  • Ordonnance 1
    • Token : 483472b1-c9d7-4cf3-91c6-42530141c628
    • Mot de passe : 8d87cb1c-4806-401e-82cf-c3956135cf2d
    • Numéro de sécurité sociale : 000000000000000
  • Ordonnance 2
    • Token : 4ef7b9c8-c94d-4fa6-ae48-ec007eba8dc6
    • Mot de passe : 8d87cb1c-4806-401e-82cf-c3956135cf2d
    • Numéro de sécurité sociale : 000000000000000
  • Ordonnance 3
    • Token : 75f3e768-5853-446f-b739-d37f31dea755
    • Mot de passe : 8d87cb1c-4806-401e-82cf-c3956135cf2d
    • Numéro de sécurité sociale : 000000000000000

Afin de tester le bon fonctionnement de l'application Patient, nous recommandons le logiciel BarcodeToPc qui permet de transformer votre téléphone en scanner de code barre. Pour que ce workflow fonctionne, vous aurez cependant besoin de deux téléphones (un pour afficher le code grâce à l'application patient, l'autre pour lire le code). Il vous suffit ensuite sur le PC de lancer l'application Pharmacien, puis de placer votre curseur sur le premier champ dans l'écran d'entré des informations de l'ordonnance, et de scanner le code barre avec votre téléphone.

Si cela est impossible, vous pouvez afficher ce code barre sur votre écran de PC et le scanner. Ou bien copier/coller le texte suivant dans le premier champ de l'écran d'entré des informations de l'ordonnance de l'application Pharmacien : 47753d54-c9d0-4f9c-bd73-973d9f359422/8d87cb1c-4806-401e-82cf-c3956135cf2d

L'application Patient dispose de deux moyens d'ajouter une ordonnance : en scannant un code, ou en cliquant sur le lien du mail. Cette seconde option n'est disponible à ce jour que pour des téléphones Android.

Avec l'expérience utilisateur visée

  1. Tout d'abord, veuillez lancer l'application médecin puis vous connecter.

  2. Renseignez ensuite les champs de l'ordonnance, le mail du patient, et son numéro de sécurité sociale. Ces deux dernières informations seront importantes par la suite, conservez les donc quelque part.

  3. Installez ensuite l'application patient sur votre téléphone. Un lien vers le site d'installation est contenu dans le mail que vous avez dû recevoir à l'addresse spécifiée à l'étape 2. Cliquez ensuite sur le lien contenu dans le mail ou bien scannez le code en pièce jointe. Si cela est impossible, ouvrez le code barre reçu dans la pièce jointe du mail sur votre pc.

  4. Ouvrez ensuite l'application pharmacien, et connectez vous.

  5. Vous pouvez alors utiliser l'application patient pour afficher le code barre en grand. Placez votre curseur dans le premier champ de texte et scannez ce code (ou l'image ouverte sur votre PC). Renseignez ensuite le numéro de sécurité sociale de l'étape 2.

  6. Vous devriez désormais voir le contenu de l'ordonnance que vous avez renseigné à l'étape 2. Vous pouvez alors jouer le rôle du pharmacien et indiquer que vous avez délivré l'ordonnance en entier, ou bien ajouter une note pour indiquer à tous les pharmaciens que vous n'avez délivré qu'une partie seulement des médicaments.

note : Nous recommandons un téléphone Android pour ces tests car le support des PWA y est plus complet

Suites de tests unitaires

Pour ce projet, nous avons rédigé des tests unitaires afin de s'assurer que chaque partie de chaque application fonctionne correctement. Nous avons ainsi réalisé plus de 250 tests que vous pouvez vous aussi lancer afin de vérifier que tout fonctionne correctement.

Pour ce faire, placez vous dans chaque sous-dossier, ouvrez un terminal, et entrez les commandes suivantes :

  • ng test --code_coverage pour les applications Médecin, Pharmacien, et Patient
  • npm test pour le serveur

Ces commandes génèrent également des rapports de code coverage. Ils indiquent quelle surface de notre code est couverte par des tests. Comme vous pourrez le constater en ouvrant le fichier index.html contenu dans les dossiers coverage ayant fait leur appartition, chaque application est couverte à 100% par des tests. Ainsi, nous pouvons avoir une confiance importante en la qualité de notre code et le fait qu'il réponde correctement au cahier des charges sans négliger de cas limite.

ATTENTION: Le test du serveur resetera votre base de donné.

Delivery

Voici nos documents de réponse à l'appel d'offre

Vous pourrez également retrouver tous nos documents de conception

Calendrier des livrables

Au 18 juin 2021, nous serons en mesure de présenter :

  • Le product backlog
  • Le digramme UML des cas d'utilisation
  • Le macro-planning prévisionnel
  • Les documents de conception de la base de données (MCD/MLD)
  • Les premières routes de l'API
  • Les premières interfaces utilisateur

Au 9 Juillet, nous serons en mesure de présenter :

  • L'ensemble des documents de conception
  • L'écosystème totalement déployé
  • Le code source de toutes les applications

medchain's People

Contributors

enzofilangi avatar samrhan avatar shasless avatar

Stargazers

 avatar

Watchers

 avatar

medchain's Issues

Edition ordonnance pharmacie

  • Écrire l'ordonnance
  • Remplacer l'ancienne ordonnance si une existait déjà
  • Nécessiter d'être en train de consulter une ordonnance pour accéder

Routes API

  • Login POST /login
  • Deconnexion POST /disconnect
  • Infos session GET /me
  • État ordonnace POST /token_state
  • Ajout ordonnance POST /add_prescription
  • Consultation ordonnance POST /get_prescription
  • Utilisation ordonnance POST /use_prescription
  • Ajout note POST /note
  • Edition de note PATCH /note
  • Tests unitaires
  • Cohérence des noms dans la documentation et les entrées/sorties de l'API
  • Changer le mot de passe de l'ordonnance vers un UUID4
  • Utiliser les vues concises pour éviter de renvoyer des données inutiles
  • Désactiver toutes les notes concernant l'ordonnance lorsque celle-ci est utilisée
  • Modifier use_prescription pour prendre en compte le fully used
  • Modifier token_state pour ne pas retourner undefined si l'ordonnance est neuve
  • Fixer les problèmes de vérification du hash de l'ordonnance

Base de donnée

  • Concevoir le MCD
  • Convertir en script MySQL
  • Préparer des données de test
  • Déployer la base de données

Authentification

  • Route /login
  • Route /disconnect
  • Route /me
  • Configurer CORS
  • Tests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.