High Level Design - gcivil-nyu-org/INT2-Monday-Spring2024-Team-1 GitHub Wiki

High Level Design

To User

User Registration Workflow

sequenceDiagram
actor User
User->>Client: Enters Details
Client-->>Client: Validate
User->> Client: Submit credentials
Client ->> Server: Submit Details
Server->>Database: User Present?
Database->>Server: Yes/No?
alt Yes
Server->>Client: User already present
Client-->>Client: Error
Client ->> User: Enter different credentials
else Not present
Server->>Database: New account created
Database->>Server: Account Created
Server->>Client: Account Created
Client->>User: Account Created
end

Log Health Records and Send Verification Request

sequenceDiagram
actor User
User->>Client Side (to User): Log health records
Client Side (to User)->>Server: Format matches?
activate Server
Server-->>Client Side (to User): Yes/No
deactivate Server
Server->>Database: Store health records data
User->>Client Side (to User): Send verification request
Client Side (to User)->>Server: Submit request
activate Server
Server-->>Client Side (to User): Yes/No
deactivate Server
Server->>Database: Track request

View Health History

sequenceDiagram
actor User
User->>+Health Score Page: Open Health Score Page
Health Score Page->>+Server Side: Send Request
Server Side->>+Database: Query User Health Records
Database-->>-Server Side: Retrieve Database Listings
Server Side-->>-Health Score Page: Return Request
Health Score Page-->>-User: Display the Health History
opt Filtering
    User->>+Health Score Page: Input Filtering Criteria
    Health Score Page->>+Server Side: Send Request
    Server Side->>+Database: Query Filtered User Health Records
    alt criteria met
        Database-->>Server Side: Retrieve Filtered Database Listings
        Server Side-->>Health Score Page: Return Request
        Health Score Page-->>User: Display Filtered Health History
    else criteria not met
        Database-->>-Server Side: No Database Retreival
        Server Side-->>-Health Score Page: Return Empty Request
        Health Score Page-->>-User: No Results Displayed
    end
end

Create New Posts, Edit or Delete Posts in the Community

sequenceDiagram
    actor User

    User ->>+ Front-end: Create a New Post
    Front-end ->>+ Server:  Submit New Post Request
    Server ->>+ Database: Store New Post
    Database -->>- Server: "Post Stored Successfully"
    Server -->>- Front-end: Return Post Status
    Front-end -->>- User: Display the New Post

    User ->>+ Front-end: Submit Edited Content or Request for Deletion
    Front-end ->>+ Server:  Send Requests
    Server ->>+ Database: Update the status of the Post
    Database -->>- Server: Confirm Updates
    Server -->>- Front-end: Return Status of Updates
    Front-end -->>- User: Hide or Display the Edited Post

Make comments and reply to the comments of a post

sequenceDiagram
    actor Poster
    actor Commenter
    Commenter ->>+ Front-end: Send comment request
    Front-end ->>+ Server: Request to add a comment
    Server ->>+ Database: Store comment
    Database -->>- Server: Confirm comment storage
    Server -->>- Front-end: Return success message
    Front-end -->> Commenter: Display comment

    Front-end -->>- Poster: Notify of new comment
    Poster ->>+ Front-end: Submit reply content
    Front-end ->>+ Server: Request to add a reply.
    Server ->>+ Database: Store reply.
    Database -->>- Server: Confirm reply storage
    Server -->>- Front-end: Return success message
    Front-end -->>- Poster: Display reply

To Hospital Admin

Hospital Admin hospital addition workflow

sequenceDiagram
actor HospitalAdmin   
   HospitalAdmin->>Client: Enter Credentials
   Client-->>Client: Validation
   Client->>Server: Authenticate
   Server->>Database: Validate
   Database->>Server: Admin logged in
   Server->>Client: Admin Logged in
   Client->>HospitalAdmin: Logged in


   HospitalAdmin->>Client: Enter new hospital Details
   Client-->>Client: Validate
   HospitalAdmin->>Client: Submit details
   Client->>Server: Details sent
   Server->>Database: Details added with pending status
   Database->>Server: Sent for Approval
   Server->>Client: Sent for Approval
   Client->>HospitalAdmin: Pending Approval

Log Health Records and Route Verification Requests to Healthcare Workers

sequenceDiagram
actor Hospital Admin
participant C as Client Side (to Hospital Admin)
rect rgb(191, 223, 255)
note right of C: Whenever request list is changed
Server->>Database: Query verification request list
activate Database
Database->>Server: Retrieve verification request list
deactivate Database
Server->>C: Display verification requests
end
Hospital Admin->>C: View verification requests

Hospital Admin->>C: Log health records
C->>Server: Health records format check
activate Server
Server-->>C: Yes/No
deactivate Server
Server->>Database: Store health records data
Hospital Admin->>C: Send verification request
C->>Server: Submit request
activate Server
Server-->>C: Yes/No
deactivate Server
Server->>Database: Track request

