O APP Doctor é uma aplicação web desenvolvida para auxiliar os médicos na criação de receituários e prontuários. Aos pacientes serão enviadas informações de cadastro, para visualização de suas consultas agendadas, e de seus receituários.
Desenvolvimento de uma solução útil para clínicas médicas.
Requisitos:
- Utilizar arquitetura de microsserviços, com NodeJS;
- Dois microsserviços, com barramento de eventos e comunicação assíncrona;
- O Front End deverá ser uma aplicação Angular;
- O Front End deverá dar acesso gráfico às funcionalidades providas pelo Back End;
- A comunicação entre Back End e Front End deve ser feita via requisições HTTP.
Video: Youtube
Slide: Docs
Alice Lucia da Silva RA: 821157071
Giovanne Henrique Vieira da Silva RA: 821149648
Hélio Haruo Takamori Sugano RA: 821137022
José Carlos Ferreira Silva Neto RA: 822159018
Kassio Mateus de Amorim RA: 82011745
Nathalia Julia Pereira RA: 820277511
Vinicius de Souza Alves RA: 820272024
- NodeJS >= 14.0.0
- AngularJS 14
- PostgreSQL
- MongoDB
- RabbitMQ
- Docker
- Docker Compose
Algumas bibliotecas que são utilizadas pelo gerenciador de pacote NPM.
frontend
login
- nodemon;
- amqplib;
- bcryptjs;
- html-pdf;
- ejs;
- cors;
- dotenv;
- express;
- jsonwebtoken;
- mongodb;
- mongoose;
- morgan;
- eslint-friendly-formatter;
- eslint-plugin-html;
- eslint;
- eslint-config-airbnb-base;
- eslint-plugin-import.
sistema
- nodemon;
- amqplib;
- html-pdf;
- ejs;
- cors;
- dotenv;
- express;
- morgan;
- multer;
- pg;
- pg-hstore;
- sequelize;
- sequelize-cli.
- eslint-friendly-formatter;
- eslint-plugin-html;
- eslint;
- eslint-config-airbnb-base;
- eslint-plugin-import.
barramento
- nodemon;
- amqplib;
- cors;
- dotenv;
- express;
- morgan;
- nodemailer;
- googleapis;
- google-auth-library;
- @google-cloud/local-auth;
- eslint-friendly-formatter;
- eslint-plugin-html;
- eslint;
- eslint-config-airbnb-base;
- eslint-plugin-import.
$ git clone https://github.com/haruoSugano/app-doctor.git
ou (SSH)
$ git clone [email protected]:haruoSugano/app-doctor.git
Utilizar o RabbitMQ de forma local é necessário descomentar o seguinte trecho do arquivo docker-compose.yml:
rabbitmq:
image: rabbitmq:3.8-management-alpine
container_name: 'rabbitmq'
ports:
- 5672:5672
- 15672:15672
volumes:
- ~/.docker/rabbitmq/data/:/var/lib/rabbitmq/
- ~/.docker/rabbitmq/log/:/var/log/rabbitmq
networks:
- rabbitmq_go_net
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
restart: alwaysnetworks:
rabbitmq_go_net:
driver: bridgeNa pasta princiapl app-doctor inicie o docker-compose
$ docker-compose up
Na pasta app-doctor, entre no diretório e renomeie o arquivo .env.dist para .env após isso, configure as varáveis.
Exemplo
login
MONGODB_URL=mongodb://<USER>:<PASSWORD>@localhost:27017/?authMechanism=DEFAULT
PORT=<PORT>
SECRET=<HASH>
EMAIL=
# URI=<amqp://> rabbitmq local
CLOUD_AMQP=<amqps://> #rabbitmq cloudsistema
DB_HOST=<LOCALHOST-URL>
POSTGRES_USER=<USER>
POSTGRES_PASSWORD=<PASSWORD>
PGDATA=<NAME_DATABASE>
DB_PORT=<PORT_DATABASE>
PORT=<PORT_LOCALHOST>
# URI=<amqp://> rabbitmq local
CLOUD_AMQP=<amqps://> #rabbitmq cloudbarramento
EMAIL=<Seu email>
PORT_EMAIL=<ex: 465>
SMTP=<smtp.email.com>
PORT=<porta_local> #porta local
# URI=<amqp://> rabbitmq
CLOUD_AMQP=<amqps://> #rabbitmqAcessar a pasta barramento
Renomear o arquivo credentials.json.dis removendo o .dist.
Como configurar
Abrir o primeiro terminal
Navegue até a pasta frontend
$ cd frontend
Digite o comando:
$ npm install
Abrir o segundo terminal
Navegue até a pasta login
$ cd backend/api/login
Digite o comando:
$ npm install
Abrir o terceiro terminal
Navegue até a pasta sistema
$ cd backend/api/sistema
Digite o comando:
$ npm install
Configurando o banco de dados PostgreSQL
$ npx sequelize db:create
$ npx sequelize db:migrate
Abrir o quarto terminal
Navegue até a pasta barramento
$ cd backend/api/barramento
Digite o comando:
$ npm install
frontend
$ npm start
login
$ npm start
sistema
$ npm start
barramento
$ npm start
No sistema operacional Windows é necessário fazer algumas mudanças:
atestadaMail e receituarioMail
let arquivo_pdf = pdf.split("/");Troque a barra para
let arquivo_pdf = pdf.split("\\");