{"id":15584484,"url":"https://github.com/thiagohrcosta/medcare","last_synced_at":"2026-04-07T08:32:11.998Z","repository":{"id":49159198,"uuid":"377000383","full_name":"thiagohrcosta/medcare","owner":"thiagohrcosta","description":"O objetivo do presente projeto foi desenvolver uma aplicação para uma clínica médica aqui denominada MedCare que permita ao usuário cadastrar médicos, pacientes e agendar consultas respeitando regras de negócio previamente determinadas pelo cliente.","archived":false,"fork":false,"pushed_at":"2021-06-25T19:00:37.000Z","size":362,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T08:45:27.453Z","etag":null,"topics":["bootstrap","css3","devise","html5","postgresql","ransack","ruby-on-rails","sass"],"latest_commit_sha":null,"homepage":"https://app-medcare.herokuapp.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiagohrcosta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-15T01:23:35.000Z","updated_at":"2022-10-09T14:03:07.000Z","dependencies_parsed_at":"2022-08-27T06:10:47.338Z","dependency_job_id":null,"html_url":"https://github.com/thiagohrcosta/medcare","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thiagohrcosta/medcare","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagohrcosta%2Fmedcare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagohrcosta%2Fmedcare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagohrcosta%2Fmedcare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagohrcosta%2Fmedcare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiagohrcosta","download_url":"https://codeload.github.com/thiagohrcosta/medcare/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagohrcosta%2Fmedcare/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31506562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","css3","devise","html5","postgresql","ransack","ruby-on-rails","sass"],"created_at":"2024-10-02T20:41:23.155Z","updated_at":"2026-04-07T08:32:11.972Z","avatar_url":"https://github.com/thiagohrcosta.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"## MedCare\n![enter image description here](https://res.cloudinary.com/dloadb2bx/image/upload/v1623961275/medcare1_gnbsd6.png)\nO objetivo do presente projeto foi desenvolver uma aplicação para uma clínica médica aqui denominada **MedCare** que permita ao usuário cadastrar médicos, pacientes e agendar consultas respeitando **regras de negócio** previamente determinadas pelo cliente.\n\nAcesse a aplicação diretamente no Heroku [clicando aqui](https://app-medcare.herokuapp.com/):\n\nNão foi adicionada qualquer restrição ao usuário no Heroku, assim basta criar uma conta para acessar e testar a aplicação, caso queira usar uma já criada os dados de acesso seguem abaixo:\n\n - Login: admin@admin.com\n - senha: 123456\n\n## Tecnologias utilizadas\n\u003cimg alt=\"Ruby\" src=\"https://img.shields.io/badge/ruby-%23CC342D.svg?style=for-the-badge\u0026logo=ruby\u0026logoColor=white\"/\u003e \u003cimg alt=\"Rails\" src=\"https://img.shields.io/badge/rails-%23CC0000.svg?style=for-the-badge\u0026logo=ruby-on-rails\u0026logoColor=white\"/\u003e \u003cimg alt=\"HTML5\" src=\"https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge\u0026logo=html5\u0026logoColor=white\"/\u003e \u003cimg alt=\"CSS3\" src=\"https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge\u0026logo=css3\u0026logoColor=white\"/\u003e \u003cimg alt=\"SASS\" src=\"https://img.shields.io/badge/SASS-hotpink.svg?style=for-the-badge\u0026logo=SASS\u0026logoColor=white\"/\u003e \u003cimg alt=\"Bootstrap\" src=\"https://img.shields.io/badge/bootstrap-%23563D7C.svg?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\"/\u003e \u003cimg alt=\"Postgres\" src =\"https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"/\u003e\n\n### Gems utilizadas\n - [Devise](https://github.com/heartcombo/devise) - Autenticação de usuário\n - [Simple_Form](https://github.com/heartcombo/simple_form)\n -  [Ransack](https://github.com/activerecord-hackery/ransack) - Filtros avançados\n - [Cpf_Cnpj](https://github.com/fnando/cpf_cnpj) - Geração de CPFs\n - [Validators](https://github.com/fnando/validators) - Validação de CPF\n - [Rspec](https://github.com/rspec/rspec) - Testes\n - [Shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) - Testes\n\n\n### Versões\n - Ruby - 2.6.6\n - Rails - Rails 6.1.3.2\n- PostgreSQL -  12.7\n\n## Modelagem do Banco de Dados\n![db](https://res.cloudinary.com/dloadb2bx/image/upload/v1623963141/medcaredb_hjiazf.png)\n\n## O que o usuário pode fazer?\n\n### Tela do médico\nA partir do menu **médicos** o **usuário** pode cadastrar um novo médico respeitando a regra de negócio exigida pelo cliente.\n![Med1](https://res.cloudinary.com/dloadb2bx/image/upload/v1623951654/medCare2_eb4zut.gif)\n\n### Edição e Exclusão de médico\nNo menu lateral esquerdo é possível acessar a página de listagem de todos os médicos cadastrados no sistema, podendo editar ou excluir um determinado médico. Como **regra de negócio** não será possível excluir um médico caso este tenha consultas agendadas. Consultas só podem ser agendadas se houver prévia indicação de médico e paciente.\n\n### Cadastrar novo paciente\n![Med2](https://res.cloudinary.com/dloadb2bx/image/upload/v1623949079/medCare3_thkj8r.png)\nJá na tela de paciente o **usuário** poderá cadastrar um novo paciente atentando-se ao fato de que **é exigido um CPF válido** pela aplicação.\nCaso não possua um CPF para utilizar no cadastro **foi disponibilizado um gerador de CPF** dentro da aplicação de forma a permitir testes.\n![Med3](https://res.cloudinary.com/dloadb2bx/image/upload/v1623949194/medCarecpf_klvbx0.png)\n\nPara acessar abra o terminal na pasta do arquivo e rode `rails c`, em seguida digite o comando `CPF.generate` para gerar um número válido, em seguida utilize-o para cadastrar na aplicação.\n\n### Editar ou excluir paciente\n![Med4](https://res.cloudinary.com/dloadb2bx/image/upload/v1623950394/medCare7_bgfzdk.png)\nTambém foi adicionada tela onde é possível que o **usuário** possa editar e excluir um determinado paciente\n\n### Agendar nova consulta\n![Med5](https://res.cloudinary.com/dloadb2bx/image/upload/v1623949363/medCare4_niciwy.png)\nRespeitando a **regra de negócio** foi disponibilizada uma tela de agendamento de consultas onde o **usuário** poderá selecionar o paciente e o médico previamente cadastrados no sistema e agendar a data e horário de início da consulta. O **horário de término será automaticamente determinado** a partir do horário de início.\n\n# Filtrar médico - Dashboard\nUma das principais **regras de negício** era permitir que o **usuário** fosse capaz de filtrar médicos por nome, sendo o filtro inicial aquele que lista todos os médicos.\n![Med6](https://res.cloudinary.com/dloadb2bx/image/upload/v1623951440/medCare_i31pcs.gif)\n Ao clicar em um determinado médico dados específicos serão gerados em tela, tais como a **total de consultas realizadas pelo médico** já realizada por este médico e quantos **pacientes únicos atendidos** foram atendidos por ele.\n\n# Testes - Rspec\nPara a realização dos testes foi utilziado o **Rspec** sendo criados 24 testes.\n![Rspec](https://res.cloudinary.com/dloadb2bx/image/upload/v1623950824/medCareTest_mqvqsg.png)\n\nPara rodar os testes acesse a pasta do arquivo pelo terminal e rode o compando `rspec spec/models`.\n\n# Como rodar o projeto?\nCaso você já tenha instalado o Ruby on Rails nas versões apontadas no início, após efetuar o download do projeto é necessário rodar os seguintes comandos dentro da pasta do arquivo:\n\n-   yarn install;\n-  bundle install;\n\nEm seguida para iniciar o banco de dados é necessário rodar os seguintes comandos:\n\n-   rails db:create (caso o banco de dados não esteja criado);\n-   rails db:migrante (para implementar as migrações no bando de dados);\n\nPersistindo erros relacionados ao banco de dados rode no terminal o comando  `rails db:reset`. Ao final rode o comando `rails s`  para iniciar a aplicação em `localhost:3000`.\n\n# Etapas de desenvolvimento\n**14 de junho, 2021**\n\n     - Projeto criado em Rails;\n     - Model Doctor criado;\n     - Model Patient criado;\n     - Model Appointment criado;\n     - Controllers Doctor criado;\n     - Controllers Patient criado;\n     - Controllers Appointment criado;\n     - Relacionamento entre Models adicionado;\n     - Ações em Doctors Controller adicionadas;\n     - Rspec gem adicionada;\n     - Shoulda-matchers gem adcionada;\n     - Testes adicionados para Doctor com Rspec;\n     - Devise gem adicionada;\n     - Devise views adicionadas.\n\n**15 de junho, 2021**\n\n    - Devise adicionado para autenticação na Home Page;\n    - Página de Login adicionada;\n    - Dashboard inicial completo;\n    - Simple Form For adicionado;\n    - HTML e CSS para adicionar novos médicos implementado;\n    - Redirecionamento de rotas Dashboard e Doctors;\n    - Adicionando Doctors e botões para editar e apagar;\n    - Método para apagar médico adicionado;\n    - Método para editar médico adicionado;\n    - Restrição para remover médico com agendamento marcado implementada;\n    - Adicionado Pacientes ao Dash;\n    - Adicionado rotas doctors e patients;\n    - Tela de criação de pacientes completa;\n    - Testes adicionados para Patients com Rspec;\n    - Adicionado path para editar paciente;\n    - Ações para edição e update de paciente criadas no controller;\n    - Rota appointment adicionada;\n    - Redirecionamento de rotas do Appointment no Dashboard;\n    - Adicionada view para Appointment;\n    - Ações em Appointment controller adicionadas;\n    - Validações adicionadas em Appointment;\n    - Validações para evitar agendamento no mesmo horário implementada;\n    - Favicon adicionado;\n    - Adicionado contador de agendamentos e pacientes únicos.\n\n**16 de junho, 2021**\n\n    - Rotas refatoradas para method: delete;\n    - Filtro adicionado com Ransack gem;\n    - Adicionada soma de agendamentos por médico;\n    - Adicionada soma de pacientes únicos atendidos por médico;\n    - CSS adicionado ao filtro;\n    - CSS adicionado para as tabelas;\n    - Adicionados testes para validar CRM;\n    - Adicionados testes para validar CRM_UF;\n    - Adicionados testes para Appointment com Rspec;\n\n**17 de junho, 2021**\n\n    - Correção na apresentação e formatação da data;\n    - Define que ends_at será obrigatoriamente 30 minutos após starts_at;\n    - Validação de CPF completa;\n    - Testes para verificar validação de CPF completos;\n    - Adicionada validação para horário de abertura, almoço e fechamento;\n    - Adicionado About Us na Home Page;\n    - Adicionado Footer na Home Page;\n    - Adicionado CSS para Sign up e Forgot Password;\n    - Adicionado Readme.\n\n**19 de junho, 2021**\n\n    - Adicionada variávies de cores ao CSS;\n    - Refatoramento de nomeclaturas;\n    - Refatoramento do model para se tormar mais \"Dry\";\n    - Bug em testes corrigido para suportar validação customizada;\n    - Agendamentos listados por data;\n    - Filtro para selecionar médicos adicionado ao index de médicos;\n    - Adicionada responsividade para Home Page;\n    - Padronização de quotes.\n\n**20 de junho, 2021**\n\n    - Adicionando campo \"listar todos os médicos\";\n    - Adicionada view para editar appointment;\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagohrcosta%2Fmedcare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiagohrcosta%2Fmedcare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagohrcosta%2Fmedcare/lists"}