andrerpena / cerebello Goto Github PK
View Code? Open in Web Editor NEWMedical practice administration system
Home Page: cerebellohq
Medical practice administration system
Home Page: cerebellohq
Hoje tem 2 programas que lidam com dados da anvisa, o Anvisa.Crawler e o Anvisa.Uploader
Esses programas precisam ser integrados ao Firestarter e deixar de existir independentemente
@masbicudo, quando a gente fez aquele refactoring que agora é o User que aponta para o Doctor e para o Secretary nós esquecemos de re-incluir o Identity (auto-increment) no PK desses tipos... Pq antes não precisava pq ele fazia referencia FK para outro PK que esse sim era Identity. Eu estou mudando isso no banco e fazendo pull
Link de esqueci a senha na tela de login.
Ao fazer o Lookup, usar como exemplo o código em MedicinesController.LookupMedications
O administrador do consultório, pode ser um médico ou um administrador de fato, deve ser capaz de adicionar novos usuários. Esses novos usuários devem ser capazes de efetuar login e utilizar o software
Para terminar isso eu estou tendo que incluir nos Mocks o Server.MapPath porque eu preciso acessar uns XMLs
Para reproduzir basta entrar no menu "Agenda", clicar em qualquer horário e depois alterar o horário para um horário inválido. Ele deveria mostrar a razão pela qual o horário é inválido
@masbicudo , na minha experiência com programação, eu acho que dividir a responsabilidade sobre o trabalho é útil no sentido de que nós somos capazes de "culpar" alguém quando algo dá errado. Tipo.. se nenhum de nós é explicitamente responsável por alguma coisa, é difícil determinar de quem é a culpa quando algo dá errado. Além disso, dividir a responsabilidade permite que um de nós se foque melhor em alguma coisa.. ficar dando "switches" entre uma coisa e outra causa que vc tenha que saber muitas coisas e diminui sua proficiência.
Eu não estou propondo uma divisão engessada de tarefas, isto é, não é porque eu sou responsável por alguma coisa que eu não me importo com a sua opinião e vice-versa. Nós somos um time, o que um de nós faz é interesse do outro e tudo deve ser discutido e acordado, definitivamente. E da mesma forma, nós podemos sim ajudar o outro a fazer o que é responsabilidade do outro quando for necessário. Não é tipo: "Isso é responsabilidade sua e eu vou não vou por a mão". Não é para ser engessado.
Sendo assim eu sugiro a seguinte divisão de responsabilidades: (é óbviu que vc pode argumentar e nós podemos discutir sobre isso)
Responsabilidades do André Pena:
Responsabilidades do Miguel Angelo:
Conclusão:
Como você pode perceber, eu estou propondo que o seu trabalho seja mais focado em desenvolvimento da aplicação em si enquanto eu cuido de todo o resto. Apesar de existirem mais ítens para mim, eles são claramente ítens menos complexos. As regras de negócio e testes unitários são extremamente mais complexos. Você também pode perceber que eu deixei os aspectos mais humanos para mim, como aparência, relacionamento com o usuário e etc.
Eu fiz essa proposta baseada em 2 coisas: Nossos perfis (você é mais técnico) e tempo. Como eu vou trabalhar nesse projeto depois de já ter trabalhado 8 horas no meu day-job é melhor que eu fique responsável por coisas que exigem mais tempo do que cérebro. Resolver um bug do software 21:00h depois do trabalho, para mim é bem mais complexo do que passar 2 horas escrevendo documentação, mexendo no estilo ou traduzindo.
Qual é a sua opinião?
Cara.. nós não conversamos sobre isso e você pode recusar ou argumentar sobre essa issue, mas eu estive pensando:
No botão de nova consulta que vai ter no layout do médico do lado da pesquisa global, seria extremamente interessante se ele já fosse para o próximo horário disponível, porque eu acho que 80% das consultas agendadas pela secretária (não retornos) são para o próximo horário disponível.
Isso também resolveria o problema da consulta depois de 30 dias.
O que você acha? (eu usei a tag Proposal porque isso está em aberto)
O login hoje está stub.. implementar o login corretamente até o final
Eu não sei exatamente como fazer isso mas eu sei que a forma de fazer as pesquisas serem accent-insensitive tem a ver com o collation do banco. Tem que consertar isso.
Ao invés de mudar o horário que o médico escolheu ao clicar num slot, o popup deve mostrar um erro de forma que o médico saiba que aquele horário que ele escolheu não é possível dadas as configurações
Eu detectei os seguintes problemas na agenda:
excluir consulta
dentro do popup de compromissos aparece escrito consulta mesmo quando é um compromisso genérico. Por mim, pode renomear simplesmente para "excluir", mas qualquer coisa que vc fizer nesse caso eu concordo.Criar a aba usuários, grid e tela de edição de usuários
Implementar até o final a parte de criação de criação de usuário e consultório
Adicionar a opções de marcar consulta com números de dias para frente
Ao tentar registrar um usuário novo pelo link "Login" do site, dá umas exceções.
Test Issue
A gente tem que permitir ao usuário, no momento da criação de uma consulta.. falar que aquilo não é uma consulta mas um "compromisso".. "Compromissos" aparecem diferente na agenda. O sistema dispara um warning quando se tenta salvar uma consulta junto com um compromisso mas permite.
A definição de um fuso para o consultório é necessária para que o sistema saiba que horas são no local em que o consultório está.
Um exemplo de como isso pode influenciar no resultado é o uso do código DateTime.Now
em vários lugares, como forma de saber a hora atual do usuário, o que está errado.
Portanto, essa issue consta também de localizar, analisar e alterar todos os lugares em que ocorre trafego de datas, seja como input
ou output
, e fazer as conversões usando o fuso-horário indicado pelo usuário, fazendo com que o valor do DateTime seja marcado como sendo UTC relativo ao servidor, ou Local relativo ao usuário.
Deve haver uma forma de logar diretamente no consultório sem passar pela tela de login convencional. A tela é igual porém o nome do consultório fica preenchido e disabled
Tem que implementar validação
Introduzir o Lookup na aplicação
A pesquisa global no topo da aplicação deveria ser um lookup para ter paginação
Introduzir o helper da Grid no sistema e substituir as Grids atuais por esses helpers.
Faça da forma mais simples por obséquio :)
Ao salvar um endereço, de um paciente por exemplo, e voltar pra visualizar o item inserido, todos os dados do endereço voltam menos a UF.
@masbicudo: Primeiro.. vc fez um bom trabalho na questão dos compromissos.. ficou muito legal! Eu testei várias situações, como criar e depois visualizar.. como vc lidou com a validação e etc. Ficou ótimo! \o/
Mas eu acho que vc mudou um comportamento sem antes falar comigo. Antes existiam 2 tipos de "warning" mostrados no painel embaixo (não o painel de validação). Tinha warnings dizendo que vc não deveria salvar naquele horário mas não reclamava se vc fizesse.. e tinha warnings que, se vc tentasse salvar, ia dar um erro real de validação (dos que aparecem no topo da tela).
Salvar uma consulta fora do horário de trabalho é impossível porque eu teria que redimensionar a semana pra mostrar 1 único compromisso. Isso é complexo. Mas salvar consultas em horários concomitantes não era um problema pra mim. O jQuery Full calendar lida muito bem com isso. Então eu deixava o usuário fazer isso. E isso faz sentido. Liga um paciente passando mal querendo marcar pra hoje. O médico autoriza e a secretária marca o horário dele junto com o de outro. Eles aparecem lado a lado na agenda compartilhando o horário. Isso funcionava antes.
O que você acha?
Deve haver um botão rápido de nova consulta no layout do médico do lado da caixa de pesquisa
Provavelmente ele deve tá tentando achar a Action responsável por isso no Controller errado
Não sei exatamente o que é o problema então vou descrever as circunstâncias:
São 22:55h agora, é obviamente depois do espediente do médico. Quando eu clico em "marcar retorno" na ficha de um paciente, o popup está vindo com o horário entre 17:30h e 18:00h de hoje selecionado. Além disso, o popup vem com um erro dizendo que aquele horário é no passado.
A questão é: O popup não pode sugerir um horário inválido, isso é um bug. Outra coisa a se pensar é qual a melhor data para sugerir um retorno.
Eu não sou médico mas eu diria que a melhor data para sugerir um retorno é 30 dias depois. Existem 2 situações:
O que vc acha?
Devido à funcionalidade "achar próxim horário válido". Deve existir uma forma de o usuário definir dias que não haverão expediente, tais como férias ou folgas do médico.
Um sistema de notificação é um sistema no qual um usuário do software é informado quando algo relevante acontece.. é equivalente ao sistema de notificações do GitHub e do Facebook. (lista de mensagens.. e mostra visualmente quando tem uma mensagem não lida)
Com relação ao médico, eu acho que ele deve ser notificado quando: (exemplos)
- Uma nova consulta é incluida pela secretária nas próximas 24 horas
- Uma consulta é remarcada/cancelada pela secretária nas próximas 48 horas.
- ... @masbicudo , dá uma dica ai
@masbicudo, o que vc acha? Acho que uma boa forma de atribuir essa tarefa é vc cuidar das actions e testes unitários e eu cuido do JS, CSS, o que vc me diz?
Hoje dá pra criar campos com os mesmos nomes dos campos pré-definidos. O único campo pré-definido hoje é paciente.
Outra coisa.. Essa tela é a menos intuitiva do software (não tem jeito) então tenho que incluir um helpzinho na própria tela pro usuário saber o que fazer, e saber também quais são os campos pré-definidos.
Porra Miguel.. de duas telas que vc fez que eu cliquei em "salvar" hoje.. as duas deram exceção.
Passos para reproduzir:
/p/consultoriodrhourse/users/edit/1
Exceção:
The ViewData item that has the key 'MedicalSpecialty' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.
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.