DESARROLLO WEB BACK END
Unidad 15
Docente: Norbey Danilo Muñoz
Autor: Jonathan David Ramos Gallego
Hola a todos, bienvenidos a CowSalud EPS. (API REST para manejo de pacientes, doctores y sus respectivas citas)
- Java 17
- Spring y SpringBoot
- Spring Security Y JWT
- JPA e Hibernate
- SpringBoot Actuator
- Lombok
- MySQL
- Visual Studio Code e IntelliJ
- Postman
Para ejecutar el API, debes asegurarte previamente de tener maven en tu sistema.
- Descarga el proyecto: Clona el repositorio con git clone https://github.com/SparkleCow/Cowsalud-EPS.git o descarga el repositorio en formato .rar para poder manipularlo.
- Configurar el proyecto: Configura las variables de entorno y gestiona el proyecto a través del archivo application.properties, aqui deberas especificar tu base de datos y tus datos para un optimo arranque del servidor.
- Instalar las dependencias del proyecto: Instala todas las dependencias que se encuentran en el archivo pom.xml con ayuda de maven.
- Crea la base de datos: Crea una base de datos para poder implementar en el proyecto. Asegurate de agregar su información en el archivo application.properties
- Iniciar el proyecto: Ejecuta el proyecto desde la clase CowSaludEpsApplication.
Las entidades "Patient" (Paciente) y "Doctor" tienen un estatus equivalente a si se encuentran activos o fueron desvinculados de la EPS. Por otro lado, ambas entidades emplean un codificador para guardar y asegurar la integridad de las contraseñas.
Tambien, ambas entidades implementan la interfaz de UserDetails para poder emplearlas en el contexto de seguridad de Spring
y de igual forma, fueron generadas con ayuda de la libreria de Lombok.
- Pacientes
Esta entidad representa a los pacientes de la EPS, sin embargo se emplearon distintos DTO con el fin de obtener y mostrar información concreta a la hora de gestionar la información.
Se creo un DTO para mostrar la información sin datos sensibles como lo es la contraseña, de igual forma se creó un DTO para recibir la información de un nuevo paciente para que de esta manera no se pueda setear
sus roles o estatus y finalmente se empleo un DTO para la actualización de datos sin otorgar la oportunidad a algún paciente de agregar o cambiar información sensible.
Otro punto esencial a tener en cuenta es que desde el API se gestiona la creación de los pacientes y se les da como valor predeterminado un rol del tipo "PATIENT"
- Doctores
La entidad de que representa a los doctores (Doctor) tiene un tratamiento similar al de los pacientes, sin embargo, a diferencia de los pacientes, los doctores tienen una lista de roles que pueden contener el rol "DOCTOR", "CHIEF_DOCTOR" o ambos,
esto con el fin de dar permisos a información y endpoints cruciales en la logica de negocio.
- Citas
La entidad de citas contiene un Id compuesto con el cual mapea a las entidades de doctor y paciente que hacen parte de su relación (ManyToOne). Tambien tiene un DTO para dar respuestas a las solicitudes sin dejar entrever información sensible de los doctores
ni pacientes.
(No requiere ninguna autorización ni autenticación)
Contraseña errada
Logueo
Crear paciente (No requiere ninguna autorización ni autenticación)
Encontrar paciente por ID (Requiere rol de doctor, doctor jefe o paciente)
Encontrar pacientes (Requiere rol de doctor o doctor jefe)
Encontrar pacientes activos (Requiere rol de doctor o doctor jefe)
Encontrar paciente por Email (Requiere rol de doctor, doctor jefe o paciente)
Borrar paciente (Requiere rol de doctor jefe. Se realiza un borrado lógico a través del atributo "status" cambiandolo de 1 a 0)
Actualizar paciente (Requiere rol de doctor jefe)
Registar un nuevo doctor (Requiere rol de doctor jefe)
Registar un nuevo doctor jefe (Requiere rol de doctor jefe)
Obtener todos los doctores (Requiere rol de doctor jefe)
Obtener todos los doctores activos (Requiere rol de doctor o doctor jefe)
Obtener un doctor por su ID (Requiere rol de doctor o doctor jefe)
Obtener un doctor por su Email (Requiere rol de doctor o doctor jefe)
Obtener doctores por especialidad (Requiere rol de doctor, doctor jefe o paciente)
Actualizar un doctor por su ID (Requiere rol de doctor jefe)
Eliminar un doctor por su ID (Requiere rol de doctor jefe. Se realiza un borrado lógico a través del atributo "status" cambiandolo de 1 a 0)
Encontrar citas por medio del ID del paciente (Requiere rol de doctor, doctor jefe o paciente)
Encontrar citas por medio del ID del doctor(Requiere rol de doctor o doctor jefe)
Encontrar todas las citas (Requiere rol doctor jefe)
Borrar cita por medio de su ID (Requiere rol doctor jefe)