This is an old revision of the document!
Table of Contents
medAL-data Integration details
In this section we summarize the components that have been integrated into medAL-data's Laravel web server.
Back-end Changes
The back-end changes consists of the following additions:
- Model and Controller for Health Facilities and Devices
Laravel Passportplugin- New service classes to perform the business logic for:
- Algorithms
- Devices
- Health Facilities
AuthDeviceControllerwhich is the controller used for most of the Passport-protected API routes for devices.
Passport Installation
In order to install passport, we had to make slight changes to the laravel version currently used by this server. Originally, the composer.json file had the following version:
"require": {
...
"laravel/framework": "6.0.*",
...
},
Which we changed to:
"require": {
....
"laravel/framework": "^6.20.26",
...
},
for the passport installation to work properly.
After changing the composer.json, we run composer update followed by composer require laravel/passport which successfully installed passport's back-end routes. The routes used for Passport are then registered in the AuthServiceProvider.php provider class where we only used the routes necessary for our desired functionality.
Database Migrations
The new migrations are the following:
- New nullable columns are added to the pre-existing
health_facilitiestable that are used to manage health facilities. Moreover, a name column has been added (as the pre-existing was unconventionally calledfacility_name). - The
devicestable anddevice_typestable have been created to store device information. - The health_facility_accesses table has been created to store all the algorithm versions metadata that have been assigned to health facilities.
- The
version_jsonstable has been created to store the version's json files that are then fetched by the devices.
Services
- The
DeviceServiceclass is used to make the link between a Device model and Passport's Client model, which represent OAuth clients. This service is also used to resolve a Device model from a token that is part of the request. - The
HealthFacilityServiceclass is used to assign and unassign devices. - The
AlgorithmServiceclass is used to fetch algorithms and versions from the medAL-creator server and assign versions to health facilities.
For more information, the service classes are properly commented in App/Http/Services.
Controllers
The newly controllers are the following:
- The
DeviceControllerhandles requests for creating editing and deleting devices. - The
HealthFacilityControllerhandles request for creating, editing and deleting health facilities. Additionally, it handles algorithm related-requests and assignment/unassignment of devices. - The
Api\AuthDeviceControllerhandles requests coming from authenticated devices to fetch their health facility information, upload their device information and get their algorithm versions.
Middlewares and Policies
The DeviceController and HealthFacilityController are guarded by the web and auth and permission:
- middleware (only users with the
Logisticianrole hold these permissions). Additionally, handles authorize slug requests depending on policies that only allow a user to modify its own resources. TheApi\AuthDeviceControllerhandlers are guarded by theauth:apimiddleware which is followed by thedevice.resolvemiddleware which translates each request with a token to the corresponding device model and adds a timestamp to thelast_seencolumn of thedevicestable.
Requests and Resources
For creating and editing devices and health facilities, custom request classes have been created to validate the request. Moreover, when returning device models to the front-end it is first converted to a Device resource which omits some fields and translates others for the user.
Roles
The Logistician role has been added with has permissions to reset its own password, view its user information, manage health facilities and devices.
Front-end Changes
The existing front-end has been extended with two new dashboard accessible to logistician users, Devices and Health Facilities. Both dashboard are made of reactive vue components.
Upgrade Laravel-Mix
The version of Laravel mix previously declared in package.json was making the node compilation failed (on heroku) so it has been changed to : “laravel-mix”: “^5.0.1”,
after which the command npm install is run to update the dependencies.
