A UTI-Report consiste em API destinada para o gerenciamento de prontuários de pacientes em UTI.
O projeto tem como objetivo a fixação de conteitos como rotas, tratamento de requisições HTTP, realização de operações de CRUD, implementação de um sistema de autenticação de usuários, implementação de Helpers e Middlewares, proteção de rotas e conexão com bancos relacionais MySQL.
Além disto, o projeto oportuniza a utilização de bibliotecas JS, tais como implementação de UUIDs, CORS, validações Yup, tokens JWT, criptografia Bcrytpt, ejs, html-pdf, etc.
Etapa de criação de rotas responsáveis por realizar operações de CRUD dos relatórios. Para esta etapa também foram aplicadas a implementação de UUIDs para geração dos IDs dos relatórios, bem como realização da validação dos dados de entrada via Yup.
Realização de requisições HTTP (GET, POST, UPDATE e DELTE): https://github.com/user-attachments/assets/1175a68b-81ec-47a8-b5a3-a413b17ad601
Etapa de implementação do gerador de PDF, na qual um registro de prontuário é convertido em um arquivo PDF disponível para vizualização e/ou download. Para esta etapa, foram utilizadas as bibliotecas ejs, a qual é responsável por permitir a geração de um arquivo HTML dinâmico, o qual permite a implementação de variáveis, seguido da utilização da biblioteca html-pdf, a qual converte o arquivo .ejs gerado em PDF.
Registro a ser convertido em PDF:
Confirmação de sucesso na geração do PDF:
Documento PDF gerado com os dados do prontuário em memória:
Etapa de implementação de um microgerenciador de acessos.
Para esta etapa, o projeto conta com rotas destinadas para a criação de usuários e roles, os quais podem ser criados de maneira livre, onde cada role de usuário pode ter suas permissões de acesso criadas livremente.
Com isto, os de autenticação e autorização desenvolvidos realizam os controles de acesso (validação das credenciais do usuário) e permissões (o usuario pode acessar a referida rota?).
Geração de um JWT após localização das credenciais na base de dados:
Etapa de conexão da API com banco de dados MySQL. Para esta etapa foram realizadas a criação do diagrama de entidade e relacionamento do banco através da ferramenta LucidChart - o qual pode ser observado na imagem abaixo -, bem como a implementação de queries SQL para a consulta, armazenamento e manipulação de dados em uma base MySQL. Para o banco de dados, foram elaboradas as seguintes tabelas:
Diagrama de entidade e relacionamento:
REPORTS - Contém os dados do prontuário;
PATIENT - Contém o cadastro dos pacientes, podendo estes estar vinculados a mais de um prontuário diferente;
DOCTOR - Contém os dados de cadastro do médico responsável pelo prontuário e, assim como os registros de pacientes, podem estar vinculados a mais de um prontuário;
ENTRY - Contém os dados de entrada de um paciente na UTI, tais como os sintomas apresentados, motivo da internação, condições clinicas prévias, etc;
DISCHARGE - Contém os dados de saída de um paciente, como data, motivo, observações, etc.
Abaixo, as relações entre as tabelas:
REPORTS - PATIENT => one-to-many
REPORTS - DOCTOR => one-to-many
REPORT - ENTRY => one-to-one
REPORTS - DISCHARGE => one-to-one