D1. Specifications

1. User Stories

Patrick Provider: A mental health provider

Alex Admin: An employee at the Department of Psychiatry who can evaluate the providers OR an external evaluation partner

Sarah Superadmin: An administrator at the Department of Psychiatry

For Patrick Provider:

  1. As Patrick Provider, I would like to sign up as a provider after being invited by a superadmin, and log into my account to access the provider portal, so that I can submit and access my data.
  2. As Patrick Provider, I would like to fill in and submit surveys, so that I can provide data.
  3. As Patrick Provider, I would like to be able to access all the past surveys I submitted, so that I can keep a record of them.
  4. As Patrick Provider, I would like to be able to make changes to the past surveys I submitted, so that I can correct mistakes on my forms.
  5. As Patrick Provider, I would like to only see my past data to ensure no data is shared with other providers, so that client privacy is protected.

For Alex Admin:

  1. As Alex Admin, I would like to sign up as an admin after being invited by a superadmin, and log into my account to access the admin portal, so that I can access all providers’ data.
  2. As Alex Admin, I would like to be able to make changes to any survey, so that I can correct mistakes on the forms.
  3. As Alex Admin, I would like to see all the data provided by all the providers, so that I can do calculation and evaluations on the data.

For Sarah Superadmin:

  1. As Sarah Superadmin, I would like to sign up as a superadmin after being invited by an existing superadmin, and log into my account to access the superadmin portal, so that I can invite new users and access all providers’ data.
  2. As Sarah Superadmin, I would like to be able to invite new users to sign up as the role specified by me, so that the new user can join with the correct role.
  3. As Sarah Superadmin, I would like to be able to make changes to any survey, so that I can correct mistakes on the forms.
  4. As Sarah Superadmin, I would like to see all the data provided by all the providers, so that I can do calculation and evaluations on the data.

2. Requirements

Functional Requirements

Definite

  1. Finish the user authorization feature that ensures users can access the correct portal according to their role.
  2. Give superadmins and admins access to a dashboard with visibility of all providers data. Give providers access only to their own data.
  3. Enable superamins to invite new users by email and specify the new user’s role.
  4. Enable new users to sign up with the role determined by a superadmin after receiving the email invitation by superadmin.

Perhaps

  1. Make the website more aesthetically pleasing
  2. Increase the size and utility of the dedicated test database to support software testing

Improbable

  1. Add formulas that can format and process providers data

Non-Functional Requirements (FURPS+)

Definite

  1. The user interface and display of provider data must be easy to navigate and understand
  2. Documentation of authorization based on user roles should be provided
  3. Documentation of the data stream should be provided to aid in protecting user data
  4. The system should be accessible to all users
  5. It should be easy to maintain and update the website

Perhaps

  1. Maintain data integrity and privacy from other users
  2. Implement a design that will allow for scalability for a large network of users

Improbable

  1. Implement encryption or other measures that will ensure the confidentiality and protection of user data.

Platform Selection

Frontend
Angular and TypeScript

Alternative:

  • React: Last semester’s team considered this alternative so we decided to explore it as well. Our team preferred to keep working in Angular rather than switching to React because we had more experience in Angular and the frontend is already written in it.
  • JavaScript: We preferred to stick with Typescript due to its static typing.

Backend
MongoDB Atlas, Express, NodeJS and TypeScript

Alternatives:

  • JavaScript: The backend was written in JavaScript previously but we decided to change it to TypeScript as it fixed some bugs that JavaScript introduced.
  • Firestore/Firebase: The previous team investigated this alternative so we did as well to see if there might be a new update or advantage in switching. We found that there would not be a significant advantage in switching so we will stick to MongoDB Atlas as our database host.