Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide Projet logiciel gestion patientèle

choix du langage et sgbd

    13 novembre 2018 à 14:58:39

    bonjour à tous,

    J'ai créé sous Filemaker un logiciel de gestion de "patientèle" pour profession libérale de santé mais FMP risque dans un avenir proche de supprimer la création de runtimes, obligeant ainsi tous mes clients à acheter FMP pour faire tourner mon logiciel.

    Vous l'aurez compris, je viens prendre conseil afin de développer mon logiciel dans un autre langage et pourquoi pas lui ajouter des fonctionnalités.

    Je souhaite donc quelques conseils sur la faisabilité de mon projet et surtout de l'aide dans mon choix du langage et de la SGBD à employer.

    Je vous poste un, diagramme afin de bien comprendre mon cahier des charges et vous rassure, j'ai déjà fait quelques recherches.

    L'idée est que je puisse fournir un exécutable simple à déployer pour les thérapeutes qu'ils soient sous windows ou OSX et qui soit compatible mono ou multi utilisateur par contre je souhaite que la BDD et le logiciel soient stocké en dur sur un des pc du cabinet (pas d'internet).

    Avec mes maigres connaissances et après bon nombre de lectures, je pense utiliser du python/django relié à une SGBD mais je sèche un peu sur les SGBD et la faisabilité de ce que je souhaite.

    Ce qui va suivre n'est que pur hypothèse n'ayant pas toute les connaissances techniques...

    L'idée de base, le pc d'un thérapeute sert de serveur et recevra l'application a installer et ceux-ci se connectent au serveur web par le biais d'un navigateur.

    Si j'utilise sqlite3

    * la base peut elle supporter le stockage de plusieurs images et entre 1000 et 5000 fiches voir plus?

    * J'ai compris que ce n'est pas vraiment le top en multi utilisateur car chacun doit attendre son tour mais comment cela ce traduit t'il au niveau de l'application web, les 2 thérapeutes peuvent chacun afficher leur patient mais s'ils écrivent une donnée en même temps cela se traduira par un temps d'attente le temps que l'enregistrement 1 se fasse ou cela retourne une erreur??

    Si j'utilise postgresql

     * Peut-on fournir un exécutable qui installe la BDD et le serveur web sans trop de difficulté (je ne sais pas trop encore comment cela se passe).

    Pour finir, je cogite beaucoup car je me rend compte que la première fois, je me suis jeté un peu vite sur Filemaker sans trop réfléchir à la partie déploiement du logiciel et la mise à jour et j'aimerai ne pas recommencer cette erreur. 

    Apprendre en partant de 0 ne me fait pas peur mais je souhaite allez dans la bonne direction, merci par avance de votre aide sur ce projet.

    • Partager sur Facebook
    • Partager sur Twitter
      15 novembre 2018 à 15:02:27

      "Erreur de ma part et je n'arrive pas à supprimer..."

      -
      Edité par fantasy51 15 novembre 2018 à 16:53:13

      • Partager sur Facebook
      • Partager sur Twitter
        15 novembre 2018 à 15:24:41

        Bonjour, 

        Le projet est plutôt sympa, j'avais l'idée il y a quelques temps de faire la même chose. 

        J'ai une question pour toi : Pourquoi tu ne veux pas utiliser passer par Internet ? Est-ce une peur de se faire pirater les données ? Ou tu penses qu'une fonctionnalité hors-ligne est un sérieux avantage sur tes concurrents ? 

        Ensuite pour essayer de répondre à tes questions :

        • Ne stocke pas les images en BDD, fait plutôt un stockage dans des dossiers spécifiques sur le serveur "web" avec des liens vers les images dans la BDD. Tu vas ainsi éviter d'avoir une bdd monstrueuse en poids
        • Si une fiche est équivalente à une ligne dans plusieurs tables, 1000 à 5000 fiches sont largement supportables par n'importe quel SGBD
        • Tu peux pas réellement faire du multi-utilisateur en concurrence sur une même fiche. Tu vas être obligé de bloquer ta fiche sur la BDD le temps qu'un médecin fasse des modifications. Sinon tu vas avoir de sacrés problèmes lors de l'enregistrement.
        • Tu peux très bien créer un exécutable qui va te permettre d'installer tout ce que tu veux chez un client

        Ensuite, je pense que vouloir installer un "serveur" chez le client n'est pas la meilleur idée. Parce que si jamais le PC du client crame, il perd toutes ses infos (parce qu'il n'aura jamais fait de backups). Alors qu'un serveur en ligne permet d'automatiser la création de backup et va donc éviter de trop grosses pertes de données. Si tu veux vraiment avoir un système hors ligne, tu peux peut-être passer par un serveur avec une base de données hors ligne (Sqlite, Pouch ou autres) qui va se synchroniser régulièrement avec un serveur Web de backup. Comme ça si PC du client crame, il peut récupérer ses données tranquillement.

        Une autre solution que tu peux envisager, c'est d'utiliser un petit raspberry Pi pour te servir de serveur "offline". C'est vite amorti si tu fais de l'abonnement mensuel et ça permet de stocker une petite BDD si tu ajoutes un disque dur en plus. 

        J'espère pouvoir t'aider dans ta démarche,

        • Partager sur Facebook
        • Partager sur Twitter
          15 novembre 2018 à 15:27:16

          EDIT: 15/11/2018

          J'éditerais ce post en fonction des discussions qui vont suivre et mettrais entre parenthèse le choix précédent.

          Et bien, je vais commencer par me répondre à moi même en attendant qu'une bonne âme vienne m'aider :D

          Mes choix actuelles pour faire aboutir mon projet après pas mal de lecture:

          Langage et framework:

          - SGBD: Mariadb (MySql)

          - Serveur/application: python avec le Framework Django (apparemment il y a un serveur que l'on peut déployer avec) et HTML/CSS avec le Framework bootstrap.

          Applications:

          - Mariadb (Mysql)

          - SQL power architect (Navicat, Workbench)

          - Sublime

          - Python

          - Django

          - Bootstrap

          Formation à suivre (dans l'ordre et en espérant que cela soit cohérent):

          J'ai de bonnes bases pour les données relationnelles, en HTML5 et CSS et légèrement en Python.

          Dans ce chapitre, je cite le nom des cours sur openclassrooms bien évidemment.


          - SQL:

           * Modélisez, implémentez et requêtez une base de données relationnelle avec UML et SQL

           * Initiez-vous à l'algèbre relationnelle avec le langage SQL

           * Administrez vos bases de données avec MySQL


          - HTML/CSS

           * A revoir mais ok


          - Bootstrap

           * Prenez en main Bootstrap


          - Python

           * Démarrez votre projet avec Python

           * Apprenez à programmer en Python

           * Découvrez la programmation orientée objet avec Python


          - Django

           * Découvrez le framework Django

           * Développez votre site web avec le framework Django


          J'ai déjà de quoi faire mais j'ai le temps..


          Questions sur les points floues pour moi:

          - Est ce qu'il manque un langage/Framework pour mon projet

          -  L'ordre d'apprentissage est-il le bon?

          - La priorité reste de pouvoir fournir un exécutable sous OSX et Win qui permettent facilement le déploiement de la solution et l'installation du serveur, est-ce possible en partant dans cette direction?


          Merci par avance!

          -
          Edité par fantasy51 17 novembre 2018 à 16:54:42

          • Partager sur Facebook
          • Partager sur Twitter
            15 novembre 2018 à 17:41:32

            Salut,

            Je ne viens pas du web alors je ne vais parler qu'avec les connaissances que j'ai acquises au travers mes cours et des rumeurs, mais sans expérience.

            Pourquoi MySQL ?
            Il a profité d'une grande popularité mais depuis son rachat il semble que son fork MariaDB est plus avantageux en étant 100% compatible, et PostgreSQL a côté a quelques incompatibilités mais je crois qu'il a de meilleures performances.

            Je ne connais ni Sublime ni Workbench

            Pour Python, le cours le plus conseillé est celui de Gérard Swinnen
            Zeste de Savoir a beaucoup de contenu intéressant sur Python, dont un bon cours sur Django

            Pour le déploiement de serveur, il existe des abréviations appelées "stack", tel que LAMP / WAMP (originellement Linux (ou Windows) Apache MySQL PHP mais peut devenir Linux (Windows) Apache MariaDB Python) pour la plus connu, mais il existe maintenant d'autres stacks populaires (par rapport à NodeJS ou au NoSQL) et je ne sais pas où on en est au niveau du serveur http car si Apache est très largement répandu, on entend de plus en plus parler de Nginx, et il doit y en avoir d'autres

            PS : Il manque également l'apprentissage du JavaScript qui va permettre de faire plein de chose côté client

            -
            Edité par romantik 15 novembre 2018 à 17:49:57

            • Partager sur Facebook
            • Partager sur Twitter
            Dream on, Dream on, Dream until your dream comes true
              15 novembre 2018 à 17:51:51

              Bonjour Cernkor et merci pour ta réponse; mon 2ème message a dû croiser le tien... 

              Je précise que le logiciel est pour les para-médicaux dont je fais parti car comme tu l'imagines je ne suis pas informaticien de métier.

              * Je ne veux pas d'internet car il faut que l'accès à l'application soit toujours disponible même en cas de coupure/problème techniques/etc..

              Un cabinet qui n'a pas accès aux fiches patient et c'est le drame ensuite le stockage de données "sensibles" (données de santé) doivent être sur un serveur agréé et sécurisé et donc très coûteux mais le point 1 est le plus important.

              * Le stockage des images m'a longtemps fait hésiter mais dans l'absolu cela n'est pas courant et cela est plus simple pour l'export de la bdd même si je reste bien évidemment ouvert à la discussion sur ce point (comme tout le reste d'ailleurs).

              * Il n'y aura pas d'accès en concurrence, concrètement chaque fiche patient sera accessible par 1 thérapeute sauf si par exemple le thérapeute 1 donne l'accès au travers un bouton sur la fiche du patient au thérapeute 2 (à ce moment le thérapeute 1 n'a plus accès à la fiche); chaque patient correspondra à un thérapeute mais il faut qu'en cas de remplacement l'accès soit possible à un autre.

              cernkor a écrit:

              Ensuite, je pense que vouloir installer un "serveur" chez le client n'est pas la meilleur idée. Parce que si jamais le PC du client crame, il perd toutes ses infos (parce qu'il n'aura jamais fait de backups). Alors qu'un serveur en ligne permet d'automatiser la création de backup et va donc éviter de trop grosses pertes de données. Si tu veux vraiment avoir un système hors ligne, tu peux peut-être passer par un serveur avec une base de données hors ligne (Sqlite, Pouch ou autres) qui va se synchroniser régulièrement avec un serveur Web de backup. Comme ça si PC du client crame, il peut récupérer ses données tranquillement.

              Une autre solution que tu peux envisager, c'est d'utiliser un petit raspberry Pi pour te servir de serveur "offline". C'est vite amorti si tu fais de l'abonnement mensuel et ça permet de stocker une petite BDD si tu ajoutes un disque dur en plus. 

              J'espère pouvoir t'aider dans ta démarche,

               A l'heure actuelle la solution que j'ai développé sous Filemaker présente le même inconvénient, mais à chaque fermeture du logiciel une demande de sauvegarde est affichée et je sensibilise grandement mes confrères a bien effectuer une sauvegarde dans le cloud ou clé USB.

              J'ai pensé au RPI3 avec 2 disques durs en raid 0 mais peu pratique puis j'ai pensé au NAS syno avec un raid 0 mais après en avoir discuté avec mes confrères, la plupart sont sous OSX avec une timemachine. Au final, je pense que le cabinet peut déployer la solution sur un ordinateur qui servira de serveur et assumer les backups et pourquoi pas leur proposer le NAS en option.

              Pour le SGBD, j'ai arrêté (toujours discutable) mon choix sur MySql (Cf post 3) afin de pouvoir y accéder en réseau facilement s'il y a plus d'un thérapeute dans le cabinet (point faible de ma solution actuelle développée avec Filemaker).

              Un grand merci pour cette réponse!!

              Bonjour Romantik,

              Je viens de voir ton message.

              Un grand merci de ton aide, je vais regarder du côté du fork de mysql et également pour les formations.




              -
              Edité par fantasy51 15 novembre 2018 à 18:08:43

              • Partager sur Facebook
              • Partager sur Twitter
                15 novembre 2018 à 18:09:26

                Oh et j'ai oublié, pour gérer un peu tes efforts il est peut être mieux que tu saches :

                  Tu vas mettre en place un SGBDR et donc suivre des formations qui vont te faire apprendre le SQL pour les manipuler, et c'est assez important car ça va te permettre de concevoir correctement ta base de donnée et faire de la maintenance dessus. Cependant Django simplifie la manipulation de la base en masquant les requêtes derrière son système d'ORM : Tu manipules des variables Python et l'ORM s'occupe de la synchronisation.

                Juste pour dire que pour développer ton application, tu peux relacher l'effort sur l'apprentissage du langage SQL, tu as déjà beaucoup à faire.

                • Partager sur Facebook
                • Partager sur Twitter
                Dream on, Dream on, Dream until your dream comes true
                  15 novembre 2018 à 18:38:59

                  Merci.

                  -
                  Edité par fantasy51 15 novembre 2018 à 18:41:35

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 novembre 2018 à 16:54:06

                    Apparement le logiciel "sql power architect" est plus approprié et opensource pour la modélisation du MPD et script sql (mariadb) donc je mets à jour!
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Aide Projet logiciel gestion patientèle

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown