Skip to content

The main objective of this software is to streamline and facilitate the process of booking a dental appointment. We aim to improve the user experience for Dentists, Patients, and Admins by allowing them to book appointments seamlessly and view their appointments clearly.

Notifications You must be signed in to change notification settings

EthanGoski/ClinicalManagementSystem-Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UofR Campus Dentist Management System

Problem Definition

The University of Regina Campus Dentist Clinic is dedicated to providing high-quality dental care to students, faculty, and staff. However, the clinic faces challenges in managing patient records, appointment scheduling, billing, and inventory management. These challenges result in increased administrative workload, longer wait times for patients, and potential errors in record-keeping. Our task is to solve this efficiently by building a software application using the Java Programming Language.

Design Requirements

Functions

The key functions that we envision for the software include the following:

  • Appointment Scheduling
  • Patient Records for Dentists
  • Patient Records for Patients
  • User Management for Admin
  • Patient and Dentist Appointment Reminders
  • Patient and Dentist Account Creator

Verbs: Schedule, Manage, Remind, Collect, and Update.

Objectives

The main objective of this software is to streamline and facilitate the process of booking a dental appointment. We aim to improve the user experience for Dentists, Patients, and Admins by allowing them to book appointments seamlessly and view their appointments clearly.

Adjectives: Efficient, Secure, Reliable, User Friendly, Accessible, Modern, and Adaptable.

Design Constraints

  • Economic factors: This project is to be done within the scope of the course, limiting the budget and resources available. This may restrict some of our ability to design software that is efficient, effective, and aesthetically pleasing.

  • Regulatory compliance (Security and Access): The project must be secure and only accessible by authorized personnel. The database must be protected from unauthorized access, and data must be accessible only to appointed admins.

  • Reliability: The software must be reliable and capable of supporting multiple users (patients and dentists) accessing it simultaneously.

  • Ethics: Ensuring the privacy of users' data is paramount. The software must allow patients to update their personal information (e.g., phone number, address) while ensuring the accuracy and transparency of dental records. Patients and dentists must know who has access to their data and what data is accessible.

Project Management

Gantt Chart

new drawio-2

Task Start Date End Date Duration Status
Project Planning Jun 10 Jun 12 3 days Completed
MVP 1: Managing Patients Jun 13 Jun 20 8 days Completed
MVP 2: Scheduling Appts Jun 21 Jun 30 10 days In Progress
MVP 3: Managing Prescrip Jul 1 Jul 10 10 days Pending
Integration & Testing Jul 11 Jul 20 10 days Pending
Final Review & Adjustments Jul 21 Jul 25 5 days Pending

Solution Implementation

MVP Descriptions

MVP Accounts for Testing Conclusion
1. Managing Patients Adding, Removing, Updating, Viewing, Searching Patients Unit Works well and allows for basic patient management functionality. More features could improve usability.
2. Scheduling Appointments Adding, Removing, Updating, Viewing, Handling Conflicts Unit, Integration Handles scheduling well but could benefit from better conflict resolution and reminders.
3. Managing Prescriptions Adding, Removing, Updating, Viewing Prescriptions Unit, Integration, System Effective for prescription management but could be enhanced with prescription validation and alerts.

Explanation:

MVP 1: Managing Patients

Accounts for: Basic CRUD (Create, Read, Update, Delete) operations on patient records. Testing: Unit tests focus on individual functionalities like adding, removing, and updating patient information. Conclusion: The system effectively manages patient records but could benefit from additional features for enhanced usability.

MVP 2: Scheduling Appointments

Accounts for: Scheduling-related functionalities including adding, removing, updating appointments, and handling conflicts. Testing: Both unit and integration tests ensure that individual functionalities and their interactions are working correctly. Conclusion: The appointment scheduling system works well but could be improved with better conflict resolution strategies and reminders for appointments.

MVP 3: Managing Prescriptions

Accounts for: Managing prescription-related tasks including adding, removing, updating, and viewing prescriptions.

Testing: Comprehensive tests including unit, integration, and system tests to cover all aspects of prescription management. Conclusion: The system is effective in managing prescriptions but could be enhanced with features like prescription validation and alert systems for better patient safety. This table should provide a clear and concise overview of the MVPs, their functionalities, testing methods, and conclusions. If you need further adjustments or additional details, feel free to ask!

Class Diagram

CDentist drawio-4

Testing

Unit Testing

