A uniwersal web application for health care units - places like medical, physioterapeutic, rehabilitation or wellness centres. The app includes visit, schedules and facility management. It enables services to be defined and linked to rooms, employees and equipment. Registered clients and workers can plan their visits. Available dates of visits are determined based on properly set working hours of individual employees and the availability of equipment and rooms. It is also possible to view schedules and define unavailability hours for workers, rooms and equipment.
Project is created with:
- Java: 11
- Spring Boot: 2.5.3
- Angular: 12.0.1
- MySQL
- To run the project you need to download it from the github repository
- You also have to have an existing MySQL connection
Now you need to start the frontend and backend servers.
Before you start the frontend server, inside the /meduva-frontend install all necessary dependencies with the following command:
$ npm install
After that, to start the server type the following:
$ ng serve
Frontend server works on localhost:4200
Before starting the backend server, you need to set environmental variables associated with your MySQL database, because they are used for connection in the application.properties file:
To start the backend server, type the following command inside the /meduva-backend folder:
$ mvn spring-boot:run
Backend server share its API on localhost:8080/api
The application consists of several main functional modules which, when combined with each other, allow for the automation of work. Each of them has been wrapped in a graphic design, allowing for easier navigation and operation.
The list of modules is presented below:
- Registration for the visit
- Schedule management
- Facility management
- User management
- Authentication and autorization
Registration for an appointment is one of the most important modules and the essence of the application. The visit can be planned according to various points of reference. The client can register himself, the specialist who performs the service can register the client, and the receptionist can arrange the client's visit with the specialist.
It is implemented based on an algorithm that automatically generates available dates, taking into account the available resources. These resources are rooms, equipment and employees competent to perform the service. The customer can choose an interesting date from those available on a given day.
Schedule management consists of three parts: managing the schedules of rooms, devices and employees. The data related to these modules are used by the visit planning algorithm to determine an appropriate, collision-free date. Users with the role of a receptionist or administrator can directly manage the schedules of individual resources.
Managing the facility, as well as managing schedules, is based on three main modules: users, rooms and services configuration. Each of them can be used separately and together, based on a special facility configuration wizard. It is a tool created to combine the above functionalities in a user-friendly way (especially in the case of initial system preparation). It allows for full personalization using the "step by step" method. It also includes the possibility of configuring connections between elements representing a given module.
The user management module can be seen at the beginning of using the application, as logging and registration can be treated as part of this module. They were implemented on the basis of JSON Web Token (JWT).
Once the profile is created, it can be managed by the user and the system administrator. The account may be deleted or edited, and the editing is based on the change of personal data or login details, as well as the possibility of changing the user's role in the system. The application also offers support for users who are not logged in by adding their most important data to the system. This is useful when the customer does not have an account on the site, but wants to use the facility's services (e.g. in the case of a telephone connection with the receptionist).