A comprehensive healthcare management system featuring role-based access control and real-time notifications using the Observer Design Pattern.
This is a web-based healthcare management platform that streamlines operations for medical centers. The system provides role-specific dashboards for customers, receptionists, staff coordinators, customer support managers, senior medical officers, and system administrators.
- User Management: Role-based authentication and authorization
- Appointment Management: Schedule, view, edit, and cancel appointments
- Medical Records: Store and manage patient medical reports and recommendations
- Customer Support: Support ticket system with replies
- Feedback System: Collect and manage customer feedback
- Real-time Notifications: Observer pattern-based notification system with WebSocket support
- PDF Export: Generate PDF reports for medical records
- Doctor Scheduling: Manage doctor schedules and room assignments
- System Admin: User management, system configuration
- Customer: Book appointments, view medical records, submit feedback and support tickets
- Receptionist: Manage appointments, patient lookup
- Senior Medical Officer: View patient history, medical records
- Staff Coordinator: Manage doctors, schedules, and room assignments
- Customer Support Manager: Handle support tickets and customer inquiries
- Backend Framework: Spring Boot 3.5.6
- Java Version: 17
- Database: Microsoft SQL Server
- ORM: Spring Data JPA / Hibernate
- Template Engine: Thymeleaf
- WebSocket: Spring WebSocket for real-time notifications
- PDF Generation: iText7 and html2pdf
- Build Tool: Maven
- Architecture Pattern: Observer Design Pattern for notifications
Before running this application, ensure you have the following installed:
- Java JDK 17 or higher
- Maven 3.6+
- Microsoft SQL Server (2019 or later recommended)
- IDE (IntelliJ IDEA, Eclipse, or VS Code)
git clone <your-repository-url>
cd healthcare_customercare-
Create Database:
CREATE DATABASE health;
-
Run SQL Scripts (in order):
create_roles_table.sql- Creates role tablecreate_medical_tables.sql- Creates medical-related tablescreate_notifications_table.sql- Creates notification tablesample_medical_data.sql- Optional: Sample data
-
Configure Database Connection:
Edit
src/main/resources/application.properties:spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=health;encrypt=false;trustServerCertificate=true spring.datasource.username=your_username spring.datasource.password=your_password
mvn clean installOption 1: Using Maven
mvn spring-boot:runOption 2: Using Maven Wrapper (Windows)
.\mvnw.cmd spring-boot:runOption 3: Using Maven Wrapper (Linux/Mac)
./mvnw spring-boot:runThe application will start on http://localhost:8080
- Email:
admin@arogya.com - Password:
admin123 - Role: ADMIN
Note: The admin user is automatically created on first application startup. If you need to reset it, delete the admin user from the database and restart the application.
healthcare_customercare/ ├── src/ │ ├── main/ │ │ ├── java/com/example/healthcare_customercare/ │ │ │ ├── config/ # Configuration classes │ │ │ ├── controller/ # REST and Web controllers │ │ │ ├── entity/ # JPA entities │ │ │ ├── observer/ # Observer pattern implementation │ │ │ ├── repository/ # Data access layer │ │ │ ├── service/ # Business logic layer │ │ │ └── HealthcareCustomercareApplication.java │ │ └── resources/ │ │ ├── application.properties │ │ ├── static/ # Static HTML files for testing │ │ └── templates/ # Thymeleaf templates │ └── test/ # Test files ├── pom.xml # Maven dependencies └── *.sql # Database scripts
Happy Coding!