Giter Club home page Giter Club logo

protect-together's Introduction

Protect Together

Project Information πŸš€

GPLv3 license npm version

Fully Scalable Serverless Covid monitoring application built using Firebase πŸ”₯

Documentation: https://github.com/KrisTheCanadian/soen-390/wiki

Development Board: https://github.com/KrisTheCanadian/soen-390/projects/2

Documentation Board: https://github.com/KrisTheCanadian/soen-390/projects/3

Running & Building the project πŸ”¨

  • Add your firebase configuration in src/config/firebase_config.ts
npm install
npm run build
npm run start

Team Members πŸ’ͺ πŸŽ‰


Kimiya Derakhshani

Kristopher Beauchemin

Fadi Albasha

Graeme Killick

Militsa Bogdeva

Martin Senecal

Sami Merhi

Ahmad Hashem

Alexia Sousa

Introduction πŸ“–

During the recent years due to the spread of covid many people have been facing difficulties to find relevant medical resources that can help them to monitor their symptoms or ask for medical help. Furthermore doctors and medical staff have been working endlessly in the pandemic chaos and have been feeling overwhelmed. The purpose of this project is to create a user-friendly web application that can help the general public and the medical staff and reduce their stress even slightly through a smart managed medical system.

Four various users can benefit from this app, first group being the general public as they register to the website they will be asked to fill in a symptoms form that would indicate if they are infected or not if they are they would be assigned to a medical staff. These patients will be obligated to fill in a daily symptoms list and follow the instructions of their doctor to track the progress of the virus. Additionally they can initiate messages with their allocated doctor and be notified when they receive a new update. Second and third group of users would be the medical staff and admins. Admins will assign patients to each doctor and will be able to manage their schedules and patient list. Consequently doctors will be able to view a list of their patients and medical information along with initiating or responding to messages. If required a doctor can suggest a patient to schedule an appointment with them. The final group of users are the third party users who will be able to view a patient’s metadata and their health status.

The purpose of this document is to showcase an overview of different processes that had to take place in order to create this web application, how the development cycles were managed and how each step of the project was implemented from requirements gathering, design and development to working on unit, system and integration testing and QA. The targeted audience of this document would be any member of the public that is interested to know more about this web application and how the project came to be. Our team has worked hard to implement effective document design enhancements that would help with the readability and usability of this document.

Project Description πŸ“

This web application facilitates tracking covid symptoms and helps various users to know if their symptoms are relevant to covid, easily put them in contact with medical personnel and doctors and allow them to access various functionalities through the different user dashboards available. Consequently doctors, admins and third party users have their own special dashboards that are made up of various features and functionality depending on what they need access to. In order to follow scrum and manage the system development process our team was separated into 5 groups with their own specializations and a scrum master that would make sure the project is on track and can meet the deadlines following scrum rules. Each team was allocated to work on one or more of the following: documentation, frontend and user interface, backend and system architecture, testing and QA. Some members participate in more than one group, and everyone participates in weekly stand ups and reports on what they have completed, what they are working on now, and what they will be working on in the upcoming week. Additionally if anyone has encountered a project block the team would suggest various solutions that would help them to resolve the block and progress in what they were working on.

Agile development is a cycle of gathering requirements, design, development, testing, deployment to the production environment from sandbox and review. Agile can help each team to be flexible to requirement changes without negatively affecting the deadlines and the project process. Furthermore the frequent cooperation between the team members causes the team members to be in sync and helps the team to follow up with the product owner, know about requirement changes and improve their satisfaction by delivering a high quality application. In addition to requirement gathering, agile can help to iteratively and continuously improve our development and have adaptive planning through testings and reviews that are done in each cycle.

Application Look πŸ‘€

Login Screen

Login Screen

Register Screen

Register Screen

Patient Dashboard

Dashboard

Medical Staff Dashboard

Admin Dashboard

Third Party Dashboard

Patient Symptoms

Symptoms

Patient Appointments

Appointments

Medical Staff & Patient Chat

Notifications

Diagram πŸ“Š

Patient Use Case Diagram