Unit testing was conducted on all three MVPs, focusing on critical functions that are essential to the system's operation. This includes adding and managing patients, scheduling appointments, and managing prescriptions.

Control Flow Graphs

MVP 1: Managing Patients Control Flow Graph

Patients

Prime Paths for Managing Patients Control Flow Graph

  1. Path 1: 1 → 2 → 4

    • Start → Enter patient name, ID, and contact info → Patient Exists? (Yes) → Update patient info → Save patient info to the database → End
  2. Path 2: 1 → 3 → 4

    • Start → Enter patient name, ID, and contact info → Patient Exists? (No) → Create new patient → Save patient info to the database → End

MVP 2: Scheduling Appointments Control Flow Graph

Appointment

Prime Paths for Scheduling Appointments Control Flow Graph

  1. Path 1: 1 → 2 → 3 → 4

    • Start → Enter appointment ID, date, time, patient ID, and doctor username → Conflict Exists? (Yes) → Resolve appointment conflict → Save appointment to the database → Send appointment reminder to patient and doctor → End
  2. Path 2: 1 → 3 → 4

    • Start → Enter appointment ID, date, time, patient ID, and doctor username → Conflict Exists? (No) → Save appointment to the database → Send appointment reminder to patient and doctor → End

MVP 3: Managing Prescriptions Control Flow Graph

Prescriptions

Prime Paths for Managing Prescriptions Control Flow Graph

  1. Path 1: 1 → 2 → 4 → 5

    • Start → Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username → Prescription Exists? (Yes) → Update existing prescription → Save prescription info to the database → Send prescription details to the patient → End
  2. Path 2: 1 → 3 → 4 → 5

    • Start → Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username → Prescription Exists? (No) → Create new prescription → Save prescription info to the database → Send prescription details to the patient → End

Prime Paths

Prime paths are a set of paths that cover all possible scenarios in the control flow graphs for each MVP. These paths ensure comprehensive testing of all functionalities. A Summary of Prime Paths in Numbers are as follows:

Managing Patients:

  1. Path 1: 1 → 2 → 4
  2. Path 2: 1 → 3 → 4

Scheduling Appointments:

  1. Path 1: 1 → 2 → 3 → 4
  2. Path 2: 1 → 3 → 4

Managing Prescriptions:

  1. Path 1: 1 → 2 → 4 → 5
  2. Path 2: 1 → 3 → 4 → 5

Test Paths and Test Cases

Test cases were derived from the prime paths to ensure that all critical paths in the control flow graphs are tested. This includes both positive and negative test cases to cover all edge cases and potential issues.

Test Cases Table

MVP Test Case Path Description Steps Test Values Expected Result
Managing Patients Update Existing Patient Info 1 → 2 → 4 Update an existing patient's information 1. Enter patient name, ID, and contact info (existing patient)
2. Check if the patient exists
3. Update patient info
4. Save patient info to the database
Patient Name: John Doe
Patient ID: P001
Contact Info: 555-1234
New Contact Info: 555-5678
The patient's info is successfully updated and saved in the database.
Managing Patients Create New Patient 1 → 3 → 4 Create a new patient 1. Enter patient name, ID, and contact info (new patient)
2. Check if the patient exists
3. Create new patient
4. Save patient info to the database
Patient Name: Jane Smith
Patient ID: P002
Contact Info: 555-0000
The new patient's info is successfully created and saved in the database.
Scheduling Appointments Resolve Appointment Conflict 1 → 2 → 3 → 4 Resolve a conflict when scheduling an appointment 1. Enter appointment ID, date, time, patient ID, and doctor username
2. Check if a conflict exists
3. Resolve the conflict
4. Save appointment to the database
5. Send appointment reminder to patient and doctor
Appointment ID: A001
Date: 2024-07-10
Time: 10:00 AM
Patient ID: P001
Doctor Username: doc1
The appointment conflict is resolved, and the appointment is saved and reminders are sent.
Scheduling Appointments Save Appointment without Conflict 1 → 3 → 4 Save an appointment without any conflicts 1. Enter appointment ID, date, time, patient ID, and doctor username
2. Check if a conflict exists
3. Save appointment to the database
4. Send appointment reminder to patient and doctor
Appointment ID: A002
Date: 2024-07-11
Time: 11:00 AM
Patient ID: P002
Doctor Username: doc2
The appointment is saved and reminders are sent without any conflicts.
Managing Prescriptions Update Existing Prescription 1 → 2 → 4 → 5 Update an existing prescription 1. Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username
2. Check if the prescription exists
3. Update existing prescription
4. Save prescription info to the database
5. Send prescription details to the patient
Prescription ID: RX001
Patient ID: P001
Medication: Ibuprofen
Dosage: 200mg
Instructions: Take twice daily
Doctor Username: doc1
New Dosage: 300mg
The existing prescription is updated, saved in the database, and details are sent to the patient.
Managing Prescriptions Create New Prescription 1 → 3 → 4 → 5 Create a new prescription 1. Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username
2. Check if the prescription exists
3. Create new prescription
4. Save prescription info to the database
5. Send prescription details to the patient
Prescription ID: RX002
Patient ID: P002
Medication: Paracetamol
Dosage: 500mg
Instructions: Take thrice daily
Doctor Username: doc2
The new prescription is created, saved in the database, and details are sent to the patient.

