(50 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 36: Linha 36:
** Danilo Dias - UFU
** Danilo Dias - UFU
** Gabriel Nunes - UFU
** Gabriel Nunes - UFU
** Hendrik Abdalla - UFU
** João Victor - UFU
** João Victor - UFU
<br>
<br>
Linha 58: Linha 59:
* No caso dessa aplicação, teremos uma visão das interfaces que serão construídas pelo Dev Front-End, sem preocupações estéticas mas com todas as operações que deverão constar na solução final.  
* No caso dessa aplicação, teremos uma visão das interfaces que serão construídas pelo Dev Front-End, sem preocupações estéticas mas com todas as operações que deverão constar na solução final.  
<br>
<br>
= Functional Requirements =
= GitHub =
https://github.com/gabrielrbernardi/gafio
 
= Requisitos Funcionais - Fase I =
*Backend
*Backend
**RF01: Cadastrar usuário: Gabriel
**RF01: Cadastrar usuário: '''Gabriel'''
***CRUD completo: campos -> nome, email, senha, confirmarSenha, matrícula, tipoUsuario
***CRUD completo: campos -> nome, email, senha, confirmarSenha, matrícula, tipoUsuario
****tipoUsuario padrão -> Farmacêutico
****tipoUsuario padrão -> Farmacêutico
****senha -> fazer hash da senha
****senha -> fazer hash da senha
**RF02: Autenticar usuário: Gabriel
**RF02: Autenticar usuário: '''Gabriel'''
***Verificação de usuário e senha
***Verificação de usuário e senha
****Login via email
****Login via email
**RF03: Alimentar prontuários: Bruno.
**RF03: Alimentar prontuários: <del>Bruno</del> '''Hendrik'''.
***CRUD completo de prontuários e Histórico.
***CRUD completo de Prontuários
**RF04: Avaliação - Antônio
***<del>CRUD completo de Histórico.</del>
***Implementar Desfecho (alta, óbito ou transferência)
**RF04: Avaliação - '''Hendrik'''
***CRUD completo
***CRUD completo
****Paginação de avaliação de paciente quando mostrar dados paciente
****Paginação de avaliação de paciente quando mostrar dados paciente
**RF05: Cadastrar medicamentos: André
**RF05: Cadastrar medicamentos: <del>André</del> '''Antônio'''
***CRUD - d
***CRUD - d
****Integração com api de medicamentos para inserção de dados no banco
****Integração com api de medicamentos para inserção de dados no banco
****Implementar filtro para pesquisa de medicamentos
****Implementar filtro para pesquisa de medicamentos
****Tentar colocar id primário como código de barras
****Tentar colocar id primário como código de barras
**RF06: Cadastrar doenças: Antônio
**RF06: Cadastrar doenças: '''Antônio'''
***CRUD -d
***CRUD -d
****Integração api de doenças para inserção de dados no DB
****Integração api de doenças para inserção de dados no DB
****Implementar filtro para pesquisa de doenças
****Implementar filtro para pesquisa de doenças
**RF07: Proteger API com protocolo OAuth: André
**RF07: Proteger API com protocolo OAuth: <del>André</del> '''Hendrik'''
***Evitar acesso de outros usuários à API
***Evitar acesso de outros usuários à API
**RF08: Notificar aprovadores: Bruno
**RF08: Notificar aprovadores: <del>Bruno</del> '''Gabriel'''
***Criação de rota para autorização para acesso de novos usuários ao sistema.
***Criação de rota para autorização para acesso de novos usuários ao sistema.
**RF09: Verificar permissão de usuário: X
**RF09: Verificar permissão de usuário: X
***Definir acesso de cada tipo de usuário.
***Definir acesso de cada tipo de usuário.
**RF10: Gerar dashboard: X*
**RF10: Gerar dashboard: '''A definir'''
***Visualização
***Visualização
***Disponibilização de dados para apresentação no frontend
***Disponibilização de dados para apresentação no frontend
**RF11: Cadastrar Paciente: '''Gabriel'''
*** Fazer backend para CRUD de paciente
**RF12: Cadastro Microbiologia: '''João Victor'''


*Frontend
*Frontend
**RF11: Criar tela de login
**RF13: Criar tela de login
**RF12: Criar tela de cadastro de usuário
**RF14: Criar tela de cadastro de usuário
**RF13: Criar tela Home
**RF15: Criar tela Home
**RF14: Criar tela de prontuário
**RF16: Criar tela de prontuário
***CRUD completo para prontuário
***CRUD completo para prontuário
**RF15: Criar tela de medicamentos:
**RF17: Criar tela de medicamentos:
***CRUD -d para listagem de medicamentos
***CRUD -d para listagem de medicamentos
**RF16: Criar tela de doenças
**RF18: Criar tela de doenças
***CRUD -d para listagem de doenças
***CRUD -d para listagem de doenças
**RF17: Mostrar dashboard
**RF19: Mostrar dashboard
***Paginação entre os diversos gráficos. Integração de dados com a API REST do backend
***Paginação entre os diversos gráficos. Integração de dados com a API REST do backend
**RF18: Mostrar Notificações
**RF20: Mostrar Notificações
***Criacao de tela para exibição de notificações; Integração com API REST
***Criacao de tela para exibição de notificações; Integração com API REST
**RF19: Criar easter egg
**RF21: Criar easter egg
**RF20: Progressão de pacientes
**RF22: Progressão de pacientes


<br>
<br>
= Requisitos Funcionais - Fase II =
*Backend
**RF23: Gerar dashboard: '''Antônio'''
***Visualização
***Disponibilização de dados para apresentação no Google DataStudio
**RF24: Incorporar PDF CCIH: '''A definir'''
**RF25: Gerar histórico: '''Antônio'''
***Gerar histórico por paciente
*Frontend
**RF26: Adicionar Yup: '''João Victor'''
***Adicionar Yup como método de validação
**RF27: Adicionar botão de reload
***Adicionar botão para recarregamento dos dados em cada datatable existente no sistema, para que não haja a necessidade de recarregar a página, e consequentemente o sistema.
**Incorporar Dashboard
***Fazer a incorporação dos gráficos gerados pelo Google DataStudio no sistema
= Rascunho =
* <del>Fazer backend para cadastro de paciente</del>
* <del>Refazer backend para historico de paciente</del>
* <del>Refazer backend para tabela de prontuário</del>
* Fazer função para desfecho do paciente -> Hendrik
** Verificar com FioCruz quais tipos de desfecho o paciente pode ter
* Criar cadastro de patógenos
* Para RF13, fazer a inclusão de arquivo PDF de exemplo para que futuramente possa ser substituido pelas recomendações da CCIH
https://www.notion.so/grbernardi/GAFio-d20305721c8d45e99fb7f8360707f010
*Morgan para arquivo de LOG


= Desenvolvimento =
= Desenvolvimento =
Linha 117: Linha 155:
!RF!!Responsável!!Data prevista de entrega
!RF!!Responsável!!Data prevista de entrega
|-
|-
| RF01 || Gabriel Bernardi || 28/06/2020
| RF01 || [[Gabriel Bernardi]] || 28/06/2020
|-
| RF02 || [[Gabriel Bernardi]] || 02/07/2020
|-
| RF03 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || 28/09/2020
|-
| RF04 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || 28/10/2020
|-
| RF05 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || 06/07/2020
|-
| RF06 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || 28/06/2020
|-
| RF07 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || -
|-
|-
| RF02 || Gabriel Bernardi || 02/07/2020
| RF08 || [[Gabriel Bernardi]] || 02/07/2020
|-
|-
| RF03 || Bruno Sinhoroto || 06/07/2020
| RF09 || [[André Argel]] || 02/07/2020
|-
|-
| RF04 || Antônio Pedro || -
| RF10 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
|-
| RF05 || André Agel || 06/07/2020
| RF11 || [[Gabriel Bernardi]] || 25/06/2020
|-
|-
| RF06 || Antônio Pedro || 28/06/2020
| RF12 || [[João Victor]] || 11/11/2020
|-
|-
| RF07 || André Agel || 02/07/2020
| RF13 || [[Gabriel Bernardi]] || 25/06/2020
|-
|-
| RF08 || Gabriel Bernardi || 02/07/2020
| RF14 || [[Gabriel Bernardi]] || 13/07/2020
|-
|-
| RF09 || André Agel || 02/07/2020
| RF15 || [[Gabriel Bernardi]] || 20/07/2020
|-
|-
| RF10 || - || -
| RF16 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || 28/09/2020
|-
|-
| RF11 || Gabriel Bernardi || 25/06/2020
| RF17 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
|-
| RF12 || Gabriel Bernardi || 25/06/2020
| RF18 || [[Gabriel Bernardi]] || 02/07/2020
|-
|-
| RF13 || Gabriel Bernardi || 25/06/2020
| RF19 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
|-
| RF14 || Bruno Sinhoroto || 13/07/2020
| RF20 || [[Gabriel Bernardi]] || -
|-
|-
| RF15 || André Agel || 20/07/2020
| RF21 || - || -
|-
|-
| RF16 || Antônio Pedro || 10/07/2020
| RF22 || - || -
|-
|-
| RF17 || - || -
| RF23 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
|-
| RF18 || Gabriel Bernardi || 02/07/2020
| RF24 || - || -
|-
|-
| RF19 || - || -
| RF25 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || 16/11/2020
|-
|-
| RF20 || - || -
| RF26 || [[João Victor]] || 11/11/2020
|-
|-



Edição atual tal como às 16h16min de 7 de janeiro de 2021

Parceria

  • FioCruz
    • Fundação Oswaldo Cruz é uma instituição de pesquisa e desenvolvimento em ciências biológicas localizada no Rio de Janeiro, Brasil, considerada uma das principais instituições mundiais de pesquisa em saúde pública. Foi fundada pelo Dr. Oswaldo Cruz, um notável epidemiologista, onde antes era o Instituto Soroterápico Federal.
    • Endereço: Av. Brasil, 4365 - Manguinhos, Rio de Janeiro - RJ, 21040-900
    • Fundador: Osvaldo Cruz
    • Fundação: 25 de maio de 1900
    • INI - Instituto Nacional de Infectologia
    • Pesquisadores:
      • Dr André Miguel Japiassú
        • Área de conhecimento: Biologia Geral
      • Dr Pedro Henrique Nascimento Theodoro
        • Área de conhecimento: Infectologia


  • UFU
    • A Universidade Federal de Uberlândia (UFU) é uma fundação pública, integrante da Administração Federal Indireta, vinculada ao Ministério da Educação (MEC). A instituição, ainda com o nome de Universidade de Uberlândia (UnU), foi autorizada a funcionar pelo Decreto-lei n. 762, de 14 de agosto de 1969, e federalizada pela Lei n. 6.532, de 24 de maio de 1978.
    • A Universidade Federal de Uberlândia foi fundada em 1969, com a associação de diversas faculdades isoladas como a Faculdade de Engenharia, a Escola de Medicina, entre outras. Em 1978 ocorreu sua federalização, ocasião em que sua organização acadêmica e administrativa foi estruturada em três centros: Centro de Ciências Exatas e Tecnologia, CETEC; Centro de Ciências Humanas e Artes, CEHAR; e Centro de Ciências Biológicas, CEBIM.
    • A Faculdade de Computação (FACOM) da Universidade Federal de Uberlândia foi criada em 2000, a partir do extinto Departamento de Informática (DEINF), criado em 1988, no âmbito do CETEC, com docentes provenientes dos departamentos de Engenharia Elétrica e de Matemática. As atividades acadêmicas do DEINF estiveram intimamente ligadas ao desenvolvimento do Curso de Bacharelado em Ciência da Computação (BCC), criado também em 1988, sendo este curso o marco inicial da FACOM. No início dos anos 2000 foi criado na Faculdade o Programa de Pós-Graduação em Ciência da Computação, inicialmente com o curso de Mestrado Acadêmico. A FACOM continuou sua expansão criando em 2009 o Curso de Bacharelado em Sistema de Informação (BSI) no Campus Santa Mônica, em Uberlândia e, em 2010, no Campus de Monte Carmelo. No ano de 2011 foi aprovado pela CAPES o Curso de Doutorado em Ciência da Computação, em reconhecimento a destacada produção científica da FACOM em diversas áreas da computação.


Equipe


  • Stakeholder: André Miguel Japiassu - Fiocruz
  • Software Engineer: Luiz Cláudio Theodoro - UFU
  • PO - Product Owner: Pedro Henrique Nascimento Theodoro - Fiocruz
  • Scrums Masters:
    • Bruno Sinhoroto - UFU
    • Gabriel Bernardi - UFU
    • Maxley Soares - UFU
  • Designer:
    • Aryanne Araújo - UberHub CodeClub
  • Devs:
    • André Agel - UFU
    • Antônio Pedro - UFU
    • Danilo Dias - UFU
    • Gabriel Nunes - UFU
    • Hendrik Abdalla - UFU
    • João Victor - UFU



  • Escopo: Desenvolver um sistema de controle de antibióticos que permita a gestão de antibióticos na âmbito da fundação provendo controle, alarmes e comunicação do sistema com interfaces externas. A interação será via Smartphones e Desktops.


Meetings

  • First meeting - 26/03/2020
    • The project started by presenting the technologies that will be used for development in addition to observations about the system. Attached will be the presentation that was used on meeting.
    • Presentation: Mídia: GAFio.pdf


Mockup


  • Mockup ou mock-up, é um modelo em escala ou de tamanho real de um projeto ou dispositivo, usado para ensino, demonstração, avaliação de design, promoção e outros propósitos
  • No caso dessa aplicação, teremos uma visão das interfaces que serão construídas pelo Dev Front-End, sem preocupações estéticas mas com todas as operações que deverão constar na solução final.


GitHub

https://github.com/gabrielrbernardi/gafio

Requisitos Funcionais - Fase I

  • Backend
    • RF01: Cadastrar usuário: Gabriel
      • CRUD completo: campos -> nome, email, senha, confirmarSenha, matrícula, tipoUsuario
        • tipoUsuario padrão -> Farmacêutico
        • senha -> fazer hash da senha
    • RF02: Autenticar usuário: Gabriel
      • Verificação de usuário e senha
        • Login via email
    • RF03: Alimentar prontuários: Bruno Hendrik.
      • CRUD completo de Prontuários
      • CRUD completo de Histórico.
      • Implementar Desfecho (alta, óbito ou transferência)
    • RF04: Avaliação - Hendrik
      • CRUD completo
        • Paginação de avaliação de paciente quando mostrar dados paciente
    • RF05: Cadastrar medicamentos: André Antônio
      • CRUD - d
        • Integração com api de medicamentos para inserção de dados no banco
        • Implementar filtro para pesquisa de medicamentos
        • Tentar colocar id primário como código de barras
    • RF06: Cadastrar doenças: Antônio
      • CRUD -d
        • Integração api de doenças para inserção de dados no DB
        • Implementar filtro para pesquisa de doenças
    • RF07: Proteger API com protocolo OAuth: André Hendrik
      • Evitar acesso de outros usuários à API
    • RF08: Notificar aprovadores: Bruno Gabriel
      • Criação de rota para autorização para acesso de novos usuários ao sistema.
    • RF09: Verificar permissão de usuário: X
      • Definir acesso de cada tipo de usuário.
    • RF10: Gerar dashboard: A definir
      • Visualização
      • Disponibilização de dados para apresentação no frontend
    • RF11: Cadastrar Paciente: Gabriel
      • Fazer backend para CRUD de paciente
    • RF12: Cadastro Microbiologia: João Victor
  • Frontend
    • RF13: Criar tela de login
    • RF14: Criar tela de cadastro de usuário
    • RF15: Criar tela Home
    • RF16: Criar tela de prontuário
      • CRUD completo para prontuário
    • RF17: Criar tela de medicamentos:
      • CRUD -d para listagem de medicamentos
    • RF18: Criar tela de doenças
      • CRUD -d para listagem de doenças
    • RF19: Mostrar dashboard
      • Paginação entre os diversos gráficos. Integração de dados com a API REST do backend
    • RF20: Mostrar Notificações
      • Criacao de tela para exibição de notificações; Integração com API REST
    • RF21: Criar easter egg
    • RF22: Progressão de pacientes


Requisitos Funcionais - Fase II

  • Backend
    • RF23: Gerar dashboard: Antônio
      • Visualização
      • Disponibilização de dados para apresentação no Google DataStudio
    • RF24: Incorporar PDF CCIH: A definir
    • RF25: Gerar histórico: Antônio
      • Gerar histórico por paciente
  • Frontend
    • RF26: Adicionar Yup: João Victor
      • Adicionar Yup como método de validação
    • RF27: Adicionar botão de reload
      • Adicionar botão para recarregamento dos dados em cada datatable existente no sistema, para que não haja a necessidade de recarregar a página, e consequentemente o sistema.
    • Incorporar Dashboard
      • Fazer a incorporação dos gráficos gerados pelo Google DataStudio no sistema

Rascunho

  • Fazer backend para cadastro de paciente
  • Refazer backend para historico de paciente
  • Refazer backend para tabela de prontuário
  • Fazer função para desfecho do paciente -> Hendrik
    • Verificar com FioCruz quais tipos de desfecho o paciente pode ter
  • Criar cadastro de patógenos
  • Para RF13, fazer a inclusão de arquivo PDF de exemplo para que futuramente possa ser substituido pelas recomendações da CCIH

https://www.notion.so/grbernardi/GAFio-d20305721c8d45e99fb7f8360707f010

  • Morgan para arquivo de LOG

Desenvolvimento

  • Responsáveis
RF Responsável Data prevista de entrega
RF01 Gabriel Bernardi 28/06/2020
RF02 Gabriel Bernardi 02/07/2020
RF03 Hendrik Abdalla 28/09/2020
RF04 Hendrik Abdalla 28/10/2020
RF05 Antônio Pedro 06/07/2020
RF06 Antônio Pedro 28/06/2020
RF07 Hendrik Abdalla -
RF08 Gabriel Bernardi 02/07/2020
RF09 André Argel 02/07/2020
RF10 Antônio Pedro -
RF11 Gabriel Bernardi 25/06/2020
RF12 João Victor 11/11/2020
RF13 Gabriel Bernardi 25/06/2020
RF14 Gabriel Bernardi 13/07/2020
RF15 Gabriel Bernardi 20/07/2020
RF16 Hendrik Abdalla 28/09/2020
RF17 Antônio Pedro -
RF18 Gabriel Bernardi 02/07/2020
RF19 Antônio Pedro -
RF20 Gabriel Bernardi -
RF21 - -
RF22 - -
RF23 Antônio Pedro -
RF24 - -
RF25 Antônio Pedro 16/11/2020
RF26 João Victor 11/11/2020

Non-Functional Requirements


  • RF01: Create the Data Base
  • RF02: Create tables
  • RF03: Create the final documentation for back-end
  • RF04: Create the final documentation for front-end

Tools to be used


  • Back-End
    • MySql
      • MySql é um SGBD que permite manipulação de dados em alta capacidade. Foi escolhido pelos seguintes critérios: free e open-source, grande base de usuários com conhecimento e fácil de instalar. Grande comunidade atuante. Por ser relacional, facilitará a implementação por parte da equipe.
    • NodeJS
      • NodeJs é um ambiente de execução Javascript server-side, ou seja, é uma ferramenta que permite criar aplicações javascript sem depender de um browser para a execução. Alguns motivos de sua adoção são: alta escalabilidade, possui o maior repositório do mundo com NPM, possibilidade de deploys e iterações mais rápidas e claro sua notoriedade no mercado sendo utilizado em grandes empresas como Netflix, Uber e LinkedIn.
    • ORM (Sequelize)
      • ORM (Object Relational Mapper) é uma técnica usada para aproximar o paradigma do banco de dados relacional com linguagem SQL ao paradigma de aplicações orientadas a objetos. Essa aproximação deixa a interação com o banco de dados mais amigável ao programador. A ferramenta que será utilizada é o Sequelize e foi escolhido por que possui uma otina comunicação com o MySql além de estar incluso no repositório NPM.
    • ExpressJS
      • O ExpressJs é o framework Node mais popular para web. Essa ferramenta auxilia muito na construção de uma API com caminhos URL (routes), middlewares, etc. O ExpressJs foi escolhido pela praticidade que promove e também por ser o framework mais popular da nossa ferramenta NodeJS, o que consequentemente nos traz uma maior quantidade de material disponível para pesquisa.
    • BCrypt
      • Bcrypt é uma ferramenta para guardar senhas de forma criptografada no banco aumentando a segurança contra ataques de força bruta. Uma das vantagens do Bcrypt é que mesmo duas senhas identicas produzem hash diferentes. Essa ferramente foi escolhida pela grande quantidade de material online para pesquisa e também porque trabalha muito bem como Nodejs.
    • JWT
      • JWT (JSON Web Tokens) é uma ferramenta que gera tokens codificados com tempo limitado para confirmar a autenticidade do usuário, sendo muito importante para segurança e controle sobre sobre quem esta utilizando o sistema. Esta ferramenta foi escolhida por sua facil integração ao Node e também por ter uma comunidade ativa em fóruns e sites para possíveis duvidas.
    • Docker
      • Docker resumidamente é uma plataforma open source que facilita a criação e administração de ambientes isolados. Essa ferramente possibilita empacotar uma aplicação ou ambiente inteiro em um container tornando-o portável para qualquer host que tenha o docker instalado, ou seja, nada de “na minha maquina roda e não sua não”. Essa ferramenta foi escolhida pois reduz drasticamente o tempo de deploy de uma aplicação, possui uma portabilidade que permite uma aplicação ser facilmente executada em um ambiente de produção e homologação e ainda possui uma comunidade enorme, sempre ativa e de fácil acesso.
    • Git
      • Git é um sistema open source de controle de versão que facilita o desenvolvimento de projetos em grupo. Imagine um cenário em que duas pessoas estão desenvolvendo um mesmo projeto e cada uma altera uma parte do código. Para juntar essas duas partes sem o git seria terrível. Essa ferramenta é sem duvidas o que torna viável um projeto ter dezenas e até centenas de desenvolvedores trabalhando em um mesmo projeto. Nesse projeto utilizaremos o github como serviço web do git. Escolhemos o github pois é sem duvidas o maior deposito online de trabalho colaborativo do mundo o que indica que também é o que possui a maior comunidade ativa para estudos e duvidas.


  • Front-End
    • ReactJS
      • React é uma biblioteca Javascript declarativa, eficiente e flexível para a criação de interfaces de usuário (UI). O React foi escolhido para esse projeto pelo simples motivo de ser uma das ferramentas frontend mais usadas no mercado, portando é uma excelente oportunidade para quem está começando a carreira de engajar em uma tecnologia emergente.
    • Axios
      • Axios é uma biblioteca cujo proposito é simplesmente fazer requisições ajax (operações assíncronas) em nossa aplicação web. Essa biblioteca também permite fazer as mesmas requisições feitas em ajax no browser no servidor com o mesmo código, o que facilita na integração do frontend com o backend da nossa aplicação. O proposito da escolha dessa lib é que a mesma é muito pequena e leve alem de ter uma implementação muito simples e também possui compatibilidade com diversos browsers diferentes.


Materials to be used