Patient Use Cases

Medical Use Case Diagram

Medical Use Cases

Admin Use Case Diagram

Admin Use Cases

Firebase Serverless Architecture πŸ”₯

Patient Firebase Serverless Architecture

Patient Firebase

Medical Firebase Serverless Architecture

Medical Firebase

Medical Firebase Serverless Architecture

Admin Firebase

License πŸ“

This repository is available under the GNU GENERAL PUBLIC LICENSE.

protect-together's People

Contributors

ahmadhashems avatar alexialsousa avatar dependabot[bot] avatar fadi-albasha avatar gkillick avatar imgbot[bot] avatar kimdera avatar kristhecanadian avatar martinsenecal avatar militsab avatar samimerhi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

protect-together's Issues

[USER STORY]: As a user, I would like to be able to delete my account.

About this story

Priority: [Low]
Story Points: 3
Risk: [Medium]

Description:
The user will be able to delete his account. This button will be accessible via the Main Settings button (in the nav bar).

Exit Criteria
What should we expect once the task is complete:
-User can see an option to delete his account
-On click: "are you sure?" message is shown
-Account deletion removes the relevant user from the database.

Sub-Tasks/Steps

  • Design the UI
  • Create the request to the backend to send the current user ID and remove all his info from the database.

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #10

[USER STORY]: As an admin, I would like to be able to create another admin account.

About this story

Priority: Low
Story Points: 3
Risk: Low

Description:
Create additional admin accounts for the application. Creating another admin account will be possible directly from the admin dashboard. A menu will appear prompting the user to choose what type of account to create. Then, a form will appear to add information about the new user (all his info: email, etc). From there, a new user will be created to the database, and this email will be added to the admin user's list.

Exit Criteria
-New Admin Account Created in the DB with the right access.

Sub-Tasks/Steps

  • Create a button to create in the admin dashboard.
  • Create UI Form (to fill all missing info)
  • Add the users to the right authenticated list (for permission)
  • Send an Email Invite to the new user to activate his account and create a pswd.
  • Add Form Validation (frontend-side/backend-side)

Linked to Issue: #10

[USER STORY]: As a medical staff (or patient), I would like to closed the file (relationship between medical staff and patient)

About this story

Priority: Low
Story Points: 3
Risk: Low

Description:
Medical staff and patients should be able to close a patient's file once the medical consultation finishes. When the file is closed, it will also close the case on the patients' UI view (and vice-versa).

Exit Criteria
-Once a file is closed, patient's database is modified to remove doctor.
-Once a file is closed, it should not appear in the medical staff list of patients.
-Once a file is closed, it should not appear in the patient info. Process re-start from scratch.

