Skip to content

Commit 0d64de1

Browse files
New Name from EHRoes to IMPatienT
1 parent af8e473 commit 0d64de1

29 files changed

+137
-131
lines changed

.devcontainer/devcontainer.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
22
// https://github.com/microsoft/vscode-dev-containers/tree/v0.202.5/containers/docker-existing-dockerfile
33
{
4-
"name": "ehroesdev",
5-
"build": { "args": { "-t": "ehroesdev:latest" } },
4+
"name": "impatientdev",
5+
"build": { "args": { "-t": "impatientdev:latest" } },
66
// Sets the run context to one level up instead of the .devcontainer folder.
77
"context": "..",
88

@@ -36,10 +36,10 @@
3636
"mounts": [
3737
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
3838
],
39-
"workspaceMount": "source=${localWorkspaceFolder},target=/home/ehroes,type=bind,consistency=cached",
40-
"workspaceFolder": "/home/ehroes",
41-
"runArgs": ["--init", "--name", "ehroesdev", "--rm", "-it"],
39+
"workspaceMount": "source=${localWorkspaceFolder},target=/home/impatient,type=bind,consistency=cached",
40+
"workspaceFolder": "/home/impatient",
41+
"runArgs": ["--init", "--name", "impatientdev", "--rm", "-it"],
4242

4343
// Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root.
44-
"remoteUser": "ehroes"
44+
"remoteUser": "impatient"
4545
}

.flaskenv

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
FLASK_APP=ehroes.py
1+
FLASK_APP=impatient.py

.github/workflows/docker-build-push.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
file: ./Dockerfile
3838
builder: ${{ steps.buildx.outputs.name }}
3939
push: true
40-
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/ehroes:latest
40+
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/impatient:latest
4141
cache-from: type=local,src=/tmp/.buildx-cache
4242
cache-to: type=local,dest=/tmp/.buildx-cache
4343

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,4 @@ docker/run.sh
175175
.config
176176
.gitconfig
177177
*.tar.gz
178-
EHRoes
178+
IMPatienT

.vscode/launch.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"pathMappings": [
1414
{
1515
"localRoot": "${workspaceFolder}",
16-
"remoteRoot": "/home/ehroes"
16+
"remoteRoot": "/home/impatient"
1717
}
1818
],
1919
"projectType": "flask"
@@ -30,7 +30,7 @@
3030
"request": "launch",
3131
"module": "flask",
3232
"env": {
33-
"FLASK_APP": "ehroes.py",
33+
"FLASK_APP": "impatient.py",
3434
"FLASK_ENV": "development",
3535
"FLASK_DEBUG": "0"
3636
},

.vscode/tasks.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
"label": "docker-run: debug",
77
"dependsOn": ["docker-build"],
88
"dockerRun": {
9-
"containerName": "ehroesdev",
10-
"image": "ehroesdev:latest",
9+
"containerName": "impatientdev",
10+
"image": "impatientdev:latest",
1111
"env": {
12-
"FLASK_APP": "/home/ehroes/ehroes.py",
12+
"FLASK_APP": "/home/impatient/impatient.py",
1313
"FLASK_ENV": "development"
1414
},
1515
"volumes": [
1616
{
17-
"containerPath": "/home/ehroes",
17+
"containerPath": "/home/impatient",
1818
"localPath": "${workspaceFolder}"
1919
}
2020
],
@@ -36,7 +36,7 @@
3636
"dockerBuild": {
3737
"context": "${workspaceFolder}",
3838
"dockerfile": "${workspaceFolder}/Dockerfile.dev",
39-
"tag": "ehroesdev:latest"
39+
"tag": "impatientdev:latest"
4040
}
4141
}
4242
]

Dockerfile

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
FROM python:3.9-slim
22

3-
RUN useradd ehroes
4-
WORKDIR /home/ehroes
3+
RUN useradd impatient
4+
WORKDIR /home/impatient
55

66
RUN apt update && apt install -y gcc git tesseract-ocr tesseract-ocr-osd tesseract-ocr-fra poppler-utils
7-
COPY --chown=ehroes:ehroes pyproject.toml pyproject.toml
8-
COPY --chown=ehroes:ehroes poetry.lock poetry.lock
7+
COPY --chown=impatient:impatient pyproject.toml pyproject.toml
8+
COPY --chown=impatient:impatient poetry.lock poetry.lock
99

1010
RUN python -m pip install poetry
1111
RUN python -m poetry config virtualenvs.create false
1212
RUN python -m poetry install --no-root --no-interaction && rm -rf ~/.cache/pypoetry/{cache,artifacts}
1313

