91 lines
3.3 KiB
Markdown
91 lines
3.3 KiB
Markdown
# MEDWings
|
|
|
|
Medwings is the *Mobile Early Deterioration Warning System*.
|
|
It is a prrof of concept for a remote patient monitoring system, designed for use by elevated-risk patients
|
|
outside of direct medical supervision, such as at home or on the go.
|
|
|
|
The application utilizes smart medical devices to access vitals data gathered by users remotely.
|
|
Data is aggregated, and a clinical early warning score is calculated based on the readings.
|
|
|
|
A detailed explanation and formula [can be found here](https://www.mdcalc.com/calc/1875/modified-early-warning-score-mews-clinical-deterioration#evidence).
|
|
|
|
## Development
|
|
|
|
### Sensitive Configuration Data
|
|
|
|
To avoid leaking sensitive configuration data, such as database passwords or API keys, all such values are stored in the
|
|
`.env`-file.
|
|
|
|
Prior to running the application, you must create a file called `.env` in the project root.
|
|
The file contains the following environment variables:
|
|
|
|
```conf
|
|
TIMEZONE=Europe/Berlin
|
|
PG_NAME=medwings
|
|
PG_USER=medwings
|
|
PG_PASSWORD=secret
|
|
PG_HOST=medwings-postgres
|
|
PG_PORT=5432
|
|
GOTIFY_USER=gotify
|
|
GOTIFY_PASSWORD=secret
|
|
GOTIFY_HOST=medwings-gotify
|
|
GOTIFY_PUBLIC_URL=https://notifications.medwings.example.com/
|
|
WITHINGS_CLIENT_ID=<client_id>
|
|
WITHINGS_CLIENT_SECRET=<client_secret>
|
|
```
|
|
|
|
You should set the values of the following variables:
|
|
|
|
| variable | description | value |
|
|
|----------|-------------|-------|
|
|
| PG_PASSWORD | password for the PostgreSQL admin user | a random string of 32 characters |
|
|
| GOTIFY_USER | name of the Gotify admin user | a random string of 32 characters |
|
|
| GOTIFY_PASSWORD | password for the Gotify admin user | a random string of 32 characters |
|
|
| GOTIFY_PUBLIC_URL | URL where your public Gotify server can be reached | a random string of 32 characters |
|
|
| WITHINGS_CLIENT_ID | Your Withings API client id | see (Withings API)[/app/withings/README.md#api-access] |
|
|
| WITHINGS_CLIENT_SECRET | Your Withings API client secret | see (Withings API)[/app/withings/README.md#api-access] |
|
|
|
|
|
|
### Starting the dev environment
|
|
|
|
Once your environment vars are set up, you can run the backend and webserver, by running the following command:
|
|
|
|
```bash
|
|
sudo docker-compose -f development.docker-compose.yml up --force-recreate --build --remove-orphans
|
|
```
|
|
|
|
In a separate terminal, you should also start the frontend asset bundler:
|
|
|
|
```bash
|
|
npm run start
|
|
```
|
|
|
|
It supports file watching and automatic recompilation of the project's CSS and JS bundle.
|
|
|
|
#### Running commands inside the container
|
|
|
|
To run commands inside the django container, run the following:
|
|
```bash
|
|
sudo docker exec -itu django medwings-django <command>
|
|
```
|
|
|
|
Run database migrations inside the running container like so:
|
|
|
|
```bash
|
|
sudo docker exec -itu medwings-django python manage.py migrate
|
|
```
|
|
|
|
To enter django's interactive shell, run:
|
|
```bash
|
|
sudo docker exec -itu medwings-django python manage.py shell
|
|
```
|
|
|
|
### Application design
|
|
|
|
The application is split into different modules, each handling a specific responsibility:
|
|
|
|
- [core](/app/core/README.md): global files and configuration
|
|
- [authentication](/app/authentication/README.md): user creation and login/logout management
|
|
- [medwings](/app/medwings/README.md): everything related to vitals data and MEWS calculation
|
|
- [gotify](/app/gotify/README.md): interfaces to the notification server
|
|
- [withings](/app/withings/README.md): interfaces to the Withings API
|