Sub-Tasks/Steps

  • Create UI
  • Check if patient file can be closed (if there's upcoming appointments, cannot close file)
  • Remove Patient from Medical's staff table (for medical staff view).
  • Delete fields from firestore for Patient such as assignedDoctor, doctorName.

Linked to Issue: [#42 ]

[USER STORY]: As an admin, I would like to assign patients when they are not automatically assigned to a medical staff account.

About this story

Priority: Medium
Story Points: 8
Risk: High

Description:
If there is a shortage of medical staff accounts, patients will no longer be automatically assigned to one and admins will be able to hire more help and assign those patients to new accounts.

Exit Criteria
An admin will assign a patient to a new medical staff account if they did not receive one upon account creation.

Sub-Tasks/Steps

  • Design UI of unassigned patients list
  • Admins hire/create more medical staff and assign them to patients
  • Database should be updated with correct assignments
  • Send assignment notification to patient
  • Add Form Validation (frontend-side/backend-side)
  • Add Tests

Linked to Issue: #27

[EPIC FEATURE]: Admin Dashboard

Risk
High

Description
Admins will be able to track and manage staff (admins, medical staff, 3rd party). They will be able to add new users, assign slots for appointments and for patients for each medical staff.

Additional context
Admins will be managing medical staff's schedules and user accounts.

Stories

[EPIC FEATURE]: Patient Dashboard

Risk
High

Describe the solution you'd like
As a patient, I would like to have a dashboard that will group all important information (settings, important info, chat, appointments, self-assessment form).

Stories
Link to the different user stories from this EPIC Feature

[USER STORY]: As a user, I would like to be able to login.

About this story

Priority: [High]
Story Points: 5
Risk: [High]

Description:
The user should be able to login onto his account (with his email/password or OAuth). If it's a new account (medical staff, admins, or 3rd party) -> login will act as an activation. If the user doesn't have an activated account (and is a staff), a message will appear to tell them to contact X in order to get access.

Exit Criteria
What should we expect once the task is complete:
-Users can log in from the login page
-Error Messages are shown for unsuccessful attempts
-On successful login, the user has access to his/her page on the site.
-Local Storage Token
-Accessing pages other than the login/signup page without being logged in is prevented.

Sub-Tasks/Steps

  • Design the Sign-In UI
  • Create a request to the back end sending the input from the user's id and pswd and comparing it with the info from the database.
  • If authentication is correct, create a request to the backend sending the current user's id and returning his account.
  • If authentication is incorrect, request the user to input his info again.
  • Fixed Auth for Permission
  • Password Reset
  • Add Tests

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #10

[USER STORY]: As an admin, I would like to create a medical staff account.

About this story

Priority: [High/Medium/Low]
Story Points: Fibonacci Sequence: 5
Risk: Medium

Description:
Create additional medical staff accounts for application. Creating a medical staff account will be possible directly from the admin dashboard. A menu will appear prompting the user to choose what type of account to create. Then, a form will appear to add information about the new user (all his info: email, etc). From there, a new user will be created to the database, and this email will be added to the medical staff user's list.

Exit Criteria
Admin should be able to add a medical staff to the application.

Sub-Tasks/Steps

  • Create a button to create in the admin dashboard.
  • Create UI Form (to fill all missing info)
  • Add the users to the right authenticated list (for permission)
  • Send an Email Invite to the new user to activate his account and create a pswd.
  • Add Form Validation (frontend-side/backend-side)

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #10

[USER STORY]: As a medical staff, I want to be able to see my list of patients in a table

About this story

Priority: High
Story Points: 13
Risk: Low

Description:
Medical staff should see all their patients on a list where high-priority patients are shown at top of the list. Medical staff should be able to distinguish between visited and unvisited profiles. They should also be able to sort their list of patients based on multiple factors (symptoms, age, covid status, appointment date, etc). When clicking on a patient on the table, the medical staff will be re-directed to the "patient file" where he/she will be able to see all the info and chat with him/her.

Exit Criteria
-All lists of patients appear in a list (Table)
-Patients with higher priority should appear at top of the list.
-After visiting a patient's profile, its entry in the list shows in a different color than those not visited.
-Sorts will work.

Sub-Tasks/Steps

  • Add Tests
  • Show visited patient profile elements in the list in a different color
  • Show a list of all patients where high priority patients appear first
  • Build UI Table
  • Build Logic to get all data.
  • Build Search and Sorts System
  • Redirect each patient to their own "page-status".

Linked to Issue: [#42]

[USER STORY]: As a user I want to receive a notification if another user sends me a message.

About this story

Priority: High
Story Points: Fibonacci Sequence: 5
Risk: Low

Description:
When a new message is sent to a doctor or a patient they should be notified.

The notification settings for a patient or a medical staff will be different.

Exit Criteria
A user should have received a notification indicating that they have received a new message from another user.

Sub-Tasks/Steps

  • Design the notification UI (figma)/Frontend
  • Database should be updated each time a new messenge is sent
  • Add messaging notifications to the notification center interface
  • Testing

Linked to Issue: #19

[DEVOPS]: Setup Project Template

About this issue:

Priority: Medium
Risk: [Medium]

Describe the Task:
Setup the Stack project by installing the libraries, frameworks, database and by preparing the folder structure.

Exit Criteria
Code Repo is ready to start the business logic.

Additional Info

  • Install React.js & Setup FrontEnd Folder
  • Install Test framework & pipelines (CI/CD)
  • Create Firebase
  • Setup Firebase
  • CleanUp Folder Structure
  • Setup Project Style Guidelines

[USER STORY]: As a medical staff, I would like to book/recommend an appointment with a patient

About this story

Priority: Low
Story Points: Fibonacci Sequence: 5
Risk: Medium

Description:
Medical staff should be able to book an appointment with a patient when needed. By clicking on "recommend appointment", the patient will be prompt to choose an appointment based on the time slot. As soon as this is done, the doctor will then be able to view the appointment information in his dashboard and appointments list.

Exit Criteria
-Once the appointment is booked, medical staff should be able to view it on the 'My Appointments' page

Sub-Tasks/Steps

  • Create appointment and notify patient
  • Create UI on Figma
  • Write Code for UI
  • Write Backend Logic
  • Create 'My Appointments' page
  • Show appointment on 'My Appointments'
  • Add Form Validation (frontend-side/backend-side)

Linked to Issue: [#38]

[EPIC FEATURE]: Notifications

Risk
High

Description:
As a user, I would like to receive notifications from the application. These notifications should be through the app or via email depending on the use cases.

Additional context:
Notification can be sent out as a web push notification, or email.

Stories:

[USER STORY]: As a patient, I would like to ask for help

About this story

Priority: High
Story Points: Fibonacci Sequence: 13
Risk: Low

Description:
As a patient, I would like to request some help in regards to my symptoms/current situation. In order to do that, the patient will fill out an "interactive" form that will show answers based on the patient's queries. If these answers are not enough, and/or the situation is too technical -> the patient will be re-directed to a "case" where he/she will be in charge by medical staff. From there, a new "case" will be created and he/she will be able to chat with medical staff.

Exit Criteria
What should we expect once the task is complete:

  • A patient should be able to fill out a medical form indicating what covid symptoms they have. If the interactive form is not enough, then a patient will be assigned to a doctor.

Sub-Tasks/Steps

  • Make a symptoms checklist by consulting with a doctor
  • Make a responsive form (interactive)
  • Add Form Validation (frontend-side/backend-side)
  • If a patient needs support from medical staff, redirect it to the creation of a new "medical case" with the triage.

Linked to Issue: [#31]

[USER STORY]: As a user, I would like to be able to modify my account settings

About this story

Priority: Medium
Story Points: 8
Risk: Low

Description:
The user would be able to edit his own account information. The form will let the user change his medical info and access other settings such as medical conditions, healthcare number, pswd modification, etc. This account setting feature should be visible in the navbar.

Exit Criteria
What should we expect once the task is complete:
-Users will be able to edit their own information.
-Validation of inputs in the form is working well.

Sub-Tasks/Steps

  • Design and code the form in the UI
  • Add option in the nav-bar
  • Create backend logic
  • Add Form Validation (frontend-side/backend-side)

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #10

[USER STORY]: As patient, I would like to book an appointment with a doctor.

About this story

Priority: Medium
Story Points: Fibonacci Sequence: 13
Risk: Low

Description:
A patient should be able to book an appointment and see the doctor's availability. He/She will receive this invitation to book an appointment with the doctor. This prompt will ask him/her to select a timeslot. As soon as this is done, the appointment will be booked in the system and the user will be able to see it in the dashboard.

**Important: Booking Appointments will only be accessible when the doctor gives permission. (in other words: button will only be visible after the medical staff invite the patient to book an appointment)

Exit Criteria
What should we expect once the task is complete:

  • The patient can see his booked appointment
  • The doctor can see the patient's appointment on his schedule
  • After the date, the appointment changes from "upcoming appointment" to "the previous appointment"

Sub-Tasks/Steps

  • Design UI on Figma
  • Create a UI for booking appointments
  • Create request to backend to add appointment to database.
  • Create request to backend to update appointment status to database.
  • Add Form Validation (frontend-side/backend-side)
  • Add Tests

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: [#38]

[USER STORY]: As a patient, I would like to see my upcoming appointments.

About this story

Priority: Low
Story Points: Fibonacci Sequence: 5
Risk: Low

Description:
When a patient has booked an appointment, he can see the date and time on a calendar. (only 1 appointment at a time)

Exit Criteria
What should we expect once the task is complete:

  • Patient should be able to see all booked appointments.
  • Patient should be able to cancel his appointments.
  • Patient should be able to see the date and time for each appointment.
  • Patient should be able to see a calendar with upcoming appointments.

Sub-Tasks/Steps

  • Create UI on Figma
  • Block the patient to book another appointment until the current appointment is done.
  • Display a calendar on User Dashboard
  • Create a request to the backend to retrieve appointment information from the database.
  • Display the time and date of each appointment
  • Button to delete appointment
  • Testing

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: [#31 ]

[USER STORY]: As a medical staff, I would like to be able to view my upcoming appointments.

About this story

Priority: [Medium]
Story Points: Fibonacci Sequence: (5)
Risk: [Medium]

Description:
Medical Staff will be able to view their upcoming appointments in addition to the dashboard for convenience.

Exit Criteria
What should we expect once the task is complete:
-List of Appointments for medical staff in upcoming days (and past appointments)
-Appointments are sorted by time.

Sub-Tasks/Steps

  • Design UI on Figma
  • Create Button on Dashboard (and link to modal)
  • Design Modal (and add data from DB)
  • Button to delete appointment
  • Write Tests

Linked to Issue:

[EPIC FEATURE]: Chatting Platform

Risk
Low

Describe the solution you'd like
Medical staff and patients need a chatting platform to discuss the patient's symptoms and Covid-19 status.

Stories
Link to the different user stories from this EPIC Feature

[USER STORY]: As an admin, I would like to view the list of unassigned patients.

About this story

Priority: High
Story Points: Fibonacci Sequence: 3
Risk: Medium

Description:
If a patient is not assigned to medical staff due to a shortage of available time slots, admins will be able to view them in the list of unassigned patients in another sub-section of the dashboard.

Exit Criteria
An admin should see an updated list of unassigned patients on their dashboard.

Sub-Tasks/Steps

  • Design UI of the unassigned patient list
  • Add patients to the unassigned list once their assignment status changes to UNASSIGNED.

Linked to Issue: #27

[USER STORY]: As a patient (taken in charge by a medical staff), I would like to update my symptoms and Covid-19 status

About this story

Priority: Medium
Story Points: 13
Risk: Medium

Description:
A patient needs to be able to update his Covid-19 status and his symptom to be able to have accurate daily information on his profile for the medical staff when he is taken in charge.

Exit Criteria
What should we expect once the task is complete:

  • Patients should be able to see their current status and symptoms and modify it.
  • Patients should be able to send fill out a new medical form.
  • Medical Staff should be able to see the new data (while also still being able to see the old data).

Sub-Tasks/Steps

  • Display patients symptoms and Add a button to Update
  • Create a request to the backend to retrieve update the information in the database.
  • Display updated information for medical staff
  • Add Form Validation (frontend-side/backend-side)
  • Add Tests

Linked to Issue: [#31]

[USER STORY]: As patient I'd like to be notified for any updates on my "case".

About this story

Priority: Medium
Story Points: Fibonacci Sequence: 3
Risk: Low

Description:
As a patient, I want to be able to get notified if there are any updates on my "medical case" such as getting a new doctor, getting a new appointment, etc.

I also want to let my doctor know that he has a new patient!

I also want to make sure that the patient can only book an appointment if I give him the permission (bug)

Exit Criteria
The patient/doctor has received a notification.

Acceptance Test

  • Notification Center on the application functions properly
  • The title and description of the notification are correct

Sub-Tasks/Steps

  • Design the notification UI/Frontend
  • Create a notification center interface
  • Testing
  • Receive Email Notification for Important Notifications about my doctor.

Linked to Issue: #19

[USER STORY]: As an admin, I want to be able to see my list of staff in a table

About this story

Priority: High
Story Points: 13
Risk: Medium

Description:
Admins should be able to view their staff list with some ways to search and sort results by different types of queries (type of staff, etc). They will also have an option to create new accounts (the logic is already implemented in another EPIC), however, you can prepare the UI Forms.

Exit Criteria
What should we expect once the task is complete:
-A list of staff appears in a list with different ways to sort the data.

Sub-Tasks/Steps

  • Create UI Table (with material UI)
  • Create Search Bar
  • Create Data Validation
  • Add Data in the Table
  • Add Tests

Additional context
This story is mostly focused on the table UI itself. Later on, we will build on top of it by adding new features (booking, notifications, timeslots, etc).

Linked to Issue: #27

[EPIC FEATURE]: App Landing Page

Risk
Low

Describe the solution you'd like
Landing Page (using scrolly-telling) to explain our application to "customers". In our case, customers would be clinics and government medical entities.

Additional context
Scrolly-Telling (everything on one page), and to create a new "customer account", they need to contact us.

Stories
[To Do]

[EPIC FEATURE]: Medical Dashboard (for Staff)

Risk
High

Description
As a medical staff, I would like to monitor, communicate with, book appointments, and close patients' files.

Additional context
Patients are assigned to medical staff by the system.

Stories

[USER STORY]: As an admin, I would like to set and adjust the availabilities of specific medical staff accounts.

About this story

Priority: High
Story Points: Fibonacci Sequence: 8
Risk: High

Description:
Admins will create a specific availability schedule for each medical staff account upon creation and adjust it whenever needed. They will be able to modify the appointment slots for each medical staff.

Exit Criteria

  • Medical staff will have their unique schedule assigned to them upon account creation.
  • Medical staff's schedules will be updated with any changes when needed.

Sub-Tasks/Steps

  • Design UI of admin's POV of medical staff's schedule (for appointment slots)
  • Add logic in the backend (for the data)
  • Add Tests

Linked to Issue: #27

[USER STORY]: As a patient, I would like to get more information about Covid-19 and additional resources.

About this story

Priority: Low
Story Points: 5
Risk: Low

Description:
On the patients' dashboard, they will be able to see news and information concerning Covid-19 and additional resources like health tips and recommendations.

Exit Criteria
What should we expect once the task is complete:

  • A section on the dashboard where Covid-19 news is displayed
  • A section on the dashboard that displays additional resources

Sub-Tasks/Steps

  • Link to Covid-19 API
  • Research health tips and recomendations
  • Create a news section on patient dashboard
  • Create a additional statistics section on patient dashboard

Linked to Issue: [#31]

[EPIC FEATURE]: Appointment Booking System

Risk
Low

Describe the solution you'd like
After discussing with the patient, Doctor can decide to send an appointment request to the patient. The patient will then be able to book appointments with his doctor.

Stories
Link to the different user stories from this EPIC Feature

[USER STORY]: As a medical patient, I would like to be able to register my account.

About this story

Priority: High
Story Points: Fibonacci Sequence: 8
Risk: Low

Description:
Register a medical patient to the application.

Fields:

  • first and last name
  • email
  • password
  • phone number (??)
  • date of birth (??)
  • sex (??)
  • weight (optional)
  • height (optional)
  • health card number
  • medical conditions (optional)
  • additional notes (optional)

Exit Criteria
Users should be able to register for the application, and an account will be created on their behalf with the right permissions. He/She will then be re-directed to the dashboard.

Acceptance Test

  • Link to the signup page is provided on the login page
  • Users can fill out the form on the signup page
  • oAuth option for sign up
  • Form verifies the appropriate password
  • Form verifies unique email
  • On submit or OAuth sign up, if all verifications are successful, a new user is created

Sub-Tasks/Steps

  • Design the 'add new medical patient' UI
  • Create medical patient record in firebase
  • Option to sign up with oAuth
  • Create a profile.
  • Validate form
  • Create medical patient interface
  • Testing

Linked to Issue: #10

[USER STORY]: As a medical staff, I want to view a patient's medical info

About this story

Priority: High
Story Points: 8
Risk: Medium

Description:
Medical staff should be able to access a patient's profile and view their symptoms and medical history (including all info from the previous forms/status updates). Medical staff should be able to raise a flag to set a profile as a high priority. They should also be able to see the patient info from the medical connector (i.e: RAMQ) and all the info from the "interactive form".
**Appointment Booking and Chat will be implemented later (they have their own epics), but will be available from this "page".

Exit Criteria
-Medical history of a patient should appear on their profile.
-After raising a flag on a patient's profile, the profile becomes a high priority.
-Once a medical staff visit a patient's profile, the profile should be labeled as visited in the database.

Sub-Tasks/Steps

  • Show patient's personal information
  • Show timeline of patients medical history updates
  • Redirect each patient to their own "page-status".
  • Allow flagging a patient as a high priority
  • Label a profile as visited once visited
  • Build UI (with a "spot" for chat and booking... will be built later on)
  • Write Tests
  • Show a list of all patients where high priority patients appear first

Linked to Issue: [#42]

[USER STORY]: As a professional (admin, medical staff, 3rd party), I would like to be able to activate my account.

About this story

Priority: [Medium]
Story Points: Fibonacci Sequence: 8
Risk: Low

Description:
Register professional to the application. After clicking on the activation link via email, they should be redirected to the login form asking them to create a pswd and activate the account. Note that the activation will be done automatically (by clicking on the link and adding a pswd, the user will be added automatically with the right permissions into the right environment).

If the user doesn't have an activated account (and is a staff) and is trying to log in, a message will appear to tell them to contact X in order to get access.

Exit Criteria
Professionals should be able to register for the application

Sub-Tasks/Steps

  • Design the activate professional account UI
  • Activate professional account in firebase
  • Create a pswd.
  • Option to sign up with oAuth
  • Form Validation
  • Testing for the Full Account Creation/Activation Process

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: [#10 ]

[EPIC FEATURE]: 3rd-Party Dashboard

Risk
Medium

Describe the solution you'd like
The 3rd-Party Dashboard will be reserved for a "special" type of user (3rd-party). This dashboard will contain some key information about Covid. It's important to note that the "patient" data will be anonymous. Instead, this dashboard will mostly be showing data/graphics related to a high-level view of covid information (cases, tests, general symptoms, statistics on who are sick).

A 3rd-party can be a government official, a journalist, etc. Since this patient info is all confidential, there's no need to worry. They won't be able to access anything else.

Additional context
image

Stories/Tasks

  • View Graphs with different types of data (recovery, covid tests, number of patients asking for help, etc)
  • Design Layout/UI
  • Design Tests
  • Add connection to data with firebase.

[USER STORY]: As a user, I would like to upload files in the chat.

About this story

Priority: [Low]
Story Points: Fibonacci Sequence: 8
Risk: Low

Description:
Users should be able to upload files (with a max upload size) directly into the chat in order for the other user to see it.

Exit Criteria
What should we expect once the task is complete:
-File Uploading Form working with data validation (size, etc)
-File is Uploaded to the Cloud
-File is visible in the Chat and can be downloaded by the other user.

Sub-Tasks/Steps

  • Add Form Validation (frontend-side/backend-side)
  • Connection with Firebase Storage
  • Link files to the chat as a message.
  • Create UI (Figma/React)
  • Add Tests

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #35

[USER STORY]: As a patient I want my doctor to be notified if my status changes.

About this story

Priority: High
Story Points: Fibonacci Sequence: 3
Risk: Low

Description:
A notification can be sent to a patient's doctor when a patient re-updates their status.

Exit Criteria
A doctor should receive a notification from their patient's status update.
After the patient submits the status changes, the patient will view a popup indicating "your doctor has been notified about your status update".

Acceptance Test

  • Notification Center on the application functions properly
  • The title and description of the notification are correct

Sub-Tasks/Steps

  • Design the notification
  • Database should be updated depending on the notififcation's check box value
  • Create a notification center interface
  • Testing

Linked to Issue: #19

[USER STORY]: As a medical staff, I want to get notified when a patient book an appointment with me.

About this story

Priority: [Low]
Story Points: Fibonacci Sequence: (3)
Risk: Low

Description:
As a medical staff, I want to get notified when I have a new appointment. I also want to make sure that the patient can only book an appointment if I give him the permission (bug)

Exit Criteria
What should we expect once the task is complete:
-UI is being updated (with a new countdown)
-Medical Staff is getting notified.
-Patient can only book when the doctor give him/her the permission.

Sub-Tasks/Steps

  • Create UI on Figma
  • Create Backend Logic
  • Connect Backend to UI
  • Fix Bug for Button Book Appointment (only enable when the doctor give permission)
  • Add Tests

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #19

[USER STORY]: As a patient, I want to chat with medical staff.

About this story

Priority: Medium
Story Points: Fibonacci Sequence: 13
Risk: Medium

Description:
If the resources on the patient dashboard do not answer the patient's questions or concerns, they may request to chat with medical staff. This connection will be already implemented in a previous epic. Here, we are asking to create that "chat" component between a patient and a doctor. The chat should be real-time (no need to refresh to view new messages).

Exit Criteria
What should we expect once the task is complete:

  • A chat system where a patient can communicate with a medical staff.
  • The patients/medical staff should be notified when they get a new message.

Sub-Tasks/Steps

  • Design UI chat module
  • Design Page for Patient (similar to Doctor's View)
  • Create Chat System Logic (DB)
  • Create Real-Time Message System
  • Add Message Validation (frontend/backend)
  • Add Tests

Linked to Issue: [#35 ]

[USER STORY]: As an admin, I would like to be able to create another 3rd party account

About this story

Priority: High
Story Points: Fibonacci Sequence: 5
Risk: High

Description:
Create additional 3rd party accounts for the application. Creating a 3rd party account will be possible directly from the admin dashboard. A menu will appear prompting the user to choose what type of account to create. Then, a form will appear to add information about the new user (all his info: email, etc). From there, a new user will be created to the database, and this email will be added to the 3rd-party user's list.

Exit Criteria
What should we expect once the task is complete:
-admin should be able to add 3rd party users to the application
-email should be sent to added 3rd party users prompting the user to choose his own password and activate his account.

Sub-Tasks/Steps

  • Create a button to create in the admin dashboard.
  • Create UI Form (to fill all missing info)
  • Add the users to the right authenticated list (for permission)
  • Add Form Validation (frontend-side/backend-side)
  • Send an Email Invite to the new user to activate his account and create a pswd.

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #10

[USER STORY]: As a patient, I would like to add my Covid-19 test results to my profile.

About this story

Priority: Low
Story Points: 5
Risk: Low

Description:
When a patient receives PCR or rapid antigen test results, he can add it to his profile to add more information for medical staff and administrators.

Exit Criteria
What should we expect once the task is complete:

  • Display button to update Covid-19 Status
  • Patient can update his status and show proof of test.
  • Patient is displayed as a confirmed Covid-19 case.
  • After 10 days, the patient is no longer displayed as a confirmed Covid-19 case.
  • Medical Staff should be able to see this data in the patient data info.

Sub-Tasks/Steps

  • Design UI.
  • Create request to backend to add Covid-19 test result of user into database.
  • Add this data in the medical staff dashboard (for the patient info)
  • Create Test

Linked to Issue: [#31]

[USER STORY]: As an admin, I want to be notified if there's un-assigned patients.

About this story

Priority: [Medium]
Story Points: Fibonacci Sequence: (3)
Risk: [High]

Description:
In the admin dashboard, admins will need to be notified if there are more patients than the number of available slots (based on the nb of current patients and doctors). This notification will allow them to modify settings, or add more medical staff.

There's no need to send a pop-up notification to the admin for it. A simple red dot on the UnAssigned Patients Tab is enough.

Exit Criteria
What should we expect once the task is complete:
-Notification Working when there is an un-assigned patient (will be in another color in the table and also notification counter will be updated)

Sub-Tasks/Steps

  • Create UI on Figma
  • Build Backend Logic
  • Connect notification to UI
  • Write Tests

Additional context
Add any other context or screenshots about the feature request here.

Linked to Issue: #19

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.