14-
COPY --chown=ehroes:ehroes ehroes.py config.py docker/boot.sh ./
15-
COPY --chown=ehroes:ehroes app app
16-
COPY --chown=ehroes:ehroes migrations migrations
17-
COPY --chown=ehroes:ehroes config config
14+
COPY --chown=impatient:impatient impatient.py config.py docker/boot.sh ./
15+
COPY --chown=impatient:impatient app app
16+
COPY --chown=impatient:impatient migrations migrations
17+
COPY --chown=impatient:impatient config config
1818

19-
RUN chown ehroes:ehroes /home/ehroes
19+
RUN chown impatient:impatient /home/impatient
2020
RUN chmod a+x boot.sh
2121

22-
ENV FLASK_APP ehroes.py
22+
ENV FLASK_APP impatient.py
2323

24-
RUN usermod -u 1000 ehroes
25-
RUN usermod -G staff ehroes
26-
USER ehroes
24+
RUN usermod -u 1000 impatient
25+
RUN usermod -G staff impatient
26+
USER impatient
2727

2828
EXPOSE 5000
2929
ENTRYPOINT ["./boot.sh"]

Dockerfile.dev

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
FROM python:3.9-slim
22

3-
RUN useradd ehroes
4-
WORKDIR /home/ehroes
3+
RUN useradd impatient
4+
WORKDIR /home/impatient
55

66
RUN apt update && apt install -y gcc git tesseract-ocr tesseract-ocr-osd tesseract-ocr-fra poppler-utils
7-
COPY --chown=ehroes:ehroes pyproject.toml pyproject.toml
8-
COPY --chown=ehroes:ehroes poetry.lock poetry.lock
7+
COPY --chown=impatient:impatient pyproject.toml pyproject.toml
8+
COPY --chown=impatient:impatient poetry.lock poetry.lock
99

1010
RUN python -m pip install poetry
1111
RUN python -m poetry config virtualenvs.create false
1212
RUN python -m poetry install --no-root --no-interaction && rm -rf ~/.cache/pypoetry/{cache,artifacts}
1313

14-
RUN chown ehroes:ehroes /home/ehroes
14+
RUN chown impatient:impatient /home/impatient
1515

1616
ENV FLASK_ENV development
17-
ENV FLASK_APP ehroes.py
17+
ENV FLASK_APP impatient.py
1818
ENV SHELL /bin/bash
1919

20-
USER ehroes
20+
USER impatient
2121

2222
EXPOSE 5000
2323
ENTRYPOINT ["./dev_boot.sh"]

