Git Product home page Git Product logo

gaelo's People

Contributors

emilieolivie avatar josselinlbe avatar salimkanoun avatar scrutinizer-auto-fixer avatar theohmwoa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gaelo's Issues

Faire Evoluer Exception

Faut revenir a gerer les execption dans l'hexagone, pour pouvoir gerer les error message quand on en a besoin.
Si une erreur sort de l'hexagone elle fallback en 500

Download DB

Une fois Orthanc Implementée faire un dump des seriesOrthancID et l'ajouter a l'archive.

  • Logger dans tracker les export db

Creation Visits

Dans la V1 code dans Scripts / Visit => Block POST

Pour l'utilisateur
Choix du visitGroup si existe plusieurs
Choix de la VisitType a Créer si existe plusieurs

=> Nécéssite une API Study/{studyName}/Patient/{patientCode}/available-visits
Retourne les Visits non crées (par rapport aux visits type dispo dans l'étude)
De Cette API on peut lister les Group / type a afficher dans le front (et on expose leur ID car elles vont etre utilisée pour créer la visite).

Le payload va contenir
Le statut Done / Not Done
La Date de visit si Done
La reason si not done

API de creation Visit
POST sur Study/{studyName}/VisitGroup/{visitGroupID}/VisitType/{visitTypeID}/Visit

Bug après reset password

Le password reset de l’admin envoie bien un mail avec un nouveau mot de passe temporaire. Il permet bien de changer le mot de passe. Cependant, une fois redirigée pour se connecter avec le nouveau mdp, il n’est pas reconnu. On obtient un bandeau rouge sans message d’erreur écrit puis des Wrong password – 2 attemps, … et Blocked. => Salim => Plus que des bandeaux rouges (compte ne se bloque pas)

Info Tree

Enlever infos inutiles
Hiérarchie patientCode => visitModality => visitName (statusForm, statusUpload, reviewStatus, stateQuallityControl)

Gestion Statut patient

Reflexion en cours

Il faut avoir un statut patient : Included / Awaiting Inclusion (date d'inclusion à null) / Exited

Pour les exit => liste de raison sur le modèle GaelO v1

Add Affiliated Center

Passer le payload de creation de center toujours à un seul Item et ne pas autoriser d'array ?
Nécéssite d'une loop sur le front mais simplifierai le back qui deviendrai plus "restFul"

Bug login user

Le password reset de l’admin envoie bien un mail avec un nouveau mot de passe temporaire. Il permet bien de changer le mot de passe. Cependant, une fois redirigée pour se connecter avec le nouveau mdp, il n’est pas reconnu. On obtient un bandeau rouge sans message d’erreur écrit puis des Wrong password – 2 attemps, … et Blocked.

Probablent lié à l'attempt qui est pas remis a zero

Authorization

Creer policies pour creation users dans Study
Checker que le query tag est accessible dans les methode des policies

Mail en double apres blocked ?

Peut etre dans l'array final d'email faire une recherche de mail unique pour eviter d'avoir a envoyer des duplicats pour des utilisateurs qui seraient dans plusieurs listes de roles

Test : Tracker

Dans le test du Tracker, tu fait un appel d'API pour générer des lignes dans le Tracker et ensuite faire des assertions sur l'API Tracker pour retrouver cette ligne.

C'est une mauvaise idée car si ton API qui te sert a générer des lignes dans le Tracker est cassée pour une raison qui n'a rien a voir avec le tracker ton test sur le Tracker tombe aussi (alors que ta fonction tracker sait bien lire ce qu'il y a dans la table tracker).

Ca devient difficile a debeuger, tu pense que c'est l'API tracker qui est cassée alors que c'est une autre API.

Il faut rester unitaire autant que possible, donc au lieu d'appeler une API pour générer des ligne dans la table Tracker, il faut plutot ecrire dans la BDD des lignes dans la table tracker via les factory.
Comme ca ton test reste unitaire et si il tombe c'est uniquement du a la fonction Tracker.

A terme on pourra faire des test pour verifier qu'en executant une API t'a bien un enregistrement dans Tracker que tu retrouve sur l'API Tracker mais ce sont des tests End To End et pas des tests unitaires / integration.
C'est des test utile pour tester tout l'applicatif mais plus long a excuter et plus dificile a debeuger que les tests unitaire (mais utile pour tester la cohérence de l'ensemble)
image

Decoupler Review / Visit de Patient

1 Review reference le couple Study et Visit

Dans le Modele de Visit=> Methode pour get les Review qui appartiennent à une study name (Has many avec un filtre sur la study Name)

Nécéssiter de splitter la date visit pour séparer les info stable entre les etude princeps et ancillaire et les information spécifique ? (le review conclusion, peut etre le QC ?!?)

Instructions for Docker run.

Hi.
Thx for awesome project. I would like to use it in our lab.
Can you provide detailed instructions how to run docker version?
I tried docker build, followed by docker run --publish=80:80, but no sucess. Am I missing some critical steps? Is the port exposed correct?

getVisitPatient

Manque info sur reviewStatus (dépend de la study courante) + nb of series + acquisitionDate (faire evoluter acquition date vers visit date et voir utilité d'afficher le nombes de series dans la table patient)

Tracker : Fusionner Admin et User dans le meme use case

Je pense qu'il faut mieux fusionner Admin et User dans le meme use case, les deux use cases sont tres semblables.

Le problème principal est que tu dispatch sur tes usescase depuis le controller de laravel, tu te retrouve avec de la logique dans la couche infrastructure (dans le framework) alors que le but de la clean architecture et de déplacer toute la logique dans l'hexagone séparé de ton framework.
Le controlleur doit avoir le minimum de logique, il sert juste à transporter ta requete du framework vers l'hexagone.

Si tu avait 2 routes on aurait fait 2 controlleurs
Ici vaut mieux passer le query param dans le DTO et mettre la logique dans le use case.

Attention aux string 'getTrackerOfRole('Administrator');' utiliser des constantes plutot que des chaines de caractères

Update clé GetAvailableImport

Manque la modalité et changer quelque clé, suivre le patron suivant :

{"patientCode":"17017101051001",
"patientFirstname":"F",
"patientLastname":"V",
"patientSex":"M",
"patientDOB":"02-00-1941",
"visitModality":"PT",
"visitDate":"11-10-2020",
"visitType":"PET0",
"visitID":179}

Error HTTP : Mettre les information pour le front dans un payload JSON

=> On a changé les status text des reponse http pour le front
C'était pas une bonne idée car
-> on peut pas faire d'assertion sur les statustext dans les test
->Traefik rewrite les statustext suivant les statustext officiel de HTTP et met "no reason phrase" si http code non connu.

Par contre la bonne practice serait de mettre un payload de la raison du fail dans la réponse http en echec.
C'est la meme facon que quand on output le user ID sur la réponse "password expired"

https://blog.restcase.com/rest-api-error-codes-101/

Upload Fails

Feeback and reason in the interface
Write failure in tracker

Eviter deux appels au back dans un test

Dans les test eviter de faire plusieurs appels au back (ex déclancher un conflict), sortir chaque appel au back en remettant la BDD a l'état désiré avant l'appel au back.
Ca rend les tests plus explicites

Pas de AssertStatus 500

L'erreur 500 c'est une erreur interne au backend qui donne aucune information au front.
Si une requette est mal proposée, ou conflit de ressource, ou entity non existant il faut detecter les problemeq dans le back et repondre une réponse qui explique l'erreur pour le front (404 not found, 209 conflict etc ...)

L'erreur 500 c'est une erreur qui ne devrait pas se produire

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.