Integration Testing

Def-Use Graphs

Managing Patients Def-Use Graph

graph TD
    A[Initialize Patient Details] --> B[Enter patient name, ID, and contact info]
    B --> C{Patient Exists?}
    C -- Yes --> D[Update patient info]
    C -- No --> E[Create new patient]
    D --> F[Save patient info to the database]
    E --> F[Save patient info to the database]
Loading

Scheduling Appointments Def-Use Graph

graph TD
    A[Initialize Appointment Details] --> B[Enter appointment ID, date, time, patient ID, and doctor username]
    B --> C{Conflict Exists?}
    C -- Yes --> D[Resolve appointment conflict]
    C -- No --> E[Save appointment to the database]
    D --> E[Save appointment to the database]
    E --> F[Send appointment reminder to patient and doctor]
Loading

Managing Prescriptions Def-Use Graph

graph TD
    A[Initialize Prescription Details] --> B[Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username]
    B --> C{Prescription Exists?}
    C -- Yes --> D[Update existing prescription]
    C -- No --> E[Create new prescription]
    D --> F[Save prescription info to the database]
    E --> F[Save prescription info to the database]
    F --> G[Send prescription details to the patient]
Loading

DU Paths and Test Cases

DU Paths for Managing Patients

DU Path 1: Initialize Patient Details -> Enter patient name, ID, and contact info -> Patient Exists? -> Update patient info -> Save patient info to the database

DU Path 2: Initialize Patient Details -> Enter patient name, ID, and contact info -> Patient Exists? -> Create new patient -> Save patient info to the database

Test Cases for Managing Patients

Test Case Path Description Test Values Expected Result
Update Existing Patient Info Initialize -> Enter -> Exists? -> Update -> Save Update an existing patient's information Patient Name: John Doe, Patient ID: P001, Contact Info: 555-1234, New Contact Info: 555-5678 The patient's info is successfully updated and saved in the database.
Create New Patient Initialize -> Enter -> Exists? -> Create -> Save Create a new patient Patient Name: Jane Smith, Patient ID: P002, Contact Info: 555-0000 The new patient's info is successfully created and saved in the database.

DU Paths for Scheduling Appointments

DU Path 1: Initialize Appointment Details -> Enter appointment ID, date, time, patient ID, and doctor username -> Conflict Exists? -> Resolve appointment conflict -> Save appointment to the database -> Send appointment reminder to patient and doctor

DU Path 2: Initialize Appointment Details -> Enter appointment ID, date, time, patient ID, and doctor username -> Conflict Exists? -> Save appointment to the database -> Send appointment reminder to patient and doctor

Test Cases for Scheduling Appointments

Test Case Path Description Test Values Expected Result
Resolve Appointment Conflict Initialize -> Enter -> Conflict Exists? -> Resolve -> Save -> Send Resolve a conflict when scheduling an appointment Appointment ID: A001, Date: 2024-07-10, Time: 10:00 AM, Patient ID: P001, Doctor Username: doc1 The appointment conflict is resolved, and the appointment is saved and reminders are sent.
Save Appointment without Conflict Initialize -> Enter -> Conflict Exists? -> Save -> Send Save an appointment without any conflicts Appointment ID: A002, Date: 2024-07-11, Time: 11:00 AM, Patient ID: P002, Doctor Username: doc2 The appointment is saved and reminders are sent without any conflicts.

DU Paths for Managing Prescriptions

