/psic-connect-api

Projeto final para o curso de back end da {Reprograma}. Trata-se de uma API que permite conectar psicólogos (voluntários) com pacientes ( em situação de vulnerabilidade social) e tornar o acompanhamento psicológico mais acessível à comunidade.

Primary LanguageJavaScript


Projeto Final {Reprograma}





💻 Sobre o Projeto


API desenvolvida como Projeto Final com o auxílio da professora Mayhhara Morais para a conclusão do curso de Backend 2022.1 | On16 {Reprograma}

Refletindo a Psicologia como esse instrumento de transformação que observa fatores subjetivos, emocionais, históricos e das condições de vida dos sujeitos como determinantes dos quadros de saúde da população. E também em como foi exorbitante a explosão da demanda por saúde mental somatizada a um grande processo de empobrecimento da população brasileira, na atualidade.

Pensando então de que forma tornar mais acessível o atendimento psicológico para a comunidade, nasceu a ideia dessa API [ Psic.connect ] que tem como objetivo principal o de conectar pessoas em situação de vulnerabilidade sócio-econômica com psicólogos que se dispõem a atender voluntariamente essas pessoas, de forma solidária.

Com o pensamento no futuro próximo de tornar-se um projeto grande e viável para a criação de um espaço seguro, que essas pessoas em situação de vulnerabilidade social possam ter o acompanhamento psicológico adequado, além de algumas implementações futuras como implatação do código de Front-end.



🚀 Descrição API - Psic.connect


Nossa API, irá consistir em dois cadastros diferentes, o de paciente e o de psicólogo ( usuários: Pacient ou Volunteer) , e ao fazer login( passando por uma autenticação via Token) o paciente terá acesso a uma lista de psicólogos cadastrados disponíveis, e ao fazer login o psicólogo poderá pesquisar por pacientes cadastrados, estabelecendo contato entre os dois lados por meio de email/número de contato. Também podendo, ao fazer login atualizar os seus dados de cadastro(como por exemplo atualizar o campo de disponibilidade de horários/dias), além de deletar seu cadastro da plataforma.

A interface é um CRUD completo integrado com o banco de dados, onde é possível listar os usuários, tanto que precisam de tratamento e psicólogos que possam proporcionar este acompanhamento de forma voluntária, cadastrar novos usuários, atualizar os dados e deletar o cadastro do usuário. Tudo isso passando por uma autenticação, gerando um token que permite ou não o acesso as pessoas que estarão no sistema.

🔗 Aplicação disponível



🔗 Documentação disponível


🔗 Apresentação do Projeto


⚙️ Funcionalidades/Objetivos

  • O schema do Pacient deve possuir os seguintes campos: id (autogerado), nome, idade, estado, identidade de gênero, etnia, renda média mensal (medido por salário mínimo), email, número de contato, ocupação, disponibilidade, se já está em atendimento e resumo descritivo da motivação para busca de tratamento psicológico;
  • O schema do Volunteer deve possuir os seguintes campos: id (autogerado), nome, idade, estado, identidade de gênero, etnia, CRP, email, número de contato, disponibilidade, se ainda está disponível e resumo sobre sua experiência clínica;
  • A API deve permitir o cadastro de usuários Pacient e Volunteer;
  • A API deve permitir a visualização das listas de Pacients e Volunteer disponíveis
  • A API deve permitir atualização de dados nos dois tipos de cadastros;
  • A API deve permitir a exclusão de cadastro dos Pacient e Volunteer do banco de dados.
  • Criação de usuário e login para o usuário Pacient com acesso a lista de psicólogos cadastrados com status disponível ;
  • Criação de usuário e login para o usuário Volunteer com acesso a lista de pessoas cadastradas no aguardo de atendimento. E acesso privado à dados de triagem dos pacientes

📚 Aprendizados

O projeto final consiste em uma API fundamentada no CRUD, que são: CREATE (CRIAR), READ(LER-CONSULTA), UPDATE(ATUALIZAR) e DELETE(DELETAR).


🛠️ Tecnologias utilizadas


Para a construção do projeto, as seguintes tecnologias foram utilizadas:


🛠️ Pacotes Utilizados


Para o desenvolvimento da API, as seguintes bibliotecas foram necessárias:


💻 Instalação


# Clonar o repositório
$ git clone https://github.com/beatriz-a-ndrade/psic-connect-api

# Entrar na pasta do repositório
$ cd psic-connect-api

# Instalar as dependências
$ npm install

# Executar o servidor
$ npm start

📁 Arquitetura MVC


 📁PSIC-CONNECT-API
   |
   |--📁public\imagens
   |   |- 📄 logoProjeto.jpg
   |
   |--📁node_modules
   |
   |--📁 src
   |  ||
   |  ||--📁 controller
   |  |    |- 📄 pacientController.js
   |  |    |- 📄 volunteerController.js   
   |  |    |- 📄 autenticacao.js
   |  |    
   |  ||--📁 database
   |  |    |- 📄 mongooseConnect.js
   |  |
   |  ||--📁 models
   |  |    |- 📄 pacientModel.js
   |  |    |- 📄 volunteerModel.js
   |  |
   |  ||--📁 routes
   |  |    |- 📄 index.js
   |  |    |- 📄 pacientRoutes.js
   |  |    |- 📄 volunteerRoutes.js
   |  |
   |  ||-📄 app.js
   |  |
   |  |--📁 swagger
   |  |   |- 📄 swagger_output.json
   |  |
   |  |--📁 test
   |  |   |- 📄 pacient.test.js
   |  |   |- 📄 volunteer.test.js
   |  |
   |- 📄 .env
   |- 📄 .env.example
   |- 📄 .eslintrc.json
   |- 📄 .gitignore
   |- 📄 package-lock.json
   |- 📄 package.json
   |- 📄 Procfile
   |- 📄 README.md
   |- 📄 server.js
   |- 📄 swagger.js


