fablabjoinville / agenda-saude Goto Github PK
View Code? Open in Web Editor NEWSistema de agendamento de saúde, em uso para gerir filas de vacinação do COVID-19 e H1N1.
Home Page: https://agendasaude.joinville.br
License: MIT License
Sistema de agendamento de saúde, em uso para gerir filas de vacinação do COVID-19 e H1N1.
Home Page: https://agendasaude.joinville.br
License: MIT License
Adicionamos a tela de edição, mas a chamada set_main_ubs
que define uma UBS para o paciente não é chamada durante a edição, somente na criação.
Precisamos entender se é ok permitir que os pacientes editem esse campo a fim de "escolher" outras UBS, e cuidar para não fazer chamadas desnecessárias do set_main_ubs
já que ele escolhe uma UBS aleatória em certas situações.
As rotas ainda estão em inglês, traduzi-las pode melhorar a navegação dos usuários.
Exemplo, o trecho abaixo aparece em diversos lugares:
<div class="row text-center mt-5 mb-5">
<div class="col">
<small class="text-muted">Para mais informações sobre eventos de saúde da cidade, acesse:<br>
<a href="https://www.joinville.sc.gov.br/?post_type=evento&tag-tipo-evento=conscientizacao&s=">https://www.joinville.sc.gov.br/evento/conscientizacao/</a></small>
</div>
</div>
Poderia ser extraído para uma partial, assim como alguns alerts.
Retirar aviso de agendamento da tela do paciente após o horário de agendamento do mesmo
Por exemplo, não permitir que campos obrigatórios no model sejam nulos no banco e limitar o tamanho do CPF para 11 caracteres (garantir que sempre seja salvo sem formatação).
Hoje as validações estão somente no backend
Algumas specs estão travando (o rspec não consegue falhar e o teste e fica travado na spec em especifico):
Hoje o script populate.rb
é capaz de popular os bairros, mas não há nada automatizado para executá-lo local. Podemos adicionar isso na seed de alguma forma.
No momento não é possível selecionar uma opção no radio group clicando na label, apenas clicando no radio.
Transformar bairro em select
Possível abordagem: https://www.sitepoint.com/search-autocomplete-rails-apps/
Ao não selecionar nenhuma opção de "Nome da mãe" e clicar em entrar está contando como alternativa errada.
As a patient, if I was able to schedule and attend to my appointment, I shouldn't be able to click to Cancel and/or Reschedule my 1st appointment. This also loses the dose type the user took on their 1st appointment (Coronavac versus AstraZeneca).
Para facilitar com a integração com o data studio.
Hoje temos uma ação nesse controller que pega todos os slots de agendamento disponiveis. Provavelmente há alguma forma de simplificar essa requisição e tornar ela mais rápida para o usuário. Hoje o impacto está sendo que muitas vezes o servidor dá um timeout.
A complexidade dessa consulta é que as UBS's tem parâmetros de configuração como tempo da consulta, intervalo entre consultas e horário de funcionamento da UBS. Além disso, tem os próprios agendamentos que concorrem com essa lógica que mostra os agendamentos disponíveis.
Esse problema escalou com o aumento da disponibilidade de testes rápidos em Joinville nas últimas semanas.
Uma alternativa seria montar uma consulta pequena para o usuário e ir alimentando mais opções com o scroll (estilo dale ponto)
Adicionar uma mensagem de confirmação ao clicar em "Agendar" durante a escolha de horários.
Esse repositório que hoje chamamos de "Agenda Saúde" começou como um sistema de agendamento para vacinas, chamado "Vacina Joinville" na época.
Quando surgiu a demanda de criar um sistema de agendamento para testes rápidos de COVID, decidimos criar outra branch chamada master-covid
, para atender a demanda o mais rápido possível.
Basicamente, criamos dois sistemas, um sistema de agendamento de vacinas que é hospedado a partir da master
e outro sistema de agendamento de testes rápidos hospedado a partir da master-covid
Os dois sistemas tem propósitos diferentes e grandes diferenças em partes do código, porém, ainda sim compartilham boa parte do código.
Precisamos pensar em uma maneira melhor de lidar com a existência dos dois sistemas, pois quanto mais mudanças tem em cada sistema, mais difícil fica gerenciar o código compartilhado.
No longo prazo uma possibilidade é extrair o código compartilhado e criar uma solução "white-label" customizável.
No curto prazo uma possibilidade é separar em dois repositórios, mesmo que compartilhem bastante código.
O que acham?
In the event gap_days is "" (blank), check to see which day is free and land the user on that day.
No momento não é possível selecionar uma opção clicando no nome, apenas clicando no botão.
"É só botar um label lá que já resolve" - Lauro
Temos muitos lugares que repetem partes do html que poderíamos ter em partials do rails
Acredito que seria legal termos um README mais atrativo, contando brevemente a história do projeto e listando os contribuidores!
O atual não traz o contexto exato do projeto, podemos separar algumas especificações para a wiki como alternativa e deixar o README com os passos básicos iniciais.
temos essa issue também relacionada: #61
O arquivo database.yml
está usando variáveis de ambiente, logo o database.yml.example
é desnecessário.
Atualizar docker-compose para usar o database.yml
ao invés de database.yml.example
O objetivo aqui é tornar o acesso mais controlado
Além da Data de Nascimento, podemos incluir Telefone e Endereço anonimizados. Por exemplo:
Meu telefone é:
(4*) **9**-*2*1
O readme atual não traz o contexto exato do projeto, podemos separar algumas especificações para a wiki como alternativa e deixar o readme com os passos básicos iniciais.
A mensagem do Devise tá sendo exibida ao tentar logar quando já tem um paciente logado.
Passos para simular o erro:
As views de Devise são as únicas que utilizam i18n, mas definimos apenas algumas traduções presentes no fluxo mais comum. Precisamos revisar se há mais traduções faltando.
PG::ConnectionBad
FATAL: remaining connection slots are reserved for non-replication superuser connections
We can have less code by using standard resourceful routes instead of manually setting ones. We also should make use of link_to defined_path
instead of manually writting <a href="/define/<%= thing.id %>">
for instance.
Mesmo depois de gerar manualmente o database.yml (#81 ) e o docker-compose up, aparentemente, ser executado com sucesso, quando acesso http://localhost:3000/ recebo um
Não foi possível conectar
O Firefox não conseguiu estabelecer uma conexão com o servidor localhost:3000.
Segue saída do docker-compose up
$ sudo docker-compose up
Starting agenda-saude_postgres_1 ... done
Starting agenda-saude_web_1 ... done
Attaching to agenda-saude_postgres_1, agenda-saude_web_1
postgres_1 |
postgres_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_1 |
postgres_1 | 2020-10-07 01:28:29.849 UTC [1] LOG: starting PostgreSQL 12.1 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.2.0) 9.2.0, 64-bit
postgres_1 | 2020-10-07 01:28:29.849 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgres_1 | 2020-10-07 01:28:29.849 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgres_1 | 2020-10-07 01:28:29.916 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1 | 2020-10-07 01:28:31.068 UTC [20] LOG: database system was shut down at 2020-10-07 01:27:29 UTC
postgres_1 | 2020-10-07 01:28:31.193 UTC [1] LOG: database system is ready to accept connections
web_1 | => Booting Puma
web_1 | => Rails 6.0.2.2 application starting in development
web_1 | => Run `rails server --help` for more startup options
web_1 | [1] Puma starting in cluster mode...
web_1 | [1] * Version 4.3.5 (ruby 2.6.5-p114), codename: Mysterious Traveller
web_1 | [1] * Min threads: 5, max threads: 5
web_1 | [1] * Environment: development
web_1 | [1] * Process workers: 2
web_1 | [1] * Preloading application
web_1 | [1] * Listening on tcp://0.0.0.0:3000
web_1 | [1] Use Ctrl-C to stop
web_1 | [1] - Worker 0 (pid: 23) booted, phase: 0
web_1 | [1] - Worker 1 (pid: 28) booted, phase: 0
Mostrar mensagem ao submeter o CPF, ao invés de mostrar após escolher o nome da mãe.
Afinal não faz sentido pedir para o paciente colocar sua 'senha' (o nome da mãe) se já sabemos que o cpf está bloqueado.
Isso é importante pois eventualmente (e está ocorrendo) pacientes não preenchem o campo da mãe corretamente, e como este informação é utilizada como forma de autenticação, é necessário a possibilidade do paciente alterar esse campo.
Dar a opção para o operador alterar a quantidade de dias para frente que a unidade pode disponibilizar para agendamento (que hoje é fixo de 7 dias);
Extra: Considerar apenas os dias úteis.
Podemos investigar a possibilidade de usarmos essas alternativas:
A saída dessa issue pode ser uma PoC usando benchmarks demonstrando a melhora do use de CPU/memória
Temos 2 ocorrências de um erro que estouraram para o mesmo usuário. É possível que ele esteja com a data de nascimento incorreta no banco (devido ao problema de datas já consertado) que causa algum erro ao renderizar a nova seleção de datas.
Precisamos prever esse erro ou arrumar retroativamente as datas que ficaram erradas no banco.
Alguns controllers foram gerados automaticamente e podem ser removidos.
Aqui é preciso fazer um levantamento das partes da aplicação que não estão cobertas de testes do rspec ou do cypress.
A saída dessa issue pode ser a criação de issues menores explicando cada lugar que precisa ser coberto.
todos 😅
O código anterior utilizava o Raven, que foi removido (está deprecated). Verificar como adicionar contexto utilizando as novas gems (sentry-ruby
e sentry-rails
).
Supondo que o Paciente possa ter escrito seu telefone errado no cadastro, é importante que ele possa editar seus dados posteriormente.
Adicionar máscara nos campos de telefone e validação no backend. Aceitar somente formatos:
Na tela de "horário de funcionamento" não é possível alterar os horários quando a UBS está ativa, mas ainda permite que interaja com os selects.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.