Agenda do Médico — Definição (v1.2)

Documentos desta funcionalidade: 01 - Definição (v1.2) · Especificação (Seção 2): pendente — aguardando decisão sobre o formato de visualização (lista ou grade) e confirmação de RN-AGM-010, ver Seção “Próximos passos” · Protótipo (Seção 3): pendente · Mapeamento de Banco de Dados (Seção 4): pendente.


SEÇÃO 1 — DEFINIÇÃO

Objetivo

Dar ao médico uma visão ampla e navegável da própria agenda do dia — todas as suas consultas agendadas, com os mesmos elementos de identificação de paciente já usados no Cockpit — permitindo também bloquear horários vagos (ex.: para reuniões, ausências, atividades não assistenciais). É a tela dedicada aberta ao clicar no cabeçalho do painel “Consultas” do Cockpit (Central do Médico) — RN-CM-003 já especifica esse ponto de entrada (Central do Médico, Seção 2, “Navegação”); não repetido aqui (Lição #10).

Escopo

Dentro do escopo:

  • Visualização das consultas do médico logado para um dia específico (o dia atual, por padrão).
  • Navegação entre dias (avançar, retroceder, voltar para hoje).
  • Bloqueio de horários vagos da própria agenda.
  • Acesso à consulta a partir de um item da agenda (abre o PEP — mesmo comportamento já especificado em Central do Médico, Seção 2, “Navegação”: “Ao clicar em qualquer card de consulta, o sistema abre o Prontuário Eletrônico do Paciente”).
  • Exibição, por consulta: dos elementos já definidos em Central do Médico (Seção 4.1) — paciente (nome, foto, diagnóstico oncológico), horário, status, modo de atendimento, indicador de primeira consulta, tags do paciente — mais três elementos novos desta funcionalidade: tags do paciente restritas às habilitadas para exibição em agenda (RN-AGM-006), campo de complemento (RN-AGM-007) e tipo de consulta, quando configurado pelo cliente (RN-AGM-008).
  • Agrupamento visual de consultas já finalizadas/canceladas, para manter as consultas pendentes sempre acessíveis sem rolagem excessiva — [PROPOSTA] RN-AGM-010, pendente de confirmação do solicitante.

Fora do escopo (confirmado pelo solicitante — “só visualização + bloqueio”):

  • Criar, editar, cancelar ou reagendar consultas. Essas ações continuam exclusivas do fluxo de Agendamento da Recepção (contexto Agendamento, que por sua vez toca os contextos Assistencial e Financeiro — distinto desta tela, que é só Assistencial).
  • Parametrização de agendas (dias/horários por especialidade e profissional — SBIS ECF.05.01) e de tipos de consulta (SBIS ECF.05.04, a parte de cadastro do domínio) — fora de escopo desta tela; ela apenas exibe o tipo de consulta já configurado (RN-AGM-008).
  • Check-in/chegada do paciente na clínica — fluxo de Recepção.
  • Execução do atendimento — fluxo do PEP.
  • Duração da consulta — já definida pela Recepção no momento do agendamento (RN-AGM-005); esta tela não a edita.

Personas envolvidas

  • Médico — único usuário desta tela, não necessariamente oncologista (confirmado pelo solicitante). Mesma persona de Central do Médico, ver Central do Médico, Seção 1, “Personas” (não repetido aqui — Lição #10).

Nenhuma outra persona usa esta tela. Telas equivalentes para outros profissionais (agenda da enfermagem, agenda da farmácia, agenda da recepção) são funcionalidades futuras e independentes — motivo pelo qual o solicitante optou pelo prefixo de RN RN-AGM (Agenda do Médico) em vez de um prefixo genérico de agenda, reservando espaço para prefixos próprios dessas outras agendas quando forem especificadas.

Workflows do Profissional

Esta funcionalidade não introduz um workflow novo — ela é o destino de um touchpoint já documentado em Central do Médico (Workflow 1 — Atendimento de Consulta, RN-CM-003) e o ponto de partida para o touchpoint “abrir o PEP a partir de uma consulta”, também já especificado lá. Resumo do encaixe, sem repetir o fluxo completo (documentado em Central do Médico, Seção 1):

  1. O médico está no Cockpit e quer ver o dia inteiro (não só os próximos atendimentos do painel compacto) ou bloquear um horário — clica no título “Consultas”.
  2. A Agenda do Médico abre no dia atual, com a lista/grade completa (formato a decidir, ver “Próximos passos”).
  3. O médico pode navegar para outro dia (ex.: para checar a agenda de amanhã antes de sair) ou bloquear um horário vago (ex.: reunião administrativa, ausência programada).
  4. Ao tocar em uma consulta, o sistema abre o PEP do paciente — mesmo destino já usado a partir do card de consulta no Cockpit.
  5. Não há retorno automático ao Cockpit; o médico navega de volta pela navegação padrão do sistema.

Regras de Negócio

IDRegra
RN-AGM-001Somente leitura de consultas. O médico pode visualizar e navegar pela agenda e bloquear horários vagos, mas não pode criar, editar, cancelar ou reagendar consultas nesta tela.
RN-AGM-002Escopo do médico logado. A tela mostra exclusivamente a agenda do médico autenticado — mesmo filtro já usado em Central do Médico (Agenda.IdChRecurso = {IdChProfissional do médico logado}, ver Central do Médico Seção 4.1, “Filtros do endpoint”). Não há alternância para ver a agenda de outro médico.
RN-AGM-003Navegação por dia. Visualização diária (não semanal nem mensal, por decisão do solicitante). O médico pode avançar/retroceder dia a dia e retornar diretamente para o dia atual. Sem limite de navegação para o passado ou o futuro definido nesta versão — [A DEFINIR] se deve haver um horizonte máximo (ex.: não navegar além do fim do período de agendamento parametrizado pela clínica).
RN-AGM-004Bloqueio de horários. O médico pode bloquear um horário vago da própria agenda (ex.: reunião, atividade não assistencial, ausência). Mecanismo confirmado pelo solicitante (como o sistema legado já resolve): o registro de Agenda do horário bloqueado recebe (1) o paciente especial “Bloqueio” — um Paciente com Paciente.Paciente = 'B' (campo real confirmado na Biblioteca de Schema (DDL), char(1), domínio hoje conhecido só por este valor e o default 'S') — como Agenda.IdPaciente, satisfazendo o NOT NULL sem usar um paciente real; e (2) o convênio padrão desse paciente “Bloqueio”, um Convenio com Convenio.Convenio = 'B' (também confirmado na Biblioteca de Schema (DDL), char(1), nullable), como Agenda.IdChConvenio. [A DEFINIR] apenas o detalhe operacional: se o paciente/convênio “Bloqueio” já existe hoje em produção (dado, não schema — não verificável pela Biblioteca de Schema (DDL)) ou precisa ser criado como seed por cliente (ver Seção 4, “Seeds da Funcionalidade”, quando escrita).
RN-AGM-005Duração não editável aqui. A duração de cada consulta já é definida pela Recepção no momento do agendamento; esta tela apenas exibe o intervalo resultante (startTime/endTime, mesma origem de Central do Médico Seção 4.1).
RN-AGM-006Tags do paciente restritas às habilitadas para agenda. Diferente do Cockpit (que exibe todas as tags do paciente — PacienteVip + ProgramaApoioPaciente/ProgramaApoio, Central do Médico Seção 4.1), esta tela exibe apenas o subconjunto de tags marcado como “habilitada para exibição em agendas”. Mecanismo confirmado pelo solicitante: ProgramaApoio.MostrarEm (int) é um mapa de bits que endereça as telas onde a tag aparece — todos os bits desligados (0) = não mostra em lugar nenhum; bit ligado = mostra na tela correspondente. Domínio completo (revisado pelo solicitante, resolve a inconsistência da v1.1): prontuário = 1, cadastro do paciente = 2, tela da recepção = 4, Central do Médico = 8, confirmação de quimioterapia = 16, agendas = 32. Soma das 6 telas = 63, batendo exatamente com o exemplo do solicitante “63 = todas as telas” — domínio agora fechado, sem lacuna. Condição de filtro desta funcionalidade: (ProgramaApoio.MostrarEm & 32) = 32.
RN-AGM-007Campo de complemento. Cada consulta pode ter um complemento textual livre, associado ao agendamento. Campo real já existente: Agenda.Complemento (varchar(128), nullable) — confirmado na Biblioteca de Schema (DDL).
RN-AGM-008Tipo de consulta (opcional por cliente). Quando a clínica configurou classificações de agenda, a consulta exibe seu tipo. Estrutura real correspondente: AgendaClassificacao/AgendaSubClassificacao — tabelas de domínio já configuráveis por clínica (AgendaClassificacao.IdChClinica), referenciadas por Agenda.IdAgendaClassificacao/Agenda.IdAgendaSubClassificacao (ambos nullable — condizente com “opcional por cliente”: uma clínica que não cadastrou classificações simplesmente não preenche esses campos). Existe também Agenda.TipoConsulta (char(1), NOT NULL DEFAULT 'N'), campo diferente e já obrigatório — não é o campo referenciado por esta regra; mantido de lado, sem uso nesta funcionalidade, para não confundir os dois.
RN-AGM-009Elementos herdados do Cockpit. Paciente (nome preferido/legal, foto, diagnóstico oncológico), horário, status calculado (AppointmentStatus()), modo de atendimento, indicador de primeira consulta — todos com a mesma origem e lógica já mapeadas em Central do Médico, Seção 4.1; não redefinidos aqui (Lição #10), apenas reutilizados nesta tela.
RN-AGM-010[PROPOSTA] Consultas finalizadas/canceladas agrupadas, não ocultas. Justificativa de design: o objetivo desta tela é a visão ampla do dia (Seção 1, “Objetivo”) — copiar o comportamento padrão do painel compacto de Central do Médico (que oculta finalizadas por padrão, com toggle “Todas” para revelar, Central do Médico Seção 4.1 “Filtros do endpoint”) contrariaria o motivo desta tela existir. Ao mesmo tempo, consultas já concluídas (status finished, mesmo cálculo de AppointmentStatus(), Central do Médico Seção 4.1) ou canceladas (canceled) não precisam ocupar o mesmo espaço visual que as pendentes, que são o foco do trabalho do médico. Proposta: agrupar consultas finished/canceled num bloco único, compacto e recolhido por padrão (ex.: “6 consultas já realizadas ▸”), expansível sob demanda — mantém a consulta presente e contável (visão ampla preservada) sem consumir o espaço de rolagem que atrapalharia o acesso às pendentes. Complementar: a tela abre com a posição de rolagem ancorada no horário atual, deixando a próxima consulta pendente visível sem precisar rolar, independente do agrupamento. Em formato grade, o agrupamento se traduziria numa única faixa mesclada no lugar das linhas de horário já ocorridas, preservando a continuidade da régua de tempo; em formato lista, é simplesmente a supressão das linhas individuais substituídas pelo bloco recolhido — diferença que pode pesar na escolha do formato (ver “Próximos passos”). Pendente de confirmação do solicitante.

Premissas

  • O médico só usa esta tela para a própria agenda — não há necessidade de seletor de profissional.
  • A visualização diária é o formato de período (dia, não semana/mês) — decisão já confirmada pelo solicitante. O formato visual dentro do dia (lista ou grade) ainda está em aberto — ver “Próximos passos”.
  • O bloqueio de horário reaproveita estrutura de agenda existente (paciente/convênio especiais “Bloqueio”, RN-AGM-004) — nenhuma tabela nova necessária para esta regra.

Dependências

  • Central do Médico (Cockpit) — ponto de entrada (RN-CM-003) e origem dos elementos de card reutilizados (Seção 4.1). Mudanças na estrutura desses elementos em Central do Médico devem se refletir aqui.
  • Agendamento (Recepção) — cria, edita, cancela e reagenda as consultas que esta tela exibe; também é responsável pela parametrização de agendas por especialidade/profissional (SBIS ECF.05.01) e pelo cadastro de tipos de consulta (SBIS ECF.05.04, parte de cadastro). Ainda não especificada como funcionalidade própria neste projeto.
  • PEP (Prontuário Eletrônico do Paciente) — destino ao tocar em uma consulta.

Requisitos SBIS Aplicáveis

Consultados em RequisitosSBIS-v5.2-(ambulatorial).xlsx, grupo “ECF.05 - Agendamento” e, transversalmente, “Auditoria” (NGS1):

RequisitoTítuloEstágio (clínica/ambulatório)Aplicação nesta funcionalidade
ECF.05.02Bloqueios na agenda2 (recomendado)Atendido pela funcionalidade de bloqueio de horários (RN-AGM-004) — mecanismo de persistência confirmado (paciente/convênio especiais “Bloqueio”), detalhe de seed pendente, ver Seção 4.
ECF.05.04Especificação do tipo de consulta2 (recomendado)Atendido pela exibição do tipo de consulta (RN-AGM-008), quando configurado pelo cliente. A parte de cadastro/parametrização do tipo de consulta é responsabilidade de outra funcionalidade (fora de escopo aqui).
ECF.05.01Parametrização de agendas de consultas2 (recomendado)Fora de escopo desta tela — dependência (ver “Dependências”), não pendência.
ECF.05.03Agendamento de consultas por profissionais1 (obrigatório)Fora de escopo desta tela por decisão do solicitante (só visualização + bloqueio) — atendido pelo fluxo de Agendamento da Recepção, ainda não especificado neste projeto. Registrado aqui para não passar despercebido: é estágio 1, então precisa ser coberto por alguma funcionalidade do projeto, mesmo que não seja esta.
NGS1.07.03 / NGS1.07.04Eventos (e eventos avançados) registrados na trilha de auditoria1 / 2Transversal ao contexto Segurança — acesso a dados de paciente e a ação de bloqueio de horário (RN-AGM-004) devem gerar evento de auditoria, mesmo padrão já usado em outras funcionalidades assistenciais deste projeto. Não redefinido aqui.

Próximos passos

  1. RN-AGM-010 (agrupamento de finalizadas/canceladas) — confirmar com o solicitante a proposta de agrupamento compacto + rolagem ancorada no horário atual, antes de fechar a Seção 2. Demonstração visual entregue (ver Seção 3 exploratória).
  2. Decisão de formato de visualização — o solicitante pediu protótipos comparando lista vs. grade para o dia; a interação com RN-AGM-010 (bloco recolhido vs. faixa mesclada na régua de tempo) é um dos fatores a pesar na escolha.
  3. RN-AGM-004 (seed do paciente/convênio “Bloqueio”) — confirmar se já existe em produção ou precisa ser criado como seed por cliente, para a subseção “Seeds da Funcionalidade” da Seção 4.
  4. RN-AGM-003 (horizonte de navegação) — confirmar se há limite de dias para navegação passada/futura.

Prioridade sugerida

Should Have — não é bloqueante para o fluxo assistencial do Cockpit (que já cobre “próximos atendimentos do dia”), mas cobre um requisito SBIS estágio 1 relacionado (ECF.05.03, ainda que não implementado nesta tela) e dois recomendados (ECF.05.02, ECF.05.04) diretamente.

Complexidade estimada

Baixa a Média — as duas pendências de estrutura de dados (RN-AGM-004, RN-AGM-006) foram resolvidas nesta versão; resta a decisão de formato de UI e a confirmação de RN-AGM-010 (agrupamento), ambas de produto/UX, não de dados.

Dependências (funcionalidades mapeadas)

Central do Médico (Cockpit) — DOC-004. Agendamento (Recepção) — ainda não mapeada neste projeto.


Histórico de Versões

  • v1.0 (31/08/2026) — Documento criado. Seção 1 (Definição) completa, a partir das respostas do solicitante sobre contexto (Assistencial), objetivo/escopo (visualização + navegação + bloqueio, sem CRUD de consulta), persona (médico, não necessariamente oncologista), visualização (diária; formato lista vs. grade em aberto) e regras de negócio (duração fixada pela Recepção; tags restritas às habilitadas para agenda; campo de complemento; tipo de consulta opcional por cliente). Estrutura real de banco consultada na Biblioteca de Schema (DDL) para Agenda.Complemento, Agenda.TipoConsulta, AgendaClassificacao/AgendaSubClassificacao, ProgramaApoio.MostrarEm e o padrão de filtro por médico logado (Agenda.IdChRecurso) já usado em Central do Médico — nenhuma estrutura inventada; itens sem decodificação disponível marcados [A DEFINIR]. Seções 2, 3 e 4 pendentes.
  • v1.1 (31/08/2026, mesmo dia) — Três respostas do solicitante incorporadas. (1) RN-AGM-006 resolvida: ProgramaApoio.MostrarEm é mapa de bits (prontuário=1, cadastro do paciente=2, Central do Médico=4, confirmação de quimio=8, agendas=32), confirmado por três exemplos numéricos consistentes do solicitante; condição de filtro (MostrarEm & 32) = 32; registrada como nota não-bloqueante uma inconsistência aritmética no quarto exemplo dado (63=“todas as telas” exige um bit 16 não descrito entre as 5 telas nomeadas). (2) RN-AGM-004 (mecanismo de bloqueio) mantida [A DEFINIR] por decisão do solicitante — leitura candidata anterior (TipoAgenda='S' + AgendaSalaPacienteEspecial) retirada da regra por ora; solicitante consultando o time do sistema legado. (3) Criada RN-AGM-010 [PROPOSTA] — resposta a uma pergunta do solicitante sobre como tratar consultas finalizadas/canceladas sem comprometer a objetividade da tela: agrupamento compacto e recolhido (não ocultação, diferente do padrão do painel compacto de Central do Médico) + rolagem ancorada no horário atual ao abrir a tela; nota sobre como a proposta se traduziria em cada formato de visualização (lista vs. grade), alimentando a decisão de formato ainda pendente.
  • v1.2 (31/08/2026, mesmo dia) — Duas pendências de dados resolvidas pelo solicitante. (1) RN-AGM-004 (bloqueio de horário) resolvida: mecanismo real confirmado — paciente especial Paciente.Paciente = 'B' como Agenda.IdPaciente + convênio especial Convenio.Convenio = 'B' como Agenda.IdChConvenio; ambos os campos (Paciente.Paciente, Convenio.Convenio) confirmados na Biblioteca de Schema (DDL) antes de escrever a regra — não invenção. Resta apenas confirmar se as linhas “Bloqueio” já existem em produção ou precisam entrar como seed (Seção 4). (2) RN-AGM-006 corrigida: o solicitante notou o bit faltante apontado na v1.1 — domínio revisado para 6 telas (prontuário=1, cadastro do paciente=2, recepção=4, Central do Médico=8, confirmação de quimio=16, agendas=32), soma agora bate exatamente com o exemplo “63 = todas as telas”; o bit de “agendas” usado no filtro desta funcionalidade permanece 32, sem mudança na condição de filtro. Também produzida (fora da numeração de Seção 3) uma demonstração visual de RN-AGM-010, a pedido do solicitante — ver Comparação de Formato — Lista vs Grade (exploração).html, atualizado.