README.md

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
![Twitter Follow](https://img.shields.io/twitter/follow/corentinm_py?style=social) ![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/lambda-science/ehroes) ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/lambda-science/EHRoes) [![Build](https://github.com/lambda-science/EHRoes/actions/workflows/docker-build-push.yml/badge.svg)](https://github.com/lambda-science/EHRoes/actions/workflows/docker-build-push.yml) ![GitHub last commit](https://img.shields.io/github/last-commit/lambda-science/ehroes) ![GitHub](https://img.shields.io/github/license/lambda-science/ehroes)
1+
![Twitter Follow](https://img.shields.io/twitter/follow/corentinm_py?style=social) ![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/lambda-science/impatient) ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/lambda-science/IMPatienT) [![Build](https://github.com/lambda-science/IMPatienT/actions/workflows/docker-build-push.yml/badge.svg)](https://github.com/lambda-science/IMPatienT/actions/workflows/docker-build-push.yml) ![GitHub last commit](https://img.shields.io/github/last-commit/lambda-science/impatient) ![GitHub](https://img.shields.io/github/license/lambda-science/impatient)
22

3-
# EHRoes 🦸: an integrated web application for multimodal patients data digitization and exploration
3+
# IMPatienT 🗂️: an integrated web application to digitize, process and explore multimodal patient data.
44
<p align="center">
5-
<img src="https://i.imgur.com/M18Rnrv.png" alt="EHRoes Banner" style="border-radius: 25px;" />
5+
<img src="https://i.imgur.com/z5pf64y.png" alt="IMPatienT Banner" style="border-radius: 25px;" />
66
</p>
77

8-
**EHRoes 🦸 is a web application developped in the MYO-xIA project for patient data digitization and exploration.**
8+
**IMPatienT 🗂️** (d**I**gitize **M**ultimodal **PATIEN**t da**T**a) **is a web application developped in the MYO-xIA project for patient data digitization and exploration.**
99
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 prediction.
1010

11-
A demo version is currently deployed at: https://ehroes.lbgi.fr/
11+
A demo version is currently deployed at: https://impatient.lbgi.fr/
1212
This project is free and open-source under the MIT 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.
1313

1414
## Contact:
1515

1616
The main maintainer is:
1717
**Corentin Meyer** - PhD Student @ CSTB Team - iCube - University Of Strasbourg <[email protected]>
1818

19-
## Citing EHRoes
19+
## Citing IMPatienT🗂️
2020

2121
[placeholder]
2222

@@ -25,32 +25,32 @@ The main maintainer is:
2525
<img src="https://i.imgur.com/csEXDnW.png" alt="Partner Banner" style="border-radius: 25px;" />
2626
</p>
2727

28-
EHRoes is developped and used in collaboration with the [Morphological Unit of the Institute of Myology of Paris](https://www.institut-myologie.org/en/recherche-2/neuromuscular-exploration-and-evaluation-centre/laboratoire-dhistopathologie-dr-norma-b-romero/). A production instance is deployed to help discovering new relevant features for congenital myopathies classification and diagnosis.
28+
IMPatienT is developped and used in collaboration with the [Morphological Unit of the Institute of Myology of Paris](https://www.institut-myologie.org/en/recherche-2/neuromuscular-exploration-and-evaluation-centre/laboratoire-dhistopathologie-dr-norma-b-romero/). A production instance is deployed to help discovering new relevant features for congenital myopathies classification and diagnosis.
2929

30-
## EHRoes Abstract
30+
## IMPatienT🗂️ Abstract
3131

32-
**Background**
33-
With a growing amount of patient data such as sequencing, imaging, and medical records, electronic health records (EHR) are now central to drive research and improve diagnosis of patients by using multimodal data. Exploiting patient data is a challenge as patient data exploitation tools ecosystem is often fragmented into tools to digitize and format the data and those interpreting the data (exploration, diagnosis). Furthermore, as most of the tools are specialized in one type of data, a multitude of software is needed for multimodal approaches. There is a strong need for a simple, all-rounder and flexible platform.
34-
**Results**
35-
In this paper we present EHRoes, a web application for multimodal digitization and exploration of patient data. EHRoes has a module-based architecture, composed of four modules to: (i) create a standard vocabulary for a domain (ii) automatically digitize free-text data to a set of standard terms (iii) annotate images with standard vocabulary using automatic segmentation and (iv) generate an automatic visualization dashboard to provide insight on the data and perform automatic diagnosis suggestions. We demonstrated the utility of EHRoes by digitizing 40 artificial muscle histology reports of patients with congenital myopathies.
36-
**Conclusions**
37-
With EHRoes we created a platform for both digitization and exploration of patient data that can handle image data and free-text data. As it uses user-designed standard vocabulary, it is highly flexible to fit any domain of research. It can be used both as a patient registry with automatic diagnosis or as a research tool to explore a cohort of patients.
38-
A demo instance of the application is available at https://ehroes.lbgi.fr.
32+
**Background**
33+
Medical acts such as imaging leads most of the time to the production of several medical text reports to describe relevant findings. Such process induce multimodality in patient data by linking image data to free-text data. Multimodal data have become central to drive research and improve diagnosis of patients. Exploiting patients’ data is challenging as the ecosystem of tools is fragmented depending on the type of data to exploit (image, text, genetic), the task to perform (digitization, processing, exploration) and the domain of interest (clinical phenotype, histology…). There is a strong need for a simple, comprehensive, and flexible platform.
34+
**Results**
35+
In this paper, we present IMPatienT (d**I**gitize **M**ultimodal **PATIEN**t da**T**a), a free and open-source web application to digitize, process and explore multimodal patient data. IMPatienT has a modular architecture, composed of 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 showcased IMPatienT on a corpus of 40 simulated muscle biopsy reports of congenital myopathy patients.
36+
**Conclusions**
37+
IMPatienT is a platform to digitize, process and explore patient data that can handle image and free-text data. As it relies on user-designed standard vocabulary, it is highly flexible to fit any domain of research and can be used as a patient registry for exploratory data analysis (EDA).
38+
A demo instance of the application is available at https://impatient.lbgi.fr.
3939

4040
## Setup guides
4141

4242
### (DOCKER) Developper Mode Setup (to contribute)
4343

44-
[See the wiki page: Developper Mode Setup (DOCKER)](<https://github.com/lambda-science/EHRoes/wiki/(DOCKER)-Developper-Mode-Setup-(to-contribute)>)
44+
[See the wiki page: Developper Mode Setup (DOCKER)](<https://github.com/lambda-science/IMPatienT/wiki/(DOCKER)-Developper-Mode-Setup-(to-contribute)>)
4545

46-
### (DOCKER) Deploy to production & Maintain EHRoes
46+
### (DOCKER) Deploy to production & Maintain IMPatienT
4747

48-
[See the wiki page: Deploy and maintain (DOCKER)](<https://github.com/lambda-science/EHRoes/wiki/(DOCKER)-Deploy-&-Maintain-EHRoes>)
48+
[See the wiki page: Deploy and maintain (DOCKER)](<https://github.com/lambda-science/IMPatienT/wiki/(DOCKER)-Deploy-&-Maintain-IMPatienT>)
4949

50-
### (LINUX) Deploy to production & Maintain EHRoes
50+
### (LINUX) Deploy to production & Maintain IMPatienT
5151

52-
[See the wiki page: Deploy and maintain (LINUX)](<https://github.com/lambda-science/EHRoes/wiki/(LINUX)-Deploy-&-Maintain-EHRoes>)
52+
[See the wiki page: Deploy and maintain (LINUX)](<https://github.com/lambda-science/IMPatienT/wiki/(LINUX)-Deploy-&-Maintain-IMPatienT>)
5353

5454
### (LEGACY - Deprecated) Developper Mode Setup (non-docker)
5555

56-
[See the wiki page: Developper Mode Setup (non-docker)](<https://github.com/lambda-science/EHRoes/wiki/(LEGACY---Deprecated)-Developper-Mode-Setup-(non-docker)>)
56+
[See the wiki page: Developper Mode Setup (non-docker)](<https://github.com/lambda-science/IMPatienT/wiki/(LEGACY---Deprecated)-Developper-Mode-Setup-(non-docker)>)

app/__init__.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def create_app(config_class=Config):
107107
mailhost=(app.config["MAIL_SERVER"], app.config["MAIL_PORT"]),
108108
fromaddr="no-reply@" + app.config["MAIL_SERVER"],
109109
toaddrs=app.config["ADMINS_EMAIL"],
110-
subject="EHRoes Failure",
110+
subject="IMPatienT Failure",
111111
credentials=auth,
112112
secure=secure,
113113
)
@@ -123,7 +123,7 @@ def create_app(config_class=Config):
123123
if not os.path.exists("logs"):
124124
os.mkdir("logs")
125125
file_handler = RotatingFileHandler(
126-
"logs/ehroes.log", maxBytes=10240, backupCount=10
126+
"logs/impatient.log", maxBytes=10240, backupCount=10
127127
)
128128
file_handler.setFormatter(
129129
logging.Formatter(
@@ -135,7 +135,7 @@ def create_app(config_class=Config):
135135
app.logger.addHandler(file_handler)
136136

137137
app.logger.setLevel(logging.INFO)
138-
app.logger.info("EHRoes startup")
138+
app.logger.info("IMPatienT startup")
139139
return app
140140

141141

app/auth/email.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def send_password_reset_email(user):
1010
"""
1111
token = user.get_reset_password_token()
1212
send_email(
13-
("[EHRoes] Reset Your Password"),
13+
("[IMPatienT] Reset Your Password"),
1414
sender=current_app.config["ADMINS_EMAIL"][0],
1515
recipients=[user.email],
1616
text_body=render_template("email_reset_password.txt", user=user, token=token),

app/auth/templates/email_reset_password.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
<p>{{ url_for('auth.reset_password', token=token, _external=True) }}</p>
1212
<p>If you have not requested a password reset simply ignore this message.</p>
1313
<p>Sincerely,</p>
14-
<p>The EHRoes Team</p>
14+
<p>The IMPatienT Team</p>

app/auth/templates/email_reset_password.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ If you have not requested a password reset simply ignore this message.
88

99
Sincerely,
1010

11-
The EHRoes Team
11+
The IMPatienT Team

app/historeport/static/historeport.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ conclusion_tag.on("input", onInputConclusion);
115115

116116
// Tagify AJAX Function to get a list of Orphanet names
117117
var myHeaders_orpha = new Headers({
118-
apiKey: "ehroes",
118+
apiKey: "impatient",
119119
});
120120
var options_orpha = {
121121
headers: myHeaders_orpha,

app/imgupload/static/imgupload.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ conclusion_tag.on("input", onInputConclusion);
1111

1212
// Tagify AJAX Function to get a list of Orphanet names
1313
var myHeaders_orpha = new Headers({
14-
apiKey: "ehroes",
14+
apiKey: "impatient",
1515
});
1616
var options_orpha = {
1717
headers: myHeaders_orpha,

0 commit comments

Comments
 (0)