Épico 5 — Menu Lateral — Definição (v1.3)
Documentos deste épico: 01 - Definição (v1.3) · 02 - Especificação (v1.2) · 03 - Protótipo (v1.1, código executável em 03 - Protótipo v1.1.html) · 04 - Mapeamento de Banco de Dados (v1.2). Este épico faz parte do documento guarda-chuva Check-in de Usuários.
SEÇÃO 1 — DEFINIÇÃO
Objetivo
Dar a todo usuário autenticado um único ponto de navegação entre os módulos que seu perfil de acesso libera na clínica em que está trabalhando — substituindo a necessidade de conhecer de cor onde cada funcionalidade fica, e permitindo que ele volte rapidamente às telas que mais usa no dia a dia (favoritos) ou encontre qualquer outra por busca.
Escopo
Dentro do escopo:
- Menu lateral exibido para qualquer usuário autenticado, em qualquer perfil — não é uma tela exclusiva de um tipo de usuário
- Estrutura de grupos e itens de navegação, filtrada pelo perfil de acesso do usuário na clínica atual
- Favoritar e desfavoritar itens do menu
- Busca em tempo real dentro do menu
- Comportamento responsivo: recolher/expandir no desktop, abrir como camada sobre o conteúdo no mobile
- Botão de troca de clínica, quando aplicável
- Rodapé com identificação do fabricante do sistema
Fora do escopo:
- Conteúdo e comportamento interno de qualquer tela para a qual o menu link a — inclusive Meu Perfil (E4, ainda não especificado) e a aplicação de suporte técnico da Interprocess TI, tratada aqui apenas como um item de menu comum que leva a um destino externo
- Definição de quais grupos, itens e ícones compõem a árvore completa do menu em produção — depende de um levantamento de produto ainda não disponível para este documento (ver “Lista consolidada de itens [PROPOSTA]”); os itens usados neste documento e no protótipo são exemplos, não a árvore final
- Cadastro e administração de perfis de acesso, e a configuração de quais itens cada perfil libera — pertence ao Contexto de Segurança e à gestão de usuários da clínica; este épico apenas consome o resultado dessa configuração
- Definição de qual tela cada item do menu abre — cada uma é uma funcionalidade própria, especificada (ou a especificar) em seu próprio documento
Personas
- Qualquer usuário autenticado — médico oncologista, enfermeiro, farmacêutico, colaborador de backoffice ou qualquer outro perfil presente ou futuro do sistema. O menu lateral é transversal: não muda de componente conforme o usuário, só muda os itens que aparecem nele.
Workflow do Usuário
Resumo: depois de autenticado e com uma clínica de trabalho definida (E1, E6), o usuário passa o resto da sessão navegando entre módulos — abrindo o cockpit, indo a uma tela de prescrição, voltando ao início, checando outra funcionalidade. O menu lateral é o mecanismo dessa navegação: fica disponível o tempo todo, ao lado (desktop) ou por trás de um botão (mobile) do conteúdo principal, e não é específico de nenhum workflow assistencial, de farmácia ou financeiro em particular — é o ponto de partida de todos eles.
Touchpoints:
| Momento do workflow | Necessidade do usuário | O que a funcionalidade oferece | Decisão de design justificada |
|---|---|---|---|
| Imediatamente após autenticar-se e ter uma clínica de trabalho definida (E1, E6) | Ver rapidamente só os módulos que pode de fato usar, sem se perder em opções que não fazem parte do seu trabalho | Menu montado a partir do perfil de acesso do usuário naquela clínica — itens fora do seu perfil simplesmente não aparecem (RN-CIU-027) | Filtragem no carregamento, não uma lista completa com itens desabilitados — reduz poluição visual e evita a pergunta “por que não consigo clicar aqui” |
| Ao longo do dia, retornando repetidamente a um pequeno conjunto de telas (ex.: cockpit, agenda) | Chegar direto às telas mais usadas, sem abrir grupo por grupo toda vez | Seção Favoritos, destacada no topo do menu; no desktop recolhido, só os ícones dos favoritos continuam visíveis e clicáveis (RN-CIU-028) | Favoritos ficam separados da árvore normal porque representam uma escolha pessoal do usuário, não a estrutura do sistema — e continuam acessíveis mesmo com o menu ocupando o mínimo de espaço possível |
| Precisa abrir um módulo específico e não lembra em qual grupo ele está | Achar o item rapidamente, sem navegar pela árvore inteira | Campo de busca que filtra a lista de itens em tempo real, ignorando o estado de expansão dos grupos (RN-CIU-030) | Busca em tempo real (sem precisar confirmar) porque o usuário está no meio do atendimento e cada segundo de espera importa; achatar a árvore evita que o resultado fique escondido dentro de um grupo recolhido |
| Em um smartphone, durante um atendimento com pouco espaço de tela | Abrir o menu sem perder de vista o que já estava na tela | Menu mobile abre como camada sobre o conteúdo (overlay), sem redimensionar nada por baixo (RN-CIU-029) | Redimensionar o conteúdo principal, como no desktop, não é viável na largura de um celular — a camada sobreposta preserva o contexto de onde o usuário estava |
| Em um desktop, quando quer mais espaço para o conteúdo principal | Recolher o menu sem perder o acesso às telas que mais usa | Menu recolhido mostra só os ícones dos itens favoritados, ainda clicáveis; o conteúdo principal ocupa o espaço liberado (RN-CIU-029) | Diferente do overlay do mobile, no desktop há espaço de sobra para redistribuir — recolher sem perder o atalho aos favoritos evita que o usuário precise reabrir o menu inteiro só para voltar a uma tela que já usa com frequência |
| Usuário com acesso a mais de uma clínica quer atender em outra clínica sem sair do sistema | Trocar de clínica de trabalho sem precisar sair e logar de novo | Botão “Trocar”, visível apenas quando há mais de uma clínica acessível (RN-CIU-009, em CIU-E1), que leva à tela de seleção de clínica (E6) | O botão fica oculto para quem só tem uma clínica — não faz sentido oferecer uma troca que não existe; ao trocar, o menu inteiro (itens e favoritos) recarrega para o perfil de acesso da nova clínica, já que ambos dependem do vínculo específico daquela clínica (ver RN-CIU-028) |
Regras de Negócio
Regra transversal aplicável, redação completa no guarda-chuva: RN-CIU-022 (roteamento pós-autenticação que leva o usuário a ter uma clínica de trabalho definida antes de ver o menu). Também referenciada por ID, sem redefinição: RN-CIU-009 (CIU-E1) — define “clínica acessível”, base da visibilidade do botão Trocar.
Regras específicas deste épico:
RN-CIU-026 — Estrutura e transversalidade do menu lateral
O menu lateral é exibido para todo usuário autenticado com uma clínica de trabalho definida, qualquer que seja o seu perfil de acesso — não existe uma variação do componente por tipo de usuário, apenas uma variação de quais itens aparecem (RN-CIU-027).
O menu organiza os itens em grupos. Um grupo não contém outros grupos dentro dele — a estrutura tem uma única camada de agrupamento, sem hierarquia aninhada. Cada grupo pode ser expandido ou recolhido individualmente, sem afetar o estado dos demais grupos. Um item pode também existir fora de qualquer grupo, exibido diretamente na lista principal do menu.
O menu tem um rodapé fixo com o texto de identificação do fabricante do sistema (“Powered by Interprocess TI”) — um rótulo estático, sem comportamento associado.
Motivador: uma estrutura de agrupamento única (sem sub-grupos) mantém a navegação previsível — o usuário nunca precisa descer mais de um nível para encontrar um item dentro de um grupo.
RN-CIU-027 — Filtragem de itens do menu por Perfil de acesso
Um item só aparece no menu quando o perfil de acesso do usuário, na clínica em que está trabalhando, libera aquele item para exibição no menu. Itens não liberados pelo perfil de acesso não aparecem de forma alguma — nem desabilitados, nem ocultos atrás de uma ação extra: simplesmente não fazem parte da lista carregada.
A ordem dos itens dentro de um grupo (e dos itens sem grupo) segue a ordem definida para aquele perfil de acesso especificamente — dois perfis distintos podem ver os mesmos itens em ordens diferentes.
Quando o perfil de acesso do usuário não libera nenhum item para exibição no menu, o menu é exibido vazio, com uma mensagem orientando o usuário a contatar o administrador da sua clínica (EX-E5-01).
Uma funcionalidade pode fazer parte do perfil de acesso do usuário sem ter uma entrada própria no menu — nesse caso, ela só é alcançada de dentro de outra tela que já é item de menu (ex.: um prontuário eletrônico de paciente poderia ter áreas internas como registros clínicos, plano terapêutico ou prescrições, cada uma com sua própria permissão, sem que nenhuma apareça separada na árvore lateral — só a tela do prontuário aparece como item de menu). O perfil de acesso também define, separadamente, que nível de permissão o usuário tem em cada funcionalidade (só leitura, inclusão, alteração, exclusão ou outra ação específica) — este épico consome apenas a parte “aparece ou não no menu” dessa definição; o nível de permissão de ação em cada funcionalidade é resolvido por cada tela individualmente, no Contexto de Segurança, fora do escopo do menu lateral.
Motivador: a filtragem por perfil de acesso é o mesmo mecanismo de controle de acesso já usado no restante do sistema (Contexto de Segurança) — o menu não introduz uma segunda fonte de verdade sobre o que um usuário pode ou não acessar, apenas reflete visualmente essa mesma permissão.
RN-CIU-028 — Favoritos do menu
O usuário pode favoritar qualquer item do menu ao qual tenha acesso, e desfavoritar um item já favoritado, a qualquer momento. Um item favoritado passa a aparecer também numa seção “Favoritos”, destacada no topo do menu, além de continuar no seu lugar de origem (grupo ou lista principal) — favoritar não move o item, duplica sua visibilidade. Desfavoritar remove o item apenas da seção Favoritos; o item permanece normalmente na árvore.
A seção Favoritos só aparece quando o usuário tem ao menos um item favoritado — sem nenhum favorito, a seção inteira não é exibida (nem como um espaço vazio com mensagem). Dentro da seção Favoritos, os itens são listados em ordem alfabética pelo nome.
Favoritos são específicos da combinação entre o vínculo do usuário, seu perfil de acesso e a clínica em que está trabalhando — não do usuário em geral. Como consequência direta, um item favoritado numa clínica não aparece necessariamente favoritado ao trocar para outra clínica acessível: cada clínica pode ter um perfil de acesso diferente associado ao mesmo usuário, e os favoritos acompanham essa combinação, não a pessoa isoladamente. Ao trocar de clínica (E6), a seção Favoritos e a árvore do menu recarregam do zero para o perfil de acesso da nova clínica.
Motivador: manter os favoritos por clínica evita mostrar, numa clínica, um atalho para um item que nem sequer está liberado pelo perfil de acesso do usuário ali — o mesmo raciocínio que já rege a filtragem do menu como um todo (RN-CIU-027).
O usuário pode ainda escolher, entre os itens a que tem acesso, um para ser sua tela inicial — a tela que abre junto com o menu assim que a sessão termina o login e a seleção de clínica (E1, E6), antes de qualquer navegação manual. Essa escolha é opcional, feita por item, e específica da mesma combinação vínculo × perfil de acesso × clínica que já rege os favoritos, descrita acima. Na ausência dessa escolha, a tela inicial padrão é o cockpit do próprio usuário, quando seu perfil de acesso tiver um indicado; sem cockpit indicado e sem escolha de tela inicial, o sistema abre sem nenhuma tela inicial selecionada, e o usuário navega a partir do menu. Quando a escolha de tela inicial existe, ela sempre prevalece sobre o cockpit padrão.
Nota: nenhum critério de aceitação desta versão exercita a escolha de tela inicial nem o cockpit padrão — o comportamento acima está confirmado, mas fica fora do escopo funcional implementado neste épico; ver Seção 4 para o mapeamento técnico e a pendência de confirmação do campo que identifica o cockpit padrão do usuário.
RN-CIU-029 — Comportamento responsivo do menu
No desktop, o menu pode ser recolhido ou expandido pelo usuário. Expandido, exibe grupos e itens por extenso, e o conteúdo principal ocupa o espaço restante da tela. Recolhido, exibe apenas os ícones dos itens favoritados (RN-CIU-028) — não os demais itens da árvore — e o conteúdo principal se redimensiona para ocupar o espaço que o menu liberou. Um ícone do menu recolhido, ao ser clicado, navega diretamente para aquele item, sem exigir que o usuário expanda o menu primeiro.
No mobile, o menu não tem estado “recolhido/expandido” — ele fica oculto até o usuário acioná-lo, e então se abre como uma camada sobre o conteúdo principal, sem redimensionar nada por baixo. Fechar o menu (nova ação do usuário, ou seleção de um item) volta a ocultá-lo, revelando o conteúdo como estava.
Motivador: no desktop há espaço de tela suficiente para redistribuir entre menu e conteúdo; no mobile, a largura da tela não permite as duas coisas ao mesmo tempo sem espremer o conteúdo — por isso os dois comportamentos são deliberadamente opostos (redimensionar vs. sobrepor), cada um adequado ao espaço disponível.
RN-CIU-030 — Busca no menu
O menu tem um campo de busca que filtra os itens pelo nome, em tempo real — a cada caractere digitado, sem exigir confirmação. Durante uma busca com texto digitado, a lista exibida ignora o estado de expansão dos grupos: todo item cujo nome corresponde ao texto buscado aparece, esteja o grupo que o contém expandido ou recolhido. Quando a busca não encontra nenhum item, é exibido um estado vazio orientando o usuário a limpar o filtro (EX-E5-02).
A busca considera apenas os itens já liberados pelo perfil de acesso do usuário (RN-CIU-027) — nunca revela um item que o menu, sem busca, também não mostraria.
Motivador: achatar a árvore durante a busca evita que um resultado relevante fique escondido dentro de um grupo que o usuário não tinha aberto — a busca existe justamente para poupar essa navegação manual.
Premissas
- Todo usuário que vê o menu já está autenticado e já tem uma clínica de trabalho definida — o menu nunca é o primeiro ponto de contato com o sistema (RN-CIU-022, no guarda-chuva).
- A árvore completa de grupos e itens do menu em produção (quais módulos existem, em quais grupos, com quais ícones) não está disponível para este documento — os itens usados na Especificação e no Protótipo são exemplos dos módulos já especificados em outras partes do projeto (Central do Médico/Cockpit, Agenda do Médico) mais placeholders explicitamente marcados para módulos ainda não especificados (enfermagem, farmácia, backoffice), e não devem ser lidos como a árvore final.
- O estado de expansão/recolhimento de um grupo, e o estado recolhido/expandido do menu no desktop, não são persistidos entre sessões — não existe, na estrutura de dados consultada para este épico, um lugar para guardar essa preferência; o menu inicia com todos os grupos recolhidos — exibindo apenas o nome de cada grupo, sem seus itens — a cada nova sessão.
Dependências
Depende do E1 (Núcleo de Identidade e Autenticação) para a autenticação e para a contagem de clínicas acessíveis que decide a visibilidade do botão Trocar (RN-CIU-009). Depende do E6 (Seleção de Clínica) como destino do botão Trocar, e como o ponto em que o usuário escolhe a clínica cujo perfil de acesso determina os itens e favoritos deste menu. Depende do Contexto de Segurança para a existência prévia de perfis de acesso configurados com os itens e a ordem que cada um libera — este épico consome essa configuração, não a define.
Requisitos SBIS Aplicáveis
ECF.17.18 (Idioma do S-RES — menus em português do Brasil), ECF.17.19 (Mensagens do sistema), NGS1.03.01 (Impedir acesso por pessoas não autorizadas), NGS1.03.03 (Gerenciamento de perfis), NGS1.03.07 (Atribuição de mais de um perfil para um usuário) — todos estágio 1 (Clínica/ambulatório), obrigatórios. Detalhamento na Seção 2.
Metadados do Épico
| Atributo | Valor |
|---|---|
| Prioridade | Must Have — sem o menu lateral, nenhum usuário autenticado tem como navegar entre os módulos do sistema |
| Complexidade | Média — nenhuma tabela nova, mas reúne filtragem por perfil, favoritos, busca e dois comportamentos responsivos distintos num único componente transversal a todo o sistema |
| Dependências | E1 (autenticação, contagem de clínicas acessíveis); E6 (destino do botão Trocar, origem do perfil de acesso vigente); Contexto de Segurança (configuração de perfis de acesso e itens liberados) |
| Regras transversais aplicadas | 1 (RN-CIU-022) |
| Regras específicas deste épico | 5 (RN-CIU-026 a RN-CIU-030) |
| Histórias de usuário | 1 (US-CIU-010) |
| Critérios de aceitação | 9 (CA-010.1 a CA-010.9) |
| Fluxos de exceção | 4 (EX-E5-01 a EX-E5-04) |
| Endpoints | 3 |
| Telas | 1 (Menu lateral, com estados desktop expandido/recolhido e mobile overlay) — prototipada em HTML |
| Tabelas utilizadas | 8 existentes (Processo, ProcessoGrupo, ClienteProcesso, ClientePerfilAcesso, ClientePerfilAcessoUsuario, ClientePerfilAcessoProcesso, ClienteUsuarioMenuFavorito, ClienteEmpresa) — nenhuma nova |
| Mensagens catalogadas | 8 (2 erros, 2 informativas/estado vazio, 1 placeholder, 1 texto orientador estático, 2 rótulos de botão) |
| Requisitos SBIS atendidos | 5 (ECF.17.18, ECF.17.19, NGS1.03.01, NGS1.03.03, NGS1.03.07) |
Lista consolidada de itens [PROPOSTA]
- Árvore completa de grupos e itens do menu em produção — o mockup original com a árvore real foi perdido; os itens usados na Especificação e no Protótipo são exemplos dos módulos já especificados no projeto (Central do Médico/Cockpit, Agenda do Médico) mais placeholders de módulos futuros (enfermagem, farmácia, backoffice), claramente identificados como tal.
- Item de menu “Suporte Gemed”, linkando para uma aplicação de suporte técnico externa ao Gemed — usado como exemplo de item de menu comum com destino externo; sua existência e nome exatos dependem de confirmação contra o mockup original, hoje indisponível.
- Domínio de valores do campo
ClientePerfilAcessoUsuario.CodProfissional(char(3), proposto — ver Seção 4) — a existência, o nome e o tipo do campo estão confirmados pelo solicitante; os códigos que ele pode assumir (um por tipo de cockpit/fluxo — médico, enfermagem, farmácia, backoffice) ainda não foram informados.
Histórico de Versões
- v1.3 (15/09/2026) — confirmada pelo solicitante a criação do campo
ClientePerfilAcessoUsuario.CodProfissional, tipochar(3)(base técnica do cockpit padrão de RN-CIU-028) — deixa de ser uma pendência de localização no schema e passa a ser uma proposta de estrutura nova (Seção 4); item 3 da “Lista consolidada de itens [PROPOSTA]” reescrito para refletir isso.Log de Mudanças Estruturais do Banco de Dadosatualizado. - v1.2 (15/09/2026) — dois itens da “Lista consolidada de itens [PROPOSTA]” confirmados pelo solicitante e removidos da lista: critério de ordenação dos favoritos (agora alfabética pelo nome, RN-CIU-028) e estado inicial dos grupos a cada nova sessão (agora recolhidos, exibindo só o nome de cada grupo — Premissas). Protótipo (v1.0 → v1.1) e Especificação atualizados para refletir os dois comportamentos.
- v1.1 (15/09/2026) — RN-CIU-027 esclarecida: uma funcionalidade pode integrar o perfil de acesso do usuário sem ser item de menu, sendo alcançada apenas de dentro de outra tela que já é item de menu; o nível de permissão de ação por funcionalidade permanece fora do escopo deste menu. RN-CIU-028 corrigida: o indicador de “abertura automática” de um favorito (
ProcessoAbertura) é a escolha opcional do usuário de tela inicial do sistema, exibida junto com o menu logo após login e seleção de clínica; na ausência dessa escolha, a tela inicial padrão é o cockpit do próprio usuário — sem cockpit indicado e sem escolha manual, o sistema abre sem tela inicial; uma escolha manual sempre prevalece sobre o cockpit. Campo técnico que identifica o cockpit padrão do usuário, citado pelo solicitante, não localizado na Biblioteca de Schema (DDL) nem noEsquemaGemed21.csv— registrado como pendência emLog de Mudanças Estruturais do Banco de Dados. Terminologia do documento revisada de “profissional” para “usuário”, termo próprio do Contexto de Check-in de Usuários (o termo “profissional” é reservado ao Contexto Assistencial). - v1.0 (15/09/2026) — versão inicial do épico. Estrutura de dados para menu, RBAC de itens e favoritos localizada por completo na Biblioteca de Schema (DDL), banco IpSeguranca (
Processo,ProcessoGrupo,ClienteProcesso,ClientePerfilAcessoProcesso,ClienteUsuarioMenuFavorito) — nenhuma tabela nova necessária. Identificado, a partir da granularidade deClientePerfilAcessoUsuario(específica por clínica desde a correção de granularidade dos Épicos 1/3/6), que os favoritos de um usuário não necessariamente se repetem ao trocar de clínica — achado estrutural documentado em RN-CIU-028, não uma decisão de produto. Árvore completa de grupos/itens do menu não disponível (levantamento original perdido) — este documento e os demais desta versão usam itens de exemplo/placeholder, marcados como tal.