# User Stories

## Admin User Stories

---

**Title:**
_As an admin, I want to be able to login, so that I can manage the platform securely_

**Acceptance Criteria:**
1. I can access the login portal where an username/password is requested
2. After entering the correct username/password and clicking a button I am logged in
3. After entering the incorrect username/password an error message is displayed

**Priority:** High

**Story Points:** 3

**Notes:**
- The error message should not reveal if the user exist
- The error message should not reveal what information was incorrect

---

**Title:**
_As an admin, I want to be able to log out, so that nobody can use my credentials._

**Acceptance Criteria:**
1. A logout button should exist which I can use to log out
2. When the button is clicked my session is terminated
3. After logout I am redirected back to the login page

**Priority:** Medium

**Story Points:** 2

**Notes:**
- Ensure that the session is terminated in the back-end

---

**Title:**
_As an admin, I want to be able to add a doctor to the portal, so that the doctor can us the profile._

**Acceptance Criteria:**
1. There is a method of adding doctors to the portal
2. I should be able to add the doctors information
3. When the doctor is created a welcome email should be sent to the doctors email address

**Priority:** Medium

**Story Points:** 5

**Notes:**
- Ensure no duplicate doctors can be added
- An email is required

---

**Title:**
_As an admin, I want to be able to remove a doctor, so that it does not clutter the user interface._

**Acceptance Criteria:**
1. Provide a Delete button on the doctors profile page
2. When the button is pressed a confirmation dialog is shown
3. When confirmed the doctor is removed from the system

**Priority:** Low

**Story Points:** 3

**Notes:**
- The Delete button should only be accessible for admins
- All data related to the doctor is also removed

---

**Title:**
_As an admin, I want to track user statistics, so that I can better anticipate the users needs in future development._

**Acceptance Criteria:**
1. Provide a SQL Stored Procedure to provide a report of appointments / month / doctor
2. Track usage statistics in the back-end and front-end

**Priority:** Low

**Story Points:** 5

**Notes:**
- No notes.

## Patient User Stories

---

**Title:**
_As a patient, I want to view a list of available doctors without an account, so that I can explore options before registering._

**Acceptance Criteria:**
1. Provide a we page where all doctors are listed
2. The web page should be accessible without logging in

**Priority:** Medium

**Story Points:** 3

**Notes:**
- No additional notes.

---

**Title:**
_As a patient, I want to register, so that I can book an appointment._

**Acceptance Criteria:**
1. Provide a button that takes the patient to the registration page
2. The registration page should not require authentication
3. The registration page allows the user to enter all his information
4. When the registration page is submitted the user is directed to the login page
5. Send a welcome email to user

**Priority:** High

**Story Points:** 5

**Notes:**
- Ensure that username is unique, and display an error message if it is not
- Ensure that the password conforms to our password standard

---

**Title:**
_As an patient, I want to be able to login, so that I can book and manage appointments securely_

**Acceptance Criteria:**
1. I can access the login portal where an username/password is requested
2. After entering the correct username/password and clicking a button I am logged in
3. After entering the incorrect username/password an error message is displayed

**Priority:** High

**Story Points:** 3

**Notes:**
- The error message should not reveal if the user exist
- The error message should not reveal what information was incorrect

---

**Title:**
_As a patient, I want to be able to log out, so that nobody can use my credentials._

**Acceptance Criteria:**
1. A logout button should exist which I can use to log out
2. When the button is clicked my session is terminated
3. After logout I am redirected back to the login page

**Priority:** Medium

**Story Points:** 2

**Notes:**
- Ensure that the session is terminated in the back-end

---

**Title:**
_As a patient, I want to be able to book a hour long appointment, so that I can consult with a doctor about my issue._

**Acceptance Criteria:**
1. Provide a button to book an appointment
2. Display the available times the patient can select or allow the patient to select a time and duration himself

**Priority:** Medium

**Story Points:**  3

**Notes:**
- Ensure no double bookings for a doctor
- Ensure the bookings are limited to an hour
- Ensure the bookings are not made on weekends nor outside of working hours

---

**Title:**
_As a patient, I want to view my appointments, so that I can prepare accordingly._

**Acceptance Criteria:**
1. Provide a page where all appointments for a patient is displayed
2. The page should only be accessible when logged in

**Priority:** Low

**Story Points:** 3

**Notes:**
- No additional notes.

## Doctor User Stories

---

**Title:**
_As a doctor, I want to be able to login, so that I can manage the platform securely_

**Acceptance Criteria:**
1. I can access the login portal where an username/password is requested
2. After entering the correct username/password and clicking a button I am logged in
3. After entering the incorrect username/password an error message is displayed

**Priority:** High

**Story Points:** 3

**Notes:**
- The error message should not reveal if the user exist
- The error message should not reveal what information was incorrect

---

**Title:**
_As a doctor, I want to be able to log out, so that nobody can use my credentials._

**Acceptance Criteria:**
1. A logout button should exist which I can use to log out
2. When the button is clicked my session is terminated
3. After logout I am redirected back to the login page

**Priority:** Medium

**Story Points:** 2

**Notes:**
- Ensure that the session is terminated in the back-end

---

**Title:**
_As a doctor, I want to view my appointment calendar, so that I can stay organized and provide better service to my patients._

**Acceptance Criteria:**
1. Provide a webpage with a calendar that displays all appointments
2. The page should only be accessible when logged in as a doctor
3. The page should allow me to see which patient is scheduled at what time

**Priority:** Medium

**Story Points:** 3

**Notes:**
- No additional info.

---

**Title:**
_As a doctor, I want to be able to mark myself as unavailable, so that patients cannot book appointments at those times._

**Acceptance Criteria:**
1. Provide a way for me to mark myself unavailable in the booking calendar
2. Patients should not be able to book times on the marked times

**Priority:** Medium

**Story Points:** 3

**Notes:**
- Weekends and outside of working hours should be automatically marked as unavailable

---

**Title:**
_As a doctor, I want to be able to provide specialization and contact information on my profile , so that my patients can better be prepared._

**Acceptance Criteria:**
1. Provide a way for me to provide my extra information
2. When a patient views my profile the information should be listed there

**Priority:** Low

**Story Points:** 2

**Notes:**
-  Telephone numbers should not be visible without logging in first

---

**Title:**
_As a doctor, I want to view patient details, so that I can be better prepared._

**Acceptance Criteria:**
1. Provide a description of the patient when I select him/her in the calendar

**Priority:** High

**Story Points:** 2

**Notes:**
- No additional info.