rect rgb(191, 223, 255)
note right of C: Whenever healthcare worker list is changed
Server->>Database: Query healthcare worker list
activate Database
Database->>Server: Retrieve healthcare worker list
deactivate Database
Server->>C: Display healthcare worker info
end
Hospital Admin->>C: Assign verification requests to corresponding healthcare worker
C->>Server: Submit request
activate Server
Server-->>C: Yes/No
deactivate Server
Server->>Database: Track assignment data

To Healthcare Worker

Handle Verification Requests from Users

sequenceDiagram
actor Healthcare Worker
participant C as Client Side (to Healthcare Worker)

rect rgb(191, 223, 255)
note right of C: Whenever assigned verification request list is changed
Server->>Database: Query assigned verification requests
activate Database
Database->>Server: Retrieve assigned verification requests
deactivate Database
Server->>C: Display assigned verification requests
end
Healthcare Worker->>C: View assigned verification requests
Healthcare Worker->>C: Approve/Reject verfication request
C->>Server: Submit request
activate Server
Server-->>C: Yes/No
deactivate Server
Server->>Database: Update health records with approved/rejected status

View Health History

sequenceDiagram
actor Healthcare Worker
Healthcare Worker->>+Health Score Page: Open Health Score Page
Healthcare Worker->>+Health Score Page: Request Access to Patient Data
Health Score Page->>+Server Side: Send Request
Server Side->>+User: Pass Along Request for Access
User-->>-Server Side: Approval Granted
Server Side->>+Database: Query User Health Records
Database-->>-Server Side: Retrieve Database Listings
Server Side-->>-Health Score Page: Return Request
Health Score Page-->>-Healthcare Worker: Display the Health History
opt Filtering
    Healthcare Worker->>+Health Score Page: Input Filtering Criteria
    Health Score Page->>+Server Side: Send Request
    Server Side->>+Database: Query Filtered User Health Records
    alt criteria met
        Database-->>Server Side: Retrieve Filtered Database Listings
        Server Side-->>Health Score Page: Return Request
        Health Score Page-->>Healthcare Worker: Display Filtered Health History
    else criteria not met
        Database-->>-Server Side: No Database Retreival
        Server Side-->>-Health Score Page: Return Empty Request
        Health Score Page-->>-Healthcare Worker: No Results Displayed
    end
end

To Health Score Admin

Health Score Admin Hospital Decision workflow

sequenceDiagram
actor Health Score Admin
   Health Score Admin->>AdminClient: Enter Credentials
   AdminClient-->>AdminClient: Validation
   AdminClient->>Server: Authenticate
   Server->>Database: Validate
   Database->>Server: Admin logged in
   Server->>AdminClient: Admin Logged in
   AdminClient->>Health Score Admin: Logged in
  
   Database->>Server: New Hospital Request
   Server->>AdminClient: New Hospital Verification
   AdminClient->>Health Score Admin: View Request
  
   alt Health Score Admin Approves
       Health Score Admin->>AdminClient: Hospital Approved
   else Health Score Admin Rejects
       Health Score Admin->>AdminClient: Hospital Rejected
   end
   AdminClient->>Server: Hospital decision
   Server->>Database: Decision Stored

Manage Hospital Networks and Hospital Admin Accounts

sequenceDiagram
Actor Health Score Admin
Health Score Admin ->> Client (Health Score Admin Portal): Edit Hospital Details
activate Client (Health Score Admin Portal)
Client (Health Score Admin Portal) ->> Server: Request Edit Hospital Details
activate Server
Server ->> Database: Update Hospital Details
activate Database
Database -->> Server: Update Result
Server -->> Client (Health Score Admin Portal): Update Result
deactivate Server
Client (Health Score Admin Portal) -->> Health Score Admin: Update Result
deactivate Client (Health Score Admin Portal)

Health Score Admin ->> Client (Health Score Admin Portal): Add New Hospital
activate Client (Health Score Admin Portal)
Client (Health Score Admin Portal) ->> Server: Request Add New Hospital
activate Server
Server ->> Database: Add New Hospital
activate Database
Database -->> Server: Add Hospital Result
Server -->> Client (Health Score Admin Portal): Add Hospital Result
deactivate Server
Client (Health Score Admin Portal) -->> Health Score Admin: Add Hospital Result
deactivate Client (Health Score Admin Portal)

Health Score Admin ->> Client (Health Score Admin Portal): Assign Admin to Hospital
activate Client (Health Score Admin Portal)
Client (Health Score Admin Portal) ->> Server: Request Assign Admin
activate Server
Server ->> Database: Update Hospital Admin
activate Database
Database -->> Server: Update Result
Server -->> Client (Health Score Admin Portal): Update Result
deactivate Server
Client (Health Score Admin Portal) -->> Health Score Admin: Update Result
deactivate Client (Health Score Admin Portal)

Health Score Admin ->> Client (Health Score Admin Portal): Remove Hospital
activate Client (Health Score Admin Portal)
Client (Health Score Admin Portal) ->> Server: Request Remove Hospital
activate Server
Server ->> Database: Delete Hospital
activate Database
Database -->> Server: Delete Result
Server -->> Client (Health Score Admin Portal): Delete Result
deactivate Server
Client (Health Score Admin Portal) -->> Health Score Admin: Delete Result
deactivate Client (Health Score Admin Portal)