GithubHelp home page GithubHelp logo

lambda-science / impatient Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 0.0 19.19 MB

IMPatienT🗂️: an integrated web application to digitize, process and explore multimodal patient data. Demo version deployed at: https://impatient.lbgi.fr/

Home Page: https://impatient.lbgi.fr/

License: GNU Affero General Public License v3.0

Shell 0.80% Python 63.69% HTML 17.52% CSS 0.86% JavaScript 9.45% Mako 0.18% Jupyter Notebook 7.00% Dockerfile 0.33% Makefile 0.17%
python patient-database vizualisation annotation flask webapp image medecine disease formating data-formatting ontology diagnosis

impatient's Introduction

Twitter Follow GitHub tag (latest SemVer) GitHub release (latest SemVer) Build GitHub last commit GitHub

IMPatienT 🗂️: an integrated web application to digitize, process and explore multimodal patient data.

IMPatienT Banner

IMPatienT 🗂️ (Integrated digital Multimodal PATIENt daTa) is a web application developped in the MYO-xIA project for patient data digitization and exploration. It features a standard vocabulary creator, optical character recognition (OCR), natural language processing (NLP), image annotation and segmentation using machine learning, interactive visualizations and automatic diagnosis suggestion.

A demo version is currently deployed at: https://impatient.lbgi.fr/ This project is free and open-source under the AGPL license, feel free to fork and contribute to the development. Several guides are available at the bottom of this page for the production deployment and developer mode.

Contact:

The main maintainer is: Corentin Meyer - PhD in Biomedical AI [email protected]

Citing IMPatienT🗂️

[placeholder]

Partners

Partner Banner

IMPatienT is developped and used in collaboration with the Morphological Unit of the Institute of Myology of Paris. A production instance is deployed to help discovering new relevant features for congenital myopathies classification and diagnosis.

IMPatienT🗂️ Abstract

Background
Medical acts, such as imaging, generally lead to the production of several medical text reports that describe the relevant findings. Such processes induce multimodality in patient data by linking image data to free-text data and consequently, multimodal data have become central to drive research and improve diagnosis of patients. However, the exploitation of patient data is challenging as the ecosystem of available analysis tools is fragmented depending on the type of data (images, text, genetic sequences), the task to be performed (digitization, processing, exploration) and the domain of interest (clinical phenotype, histology…). To address the challenges, the analysis tools need to be integrated in a simple, comprehensive, and flexible platform.
Results
Here, we present IMPatienT (Integrated digital Multimodal PATIENt daTa), a free and open-source web application to digitize, process and explore multimodal patient data. IMPatienT has a modular architecture, including four components to: (i) create a standard vocabulary for a domain, (ii) digitize and process free-text data by mapping it to a set of standard terms, (iii) annotate images and perform image segmentation, and (iv) generate an automatic visualization dashboard to provide insight on the data and perform automatic diagnosis suggestions. Finally, we demonstrate the usefulness of IMPatienT on a corpus of 40 simulated muscle biopsy reports of congenital myopathy patients.
Conclusions
IMPatienT is a platform to digitize, process and explore patient data that can handle image and free-text data. As it relies on a user-designed vocabulary, it can be adapted to fit any domain of research and can be used as a patient registry for exploratory data analysis (EDA). A demo instance of the application is available at https://impatient.lbgi.fr.

Setup guides

(DOCKER) Developper Mode Setup (to contribute)

See the wiki page: Developper Mode Setup (DOCKER)

(DOCKER) Deploy to production & Maintain IMPatienT

See the wiki page: Deploy and maintain (DOCKER)

(LINUX) Deploy to production & Maintain IMPatienT

See the wiki page: Deploy and maintain (LINUX)

(LINUX) Developper Mode Setup

See the wiki page: Developper Mode Setup (LINUX)

impatient's People

Contributors

dependabot[bot] avatar lambda-science avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

impatient's Issues

Delete Legacy Code

Delete legacy code, config files and text that will not be use for publication.

Module 4: Enhance

Add BOQA Results and UNCLEAR reclassification.
For each report store prediction in DB so not always calculated

[FEATURE] META Improvement

Backlog of ideas to for META improvement (structure, deployment...):

  • Add Admin Interface to create accounts
  • Remove NGINX Cache or try with production settings (to fix images issues ?)
  • Might add a role-base / user-based gestion of data

[FEATURE] Improving Vocabulary Module

Backlog of ideas to improve the vocabulary module:

  • Switch lang button should become FRA/ENG buttons (two sepearates buttons), might use JSTree metadata field to check the current vocab language
  • Add a "image annotation" tickbox as nodes properties (boolean) to show or not on image annotation module

Visit

  • Mutation Field + Phenotype field
  • Re-use model for image
  • Tiff file convertion

Module 3: Enhance

