94 lines
3.6 KiB
Markdown
94 lines
3.6 KiB
Markdown
# MEDWings
|
|
|
|
Medwings is the *Mobile Early Deterioration Warning System*.
|
|
It is a proof 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.
|
|
|
|
The Medwings 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
|
|
|
|
You can read more about each module and its functionality in each section mentioned above.
|
|
|
|
## 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
|
|
DJANGO_DEBUG_MODE=false
|
|
DJANGO_SECRET_KEY=abc123mySecret
|
|
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=abc123myClientId
|
|
WITHINGS_CLIENT_SECRET=abc123myClientSecret
|
|
```
|
|
|
|
You should set the values of the following variables:
|
|
|
|
| variable | description | value |
|
|
|----------|-------------|-------|
|
|
| DJANGO_DEBUG_MODE | whether or not to enable Django's debug mode | 'true' during development and 'false' in production |
|
|
| DJANGO_SECRET_KEY | private session secret | a random string of 64 characters or more |
|
|
| PG_PASSWORD | password for the PostgreSQL admin user | a random string of 32 characters or more |
|
|
| GOTIFY_USER | name of the Gotify admin user | a random string of 32 characters or more |
|
|
| GOTIFY_PASSWORD | password for the Gotify admin user | a random string of 32 characters or more |
|
|
| GOTIFY_PUBLIC_URL | URL where your public Gotify server can be reached | this depends on your deployment environment |
|
|
| 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 django medwings-django python manage.py migrate
|
|
```
|
|
|
|
To enter django's interactive shell, run:
|
|
```bash
|
|
sudo docker exec -itu django medwings-django python manage.py shell
|
|
```
|