🔃 Rotas


🔃 Retorna a documentação no swagger

Swagger - Heroku

Método HTTP Endpoint Descrição
GET /rota-document documentação swagger

🔃 Retorna teste com apresentação

Método HTTP Endpoint Descrição
GET / Mensagem de apresentação ( Index )

🔃 Manipulação das Rotas de Cadastro e Login dos usuários Pacient e Volunteer


Método HTTP Endpoint Descrição
POST /pacient/create Cadastra novo usuário Pacient
POST /pacient/login Realiza o login Pacient com email e senha
POST /volunteer/create Cria/cadastra um novo usuário Volunteer
POST /volunteer/login Realiza o login Volunteer com CRP e senha

🔃 Manipulação das Rotas para o Login do usuário Pacient

Método HTTP Endpoint Descrição
GET /volunteer/list Retorna lista de todos profissionais da psicologia cadastrados no banco de dados
GET /volunteer/list/on Retorna todos psicólogos voluntários cadastrados que estão disponíveis para atendimento
GET /volunteer/find/:id Retorna todos dados de cadastro de um voluntário em específico
PATCH /pacient/update/:id Atualiza/modifica dados específicos do cadastro Pacient
DELETE /pacient/delete/:id Deleta um usuário Pacient do sistema

🔃 Manipulação das Rotas para o login do usuário Volunteer


Método HTTP Endpoint Descrição
GET /pacient/list Retorna lista de todos cadastrados como usuário pacient no banco de dados
GET /pacient/list/on Retorna lista de todos pacientes que ainda não conseguiram iniciar o acompanhamento com algum psicólogo cadastrado no sistema
GET /pacient/triage/:id Retorna informações pessoais e sensíveis dos pacientes que possam contribuir em um processo de triagem por parte do Psicólogo ( Rota segura )
PATCH /volunteer/update/:id Atualiza/modifica dados específicos do cadastro Volunteer
DELETE /volunteer/delete/:id Deleta um usuário Volunteer do sistema

✅ Schema Pacients


✅ API deve retornar seguinte JSON:

{
    "nome": "Beatriz Ribeiro de Andrade",
    "idade": 27,
    "estadocidade": "Montanhas Doces, XX",
    "idgenero": "ela",
    "etnia": "branca",
    "rendamedia": 300,
    "email": "arrobateste@reprograma.com",
    "contato": 9988776622,
    "motivacao": "Vontade de chorar toda hora",
    "jaconseguiuatendimento": false,
    "tempoespera": 20,
    "disponibilidade": "quinta-feiras à tarde",
    "ocupacao": "artista plástica",
    "senha": "$2b$10$b7Q0IoTqkYnp1TaiFSN3eOtrEeOHGUKsUINaPnwBOS7Eod1.X3YYK",
    "_id": "62d9d75c0a63eee9f39fc12a",
    "createdAt": "2022-07-21T22:46:52.819Z",
    "updatedAt": "2022-07-21T22:46:52.819Z",
    "__v": 0
}

✅ SchemaVolunteer

  • id: gerado automaticamente
  • nome: String e obrigatório
  • idade: Number e obrigatório
  • estadocidade: String e obrigatório
  • idgenero: String e opcional
  • etnia: String e opcional
  • crp: String, obrigatório e único
  • contato: Number, obrigatório e único
  • experienciaclinica: String e obrigatório
  • disponibilidade: String e obrigatório
  • disponivel: Boolean e obrigatório
  • senha: String e obrigatório

✅ API deve retornar seguinte JSON:

{
 
    "nome": "Severino de Qualquer Um",
    "idade": 34,
    "estadocidade": "Montanhas Salgadas, ZZ",
    "idgenero": "ele",
    "etnia": "negro",
    "CRP": 12384372,
    "email": "arrobateste7@reprograma.com",
    "contato": 9988776622,
    "experienciaclinica": "2 anos de experiencia atuando em ongs e etc e tal",
    "disponibilidade": "segundas e terças a tarde",
    "disponivel": true,
    "senha": "$2b$10$zAB9p/9FovzwdmWbLyN72udvCq6vjM3201nQxYgEBb04LSx3y.rwG",
    "_id": "62d9db6c9b6fba79038bcd98",
    "createdAt": "2022-07-21T23:04:12.265Z",
    "updatedAt": "2022-07-21T23:04:12.265Z",
    "__v": 0
}
    


🔃 [ POST ] : Login para geração de Token


🔃 Login Pacient

{
   "email": "arrobateste@reprograma.com",
   "senha": "abacaxiazedo123"
}

🔃 Login Volunteer

{
   "crp": "XXXX.XX-XX",
   "senha": "abacaxidoce123"
}

🚧 Implementações futuras (Em andamento)


  • Implantação de código Front-end. Para o usuário ter a interação visual
  • Funcionalidade de apenas permitir cadastro de psicólogos com CRP ativo (autenticação da validade do documento)
  • Acrescentar ao banco de dados, uma requisição que salva o Id de quem está logado, para ser uma plataforma mais segura
  • Implementar rotas GET para otimizar a dinâmica de buscas, e elementos como tags que categorizam e otimizam a experiência de busca da plataforma

🛠️ Contribua para o nosso projeto!

1. Forkar o projeto

2. Criar uma branch para realizar suas alterações: git checkout -b feature/nome-da-nova-branch

3. Commitar as modificações feitas e abrir um pull request



👨‍💻 Autora


Foto de Perfil de Beatriz

Desenvolvido por

logo da reprograma