Enutriv
INFO
This project belongs to T-med.
Overview
e-Nutriv is a platform designed for detecting, diagnosing, and monitoring malnutrition in the elderly.
The platform is divided into two parts:
- MobileApp: A mobile application aimed at "field" users (nurses, home caregivers, etc.) to collect measurements for a beneficiary (height, weight, questionnaires, etc.).
- WebApp: A web application for "nutritionists/admins," allowing them to view statistics, perform data exports, consult and add patients, and manage alerts.
The application uses Laravel and Vue.js.
Other modules used include:
- Inertia to easily link PHP and JavaScript
- SweetAlert for creating responsive, customizable alerts
- Tailwinds for CSS
- ...
Alerts
When data is entered, an algorithm may be triggered to verify the current nutritional state of the individual. The result will determine whether or not an alert is issued.
The criteria used are based on the following recommendations/requirements:
- HAS 2022 - Diagnosis of malnutrition in people aged 70 and over: https://www.has-sante.fr/upload/docs/application/pdf/2021-11/reco368_recommandations_denutrition_pa_cd_20211110_v1.pdf
An alert can have different "levels" (severity):
- Green: The situation is normal, or a previous situation has improved, and the patient is back within normal parameters.
- Orange: A state of malnutrition is detected.
- Red: A severe state of malnutrition is detected.
Application Preview
My Contribution
Besides working on optimization issues, I contributed to several key areas:
WebApp
Added "Inclusion Date" field when adding a patient
On the /patients/create
route, I added the ability to override the created_at
field in the form and controller. This feature is visible and available only to admin users, and the date can only be set to the current or a past date, rejecting future dates.
Digital Signature
In the document upload modal on a patient's profile, I added a choice between Upload a document or Sign digitally
.
- If "Upload a document" is chosen, the current content (Name and File) is displayed.
- If "Sign digitally" is chosen, two elements are displayed:
- A dropdown to select the document template.
- A signature box.
When the form is submitted, the signature is applied to the template, the fields related to the patient are auto-filled, and the document is converted to PDF and added to the patient's file.
Email Alert Notifications
When an alert is generated, the application sends an email to all users associated with the patient's unit/facility that triggered the alert.
The email structure is as follows:
- Title: New Alert
- Paragraph: A new alert concerning one of your patients has been generated on the e-Nutriv platform. Click the button below to view it.
- Button: View the alert (redirecting to the patient's profile)
"Missed Visit" Feature Enhancements
Client-requested updates to improve tracking of patients with missed visits. The application now displays missed visits and allows filtering patients based on visit delays.
Managing the "Enabled" Field for Users (Not Patients)
Previously, users could not be deleted. I added a feature to manage the "enabled" field in the user administration. This allows admins to toggle between true
and false
, disabling the user's login and future login attempts.
Upgrade to Laravel 9/Vite
Upgraded from Laravel 8 to Laravel 9, and replaced BrowserSync with Vite.
Data Export
Patient data extraction for Nearby Data
. This involved extracting all alerts and finding the data closest to the alert moment, then combining everything into an Excel format.
Restrict Export Access to Admins
Three roles exist in the system:
- admin
- manager
- user
Previously, all three roles could export data from e-Nutriv when logged into the WebApp. With the upcoming integration of a new structure, only admins should be allowed to export data. A middleware was added to the export routes, and the export icon (and modal) was hidden for non-admins on the frontend.
MobileApp
Creating a Test APK
Generated an APK pointing to the test environment instead of production.
Confirmation When Changing the "Chronic Disease" Question
When adding an HAS 2022 entry/action, question B "Chronic Disease" can have a positive or negative response. This question often causes confusion among teams regarding what constitutes a chronic disease, resulting in alternating answers depending on the user, which leads to inconsistent alert generation.
I added a check when answering this question. The system retrieves the latest answer from previous evaluations and checks for changes (does nothing if no change is detected or if it’s the first evaluation).
If a change is detected, a confirmation popup appears:
- If "Yes", the change is allowed.
- If "No", the value is not modified.
This system requires retrieving the latest evaluation, which involved making updates to the e-Nutriv WebApp API.