# Épico 5 — Menu Lateral — Definição (v1.0)

**Documentos deste épico:** [01 - Definição](./01%20-%20Defini%C3%A7%C3%A3o%20v1.0.md) (v1.0) · [02 - Especificação](./02%20-%20Especifica%C3%A7%C3%A3o%20v1.0.md) (v1.0) · [03 - Protótipo](./03%20-%20Prot%C3%B3tipo%20v1.0.md) (v1.0, código executável em `03 - Protótipo v1.0.html`) · [04 - Mapeamento de Banco de Dados](./04%20-%20Mapeamento%20de%20Banco%20de%20Dados%20v1.0.md) (v1.0). Este épico faz parte do documento guarda-chuva [Check-in de Usuários](../00%20-%20Guarda-chuva%20v2.13.md).

---

## SEÇÃO 1 — DEFINIÇÃO

### Objetivo

Dar a todo profissional 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 profissional autenticado, em qualquer perfil — não é uma tela exclusiva de um tipo de profissional
- Estrutura de grupos e itens de navegação, filtrada pelo perfil de acesso do profissional 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 profissional 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 profissional, só muda os itens que aparecem nele.

### Workflow do Profissional

Resumo: depois de autenticado e com uma clínica de trabalho definida (E1, E6), o profissional 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 profissional|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 profissional 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 profissional, 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 profissional 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 profissional 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 profissional precise reabrir o menu inteiro só para voltar a uma tela que já usa com frequência|
|Profissional 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 profissional 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 profissional 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 profissional, 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 profissional 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 profissional, 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 profissional não libera nenhum item para exibição no menu, o menu é exibido vazio, com uma mensagem orientando o profissional a contatar o administrador da sua clínica (EX-E5-01).

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 profissional pode ou não acessar, apenas reflete visualmente essa mesma permissão.

#### RN-CIU-028 — Favoritos do menu

O profissional 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 profissional tem ao menos um item favoritado — sem nenhum favorito, a seção inteira não é exibida (nem como um espaço vazio com mensagem).

Favoritos são específicos da combinação entre o vínculo do profissional, seu perfil de acesso e a clínica em que está trabalhando — não do profissional 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 profissional, 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 profissional ali — o mesmo raciocínio que já rege a filtragem do menu como um todo (RN-CIU-027).

Nota: o mecanismo de dados que sustenta os favoritos guarda também um indicador de item que abriria automaticamente ao entrar no sistema — comportamento fora do escopo funcional desta versão (nenhum critério de aceitação o exercita); ver Seção 4 para o detalhe técnico e a marcação [PROPOSTA] sobre seu significado exato.

#### RN-CIU-029 — Comportamento responsivo do menu

No desktop, o menu pode ser recolhido ou expandido pelo profissional. 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 profissional expanda o menu primeiro.

No mobile, o menu não tem estado "recolhido/expandido" — ele fica oculto até o profissional 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 profissional, 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 profissional a limpar o filtro (EX-E5-02).

A busca considera apenas os itens já liberados pelo perfil de acesso do profissional (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 profissional não tinha aberto — a busca existe justamente para poupar essa navegação manual.

### Premissas

- Todo profissional 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 expandido, com todos os grupos expandidos, 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 profissional 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 profissional 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]

1. Á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.
2. 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.
3. Interpretação do campo que indica se um item favoritado abre automaticamente ao entrar no sistema — por comparação com o campo equivalente da estrutura legada (Seção 4), a interpretação mais provável é "abre automaticamente ao iniciar a sessão", mas não há confirmação direta para a estrutura atual; nenhum critério de aceitação desta versão exercita esse comportamento.
4. Critério de ordenação dos favoritos dentro da seção Favoritos — não especificado nesta versão; o protótipo usa a ordem em que foram favoritados.
5. Estado inicial de expansão dos grupos a cada nova sessão (todos expandidos) — decisão adotada na ausência de um mecanismo de persistência dessa preferência (ver Premissas); a confirmar se um mecanismo de persistência deveria existir numa versão futura.

---

## Histórico de Versões

- **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 de `ClientePerfilAcessoUsuario` (específica por clínica desde a correção de granularidade dos Épicos 1/3/6), que os favoritos de um profissional 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.
