This project is a backend solution for a Hospital Management System developed with Spring Boot. It provides RESTful APIs to manage patients, departments, admissions, discharges, and clinical records. The system follows the repository pattern and is built using a layered architecture (Controller → Service → Repository) with DTOs and entities.
- Project Overview
- Architecture
- Service Layers
- Business Specific APIs
- Unit Tests
- UML Diagrams
- Tech Stack
- How to Run
This project is a backend solution for a Hospital Management System developed with Spring Boot. It provides RESTful APIs to manage patients, departments, admissions, discharges, and clinical records. The system follows the repository pattern and is built using a layered architecture (Controller → Service → Repository) with DTOs and entities.
The system is built on a layered architecture:
- Controller Layer → Handles HTTP requests & responses.
- Service Layer → Business logic (tested with 57 unit tests).
- Repository Layer → Data persistence using Spring Data JPA.
- DTOs & Entities → Data transfer between layers.
GET /department→ Find all departmentsGET /department/{id}→ Find one departmentPOST /department→ Create departmentPATCH /department/{id}→ Update departmentDELETE /department/{id}→ Delete departmentGET /department/searchDepartment?departmentName→ Search by name
GET /patient→ Find all patientsGET /patient/{id}→ Find one patientPOST /patient→ Create patientPATCH /patient/{id}→ Update patientDELETE /patient/{id}→ Delete patientGET /patient/searchPatient?patientFullName→ Search by name
GET /admissionState→ Find all admission statesGET /admissionState/{id}→ Find one admission statePOST /admissionState→ Create admission statePATCH /admissionState/{id}→ Update admission stateDELETE /admissionState/{id}→ Delete admission stateGET /admissionState/searchByPatient?patientId→ Search by patient
GET /clinicalData→ Find all clinical dataGET /clinicalData/{id}→ Find one clinical dataPOST /clinicalData→ Create clinical dataPATCH /clinicalData/{id}→ Update clinical dataDELETE /clinicalData/{id}→ Delete clinical dataGET /clinicalData/searchByPatient?patientId→ Search by patient
-
Discharge Patient
PATCH /discharge/{admission_state_id}/{reason}- Marks patient as discharged, assigns exit date & reason.
-
Get Department Change History
GET /departmentChangeHistory/searchByPatient/{patientId}- Retrieves complete department change history with pagination.
- Create → Verifies entity creation.
- Find All → Ensures correct pagination results.
- Find One → Verifies retrieval by ID.
- Update → Ensures correct field updates.
- Delete → Validates deletion conditions.
- Search → Ensures repositories return correct data.
- Discharge Reason → Validates discharge process & reason tracking.
- Department Change History → Ensures department changes are tracked with old/new dept and dates.
- Backend: Spring Boot (Java)
- Database: PostgreSQL (running in a local Docker container)
- ORM: Spring Data JPA (Hibernate)
- Testing: JUnit, Mockito
- Build Tool: Maven/Gradle
- Architecture: Repository Pattern, DTOs & Entities
- Clone the repository:
git clone https://github.com/rigelHadushiDev/hospitalManagement.git cd hospitalManagement - Ensure PostgreSQL is running in a local Docker container.
- Build and run the project:
mvn spring-boot:run
- Access the APIs:
http://localhost:8080
- Run unit tests:
mvn test