Modify Show Segmentation to Button
Modify Blurring parameters to a single value
Modify tag list to Standard vocabulary part "image tagging"
If classifier is not none load it

Module 2: Enhance

Per trms genes: show all and marks linked as colored
Changer info terms de champs à HTML classique
Ajouter champs gene suspecté, modifier diagnosed as tag list

[FEATURE] Improving Image Module

Backlog of ideas to improve the image module:

  • Find out why sometimes annotations don't show up on refresh, same question for image
  • Find out why the layout doesn't get updated when new terms are added (remove cache ?)
  • Fix the form image upload issue when modifying data (New Form ?)
  • Load previous model for new images ?
  • Simplify code base

Migrate to Conda ENV

Would probably be better to migrate to a conda env for more cross-platform compatibility.

Module 1: Simplify Fields

no distinction gene / gene datamined
sort genes
show un-asigned genes
find complete gene list
synonymes + other lang

[FEATURE] Improving Dashboard Module

Backlog of ideas to improve the dashboard module:

  • Don't re-do all calculations and viz when visiting the page, only trigger it on ontology change or new reports.

[FEATURE] Improving Report Module

Backlog of ideas to improve the report module:

  • Add a red X button to vocabulary terms overview
  • Add RegEx to prefill age, biopsy ID and date
  • Hide the debug modal
  • Add a modified patient hook in SQLite DB to redo visualisations automatically (and not always)

[Security] IMPatienT v1.5.0 Stored Cross-Site Scripting (XSS) - CVE-2023-23637

A Security Advisory has been raised for IMPatienT v1.5.0 (CVE-2023-23637):

Description:
IMPatienT v1.5.0 allows Stored Cross-Site Scripting (XSS) via onmouseover in certain text fields within a PATCH /modify_onto request.
This may allow attackers to steal Protected Health Information (PHI).

image

Suggested Fix:
Consider sanitizing user input parameters by removing all non-compliant characters. Additionally, you could consider encoding the user input using HTML or URL methods.

Reference:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23637
https://nvd.nist.gov/vuln/detail/CVE-2023-23637
https://owasp.org/www-project-top-ten/2017/A7_2017-Cross-Site_Scripting_(XSS)

Payload:

PATCH /modify_onto HTTP/1.1
Host: 127.0.0.1:5000
Content-Length: 2218
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.75 Safari/537.36
Origin: http://127.0.0.1:5000/
Referer: http://127.0.0.1:5000/ontocreate
Connection: close

[{"id":"MHO:000001","text":"Sample Keyword","icon":true,"li_attr":{"id":"MHO:000001"},"a_attr":{"href":"#","id":"MHO:000001_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{"description":"","synonymes":"","phenotype_datamined":"","gene_datamined":"","alternative_language":"Sample Keyword","hex_color":"#c7ef34","hpo_datamined":"","correlates_with":"","image_annotation":false},"parent":"#"},{"id":"MHO:000004","text":"Keyword Image Annotation","icon":true,"li_attr":{"id":"MHO:000004"},"a_attr":{"href":"#","id":"MHO:000004_anchor"},"state":{"loaded":true,"opened":false,"selected":true,"disabled":false},"data":{"description":"","synonymes":"","phenotype_datamined":"UNCLEAR","gene_datamined":"N/A","alternative_language":"","correlates_with":"","image_annotation":true,"hex_color":"#77e3a4","hpo_datamined":""},"parent":"MHO:000001"},{"id":"MHO:000005","text":"Keyword Image Annotation 2<a onmouseover=alert('XSS')>XSS</a>","icon":true,"li_attr":{"id":"MHO:000005"},"a_attr":{"href":"#","id":"MHO:000005_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{"description":"","synonymes":"","phenotype_datamined":"","gene_datamined":"","alternative_language":"","correlates_with":"","image_annotation":true,"hex_color":"#094f6a","hpo_datamined":""},"parent":"MHO:000001"},{"id":"MHO:000002","text":"Sample Keyword Child","icon":true,"li_attr":{"id":"MHO:000002"},"a_attr":{"href":"#","id":"MHO:000002_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{"description":"","synonymes":"","phenotype_datamined":"","gene_datamined":"","alternative_language":"","correlates_with":"","image_annotation":false,"hex_color":"#14cd17","hpo_datamined":""},"parent":"MHO:000001"},{"id":"MHO:000003","text":"Sample Keyword Child 2","icon":true,"li_attr":{"id":"MHO:000003"},"a_attr":{"href":"#","id":"MHO:000003_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{"description":"","synonymes":"","phenotype_datamined":"","gene_datamined":"","alternative_language":"","correlates_with":"","image_annotation":false,"hex_color":"#d9eab9","hpo_datamined":""},"parent":"MHO:000001"}]

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.