# MEDWings Mobile Early Deterioration Warning System. # MEWS The following vital signs need to be recorded for a MEWS calculation: * Heart Rate * SPO2 * Blood Pressure * Body Temperature * Respiration Rate A detailed explanation and formula [can be found here](https://www.mdcalc.com/calc/1875/modified-early-warning-score-mews-clinical-deterioration#evidence). # Handheld Devices We have procured the following devices for vitals data measurement: * [Withings Scanwatch](https://www.withings.com/de/en/scanwatch) * Heart Rate, SPO2 * [Withings Thermo](https://www.withings.com/de/en/thermo) * Body Surface Temperature * [WIthings BPM Core](https://www.withings.com/de/en/bpm-core) * Blood Pressure ## API Access Data is gathered by taking measurements using the devices, either actively (BP sleeve, thermometer) or passively (smartwatch). The devices are connected to the Withings mobile app. The mobile app then regularly pushes gathered data to the Withings cloud. The Withings Dev Free plan allows for 120 API requests per minute. Access to vitals data is available through the [Withings API](https://developer.withings.com/). A detailed [API integration guide](https://developer.withings.com/developer-guide/v3/integration-guide/public-health-data-api/public-health-data-api-overview/), as well as an [API reference guide](https://developer.withings.com/api-reference) are available online. # Development To start the development compose-stack, run the following command: ```bash sudo docker-compose -f development.docker-compose.yml up --force-recreate --build --remove-orphans ``` To start the frontend asset bundler, run: ```bash npm run start ``` It supports file watching and hot reloading of the browser window. To clean the bundle files, run: ```bash npm run clean ``` ## Backend To run commands inside the backend container, run the following: ```bash sudo docker exec -it medwings-django ``` Run database migrations inside the running container like so: ```bash sudo docker exec -it medwings-django python manage.py migrate ``` To enter django's interactive shell, run: ```bash sudo docker exec -it medwings-django python manage.py shell ``` ## Notification server Steps to create a new user's channel on gotify: 1. Using admin credentials in basic auth, create a new gotify user with the django user's credentials. 2. Save the user's id in the DB. 3. Using the user's credentials in basic auth, create a new gotify application called `Medwings`. 4. Save the application token and application id in the DB. 5. Optional: upload an application picture to make the notifications look a bit nicer 6. Pushing notifications to this user now works as follows: `curl "https://medwings.com/message?token=" -F "title=Time for a measurement." -F "message=Bla bla."` # Deployment Build the asset bundle: ```bash npm run build ``` In the root directory, create a file named `.env` and fill it with environment variables containing your access and connection credentials: ```env TIMEZONE=Europe/Berlin PG_NAME=medwings PG_USER=medwings PG_PASSWORD= PG_HOST=medwings-postgres PG_PORT=5432 GOTIFY_USER= GOTIFY_PASSWORD= GOTIFY_HOST=medwings-gotify WITHINGS_CLIENT_ID= WITHINGS_CLIENT_SECRET= ``` Substitute each `` with your information as follows: - `PG_PASSWORD`: A random string, at least 32 characters - `GOTIFY_USER`: Can be a username of your choice, for the Gotify server admin user - `GOTIFY_password`: A random string, at least 8 characters - `WITHINGS_CLIENT_ID`: Your Withings Developer API Client ID - `WITHINGS_CLIENT_SECRET`: Your Withings Developer API Client Secret