Professional Documents
Culture Documents
Medical Voice's Platforms: By: Mohamed Slim Ahan Touati
Medical Voice's Platforms: By: Mohamed Slim Ahan Touati
2019 - 2020
INFORMATION TECHNOLOGY
By: Mohamed Slim Ahan Touati
Signature
of the
supervisor
from the
Dedication
I dedicate this end of studies project as a testimony of my gratitude and my respect to:
My dear parents for all the affection, all the sacrifices, their love and the encouragements that they never
stopped lavishing on me throughout my studies,
All my colleagues for the unforgettable moments that I shared with them,
It is very pleasant for me to reserve this page as a testimony of gratitude to all the people who have
supported and encouraged me to do this work.
I would like to express my gratitude to my supervisors Arturo Sanchez and Antoine Hurard for lending
me of their most precious time as well as their rich contribution, their precious advice, their sympathy,
their benevolence and for having been present in each moment to support me and help me carry out this
work.
for her patience and understanding, to the jury members who dedicated a part of their time for agreeing to
evaluate this work.
Table of Contents
Introduction....................................................................................................................................................1
Cloud technologies):...................................................................................................................................3
1. Structure:.............................................................................................................................................3
2. Hiring Process:....................................................................................................................................4
3. Projects:..............................................................................................................................................5
Parkinson’s disease.................................................................................................................................6
Conclusion:.................................................................................................................................................7
Section I: Problematic................................................................................................................................8
1. Meditech:............................................................................................................................................9
2. MySugr:..............................................................................................................................................9
3. HealthVault:......................................................................................................................................10
Conclusion:...............................................................................................................................................13
1. Programming Languages:.................................................................................................................19
2. Frameworks:.....................................................................................................................................20
2. Database/Query languages:..............................................................................................................21
3. Software tools:..................................................................................................................................21
1. Agile methodologies:........................................................................................................................23
2. SCRUM methodology:.....................................................................................................................24
3. Scrum team:......................................................................................................................................26
1. Product backlog:...............................................................................................................................26
2. Sprint planification...........................................................................................................................29
Conclusion:...............................................................................................................................................30
2. Functional Analysis:.........................................................................................................................35
Conclusion:...............................................................................................................................................41
2. Functional Analysis:.........................................................................................................................46
Conclusion:...............................................................................................................................................53
2. Functional Analysis:.........................................................................................................................60
Conclusion:...............................................................................................................................................64
2. Functional Analysis:.........................................................................................................................74
Conclusion:...............................................................................................................................................77
2. Functional Analysis:.........................................................................................................................83
Conclusion:...............................................................................................................................................89
2. Functional Analysis:.........................................................................................................................96
Conclusion:.............................................................................................................................................102
General Conclusion....................................................................................................................................103
Bibliography...............................................................................................................................................104
Abstract......................................................................................................................................................105
In recent years, there has been an increasing recognition that the ability to understand and
construct simple computer programs (coding) is now a core skill and likely to be even more
so in the future. This reflects the increasingly digital world in which we live and work and the
growing need for more individuals to be able to engage with this type of technology. For
example, the National Health Service (NHS) has recognized that when faced with an
increasingly tight budget and time constraints, technology has the potential to help improve
efficiency. Doctors and other health care professionals are in a unique position to identify
problems that could be resolved or helped, in part, by technology. There have been numerous
examples in the past few years of technology such as computer programs or specialist
websites being used in clinical care or research, and this is likely to continue to be the trend
going forward.
In order to conclude my studies in the field of software engineering in Esprit and entering the
professional life, I had the opportunity to integrate into Relief Applications (legal name =
Oordt cloud technologies), to prepare my end of studies project.
I always wanted to use software programming to make real changes in the world and this
opportunity was the perfect chance for me to apply my skills and learn new things.
We had the mission to analyze the features such as: Vocal interfaces, patient information,
prescriptions info.
1
First of all, I will present the company and the internship’s framework.
Secondly, I will present the partner and will describe the goal of the project in detail.
Third, I will talk about the software development workflow and the tools and methodologies
we used to make the process better and team work more efficient.
After that I we will describe the design phase, presenting UML diagrams as: the general and
detailed use case diagrams specifying the actors involved in this application, the sequence
diagram for each feature etc...
Finally, we will describe the phase of implementation and coding of the application. I will
present the components included in the application and I will indicate the techniques used to
achieve the application.
2
Chapter I: General Framework of the
project
The project is a collaboration between Relief Applications and Asociacion Parkinson Madrid.
We will first present the home company: Relief Applications, its main activity sector, its
references and its organization. Then, we’ll define the context of the project and we will
present our main target, and finally we will present the context of the project and its goals.
1. Structure:
3
Software Development Team: This team is responsible for creating the web and
mobile apps that would be used to govern the products designed for the client, making
them smarter solutions that can be governed by the end users from the screen of their
computers or smartphones via a few clicks.
Design Team: This team is responsible for capturing the clients’ requirements in a
form that is easy-to-use, simple and innovative at the same time. This form is then
brought to reality by the software development team.
Administration Team: This team is responsible for the overall smooth functioning of
the entire company.
HR Team: This team is responsible for the hiring of new talent, and the management
of the existing Human Resources of the company.
Project Management Team: This team is responsible for managing the various projects
within the enterprise as well as communicating with clients regularly to gather the
requirements and then disseminate this information amongst the teams.
2. Hiring Process:
In order to be able to get job at Relief Applications, a whole process is followed, which is
divided into following phases:
Introductory Interview: This interview was conducted over Hangouts and was a 30-45
minutes session with a HR team member and the Tech Lead. The main goal of this
step was to be introduced to the company values and to discuss basic expectations on
both sides.
Live test: This test was once again conducted with the Software team lead over
Hangouts and Visual Studio Code’s live share. The goal of this was to gain a more in-
depth understanding of my skills and whether they would be a good fit for the
company or not.
4
Technical test: As I understood later, this test is required when the team is still not sure
about the candidate, I thankfully was already accepted after making the live test, but I
knew about the technical test when it was given to me as an introduction to the
company’s work style during my first two weeks. It’s a small video-player web
application having Angular 9 as frontend and Django as backend.
3. Projects:
The company’s main expertise are IT Development and Tech Consulting, the IT Development
team creates Web platforms, mobile apps and voice enabled systems to turn the internal or the
client’s ideas into a reality. As for the Tech Consulting, Relief’s team is helping clients
achieve the best way forward through business analyses, technical reviews and training
programs. Some of the great products I can site are:
MediCal: This is a project created by Relief Applications to help people with chronic
diseases to follow their treatment. Medical will allow them, using their voice, to
monitor their calendar of medicines and access everything they need to know about
their prescription: how many pills are left, control if they already took certain
medicine, check the secondary effects and share all this information with their family
members and caregivers in real time.
Warchild: War Child empowers children and young people in conflict areas by
providing psychosocial support and stimulating education.
Their program Can’t Wait to Learn the use of custom gaming technology to deliver
fast, effective and low- cost great quality education. The program enables children to
learn even in places where formal education is not available offering the opportunity
to continue to learn, read and count through playing educational games played on
tablet devices.
5
WHO: World Health Organization monitors outbreaks and potential high risk
situations all around the world in order to assist governments and private and public
organizations to deliver an effective response to epidemics, natural disasters or general
healthcare emergencies.
Parkinson’s disease
Parkinson's disease is a brain disorder that leads to shaking, stiffness, and difficulty with
walking, balance, and coordination. Parkinson's symptoms usually begin gradually and get
worse over time. As the disease progresses, people may have difficulty walking and talking.
Over the past generation, the global burden of Parkinson’s disease has more than doubled as a
result of increasing numbers of older people, with potential contributions from longer disease
duration and environmental factors. Demographic and potentially other factors are poised to
increase the future burden of Parkinson’s disease substantially.
Parkinson’s Association is a private non-profit entity formed by more than 2,000 partners and
established in May 1994 to serve, guide, train and inform affected people, their families and /
or caregivers, professionals and society in general about everything related to Parkinson's
disease.
Parkinson's Association wants to offer a pioneering tool to provide Parkinson's sufferers with
greater autonomy and empowerment. This tool will use voice assistants, a category of home
devices that since 2018 has been firmly established in the Spanish market and is expected to
continue growing at a high speed in the coming years. Relief Applications is the partner that is
developing the skill (name of applications in voice assistant environments) that will allow
Parkinson's patients to track their medication more easily, request information from patient
6
associations, carry out physical exercises Guided and control household devices such as lights
and household appliances.
Conclusion:
This chapter allowed us to familiarize with the context of the project and the partner that we
will be working with. The structure of the company is indeed important for the project to
succeed since it’s the guarantee of having a good working environment.
7
Chapter II: State of the art
Software development is the process of creating new software solutions or modifying existing
software solutions. Software can be designed and developed in a lot of different ways. The
approach taken to develop and design a software solution varies from a very simple, limited
planning approach to a very detailed, structured and formal approach.
During this chapter, we will be carrying out a study on the existing solutions on the market.
We will be presenting the criticisms of these solutions as well as the problems encountered
which will be then leading us to highlight our proposed solution.
And to finish this chapter, we will be unveiling the methodology of work developed
throughout our project by the Relief Application’s team. This will be preceded by a small
introduction on the used tools and a comparative study of different working methodologies in
general.
Section I: Problematic
- People with chronic diseases can’t follow their treatment. They find difficulties to
access everything they need to know about their prescriptions (how many pills are left,
control if they already took certain medicine, check the secondary effects etc..).
- Lack of mobility or impaired visualization for some patients (they can’t reach out by
themselves to obtain any information).
- Patient’s family members or care-takers can’t know for sure if the patient had his
medication and can’t get any other important information related to the prescription.
8
There are many mobile applications as well as web platforms that have been designed to
provide certain benefits. An essential step before starting each project is to carry out a
preliminary study. This study will be useful for us to deepen our understanding of the subject
to establish and to consider the present solutions to finally obtain the proposal of the most
effective solution.
1. Meditech:
Meditech’s mission is to help build a world where every patient can access their health
information and participate in their own care, and every healthcare organization can serve
their community quicker and more safely through cutting-edge technology with instant access
to records, knowledge, and data.
2. MySugr:
This Australian 2012 startup offers an app-based solution for monitoring blood glucose levels.
Users receive a high-quality blood glucose meter, testing supplies, and access to the mySugr
app and platform.
9
Figure 4: mySugr's logo
3. HealthVault:
HealthVault allows users diagnosed with diabetes to gather, store, use, and share their
personal health information. Adding health records, tracking health trends, and sharing your
health information is done easily and securely.
- There are hundreds of apps useful for anyone with a degenerative disorder that work
as timetables, reminders, training programs, e-health monitoring systems... But none
of the existing apps is summarizing all this tools together.
10
- Some of the elder patients are incapable of using these web platforms because of
their inability of adapting with new technologies.
- Most of patients having dangerous diseases such as Parkinson are unable to use
any visual web platforms because of their lack of mobility, blurred central vision
or disturbance in the shape of the images etc... Low vision is having a lot of bad
outcomes related to using these platforms or even their medications such as:
Not seeing prospects well, confusing boxes with similar colors, confusing pills that
are out of their blisters and having a similar color and shape, inability to discern
medication schedules well, both by hand and digital…
- With the existing platforms, patients would still have high dependency of others for
the management of their medications.
Amazon’s Alexa, also known simply as Alexa, is a virtual assistant AI technology developed
by Amazon, first used in the Amazon Echo smart speakers developed by Amazon Lab126. It
is capable of voice interaction, music playback, making to-do lists, setting alarms, streaming
podcasts, playing audiobooks, and providing weather, traffic, sports, and other real-time
information, such as news.
ALEXA is growing faster as a relevant home product for anybody, but its potential for those
11
Figure 6: Amazon's Alexa
Relief Applications made this a reality with an innovative approach to ALEXA possibilities
Medical is a project created by Relief Applications to help people with chronic diseases to
follow their treatment. It will allow them, using their voice, to monitor their calendar of
medicines and access everything they need to know about their prescription: how many pills
are left, control if they already took certain medicine, check the secondary effects and share
all this information with their family members and caregivers in real time.
Medical is particularly useful for those who lack mobility or are visually impaired: with the
use of their voice they have easier access to all the information they need for their medication.
It also includes a web platform that can help families and caregivers access all the information
about the treatment anywhere, which is the part that I took care of during my internship
besides the admins’ dashboard.
Medical would help improving the quality of life of groups at risk of exclusion by helping to
manage every aspect of medication intake.
Besides adding reminders, Medical provides information on the color and shape of the pills,
how many are left over, and it confirms the taking of medication. It guarantees greater
autonomy for the patient and security and peace of mind for family members and caregivers,
since the voice interface is synchronized with a web page from which they can observe
whether the patient is following the treatment.
Thanks to voice commands, it is much easier to use than other digital options for people with
mobility or vision problems.
12
Figure 7: Medical's logo
Conclusion:
The study of the existing solutions and goals helped us define what we want in a product by
details. After we presented what’s already on the market, we made sure to include some small
critics and to find solutions for the flaws we found. This drove us to conclude what are the
goal features for this project. Therefore, the next chapter will be dedicated to specifying
exactly what we want in those features and analyzing the way we want to tackle this
technology wisely.
13
Chapter III
Sprint 0: General analysis and planification
This step is very important in the realization of an application. The future of the software
simply depends a lot on this phase, it allows us the development of a sufficient application.
This is why, generally the client and the project manager must be willing to collaborate. In
our case, since the project is internal, it was easier to achieve this step.
Developers need to turn fuzzy ideas into a precise specification of the needs, wants, and
demands expressed by a community of users. Thus, they define a relationship between a
system and its environment.
Analysis and definition of needs: which allows to find a common agreement between
specialists and users.
Now speaking about the modeling part, it is absolutely necessary to have methods or
languages for modelling object-oriented languages. Therefore, several methods or languages
have emerged, including UML, which allowed us to design our application.
Nowadays, UML2 has thirteen diagrams that can be classified into two categories (dynamic
and static).
14
To achieve this, we would need to extract the main features of our application. Then we
would introduce the actors that act on our system. Then we would identify our technological
direction. And finally, we would present our timeline and deadlines.
For each sprint/feature, we will begin with the corresponding use case diagrams which allows
to give a global view of the application and each feature. Not only for an uninformed
customer (in general) who will have the idea of his future application, but also for the
developer. Finally, the design would be refined by presenting the chronology of the operations
by the sequence diagrams.
Each of these steps are done for each sprint. Additionally, each feature goes through
requirement specifications and gathering first.
we need to identify the actors that act on our system. We need to extract the main functional
and non-functional requirements of our application.
The application targets chronically ill patients of all ages, but especially the older ones and
those suffering from mobility and vision problems. It is also oriented towards family members
of chronic patients and caregivers. It is conceived under a business to business model bound
to companies and healthcare institutions offering content for chronic patients.
- Patients
- Care-takers
- Admins
- Visitors of our public website
Non-functional needs are not necessarily related to a use case. However, they are
important to ensure the implementation of an application of good quality and
performance. In the case of our platform, we identified:
Security of access to patient’s information: This is ensured with the use of JWT
tokens.
15
- Security of users accounts: By hashing passwords with MD5.
- Performance: The platform must guarantee the integrity and consistency of the data at
each update. The user needs to know his medicaments status all the time.
- Ergonomics: Our platform has to present a simple and intuitive UI and a good and
simple UX.
The functional requirements specify the input / output behaviours of the system. They
correspond to the primary needs of the patients who are, generally, quoted in the
specifications.
The main features that our application offers are presented in the general use case diagram
below, and we’ll go later into the details of each one of them:
16
17
Figure 9: Medical's Architechture
18
Figure 10: General class diagram
19
Section II: Technological orientation
To achieve the wanted goals, multiple software tools are used in this project. These tools are
divided into multiple types : Programming languages, Frameworks (which allow a better use
of the programming languages), DevOps tools which allow a better structured process and a
better team work, and other tools and technologies that helped the software team achieve their
goals.
1. Programming Languages:
a. Python [1]:
Python is an interpreted, high-level, general-purpose programming language. Created by
Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code
readability with its notable use of significant whitespace. Its language constructs and object-
oriented approach aim to help programmers write clear, logical code for small and large-scale
projects..
b. Typescript [2]:
c. HTML [3]:
20
Hypertext Markup Language (HTML) is the standard markup language for documents
designed to be displayed in a web browser. It can be assisted by technologies such as
Cascading Style Sheets (CSS) and scripting languages such as JavaScript.
Web browsers receive HTML documents from a web server or from local storage and render
the documents into multimedia web pages. HTML describes the structure of a web page
semantically and originally included cues for the appearance of the document.
d. SCSS [4]:
Sass is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested
rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep
large stylesheets well-organized and makes it easy to share design within and across projects.
2. Frameworks:
a. Angular [5]:
Angular is an application design framework and development platform for creating efficient
and sophisticated single-page apps.
b. Django [6]:
Django is a high-level Python Web framework that encourages rapid development and clean,
pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web
development, so you can focus on writing your app without needing to reinvent the wheel. It’s
free and open source.
c. Node.js [7]:
21
d. Graphene [8]:
Graphene-Python is a library for building GraphQL APIs in Python easily, its main goal is to
provide a simple but extendable API for making developers' lives easier.
2. Database/Query languages:
a. MongoDB [9]:
b. GraphQl [10]:
GraphQL is a query language and server-side runtime for application programming interfaces
(APIs) that prioritizes giving clients exactly the data they request and no more.
GraphQL is designed to make APIs fast, flexible, and developer-friendly. It can even be
deployed within an integrated development environment (IDE) known as GraphiQL. As an
alternative to REST, GraphQL lets developers construct requests that pull data from multiple
data sources in a single API call.
3. Software tools:
DevOps is a set of practices that automates the processes between software development
(Dev) and IT operations teams (Ops), in order that they can build, test, and release software
faster and more reliably. The benefits include faster delivery of software with higher quality,
increased trust, and a better handling of critical bugs and unplanned tasks.
a. Docker [11]:
Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to
deliver software in packages called containers. Containers are isolated from one another and
bundle their own software, libraries and configuration files; they can communicate with each
22
other through well-defined channels. All containers are run by a single operating system
kernel and therefore use fewer resources than virtual machines.
The service has both free and premium tiers. The software that hosts the containers is called
Docker Engine. It was first started in 2013 and is developed by Docker, Inc.
b. Gitlab [12]:
Our objective is to be able to complete our project while respecting the deadlines and the
allocated budget. To achieve this, we must take into account the three constituent constraints
of the project: Quality, cost, deadlines.
23
In order to have.our.goal achieved, we must have recourse to a method of project
management. Different software development models can be adopted:
- Linear models (waterfall model, V model ...) which divide the development into sequential
and linear stages. They are generally well adopted when the needs are stable and clearly
identified but which present a difficulty to take into account changes in an advanced phase in
the project.
The tests are carried out late in the development process so the reaction time to errors is much
longer and therefore the product appears very late.
- Iterative and incremental models (Agile methods, spiral model, etc.) allow the product to be
delivered in several times, in an incremental manner so that each increment can give rise to a
more or less complete classic life cycle. They are driven by risk reduction and they ensure
better adaptation to changes.
As some of the needs were still unclear even though the general needs were, iterative and
incremental models represents our solution.
1. Agile methodologies:
A software development team is driven by one simple goal which is to meet the needs of its
customers. However, these needs are generally poorly expressed, often incomplete at the start
of the project and above all, they keep evolving.
As a result, the team finds itself developing applications with inaccurate and changing
specifications, resulting in either customer dissatisfaction or delivery delays. These issues
have prompted engineers to reinvent project management and design methods by introducing
what we call the agile methodology.
By deciding to adapt an agile methodology for the conduction of our project, we will break it
down into several iterations of relatively short duration and each resulting in a sub-objective.
At the end of each iteration, a minimum version of the project is developed and delivered.
This will always allow immediate feedback which will guarantee effective adaptation to
changing requirements and validation of the final version of the software which is only the
continuous integration of the different successive versions.
24
Several methodologies respect agile principles while each responding to certain types of
projects according to their size, the development team, the criticality of the system, etc... For
the management of our project, it was agreed to adopt the SCRUM methodology.
2. SCRUM methodology:
Scrum allows a team to collaborate effectively in order to develop a better quality product
while respecting deadlines. The construction of the final product is done in several iterations
called "Sprints" lasting from 1 to 4 weeks. During each of these iterations, a part of the
product called “Increment” is produced based on the parts created during the previous
iterations and delivered at the end of the Sprint.
This allows the team to respond to feedback and change, to build exactly and only what is
needed by the customer, in our case, the customer is obviously our team as this project is
internal.
25
Figure 12: SCRUM Methodology’s lifecycle
- Product backlog: presents a list of requested features called “User Stories”, sorted
by priority. Three attributes are associated with each element of the list: a
description, an estimate and an order of priority.
- Sprint backlog: presents a selection of retained tasks from the "Product backlog"
that the team commits to carry out, taking into account their priorities and their
capacity.
- Sprint burndown: presents a graph of the concrete progress of the team’s work and
allows to anticipate in a relatively reliable way the future deadlines of the "To do".
26
The three main meetings are:
- Sprint planning: allows the team and the product manager to set the goal of the
new sprint based on the prioritized "Product Backlog" and to estimate the
necessary production capacity to achieve this goal.
- Daily appointment: also called "Daily meeting" or "Daily scrum". It allows you to
focus on what has been done, the problems encountered and the tasks to be carried
out during the day.
- Sprint demonstration: also called “Sprint Review”. It allows the team to present
what they added to the product during the sprint. Based on this demonstration, the
product manager validates what has been achieved by the team and determines
what to do next. He is likely to offer to add, modify or re-estimate items in the
Product Backlog.
Although this is a simplified view of how Scrum works, this set allows to pace the progress of
the project and ensure communication between stakeholders.
3. Scrum team:
1. Product backlog:
27
ID FEATURE USER STORY PRIORITY
As a Patient / caretaker, I want to create
Low
an account
As a Patient / caretaker, I want to login
Medium
into my account
Manage profile As a Patient / caretaker, I want to
A1 Low
settings change my password from a form
As a Patient / caretaker, I want to
High
change my password when I forget it
As a Patient / caretaker, I want to
Medium
change my account information
As a visitor, I want to learn about
High
Medical
As a visitor, I want to contact Medical
High
Voice’s administration
As a visitor, I want to be redirected to
Visit public Medium
A2 the login form of the user dashboard
website As a visitor, I want to be redirected to
High
signup form of the user dashboard
As a visitor, I want to see the answers
of some questions that I might have Medium
about the services offered by Medical
As a Patient, I want to see my personal
Low
information
As a Patient, I want to see the list of my
Medium
Caretakers
As a Patient, I want to add a Caretaker High
As a Patient, I want to see my
High
prescriptions list
As a Patient, I want to search for a
specific prescription from the Medium
prescriptions list
Visit Patient’s
A3 As a Patient, I want to see details about
platform High
my medicines
As a Patient, I want the platform to be
translated to my language if it’s Medium
available
As a Patient, I want to check my
High
prescriptions’ calendar
As a Patient / caretaker, I want to logout
Low
from my account
As a Patient, I want to add a new
Medium
medication to my calendar
A4 Visit As a Caretaker, I want to see my Low
28
personal information
As a Caretaker, I want to see the list of
Medium
my Patients
As a Caretaker, I want to see my
High
patients’ prescriptions calendar
As a Caretaker, I want to search a
Medium
specific Patient from the Patients list
Caretaker’s As a Caretaker, I want to remove a
Medium
platform Patient from the Patients list
As a Caretaker, I want to filter the
Medium
Patients list by multiple keys
As a Patient / caretaker, I want to logout
Low
from my account
As a Caretaker, I want the platform to
be translated to my language if it’s Medium
available
As an Admin, I want to add another
High
Admin
As an Admin, I want to see statistics
Medium
about the users of the platforms
As an Admin, I want to see statistics
Medium
about the users’ logs
As an Admin, I want to see statistics
Medium
about the medications
As an Admin, I want to see the list of all
Visit Admin’s Low
A5 the users
platform
As an Admin, I want to search a
Medium
specific user from the user list
As an Admin, I want to filter the users
Medium
list by multiple keys
As an Admin, I want to delete a user Low
As an Admin, I want to the list of all the
Medium
logs
As an Admin, I want to search for a
Medium
specific user’s logs
2. Sprint planification
The table below contains the timeline of the realization of each sprint and the time granted for
each one of them:
29
Sprint Content Duration
- Planification
Sprint 0 - Conception 4 weeks
- Research
- JWT Configuration
Sprint 1 (backend) - Authentification 4 weeks
- Profile management
Sprint 2 (frontend +
- Visit public website 2 weeks
backend)
-Visit Patient platform
Sprint 3 (backend) -Visit Caretaker 4 weeks
platform
- Visit Patient platform
Sprint 4 (frontend) - Visit Caretaker 4 weeks
platform
Sprint 5 (backend) - Visit Admin platform 3 weeks
Usually the development of a feature requires the collaboration of the whole team, so we need
to guarantee that each one of the teams has enough time to do it. The full implementation is
usually split between:
UI/UX design
Frontend development
Backend development
Testing and QA
Usually, once one feature is done, verified and approved by QA, a new version of the
platform/ app will be released live.
Conclusion:
The global analysis and general feature specifications is maybe the most important step of the
project. It allows us to define our needs and make a feasibility study technologically and
30
based on resources. It allows us the development of a ‘sufficient’ product. Now, all we have
to do next is tackle our features sprint by sprint.
Chapter V: Sprint 1
31
During this chapter, we will present the first sprint which will be focusing on the
implementation of the authentication module alongside with patients and caretakers profile
management modules. We will start by presenting the sprint backlog, we will then move on to
its design and analysis and we will end with the sprint review.
32
method
A1.4.2: Create and send the
24h
renewal email
A1.4.3: Check the validity of
caretaker, I 24h
the renewal token
want to change A1.4.4: Validate the
my password compliance of the new
when I forget it 6h
password with system
requirements
A1.4.5: Test the functioning
6h
of the API
A1.5.1: Create the
4h
information_change method
A1.5.2: Check the
A1.5: As a
compliance of the new
Patient / 4h
information with the system
caretaker, I
requirements
want to change
A1.5.3: Check the validity of
my account
the token sent with the 4h
information
request
A1.5.4: Test the functioning
2h
of the API
The figure below represents the global use case diagram of this sprint:
33
Figure 13: Global use case diagram (Sprint1)
Based on the requirements, we concluded the specified use case diagram below:
34
1. Description of the use cases:
Since there are so many use cases, we decided to make a description of the most important
and complicated ones.
We concluded the textual description of the related use cases, presented in the table below:
Actor Patient/Caretaker
35
4a: System shows an alert
2. Functional Analysis:
After the description of the use cases above, we were able to conclude the sequence diagrams
for the different functionalities, since that makes a lot of them, we chose to show one diagram
for each sprint, and we chose the login sequence for this one:
36
Figure 15: Login's sequence diagram
To ensure security of the user’s accounts, we used hashing with MD5. And to ensure the
safety of the data requested by any type of user, we used JWT tokens.
37
Section III: Realisation
Since we only worked on the backend part during this sprint, the realization part includes
screenshots of our API’s documentation.
To test our queries, we used the platform Postman, which is a software that focuses on API
testing. It has become very popular for testing Microservices, especially because of its
simplicity and highly specialized features.
The screenshot below represents the registration query made using GraphQL, the query
includes the method’s name in our server’s controller, the method’s parameters and the
chosen returned new user’s parameter (which can be changed since the method returns the
whole created user, but this is one of GraphQL’s benefits, it helps us limit our data easily,
which makes the server’s response faster).
38
Two response codes can be returned after sending this query: 200 for a successful request and
400 for a failure with the failure’s problem shown in the response message, we took the
existence of the given username as an example of a query that would return that code.
39
The screenshots below represent the Login query and it’s two types of responses, in case of
success, a token would be generated and returned with the logged in user information. And in
case of failure, an error message would be returned.
40
Figure 20: Failure case for login query
41
The screenshot below shows how the password is stored in our Django database after being
hashed:
Conclusion:
During this chapter, we have prepared the sprint backlog, which helped us to conclude the
different user stories of this sprint. We also developed the analysis of this sprint by carrying
out and presenting some diagrams such as the use case diagrams and the sequence diagram.
We have highlighted our work by presenting some screenshots of the documentation
produced during this sprint.
42
Chapter VI: Sprint 2
During this chapter, we will present the second sprint which will focus on the implementation
of the public website destinated to people that doesn’t already know our product, it is an
introduction to Medical Voice and a presentation to common questions that the visitor might
have. This public website also has a contacting option via mail that would allow visitors to
contact us for any further information. We will start by presenting the backlog sprint, we will
then move on to its design and analysis and we will end with the sprint review.
43
api method when the send
button is clicked
A2.3: As a A2.3.1: Add login option to
3h
visitor, I want website header
to be redirected A2.3.2: Add the redirection
3h
to the login when the option is clicked
form of the user A2.3.3: Test the redirection
2h
dashboard functionning
A2.4: As a A2.4.1: Add login option to
1h
visitor, I want website header
to be redirected A2.4.2: Add the redirection
1h
to signup form when the option is clicked
of the user A2.4.3 Test the redirection 1h
dashboard functionning
A2.5: As a A2.5.1: Create the question
24h
visitor, I want and answer item
to see the A2.5.2: create the questions
8h
and answers list
answers of
A2.5.3: Create the questions
some questions 48h
page
that I might A2.5.4: Implement the list in
have about the 6h
the questions page
services offered A2.5.5: Add tabulation to
by Medical 6h
the list
The figure below represents the global use case diagram of this sprint:
44
Figure 23: Global use case diagram (Sprint2)
45
1. Description of the use cases:
Since there are so many use cases, we decided to make a description of a very important and
complicated one.
We concluded the textual description of the related use cases, presented in the table below:
Actor visitor
46
2b: The visitor chooses to send the message
as a health institution professional.
2. Functional Analysis:
For this sprint, we chose to demonstrate the ‘contact admins’ scenario in the sequence
diagram below:
47
Figure 25: Contact admins' sequence diagram
As this sprint was about the public website, the screenshots below represent its different
features. As I already mentioned before, we made sure that the website and the platforms
work perfectly on any device by making all the pages responsive.
48
Figure 26: Homepage of the public website (1st fragment big screen)
The screenshot above represents the first section of Medical voice’s public website opened in
a big screen, it contains a small introduction and a demonstrative video of the platform.
To put some lights on the responsiveness, I took a screenshot of the same fragment after
reducing the screen size (the screenshot below). As the output would be looking bad in a
smaller screen if we keep the text and the video next to each other (which is the case in a lot
of pages of this website and both platforms), we changed the disposition of our view’s
elements. We usually tend to use the CSS elements Flex and media query annotations in order
to handle this type of issues. As for the sizes of the different screens, we always define
constants that represent 5 different turning points, and I’m going to get into details during the
next sprints to explain this.
49
Figure 27: Homepage of the public website (1st section medium screen)
Figure 28: Homepage of the public website (3rd section medium screen)
50
The screenshot above represents the third section of the homepage from which the visitor can
be redirected to the contact page after choosing his type of user (simple user, organization,
health professional). Of course, the choice that the visitor makes is saved and automatically
selected in the contact form.
Another important part of the homepage is the last section which contains gifs that show the
utility of Medical Voice. The screenshot below represents this section.
Figure 29: Homepage of the public website (last section big screen)
As we received a lot of similar questions about the platform, we decided to make a page
containing the answers of the most asked questions, I was asked to make this part dynamic as
more questions might be added later, I used tabulation with my dynamic list of questions to
make it more organized for the visitors. The screenshot below represents some questions and
answers that can be found in the ‘preguntas’ page of public website.
51
Figure 30: Preguntas page (medium screen)
The next screenshot is taken from the contact page, where the visitor fills the form with the
correspondent data, then an email containing the filled information will be sent to the
administration thanks to Gmail’s SMPT service.
In case of an error in the form, a message would be shown to highlight that, otherwise a
success message would appear (figure 32).
52
Figure 31: Contact page (big screen)
53
Conclusion:
In this chapter, we have been able to show the different user stories of this second Sprint. We
have developed the analysis of this sprint by presenting some diagrams such as the use case
diagram and sequence diagram. The following chapter will be devoted to the third Sprint
which is dedicated to the implementation of the user dashboard’s backend.
54
Chapter VII: Sprint 3
During this chapter, we’ll present the third sprint which will focus on the implementation of
the user dashboard’s backend (for both patients and caretakers). We will start by presenting
the backlog sprint, we will then move on to some use cases descriptions followed by the
functional analysis, we will pass after that to the realization part.
55
Create the model ‘Calendar’ 4h
Create the model ‘Medicine 4h
Implement the calendar
7h
controller class
Implement the medicine
7h
controller class
Add the Dockerfile and make
necessary changes to make a 12h
successful deploy
Call the calendar-service from
6h
the main-api
Test the queries 24h
Implement the method
As a Patient, I want to add a ‘add_medicine_to calendar’ in 8h
new medication to my the calendar controller
calendar Test the execution of the query
2h
As both sprint 3 and sprint 4 are focused on the same platform visits, we would be having the
same description and functional analysis in both sprints, that’s why I decided to make another
structure just for this part, we will talk about the patient’s visit to the platform during this
sprint’s chapter, and we will get to the caretaker’s visit in the next sprint’s chapter.
56
The figure below represents the global use case diagrams the patient’s visit to the dashboard:
Based on the requirements, we concluded the use case diagram below. This specified use case
represents both the backend and frontend parts of the patient’s visit to the dashboard.
As all the actions needs the patient to be logged in, I found that it is more appropriate to
mention that without adding the ‘include’ relation with the login use case every time.
With that said, all the use cases in the diagram below are including the login use case.
57
Figure 34: Specified use case diagram (Sprint 3)
Since there are so many use cases, we decided to make a description of an important one.
We concluded the textual description of the related use cases, presented in the table below:
58
Use case Check correspondent caretakers list
Actor Patient
Patient Logged in
Pre-condition
2. Functional Analysis:
For this sprint, I chose to demonstrate the ‘Check prescriptions’ scenario in the sequence
diagram below:
59
Figure 35: Check prescriptions' list's sequence diagram
Since we only worked on the backend part during this sprint, the realization part includes
screenshots of our API’s documentation.
60
Just like the first sprint, we used the platform Postman test our queries, and GraphQL as the
query language.
The next two screenshots represent the ‘me’ query which returns the logged in user
information based on the token sent in the header of the query, the query includes the
method’s name in our server’s controller and the chosen fields to grab from the database.
61
Figure 37: Logged-in user information query success
The next two screenshots represent the ‘my_caretakers’ query which returns the caretakers
that are related to a specific user that would have his id sent as a parameter, the query also
includes the method’s name in our server’s controller and the chosen fields to grab from the
database.
62
Figure 39: Successful result for ‘my_caretakers’ query
The last screenshot represents the ‘add_relation’ query which is called after a patient chooses
to add a caretaker (but is also accessible to admins). The query includes the method’s name in
our server’s controller, the ids of the patient and the caretaker, and the chosen fields to appear
in the response (the fullname of both the caretaker and the patient).
63
Figure 40: ‘add_relation’ mutation
Conclusion:
In this chapter, we have been able to show the different user stories of this third Sprint. We
have developed the analysis of this sprint by presenting some diagrams such as the use case
diagram and sequence diagram. The following chapter will be devoted to the fourth Sprint
which is dedicated to the implementation of the user dashboard’s frontend.
64
Chapter VIII: Sprint 4
During this chapter, we’ll present the fourth sprint which will focus on the implementation of
the user dashboard’s frontend for both patients and caretakers. We will start by presenting the
backlog sprint, we will then move on to some use cases descriptions followed by the
functional analysis, we will pass after that to the realization part.
65
component
Add the query
1h
to queries.ts
Run the tests 2h
Add the query
1h
to queries.ts
Call the query
As a Patient, I want to see the list of my
when the
Caretakers 4h
profile page is
loaded
Run the tests 1h
Add the
mutation to 1h
mutations.ts
As a Patient, I want to add a Caretaker Add the button
and the 5h
mutation call
Run the tests 2h
Add the logout
1h
button
As a Patient / caretaker, I want to logout from
Add the logout
my account 1h
method
Test the logout 1h
As a Patient, I want the platform to be translated Integrate ngx-
to my language if it’s available translate 6h
library
Call the
translation
service from
12h
the files that
should be
translated
Add the
popups texts in
English,
12h
French,
Spanish and
German
Add the 14h
method that
would get the
browser
language
thanks to ngx-
translate
library and
generate the
corresponding
texts
66
Run the tests 10h
Implement the
Calendar 24h
component
Add the
necessary
12h
queries to
queries.ts
As a Patient, I want to check my
Call the
prescription’s calendar queries in the
6h
service page
methods
Call the service
methods in the 6h
calendar.ts file
Run the tests 12h
Add the
mutation to 1h
mutations.ts
Add the
changes to the 4h
As a Patient, I want to add a new medication to
html page
my calendar
Implement the
addMedication
7h
method to the
typescript file
Run the tests 2h
Implement the
profile 6h
As a Caretaker, I want to see my personal component
information Add the query
1h
to queries.ts
Run the tests 2h
Implement the
patients 6h
As a Caretaker, I want to see the list of my component
Patients Add the query
1h
to queries.ts
A4: Visit Run the tests 2h
Caretaker’s
Add the query
platform 8h
to queries.ts
Add the
necessary html
4h
As a Caretaker, I want to see my patients’ to create the
prescriptions calendar calendar
Add the
necessary 9h
typescript code
Run the tests 3h
67
Add the search
2h
As a Caretaker, I want to search a specific bar to html
Add the search
Patient from the Patients list
method to the 4h
typescript
Run the tests 1h
Add the
filtering
2h
options to the
As a Caretaker, I want to filter the Patients html code
list by multiple keys Add the
filtering
4h
methods to the
typescript code
Run the tests 1h
Call the
translation
service from
12h
the files that
should be
translated
Add the
popups texts in
English,
12h
French,
As a Caretaker, I want the platform to be Spanish and
German
translated to my language if it’s available
Add the
method that
would get the
browser
language
thanks to ngx- 14h
translate
library and
generate the
corresponding
texts
Run the tests 10h
Add the logout
1h
button
As a Caretaker, I want to logout
Add the logout
1h
method
Test the logout 1h
As a Caretaker, I want to remove a Patient Add the delete
from the Patients list mutation to 1h
mutations.ts
Implement the 8h
delete method
68
in the
typescript file
Run the tests 1h
As I mentioned in the previous sprint, as both sprint 3 and sprint 4 are focused on the same
platform visits, we would have the same description and functional analysis in both sprints,
that’s why I decided to make another structure just for this part, we talked about the patient’s
visit to the platform during the previous sprint’s chapter, and we will get to the caretaker’s
visit during this one.
The figure below represents the global use case diagrams the caretaker’s visit to the
dashboard:
69
Based on the requirements, we concluded the use case diagram below. This specified use case
represents both the backend and frontend parts of the caretaker’s visit to the dashboard.
Like the patient’s visit to the dashboard, as all the actions needs the caretaker to be logged in,
I found that it is more appropriate to mention that without adding the ‘include’ relation with
the login use case every time.
With that said, all the use cases in the diagram below are including the login use case.
70
Since there are so many use cases, we decided to make a description of a very important and
complicated one.
We concluded the textual description of the related use cases, presented in the table below:
Actor Caretaker
Caretaker Logged in
Pre-condition
2. Functional Analysis:
71
For this sprint, I chose to demonstrate the ‘Check correspondent patients list’ scenario in the
sequence diagram below:
72
Section III: Realization
Since this sprint has been about the frontend of the users’ dashboard, this chapter’s
screenshots are taken from the patients and the caretakers’ visits to the platform. As I already
mentioned before, we made sure that everything works perfectly on any device by making all
the pages responsive.
The next screenshot represents the profile page, it is very similar for both a patient or a
caretaker, this one is taken from a patient’s visit.
For the caretaker case, he can see the list of his patients and update it by removing an old
patient.
Patients and caretakers can also change their personal information from this page.
73
The next screenshot represents the calendar page, which is one of the biggest features of the
platform. The patient would find there the calendar of the whole week with reminders
whenever the time is close to take his next medicines. He has also the possibility to add a new
medicine to his calendar, other information is also shown in this page, like the shape of the
medicine, it’s color, and the quantity that he should take every time.
When the patient clicks on a medicine, he would be redirected to a more detailed page where
he can find anything that he needs to know about it.
The screenshot below is taken from the prescriptions page, which has a small description and
a schedule of the medicines that the patient is supposed to take, if the patient clicks on one of
the medicines, he would be redirected to the details page.
As the prescriptions’ list can become pretty long, we added the possibility of a dynamic
search, when the patient enters the initials of the medicine that he wants to learn about, the list
will be updated with all the medicines that start with what he typed.
74
Just like in the calendar page, the patient has the possibility to add a new medicine from this
page too.
If the patient clicks on the options button next to a prescription, he would have the possibility
to delete that medicine or change its calendar.
Conclusion:
In this chapter, we have been able to show the different user stories of this fourth Sprint. We
have developed the analysis of this sprint by presenting some diagrams such as the use case
diagram and sequence diagram. The following chapter will be devoted to the fifth Sprint
which is dedicated to the implementation of the admin dashboard’s backend.
75
Chapter IX: Sprint 5
During this chapter, we’ll present the fifth sprint which will focus on the implementation of
the admin dashboard’s backend. We will start by presenting the backlog sprint, we will then
move on to some use cases descriptions followed by the functional analysis, we will pass after
that to the realization part.
76
Implement
‘get_users_statistics’ method 6h
As both sprint 5 and sprint 6 are focused on the same platform visit, we would be having the
same description and functional analysis in both sprints, so for the use cases part, we will only
77
show those used in the backend part in this sprint, and we will talk about those used in the
frontend in the next sprint.
The figure below represents the global use case diagrams the admin’s visit to his dashboard:
Based on the requirements, we concluded the use case diagram below. This specified use case
represents the backend part of the admin’s visit to his dashboard, and during the next sprint,
I’m going to show the use case of the frontend which will have the same use cases that exist
in this diagram in addition to other functionalities that are uniquely found in the frontend part.
As all the actions needs the caretaker to be logged in, I found that it is more appropriate to
mention that without adding the ‘include’ relation with the login use case every time.
With that said, all the use cases in the diagram below are including the login use case.
78
Figure 48: Specified use case diagram (Sprint 5)
Since there are so many use cases, we decided to make a description of a very important and
complicated one.
As our application is mainly about the platform, all the use cases and diagram sequences
would eventually have a part (at least a little one) that is related to the frontend, the next use
cases description is about the users’ list, in order to have it shown, an interaction should be
done in the frontend part, that’s why it should be mentioned even though this sprint is mainly
about the backend.
79
We concluded the textual description of the related use cases, presented in the table below:
Actor Admin
Admin Logged in
Pre-condition
2. Functional Analysis:
For this sprint, I chose to demonstrate the ‘Add Admin’ scenario in the sequence diagram
below:
80
81
Figure 49: 'Add admin’ sequence diagram
82
Section III: Realization
Since this sprint has been about the backend of the admin’s dashboard, this chapter’s
screenshots are taken from the API testing platform Postman (just like in the other backend
sprints).
The next screenshot represents the query called when the admin wants to change his password
from the platform. The query includes the method’s name in our server’s controller, the old
password, and the new one.
In case the old password is wrong, an error indicating that would appear in the response:
83
Figure 51: Failure case for password reset mutation
The next screenshot represents the query that gets all the users to show them in the admin
platform. The query includes the method’s name in our server’s controller, and the fields that
we want to see in the response, but as I said before, we can always add any other field to the
response as long as it belongs to the same object type (in this case the User type).
For a successful case, the success code ‘200’ would be returned long side with the users’ list:
84
Figure 53: Successful case for users’ query
The next mutation is a very important one in the platform, it allows the admin to send an
email to a person of his choice in order to invite him to become an admin himself.
The first mutation includes the method’s name in our server’s controller, and the email that
will receive the invitation.
85
Figure 54: Admin invite mutation
If the mutation is successful, a code would be generated and sent in the email at the end of the
redirecting link that would get the invited user to our platform in order to finish his
subscription as an admin.
After clicking on that link, the new admin would fill a form with his username, his password,
and his email. The code that was generated before sending the email would be attached to the
86
query and sent as another parameter in order to make sure that only that new admin is able to
get to that phase.
Figure 56: Admin account creation mutation after accepting the invitation
Conclusion:
During this chapter, we have been able to show the different user stories of this fifth Sprint.
We have developed the analysis of this sprint by presenting some diagrams such as the use
case diagram and sequence diagram. The following chapter will be devoted to the last Sprint
which is dedicated to the implementation of the admin dashboard’s frontend.
87
Chapter X: Sprint 6
During this chapter, we’ll present the sixth sprint which will focus on the implementation of
the admin dashboard’s frontend. We will start by presenting the backlog sprint, we will then
move on to some use cases descriptions followed by the functional analysis, we will pass after
that to the realization part.
88
logs’ statistics
part inside the
homepage
component
Add the query
users’ logs 1h
to queries.ts
Create users’
8h
As an Admin, I want to see the list of all the component
users Add the query
4h
to queries.ts
Run the test 3h
Add the search
2h
bar to html
As an Admin, I want to search a specific user from Add the search
the user list method to the 4h
typescript
Run the tests 1h
Add the
filtering
2h
options to the
html code
As an Admin, I want to filter the users list by
Add the
multiple keys
filtering
4h
methods to the
typescript code
Run the tests 1h
Add the delete
icon with html
4h
inside the
foreach loop
As an Admin, I want to delete a user Add the delete
mutation to 1h
mutations.ts
Run the tests 1h
Add the
necessary html 3h
code
As an Admin, I want to change my password Add the
mutation to 2h
mutations.ts
Run the tests 1h
As an Admin, I want to logout from my account Add the logout 1h
button
89
Add the logout
1h
method
Test the logout 1h
Add Logs
6h
As an Admin, I want to the list of all the logs component
Add the query
1h
to queries.ts
Run the tests 1h
Add the search
bar to html 2h
As an Admin, I want to search for a specific
Add the search
user’s logs method to the 4h
typescript
Run the tests
1h
The figure below represents the global use case diagrams the admin’s visit to his dashboard:
Based on the requirements, we concluded the use case diagram below. This specified use case
represents the frontend part of the admin’s visit to his dashboard.
90
As all the actions needs the caretaker to be logged in, I found that it is more appropriate to
mention that without adding the ‘include’ relation with the login use case every time.
With that said, all the use cases in the diagram below are including the login use case.
Since there are so many use cases, we decided to make a description of a very important and
complicated one.
91
“Check a patient’s prescriptions list” use case:
We concluded the textual description of the related use cases, presented in the table below:
Actor Admin
Admin Logged in
Pre-condition
2. Functional Analysis:
For this sprint, I chose to demonstrate the ‘Add Admin’ scenario in the sequence diagram
below:
92
Figure 59: ‘Add admin’ sequence diagram
93
we made sure that everything works perfectly on any device by making all the pages
responsive.
The next three screenshots represent the home page of the admin dashboard, it shows some
information about the users and the products (medications). The admin dashboard is also
responsive like the user dashboard and the public website.
94
Figure 61: Admin dashboard’s homepage (medium screen)
95
Figure 62: Admin dashboard’s homepage (small screen)
The next screenshot represents the users’ page, the admin can filter the users, search for a
specific user or create a new user from that page.
The next screenshot represents a filtered list in the same page, when the admin starts typing a
user’s name, the list dynamically changes.
96
When the admin clicks on a user from that list, he would be redirected to a details page where
he can find all the information about him such as the email, caretakers if he is a patient (or
patients if he is a caretaker), logs etc...
In the users’ page, if the admin clicks on ‘Add user’ button, he would be redirected to a first
form where he has to choose the type of the new user.
97
Figure 66: Add user form
If the admin chooses to add a patient or a caretaker, he would be redirected to a form where
he can fill all of their available information, and the new user would of course be able to
modify it later from his dashboard. The previous screenshot is taken from a patient/caretaker
add.
In the other hand, if the admin chooses to add an admin, he would be redirected to another
form where he has to enter the new admin’s email, and the account won’t be added unless the
new admin confirms. The next screenshot is taken from that form.
98
Figure 67: Successful case for sending an admin invite
In case of a success, an invitation code would be generated and sent to the new admin’s email
inside of a link that would grant him access to a new and last form which allows him to finish
the subscription by adding his other info such as the username and the password.
Conclusion:
During this chapter, we have been able to show the different user stories of this last Sprint.
We have developed the analysis of this sprint by presenting some diagrams such as the use
case diagram and sequence diagram and then presented some screenshot from admin’s
platform. We will move now to the general conclusion.
99
General Conclusion
We have presented in this report all the phases that were necessary for the development of a
backend part and two platforms, starting from a general presentation of the project, to then the
description of our solution, its architecture and the methodology of development followed
throughout this internship.
We then applied the Agile Scrum methodology while respecting its different phases from
planning to deployment to present the work done.
The contribution of this work essentially comes down to the creation of three applications. A
Backend part for the management of users, prescriptions, calendars and logs, a dashboard for
the users (patients and caretakers) made with a huge thought of the user experience, and a
dashboard for the admins to see statistics and manage the platform.
We already had a first version of Medical voices’ platform deployed, but we still think of
adding a lot of new features in the future, such as making the voice interaction part available
also for the users of the platform besides the ones already using Amazon’s Alexa, we will also
add the notifications logic to make our app even more helpful to elders.
This internship was an enriching and beneficial experience both individually and
professionally. It didn’t only help me to improve my technical skills by learning new
technologies and new tools of work but also helped me feel that I’m actually contributing to
the world in my own small way.
100
Bibliography
101
Abstract
This report presents the work developed during the internship at "Relief Applications" (Legal
name = “Oordt cloud technologies”). The goal of this project is to design and implement three
applications: A Backend application that allows the management of modules like
authentication, profile, calendar, prescriptions and logs, a dashboard for the users (patients
and caretakers) so patients can get easier to information about their prescriptions and their
calendar, and another dashboard for the admins to manage users and see some statistics that
would help improve the platform.
Email: contact@reliefapplications.org
102
103