Api realizada para gestionar hospitales, médicos y usuarios de un sistema de historia clínica centralizada.
Esta API se desarrollo en Node.js con ayuda de express.js. y para el manejo de base de datos se utilizó mongoDB. Además del software ya mencionado, se usaron Mongoose, bcrypt, dotenv, morgan, nodemail y nodemon. Gracias a ellas pude realizar este trabajo.
Como carácterística de esta API resalto que se hicieron validaciones en la entrada de datos y su respectivo manejo de errores. Adicionalmente se tuvo en cuenta la seguridad y privacidad en el manejo de los datos de cada actor del sistema.
Para la realización de esta API se siguieron los siguientes pasos:
- Creación de proyecto con npm init.
- Instalación de Express.js junto con dependencias necesarias para el funcionamiento de la API y para desarrollo de la misma (mongoose, dotev, morgan, nodemon).
- Configuración de variables de entorno en .env y hacerlas accesibles en archivos .js.
- Planeación a lapiz y papel de la base datos con base en los requerimientos.
- Realización de modelos (schemas) para base de datos en MongoDB.
- Creación de rutas y lógica de programación para cada funcionalidad requerida.
- Realización de validación con forme se hacen funcionalidades.
- Registro de usuarios con respectivas condiciones.
- Encriptación de contraseñas y creación de token de validación de email.
- Creación de lógica para envío de email de validación de usuarios.
- Creación de funcionalidades especiales para los diferentes actores con ayuda de datos de prueba (adjuntos más adelante).
- Correción en schemas para responder de manera precisa a peticiones.
- Agregar posibilidad de descargar archivo con información requerida.
- Creación y correción de README.MD.
- Despliegue del servicio web (API REST) en servicio web gratuito en linea.
Para el correcto funcionamiento de esta API se deben acatar la siguientes condiciones del sistema:
- Se aconseja usar alguna herramienta de API para hacer peticiones (ThunderClient, Postman, etc).
- Se deben enviar las peticiones en formato .JSON (el formato que se mostrará más adelante en la sección de "Modo de uso").
- Se debe usar el método específico en cada petición como se muestra en la sección "Modo de uso" más abajo es tes archivo.
- Todos las llaves que componen el .JSON para cada petición son obligatorios.
- Para el correcto funcionamiento del servicio web (API REST), se deben tener en cuenta reglas exigidas por el proyecto. Estas reglas son por ejemplo: Un usuario no podrá acceder a la plataforma si no confirma su email, debe existir un usuario hospital antes de crear un usuario médico para poder vincularlos, el usuario médico deberá cambiar la contraseña la primera vez que inicio sesión, etc.
Crear usuario
Deploy:
POST https://health-api-wuip.onrender.com/api/user/register
Local:
POST http://localhost:5000/api/user/register
{
"idUser": "usuario80",
"password": "123",
"name": "123",
"address": "123",
"dob": "123",
"email": "123@gmail.com",
"phone": "123"
}
Validar usuario correo
Al momento de enviar la petición POST, el servidor devolverá el enlace para ir a la plataforma de validación de correo electrónico.
Login usuario
Deploy:
POST https://health-api-wuip.onrender.com/api/user/login
Local:
POST http://localhost:5000/api/user/login
{
"idUser": "usario3",
"password": "123"
}
Cambiar password usuario
Deploy:
PATCH https://health-api-wuip.onrender.com/api/user/updatepass
Local:
PATCH http://localhost:5000/api/user/updatepass
{
"idUser": "usuario3",
"password": "123",
"newPassword": "1234"
}
Conseguir historia clínica de usuario
Deploy:
POST https://health-api-wuip.onrender.com/api/user/gethistory
Local:
POST http://localhost:5000/api/user/gethistory
{
"idUser": "usuario3"
}
Descargar observaciones médicas de usuario
Deploy:
GET https://health-api-wuip.onrender.com/api/user/download
Local:
GET http://localhost:5000/api/user/download
{
"idUser": "usuario3"
}
Crear medico
Deploy:
POST https://health-api-wuip.onrender.com/api/medico/register
Local:
POST http://localhost:5000/api/medico/register
{
"idMed": "medico1",
"idHos": "hospital3",
"password": "123",
"name": "camilo",
"address": "123",
"dob": "123",
"email": "cacastellanosh@unal.edu.co",
"phone": "123"
}
Validar usuario medico
Al momento de enviar la petición POST, el servidor devolverá el enlace para ir a la plataforma de validación de correo electrónico.
Login médico
Deploy:
POST https://health-api-wuip.onrender.com/api/medico/login
Local:
POST http://localhost:5000/api/medico/login
{
"idMed": "medico1",
"password": "1234"
}
Cambiar password médico
Deploy:
PATCH https://health-api-wuip.onrender.com/api/hospital/updatepass
Local:
PATCH http://localhost:5000/api/hospital/updatepass
{
"idMed": "medico",
"password": "123",
"newPassword": "1234"
}
Agregar a historia clínica
Deploy:
POST https://health-api-wuip.onrender.com/api/medico/addhistory
Local:
POST http://localhost:5000/api/medico/addhistory
{
"idUser": "usuario1",
"idMed": "medico3",
"idHos": "hospital3",
"speciality": "cardiología",
"healthCondition": "bad",
"observations": "not that bad"
}
Conseguir todas las historias clinicas del mismo médico
Deploy:
POST https://health-api-wuip.onrender.com/api/medico/gethistory
Local:
POST http://localhost:5000/api/medico/gethistory
{
"idMed": "medico3"
}
Crear cuenta de hospital
Deploy:
POST https://health-api-wuip.onrender.com/api/hospital/register
Local:
POST http://localhost:5000/api/hospital/register
{
"idHos": "hospital10",
"password": "123",
"name": "123",
"address": "123",
"services": ["oftalmología", "cardiología", "pediatría"],
"email": "123@gmail.com",
"phone": "123"
}
Validar usuario hospital
Al momento de enviar la petición POST, el servidor devolverá el enlace para ir a la plataforma de validación de correo electrónico.
Login hospital
Deploy:
POST https://health-api-wuip.onrender.com/api/hospital/login
Local:
POST http://localhost:5000/api/hospital/login
{
"idHos": "hospital3",
"password": "123"
}
Cambiar password hospital
Deploy:
PATCH https://health-api-wuip.onrender.com/api/hospital/updatepass
Local:
PATCH http://localhost:5000/api/hospital/updatepass
{
"idHos": "hospital3",
"password": "123",
"newPassword": "1234"
}
Conseguir todas las historias clinicas de los médicos del mismo hospital
Deploy:
POST https://health-api-wuip.onrender.com/api/hospital/gethistory
Local:
POST http://localhost:5000/api/hospital/gethistory
{
"idHos": "hospital3"
}