Servicio web (API REST), que sirve de endpoints para un sistema de gestion de historia clinica centralizada, utilizando Phyton con Flask, y PostgreSQL como motor de la base de datos.
-
Base de datos:
/modelos/engine/dbstorage.py
- configurar el metodo
__init__
en la lineaself.__engine = db.create_engine('postgresql://usuario:password@localhost/API_REST_HOSPITAL')
, poner su usuario y password de Postgres.
-
Dependencias:
requirements.txt
- Para instalar todos los paquetes de python necesarios para correr la api, recomiendo crear un entorno virtual
python3 -m venv nombredelentorno
y puegosource /nombredelentorno/bin/activate
- luego dentro del entorno ejecutar
pip install -r requirements.txt
- variables de entorno: para poder enviar los correos de confirmacion, es
necesario ajustar las variables de entorno con
mail=correoqueenvia
ypassword=passworddelcorreo
/modelos
: En este paquete se encuentran declaradas todas las clases usadas en la api./modelos/engine
: Aqui se encuentra el modulodbstorage.py
encargado de conectarse con la base de datos y gestionar todos los objetos en ella./api/v1
: Se encuentra el modulo app.py en el que se inicia la API, y se conecta con todas las Blueprints y metodos de la API.
- En Linux Desde la carpeta root del proyecto ejecutar
python3 -m api.v1.app
-
Registar Usuarios: de entrada la API permite registrar dos tipos de usuario
hospital
ypaciente
, ademas crea un link para autenticar el registro por medio del correo. -
Registrar Paciente:
POST /api/v1/register
Recibe los siguientes parametros:
{
"usuario" : "paciente",
"formulario" : {
"nombre": string,
"id": string,
"password": string,
"correo": string,
"telefono": string,
"direccion": string,
"fecha_nacimiento": string
}
}
- Registrar Hospital:
POST /api/v1/register
Recibe los siguientes parametros:
{
"usuario" : "hospital",
"formulario" : {
"nombre": string,
"id": string,
"password": string,
"correo": string,
"telefono": string,
"direccion": string,
},
"servicios" : ["string", "string", ...]
}
- Login Usuarios: para hacer login es necesario haberse verificado con el correo.
POST /api/v1/login
Recibe los siguientes parametros:
{
"id" : string,
"password" : string,
}
Retorna un token para el acceso al sistema.
{"id" : "token"}
- Reiniciar password: crea un link para reiniciar el password con el correo.
POST /api/v1/reset_password
Recibe los siguientes parametros:
{
"correo": string,
}
Cada que un usuario hace login y este es exitoso la api retorna un token
que se debe enviar en los headers como:
"Authorization: Bearer token"
todos los metodos que siguen acontinuacion utilizan este token para funcionar.
- Registrar medicos: Solo los usuarios de tipo Hospital pueden registrar un nuevo medico.
POST /api/v1/registrar_medico
Recibe los siguientes parametros:
{
"usuario" : "paciente",
"formulario" : {
"nombre": string,
"id": string,
"password": string,
"correo": string,
"telefono": string,
"direccion": string,
"especialidad": string
}
}
- Registrar Observacion: Solo los usuarios de tipo Medico pueden registrar una observacion de sus pacientes.
PUT /api/v1/registrar_observacion
Recibe los siguientes parametros:
{
"formulario" : {
"paciente_id": string,
"registro": string,
}
}
- Consultar registros: Un usuario de tipo Paciente puede consultar solo sus registros, uno de tipo Medico solo puede consultar los registros realizados por el mismo y un usuario de tipo Hospital solo puede consultar los registros realizados por sus medicos.
GET /api/v1/consultar
Retorna un diccionario de tipo JSON con los registros.
- Descargar registros: Un usuario de tipo medico puede descargar todas las observaciones registradas a un paciente en formato csv.
GET /descargar_consulta/<paciente_id>
retorna un archivo en formato csv.
- Cambiar password:
POST /api/v1/change_password
Recibe los siguientes parametros:
{
"old_password": string,
"new_passwor": string,
}
La API retorna los siguientes codigos de status:
Status Codigo | Description |
---|---|
200 | OK |
201 | CREATED |
401 | BAD REQUEST |
404 | NOT FOUND |
500 | INTERNAL SERVER ERROR |
- Diego Vivas, @diegovivas