This project is a Spring Boot-based Emergency Room Management System that uses a priority queue to manage patient check-ins based on urgency levels. The front end is designed with HTML, CSS, and JavaScript, while the back end is powered by Java and Spring Boot, utilizing JPA for database interactions.
The system allows users to:
- Check in patients with details such as name, date of birth, medical condition, and urgency level.
- Attend to patients based on the urgency of their condition.
- View a log of all attended patients.
- Priority Queue: Patients are attended to based on urgency, ensuring that the most critical cases are handled first.
- REST API: Provides endpoints for patient check-in, attendance, and viewing the patient log.
- Spring Boot Integration: Facilitates a robust back end with RESTful services.
- Responsive Front-End: Designed using HTML, CSS, and JavaScript for an interactive and user-friendly experience.
- Database Integration: Uses JPA with an in-memory H2 database (or configurable to MySQL) for storing patient information.
- Java (Spring Boot)
- Spring Data JPA
- HTML5, CSS3, JavaScript
- Thymeleaf (for template rendering, if needed)
- PriorityQueue (Java Collection Framework)
- H2 Database (in-memory, or configurable to MySQL/PostgreSQL)
POST /api/checkin
: Check in a new patient.GET /api/attend
: Attend the next patient (highest priority).GET /api/log
: View the log of all attended patients.
This is the main class that launches the Spring Boot application. The @SpringBootApplication
annotation marks it as the entry point for the Spring framework. When you run this file, it starts the embedded server (Tomcat) and initializes the application context. It enables Spring Boot’s auto-configuration and component scanning. By default, it looks for components in the same package and sub-packages.
This file defines the Patient
class, which serves as a model representing the patient data in the system. It includes fields such as id
, firstName
, lastName
, dateOfBirth
, medicalCondition
, urgency
, and timeAttended
. The class provides getter and setter methods, and it uses the @Entity
annotation to map the class to a table in a database. This model is critical as it represents the core data entity used across the system.
This is a repository interface for the Patient
entity. It extends JpaRepository
to provide basic CRUD (Create, Read, Update, Delete) operations and query methods for the patient data. Spring Data JPA automatically implements this interface, making it easier to interact with the database without writing manual queries.
This is the controller class that handles HTTP requests from the front end. It uses @RestController
to define RESTful API endpoints that interact with the PatientService
. The class provides mappings for various routes such as checking in a patient (POST /api/checkin
), attending a patient (GET /api/attend
), and viewing the patient log (GET /api/log
). This class plays a crucial role in the interaction between the front-end client and the back-end logic.
This service class contains the business logic for the emergency room system. It defines methods such as checkInPatient
, attendPatient
, and getPatientLog
, which are used by the controller to process user requests. The service interacts with the PatientRepository
to perform database operations. By keeping the logic here, the code maintains a clean separation between the controller and the core business logic.
This class defines the logic for comparing two patients based on their urgency levels. It implements Comparator<Patient>
and is used by the priority queue to sort patients, ensuring that those with higher urgency are attended to first. This is a key part of the algorithm that drives the patient attendance order in the system.