D1. Specifications

User Stories

Ursula User – A general website user with no admin privileges

Alan Admin – An administrative user, in this case, a Department of Psychiatry employee.

For Ursula User:

  1. As Ursula User, I want to be able to log in to the provider portal using my user credentials to access the behavioral health evaluation tools.
  2. As Ursula User, I want the system to automatically format and validate the data I input into forms, ensuring it aligns with the fidelity scale criteria.
  3. As Ursula User, I want to view historical data and comparisons of my team’s performance over time, allowing me to track progress and identify areas for improvement.

For Alan Admin:

  1. As Alan Admin, I want to be able to log in to the admin portal using my UNC-Chapel Hill credentials to access administrative features.
  2. As Alan Admin, I want a dashboard that provides a comprehensive overview of all teams’ information, including their fidelity scale ratings and evaluation history.
  3. As Alan Admin, I want to be able to manage user accounts, including adding, modifying, or deactivating accounts for behavioral health providers and other administrators.
  4. As Alan Admin, I want a feature to easily configure and update the fidelity scale criteria and calculations, ensuring the system remains aligned with the Department of Psychiatry’s needs.

Requirements Page

The requirements for this project are derived from user stories, use cases, and specific client needs. These requirements define the acceptability of the program and will guide the development efforts throughout the semester. They are categorized into functional, non-functional, and interface requirements.

Functional Requirements

Definite

  1. Code a user verification feature that maps users to the appropriate view (provider vs evaluator) and allows login
  2. Administrators must have access to an admin portal with full visibility.
  3. Provide a user (provider) with the capability to input forms and access their own submitted information
  4. Implement a feature for administrators to view all teams’ information.

Perhaps

  1. Formulas must be applied to format and process the entered data.
  2. Create a dedicated test database to support software testing and quality assurance

Improbable (No requirements identified as improbable at this time.)

Non-Functional Requirements (FURPS+)

Definite

  1. The user interface must be intuitive and easy to navigate.
  2. The system should be easy to maintain and update.
  3. Documentation should be provided for troubleshooting and system maintenance.
  4. The system should be accessible to all users.

Perhaps

  1. Maintain data integrity and privacy.
  2. The system should be designed to scale easily to accommodate a growing number of users and data.

Improbable

  1. The system should implement robust security measures, including data encryption, to protect user data and maintain confidentiality.

Platform Selection

Note: Our project was inherited from the last two semesters, so the platform were already pretty much selected. However, we still considered some alternatives.

Frontend – Angular and TypeScript

Alternatives considered:

  • React. Our team has significantly more experience using React, and in general, we prefer the syntax of React, compared to Angular. However, the process of rewriting the logical frontend code was too much work to consider switching frameworks.
  • JavaScript. While this was discussed, the team prefers to stick with the static typing of TypeScript, over the dynamic typing system used in JavaScript.

Backend – Express, NodeJS and JavaScript

Alternatives considered:

  • BunJS (over NodeJS). While Bun is a much faster toolkit for running JS, we preferred to stick with Node due to the annoyance of switching over and the longer track record.
  • Python. Using Python for the backend was also discussed due to our team’s vast experience with Python backends. However, the cost of switching was, once again, too high.

Database – MongoDB Atlas

Alternatives considered:

  • Firestore/Firebase. Firebase would provide easy authentication services and a higher free tier. However, since MongoDB was already implemented, we are choosing MongoDB Atlas for our hosted database service. Atlas provides comparable services to firebase.