Team Bring-It: Our System

team logo

Server

The server consists of three main components:

Task Manager

Database

Communication

All server-side code is handled with Django which is a python-based web framework.

Task Manager:

The role of the task manager is to manage the actions that are placed within the UI. This includes, but is not limited to:

Placing Delivery Orders from the Inventory

Placing Peer to Peer Orders

Determining Waypoints for navigation

A full list of features can be found through this link. The different processes of ordering can be found in the training material.

Database:

Django has an in-built SQLite database which has been used to store all the data required for operation. Thanks to Django’s in-build ORM (Object Relational Mapper), the creation of the database and its various tables are maintained through a model. Models are easily defined through various field types, a list of which can be found here.

The database itself is relational meaning that different tables within the database can be related to one another through foreign keys allowing for a more easily manageable database as each table is linked to another. The full database schema can be found below.

Database Schema

Communication:

Communication between the robot and the server is done through the use of a custom REST implementation. REST stands for Representational State Transfer and uses HTTP protocols to get access to and manipulate data from the database. Communication is done through a local network allows for hospital wide coverage for the robots as long as it is connected to that local network.

To ensure secure communication between the robot and the server an encrypted session ID is generated each time the robot establishes communication. For sustained communication during a session, the session ID is sent with each request. If the session ID in the request matches the one within the database, then the requested action takes place otherwise an error is returned. The session ID encryption is done through Fernet which uses 128-bit AES (Advanced Encryption Standard) encryption allowing for secure symmetric encryption.