| Linha 126: | Linha 126: | ||
**RF14: Gerar histórico: '''A definir''' | **RF14: Gerar histórico: '''A definir''' | ||
***Gerar histórico por paciente | ***Gerar histórico por paciente | ||
*Frontend | |||
**Incorporar Dashboard | |||
***Fazer a incorporação dos gráficos gerados pelo Google DataStudio no sistema | |||
= Rascunho = | = Rascunho = | ||
Edição das 11h25min de 28 de outubro de 2020
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
- Dr André Miguel Japiassú
- 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
- João Victor - UFU
- Apresentação inicial:
- 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
- CRUD completo: campos -> nome, email, senha, confirmarSenha, matrícula, tipoUsuario
- RF02: Autenticar usuário: Gabriel
- Verificação de usuário e senha
- Login via email
- Verificação de usuário e senha
- RF03: Alimentar prontuários:
BrunoHendrik.- CRUD completo de Prontuários
CRUD completo de Histórico.- Implementar Desfecho (alta ou óbito)
- RF04: Avaliação - Hendrik
- CRUD completo
- Paginação de avaliação de paciente quando mostrar dados paciente
- CRUD completo
- 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
- CRUD - d
- 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
- CRUD -d
- RF07: Proteger API com protocolo OAuth:
AndréHendrik- Evitar acesso de outros usuários à API
- RF08: Notificar aprovadores:
BrunoGabriel- 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: Antônio
- Fazer backend para CRUD de paciente
- RF12: Cadastro Microbiologia: João Victor
- RF01: Cadastrar usuário: Gabriel
- Frontend
- RF11: Criar tela de login
- RF12: Criar tela de cadastro de usuário
- RF13: Criar tela Home
- RF14: Criar tela de prontuário
- CRUD completo para prontuário
- RF15: Criar tela de medicamentos:
- CRUD -d para listagem de medicamentos
- RF16: Criar tela de doenças
- CRUD -d para listagem de doenças
- RF17: Mostrar dashboard
- Paginação entre os diversos gráficos. Integração de dados com a API REST do backend
- RF18: Mostrar Notificações
- Criacao de tela para exibição de notificações; Integração com API REST
- RF19: Criar easter egg
- RF20: Progressão de pacientes
Requisitos Funcionais - Fase II
- Backend
- RF10: Gerar dashboard: A definir
- Visualização
- Disponibilização de dados para apresentação no Google DataStudio
- RF13: PDF CCIH: A definir
- RF14: Gerar histórico: A definir
- Gerar histórico por paciente
- RF10: Gerar dashboard: A definir
- Frontend
- Incorporar Dashboard
- Fazer a incorporação dos gráficos gerados pelo Google DataStudio no sistema
- Incorporar Dashboard
Rascunho
Fazer backend para cadastro de pacienteRefazer backend para historico de pacienteRefazer 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
Desenvolvimento
- Responsáveis
| RF | Responsável | Data prevista de entrega |
|---|---|---|
| RF01 | Gabriel Bernardi | 28/06/2020 |
| RF02 | Gabriel Bernardi | 02/07/2020 |
| RF03 | Bruno Sinhoroto | 06/07/2020 |
| RF04 | Antônio Pedro | - |
| RF05 | André Argel | 06/07/2020 |
| RF06 | Antônio Pedro | 28/06/2020 |
| RF07 | André Argel | 02/07/2020 |
| RF08 | Gabriel Bernardi | 02/07/2020 |
| RF09 | André Argel | 02/07/2020 |
| RF10 | - | - |
| RF11 | Gabriel Bernardi | 25/06/2020 |
| RF12 | Gabriel Bernardi | 25/06/2020 |
| RF13 | Gabriel Bernardi | 25/06/2020 |
| RF14 | Bruno Sinhoroto | 13/07/2020 |
| RF15 | André Argel | 20/07/2020 |
| RF16 | Antônio Pedro | 10/07/2020 |
| RF17 | - | - |
| RF18 | Gabriel Bernardi | 02/07/2020 |
| RF19 | - | - |
| RF20 | - | - |
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.
- MySql
- 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.
- ReactJS
Materials to be used
- Back-End
- MySql
- W3Schools (English): https://www.w3schools.com/sql/default.asp
- MySQL Tutorial (English): https://www.mysqltutorial.org/basic-mysql-tutorial.aspx
- TutorialsPonit (English): https://www.tutorialspoint.com/mysql/mysql-administration.htm
- Curso em Vídeo (Portuguese): https://www.youtube.com/playlist?list=PLHz_AreHm4dkBs-795Dsgvau_ekxg8g1r
- NodeJS
- W3Schools (English): https://www.w3schools.com/nodejs/default.asp
- NodeJS official documentation (English): https://nodejs.org/en/docs/guides/
- API NodeJS (Portuguese): https://www.youtube.com/playlist?list=PL85ITvJ7FLoiXVwHXeOsOuVppGbBzo2dp
- Observation: Although the database it's be MongoDB, it's worth getting sense of how to build an API
- ORM (Sequelize)
- This tool should to be used with NodeJS and relational Database.
- Sequelize official documentation (English): https://sequelize.org/
- Configurando o Sequelize no NodeJS com o ExpressJS (Portuguese): https://blog.rocketseat.com.br/nodejs-express-sequelize/
- ExpressJS
- Official guide for ExpressJS (English): https://expressjs.com/en/guide/routing.html
- Medium: Setup a REST API with Sequelize and ExpressJS (English): https://medium.com/valtech-ch/setup-a-rest-api-with-sequelize-and-express-js-fae06d08c0a7
- Buildin a REST API with MySQL, NodeJS and ExpressJS (English): https://bezkoder.com/node-js-rest-api-express-mysql/
- Creating RESTful CRUD API with MySQL, NodeJS and ExpressJS (English): https://www.tutsmake.com/node-express-js-creating-a-restful-crud-api-with-mysql/
- BCrypt
- NPM documentation for NodeJS (English): https://www.npmjs.com/package/bcrypt
- Wikipedia article of BCrypt (English): https://en.wikipedia.org/wiki/Bcrypt
- JWT
- An implementation of Json Web Token for NodeJS (English): https://www.npmjs.com/package/jsonwebtoken
- A simple version of Json Web Token (English): https://www.npmjs.com/package/jwt-simple
- Official website and online tester for created Tokens (English): https://jwt.io/
- Docker
- Git
- Don't be afraid to commit (English): https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html
- Create repository and learn more of GitHub (English): https://guides.github.com/activities/hello-world/
- Add multiple files at same time on Git (English): https://stackoverflow.com/questions/19576116/how-to-add-multiple-files-to-git-at-the-same-time
- MySql
- Front-End
- ReactJS
- ReactJS official tutorial (Portuguese and English): https://pt-br.reactjs.org/tutorial/tutorial.html
- Rocketseat playlist to learn ReactJS (Portuguese): https://www.youtube.com/playlist?list=PL85ITvJ7FLoiuaKgHFYgrhZDwXOUEaxWI
- Axios
- NPM documentation for axios library (English): https://www.npmjs.com/package/axios
- Github page for axios (English): https://github.com/axios/axios
- Using axios with React (English): https://alligator.io/react/axios-react/
- Making requests for API through axios (Portuguese): https://www.youtube.com/watch?v=d7bKeG9hb-0
- ReactJS