DU Path 1: Initialize Prescription Details -> Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username -> Prescription Exists? -> Update existing prescription -> Save prescription info to the database -> Send prescription details to the patient

DU Path 2: Initialize Prescription Details -> Enter prescription ID, patient ID, medication, dosage, instructions, and doctor username -> Prescription Exists? -> Create new prescription -> Save prescription info to the database -> Send prescription details to the patient

Test Cases for Managing Prescriptions

Test Case Path Description Test Values Expected Result
Update Existing Prescription Initialize -> Enter -> Exists? -> Update -> Save -> Send Update an existing prescription Prescription ID: RX001, Patient ID: P001, Medication: Ibuprofen, Dosage: 200mg, Instructions: Take twice daily, Doctor Username: doc1, New Dosage: 300mg The existing prescription is updated, saved in the database, and details are sent to the patient.
Create New Prescription Initialize -> Enter -> Exists? -> Create -> Save -> Send Create a new prescription Prescription ID: RX002, Patient ID: P002, Medication: Paracetamol, Dosage: 500mg, Instructions: Take thrice daily, Doctor Username: doc2 The new prescription is created, saved in the database, and details are sent to the patient.

System Testing

System Testing was done on the entire Dental Clinic Management System. To accomplish this, we extracted a Finite State Machine and used node coverage, a form of graph coverage, to test it. We did not use logic coverage since we did not have hardcoded predicates to guard the transition between states. If we did have predicates dictating the transition in our code, we would have used logic coverage.

Finite State Machine

stateDiagram
    [*] --> Initialize
    Initialize --> EnterPatientDetails: Enter patient details
    EnterPatientDetails --> CheckPatientExists: Check if patient exists
    CheckPatientExists --> UpdatePatientInfo: Update patient info if exists
    CheckPatientExists --> CreateNewPatient: Create new patient if not exists
    UpdatePatientInfo --> SavePatientInfo: Save updated patient info
    CreateNewPatient --> SavePatientInfo: Save new patient info
    SavePatientInfo --> [*]
    
    Initialize --> EnterAppointmentDetails: Enter appointment details
    EnterAppointmentDetails --> CheckConflict: Check for conflicts
    CheckConflict --> ResolveConflict: Resolve conflict if exists
    CheckConflict --> SaveAppointment: Save appointment if no conflict
    ResolveConflict --> SaveAppointment: Save resolved appointment
    SaveAppointment --> SendReminders: Send appointment reminders
    SendReminders --> [*]
    
    Initialize --> EnterPrescriptionDetails: Enter prescription details
    EnterPrescriptionDetails --> CheckPrescriptionExists: Check if prescription exists
    CheckPrescriptionExists --> UpdatePrescription: Update prescription if exists
    CheckPrescriptionExists --> CreateNewPrescription: Create new prescription if not exists
    UpdatePrescription --> SavePrescription: Save updated prescription
    CreateNewPrescription --> SavePrescription: Save new prescription
    SavePrescription --> SendPrescriptionDetails: Send prescription details
    SendPrescriptionDetails --> [*]
Loading

Future Work

Visual Representations

  • Dashboards: Develop comprehensive dashboards to visualize key metrics and data, such as:
    • Patient statistics
    • Appointment schedules
    • Prescription details

Enhanced Appointment Scheduling

  • Rescheduling: Implement features that allow patients and staff to reschedule appointments easily.
  • Cancellation: Provide functionality for canceling appointments with automated notifications to both patients and staff.

Comprehensive Clinic Management

  • Billing: Integrate billing functionalities to handle patient invoices, payments, and insurance claims.
  • Inventory Management: Develop a module to manage dental supplies, track inventory levels, and generate purchase orders.
  • Patient Feedback: Implement a system for collecting and analyzing patient feedback to improve service quality.

Additional Features

  • Notification System: Enhance the system with email and SMS notifications for appointment reminders, prescription pickups, and more.
  • Reporting: Create detailed reports for clinic management to analyze performance, patient trends, and operational efficiency.
  • Security Enhancements: Ensure data security and privacy with robust authentication, encryption, and access control measures.

As a team, We believe that by implementing these features, the Dental Clinic Management System will become more robust, user-friendly, and capable of meeting the comprehensive needs of the clinic.

About

The main objective of this software is to streamline and facilitate the process of booking a dental appointment. We aim to improve the user experience for Dentists, Patients, and Admins by allowing them to book appointments seamlessly and view their appointments clearly.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages