Project Milestone 2 - SENG-350-2024-fall/Team-14 GitHub Wiki

Milestone Summary

During this milestone, we documented and Mr. ED, and implemented a frontend login screen supported by a backend database.

Useful Terms

Virtual Triage The application which allows nurses to assign priority the registered patients and place them in a priority queue, to be notified when the emergency department is ready to serve them.
VTTicket The ticket created when a patient enters the triaging service. Includes relevant personal information and affliction so that nurses can triage them accurately.
VTQueue The queue in which VTTickets are stored, and nurses pull out of to assign priority and as a consequence triage.
MedicalTicket The object a VTTicket turns into after it's been triaged and assigned a priority by the nurse.
MedicalQueue The queue in which MedicalTickets are stored, and doctors pull out of to treat.

Class Diagram

image

  • A patient includes their personal info. They can register, login, logout, and enter the triage. They create VTTickets, and can be associated with MedicalTickets
  • An Admin manages doctor and nurse accounts. They login and logout, and edit medical accounts.
  • A Doctor account is created by an Admin. They can address MedicalTickets.
  • VTTickets are created when a Patient enters the triage, and belong to VTQueue.
  • EmergencyDepartment represents a hospital, and has it's own MTQueue.
  • MedicalTickets are triaged VTTickets, have a priorty and belong to an MTQueue. The priority of each ticket is updated every 30 mins.

Collaboration Diagram

image The patient logs into their account, which is validated against the database. The form is then switched to a register form, where the patient enters their health info, which is then validated. This creates a VTTicket, which is added to the VTQueue. That VTTicket is now triaged by a nurse, who adds a priority, which gives it a position in the MTQueue. Every 30 mins, the priority of each ticket in the queue is incremented and resorted, until a doctor treats the tickets.

Sequence Diagrams

Nurse Adds Priority to VTTicket

image A nurse accesses the VTQueue, and is served the first ticket in the queue. The nurse then assesses the ticket, assigns it a priority, which turns it into a MedicalTicket, which gets added and sorted into the MedicalQueue. Every 30 mins, the priority of each MedicalTicket in the queue is updated to reflect the passing of time of each injury.

Patient Enters the Virtual Triage

image

The patient enters their info into a virtual triage form. If their affliction is serious and time sensitive, they are given a notification to get off the application and call 911 immediately. If not, they are added to VTQueue, waiting for a nurse to triage them. If there is a duplicate entry, the entry is rejected.

Patient appointment

image When a doctor picks up a ticket, the patient is notified that the department is ready for them.

Patient register

image The patient enters their personal info. If any of it is invalid, then they are served an error. If not, this info is added to the database. If there is a duplicate person, then the registration is rejected. If not, the patient is logged in and directed to the landing page.

User Login

image All users—patients, doctors, nurses, and administrators—can log in to their Mr. ED account using their email (as the username) and password. After entering the credentials, the login request is sent to the authentication server, which then retrieves the user information from the database. If the credentials are valid, the user is successfully logged in and the landing page is displayed. If the credentials are invalid, an error message is shown to the user.

Activity Diagram

image The activity diagram displays the process of a patient opening the Mr. ED webpage with the intention of seeing an emergency doctor. The patient is first prompted with the question: "Do you have an account?". If the patient does, they are directed to login. Otherwise, they must register an account before proceeding. Next, the patient will be given a virtual triage form to fill. After completing the form, the nurse will review the patient's symptoms and either notify them that they do not need to visit the ER or give their triage a priority, turning it into a medical ticket. This ticket is then inserted into the medical queue in front of all the medical tickets with lower priority. The doctor will then take the medical ticket off the queue when it reaches the front of the line.

State Machine Diagrams

Virtual Triage Ticket (VTTicket)

image A Virtual Triage Ticket (VTTicket) is created when a patient submits a virtual triage form with their symptoms, preferred hospital (based on wait time), and required personal information. Once the VTTicket is created, it is analyzed for key high-risk symptoms. If a high-risk symptom has been identified, the patient is notified to call 911 and the VTTicket is marked as "Processed" and deleted. Otherwise, the VTTicket is added to the end of the Virtual Triage Queue. The VTTicket is marked as "Under Review" when a nurse selects the ticket, reviews the information, and recommends a course of action to the patient. After the course of action is determined, the VTTicket is removed from the VTQueue, marked as "Processed", and deleted. Alternatively, the patient can cancel their VTTicket while waiting in the queue. This removes the ticket from the queue and deletes it.

Virtual Triage Queue (VTQueue)

image The Virtual Triage Queue is created empty. When a VTTicket is added to the queue, the queue is "Active". A VTTicket is added to the end of the queue. If for any reason the queue is reset, it returns to the empty state.

Medical Ticket Queue (MTQueue)

image MTQueue is created empty. When a Medical Ticket is added, it's added in it's proper position, so the queue is sorted. When any more tickets are added, or a doctor treats a ticket, the queue is still sorted. When ticket priorities are updated, the queue is unsorted and must be sorted again, transitioning to unsorted, and then quickly back. If for any reason the queue is reset, it returns to the empty state.

Medical Ticket

image A Medical Ticket is created when a nurse reviews a Virtual Triage Ticket and determines that the patient should visit the ER. Once the Medical Ticket is created, it is added to the Medical Ticket Queue based its priority. The Medical Ticket is marked as "Under Review" when the doctor selects the ticket, reviews the information, and treats the patient. After the patient is treated, the Medical Ticket is removed from the Medial Ticket Queue and deleted.

Account

Blank diagram An account is created when a user registers with the system. Once created, the account can change between logged in and logged out states. In a logged in state, the user can edit account details while remaining in the logged in state. While, the logged out state does not permit any modifications or actions.

Data Flow Diagrams

Level 0

DFD Level 0 The Level 0 Data Flow Diagram shows how data is to flow within the general processes in system, these being Accounts, Virtual Triage, Medical Queue, and Appointments. Each actor provides specific information/data to each of the processes as specified in the diagram.

Level 1

DFD Level 1 The Level 1 Data Flow Diagram shows how data flows within the processes in the system on a lower level. This diagram primarily expands on the Accounts and Virtual Triage processes, providing a more detailed explanation of the differences in information/data sent between actors and processes.

Entity Relationship Diagram

image

The diagram includes several key entities such as Patient, Doctor, Nurse, Admin, Medical Ticket (MTTicket), VTTicket, MTQueue, VTQueue, and Emergency Department. The Patient entity contains attributes like healthNumber, dateOfBirth, and fullName, and is connected to the Medical Ticket entity, indicating that a patient fills out a medical ticket. The Doctor and Nurse entities are linked to the Medical Ticket and VT Ticket entities, representing their roles in treating patients and managing tickets. The Admin entity creates accounts for the system. The queues, VTQueue and MTQueue, manage ticket placements for virtual and medical tickets, with priority levels indicated for medical tickets. The relationships show the flow of tickets between patients, queues, and emergency departments, highlighting the interaction between healthcare professionals and the system.

Component Diagram

Component Diagram The Virtual Triage subsystem encompasses various components as shown in the diagram. These components interact with each other in a sequence like manner, where one cannot exist without one or more of the previous component.

Deployment Diagram

Deployment Diagram The deployment of the application will involve two main components, the host machine and the users machine. The users machine will communicate with a host machine for all information stored involving the application. The users machine's main responsibility will be displaying the application interface on the GUI.

Implementation

Contributions

It is important to recognize the each group member attended every team meeting during this Milestone. The following outlines the specific contributions made by each team member:

  • Ashley: Completed the User Login Sequence Diagram, as well as the Virtual Triage Ticket, Virtual Triage Queue, and Medical Ticket State Machines. Also assisted with the Level 0 Data Flow Diagram, Class Diagram, and reviewing other diagrams. Worked on the back-end code implementation of the login page. In addition, wrote half of the Incremental Construction wiki page.
  • Isaac: Completed the Nurse Adds Priority to VTTicket, Patient Enters the Virtual Triage, and Patient appointment sequence diagrams, as well as the Collaboration diagram, and the MTQueue state machine diagram. Also assisted with the Level 0 Data Flow Diagram, Class Diagram, and reviewing other diagrams. Worked on the front-end code implementation of the login page.
  • Liam: Created the Activity diagram, ERD diagram, and assisted with the level 0 data flow diagram and Class diagram. Reviewed and made changes to many of the other diagrams. Worked with Isaac on the front end of the webpage. Wrote half of the Incremental Construction wiki page.
  • Erich: Completed the Level 0 and Level 1 Data Flow Diagrams, Component Diagram, Deployment Diagram, and the Account State Machine Diagram. Assisted with the Class Diagram and reviewing diagrams. Worked on the back-end code implementation of the login page.
⚠️ **GitHub.com Fallback** ⚠️