# ÉPICO 6 — SELEÇÃO DE CLÍNICA

Funcionalidade pai: Check-in de Usuários no Sistema Persona principal: Profissional com mais de um vínculo ativo (ou com convite pendente somado a vínculo(s) ativo(s)) Versão: 1.0 (Seção 1-4 completas) Data: 27/08/2026

---

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

### Objetivo

Permitir que um profissional autenticado com mais de um vínculo ativo escolha em qual clínica quer entrar, e — quando há um convite pendente para uma nova clínica — aceitar esse convite sem sair da tela, sem repetir a leitura das regras básicas de uso já lidas no primeiro vínculo (RN-CIU-014, em CIU-E3).

### Escopo

Dentro do escopo (nesta revisão):

- Tela de seleção de clínica, exibida quando o roteamento pós-autenticação (RN-CIU-022, no guarda-chuva) chega a "múltiplos vínculos ativos" ou a "convite pendente + ao menos um vínculo ativo"
- Card em destaque para convite pendente, com aceite direto (RN-CIU-025)

Fora do escopo:

- Layout e comportamento das telas de outros épicos do Check-in (E1, E2, E3, E4) — cada um documentado no seu próprio documento
- Definição de quais perfis de acesso existem ou como são criados — pertence ao Contexto de Segurança; este épico apenas consome a verificação (RN-CIU-015, redação completa em CIU-E3)

### Personas

- Profissional com mais de um vínculo ativo — usa esta tela normalmente, toda vez que faz login, para escolher a clínica.
- Profissional com um vínculo ativo e um convite pendente simultâneo — normalmente iria direto ao cockpit (RN-CIU-009, 1 vínculo); passa a ver esta tela só para poder aceitar o convite via card (RN-CIU-022, item 2).

### Workflow do Profissional

Resumo: um profissional que atende em mais de uma clínica faz login uma única vez (E1) — a conta é global, compartilhada entre clínicas (RN-CIU-001, em CIU-E1). Depois do login, em vez de cair direto num cockpit, ele escolhe em qual clínica quer trabalhar naquele momento. Se uma clínica nova o convidou nesse meio tempo, ele quer ver e aceitar esse convite no mesmo lugar onde já escolhe a clínica — não numa tela separada, com leitura de regras que ele já leu.

Touchpoint — Seleção de clínica após login:

- **Momento do workflow:** imediatamente após autenticar-se (E1), quando o roteamento (RN-CIU-022) resulta em múltiplos vínculos ativos, ou em convite pendente com ao menos um vínculo ativo.
- **Necessidade do profissional:** entrar rápido na clínica certa, sem passos extras; e, se houver um convite novo, não ser forçado a uma tela cheia de regras que ele já conhece.
- **O que a funcionalidade oferece:** lista das clínicas com vínculo ativo + card em destaque para convite pendente, aceito com um clique.
- **Decisão de design justificada:** o card fica separado da lista normal (destaque visual) porque representa uma ação pendente do profissional, não uma opção de navegação — evita que ele confunda "aceitar convite" com "selecionar clínica".

### Regras de Negócio

- RN-CIU-022 (transversal, redação completa no guarda-chuva) — define quando o roteamento pós-autenticação chega a esta tela.
- RN-CIU-025 — Aceite de convite pendente na tela de seleção de clínica (redação completa abaixo, específica deste épico).

#### RN-CIU-025 — Aceite de convite pendente na tela de seleção de clínica

Quando o profissional autenticado já tem ao menos um vínculo ativo (`UsuarioCliente.Situacao = 'V'`) e possui, ao mesmo tempo, um convite pendente (`Situacao = 'C'`) para uma nova clínica, o aceite desse convite acontece nesta tela — não na tela de aceite do vínculo do E3 (RN-CIU-014, que a partir desta revisão só se aplica a quem não tem nenhum vínculo ativo). Isso vale mesmo quando o profissional tem exatamente 1 vínculo ativo — caso que, sem convite pendente, iria direto ao cockpit (RN-CIU-009) — pois é o único jeito de esse profissional ver e aceitar o convite (confirmado em RN-CIU-022, item 2, no guarda-chuva).

A tela de seleção de clínica exibe:

1. As clínicas com vínculo ativo, na lista normal de seleção (comportamento já existente, inalterado)
2. Um card em destaque, separado da lista, para cada convite pendente

Diferente da tela de aceite do E3 (RN-CIU-014), este card não exige a leitura das regras básicas de uso da aplicação — o profissional já as leu no momento em que aceitou seu primeiro vínculo. O aceite é uma ação direta no card (ex.: botão "Aceitar").

Ao aceitar:

1. Atualiza o vínculo existente — `UsuarioCliente.Situacao` passa de 'C' para 'V' (mesmo mecanismo do item 1 de RN-CIU-014; não cria um registro novo)
2. O card sai da área de destaque; a clínica passa a fazer parte da lista normal de seleção — **não é selecionada automaticamente.** O profissional precisa de uma segunda ação, a seleção manual da clínica na lista, como faria com qualquer outra (confirmado pelo solicitante em 27/08/2026)
3. A verificação de Perfil de acesso (RN-CIU-015) **não roda no momento do aceite do card** — roda apenas quando o profissional efetivamente seleciona essa clínica na lista, no mesmo momento em que rodaria para qualquer outra clínica selecionada (confirmado pelo solicitante em 27/08/2026)

### Premissas

- O profissional só chega a esta tela depois de autenticado (E1) — esta tela nunca é o primeiro ponto de contato com o sistema.
- Toda clínica com vínculo ativo listada aqui já foi aceita em algum momento (E3, RN-CIU-014, ou nesta própria tela, RN-CIU-025) — a tela não lida com convites de clínicas ainda não aceitas de nenhuma forma.
- O profissional pode ter mais de um convite pendente simultâneo (de clínicas diferentes) — cada um exibido como um card separado.

### Dependências

Depende do E1 (Núcleo de Identidade e Autenticação) — só é alcançada a partir do roteamento pós-autenticação (RN-CIU-022, documento guarda-chuva). Depende do E3 (Convite e Vínculo) para o mecanismo de aceite de convite (mesma transição de `UsuarioCliente.Situacao` de 'C' para 'V', item 1 de RN-CIU-014) e para a verificação de Perfil de acesso pós-seleção (RN-CIU-015, redação completa em CIU-E3) — este épico reaproveita a regra, não a redefine.

### Requisitos SBIS Aplicáveis

NGS1.03.01 (Impedir acesso por pessoas não autorizadas), NGS1.03.03 (Gerenciamento de perfis), ECF.17.19 (Mensagens do sistema) — todos estágio 1 (Clínica/ambulatório), obrigatórios. Detalhamento na Seção 2.

---

## SEÇÃO 2 — ESPECIFICAÇÃO

### Histórias de Usuário

- **US-CIU-006:** Como profissional com mais de um vínculo ativo, quero escolher em qual clínica vou trabalhar logo após o login, para acessar rapidamente o contexto certo.
- **US-CIU-007:** Como profissional com um convite pendente de uma nova clínica, quero aceitar esse convite na mesma tela onde escolho minha clínica, sem repetir a leitura de regras que já conheço, para agilizar meu acesso sem uma tela extra.

### Descrição Funcional Detalhada

#### Lista de Clínicas

Exibe um item por clínica com vínculo ativo (`UsuarioCliente.Situacao = 'V'`) do profissional autenticado — nome da clínica (`Cliente.Nome`) e logo (`Cliente.CaminhoLogo`, quando presente). Cada item é clicável e dispara a seleção da clínica (RN-CIU-015). **[PROPOSTA — critério de ordenação não fornecido pelo solicitante]** lista ordenada alfabeticamente por nome da clínica, na ausência de um critério mais específico (ex.: última clínica acessada).

Motivador: é a lista normal de navegação do profissional que atende em mais de uma clínica — existia antes deste épico (E1, roteamento por múltiplos vínculos) e é apenas formalizada aqui.

#### Card de Convite Pendente

Um card por convite pendente (`UsuarioCliente.Situacao = 'C'`), visualmente destacado da lista de clínicas (RN-CIU-025) — borda ou fundo diferenciado (token `--color-highlight-*`, reservado para estados que pedem atenção, não para navegação normal), nome da clínica convidante, botão primário "Aceitar". Fica acima ou separado da lista, nunca misturado aos itens de seleção.

Motivador: o card representa uma ação pendente do profissional (decisão a tomar), não uma opção de navegação — misturá-lo à lista faria o profissional confundir "aceitar convite" com "selecionar clínica" (mesmo motivador já registrado em RN-CIU-025 / Seção 1).

Ao clicar em "Aceitar": chama o endpoint de aceite (Seção "Integração com Backend"), atualiza `Situacao` para 'V', remove o card da área de destaque e insere a clínica na lista normal — sem selecioná-la. O profissional permanece na tela, agora com um item a mais na lista.

#### Seleção de Clínica

Clicar num item da lista dispara a verificação de Perfil de acesso (RN-CIU-015) para aquela clínica. Dois desfechos:

- **Perfil de acesso encontrado:** navega para a tela inicial do profissional naquela clínica (cockpit — CM_CockPit_do_medico, ou equivalente de cada perfil profissional).
- **Perfil de acesso ausente:** permanece nesta tela, exibindo mensagem orientativa (MSG-I6-01) — mesmo texto e tratamento usados no E3 para o caso equivalente pós-aceite do vínculo (RN-CIU-015).

Motivador: a verificação de Perfil de acesso é sempre a mesma, o momento em que roda é que muda — antes (E3, aceite via tela cheia) ou aqui (na seleção) — confirmado pelo solicitante em 27/08/2026 (ver RN-CIU-025).

### Critérios de Aceitação

**CA-006.1**: Dado que estou autenticado e tenho mais de um vínculo ativo, quando o roteamento pós-login me traz a esta tela, então vejo a lista de clínicas com vínculo ativo, uma por item.

**CA-006.2**: Dado que estou nesta tela, quando seleciono uma clínica da lista e tenho Perfil de acesso associado a ela, então sou levado à tela inicial do meu perfil profissional naquela clínica.

**CA-006.3**: Dado que estou nesta tela, quando seleciono uma clínica da lista e não tenho Perfil de acesso associado a ela, então permaneço na tela e vejo a mensagem orientativa MSG-I6-01.

**CA-006.4**: Dado que tenho exatamente 1 vínculo ativo e nenhum convite pendente, quando faço login, então não vejo esta tela — vou direto ao cockpit (RN-CIU-009, sem alteração deste épico).

**CA-007.1**: Dado que tenho ao menos um vínculo ativo e um convite pendente de outra clínica, quando chego a esta tela, então vejo um card em destaque com o nome da clínica convidante e um botão "Aceitar", separado da lista normal.

**CA-007.2**: Dado que vejo o card de convite pendente, quando clico em "Aceitar", então o vínculo passa a `Situacao = 'V'`, o card sai da área de destaque e a clínica passa a constar na lista normal.

**CA-007.3**: Dado que acabei de aceitar um convite pelo card, quando a ação é concluída, então **não** sou levado automaticamente para a clínica recém-aceita — preciso selecioná-la na lista, como qualquer outra.

**CA-007.4**: Dado que tenho exatamente 1 vínculo ativo e um convite pendente simultâneo, quando faço login, então vejo esta tela (não o cockpit direto) — com a clínica do vínculo ativo na lista e o card do convite em destaque.

**CA-007.5**: Dado que o card de convite pendente ainda não foi aceito, quando verifico meu Perfil de acesso para a clínica em vias de aceitar, então nenhuma verificação de Perfil de acesso é feita — ela só ocorre depois, quando eu selecionar essa clínica já aceita na lista.

### Fluxos de Exceção

**EX-E6-01 — Seleção sem Perfil de acesso associado**

Gatilho: profissional seleciona uma clínica da lista para a qual não existe registro em `ClientePerfilAcessoUsuario` (mesma verificação de RN-CIU-015, reaproveitada do E3). Comportamento: permanece na tela de seleção, exibe mensagem orientativa MSG-I6-01 associada ao item da lista. Recuperação: profissional aguarda o administrador da clínica configurar seu Perfil de acesso, ou seleciona outra clínica da lista.

**EX-E6-02 — Falha ao aceitar convite pelo card**

Gatilho: back-end retorna erro ao tentar atualizar `Situacao` de 'C' para 'V' no aceite do card. Comportamento: toast de erro MSG-E6-01; o card permanece na área de destaque, inalterado. Recuperação: profissional tenta "Aceitar" novamente.

**EX-E6-03 — Convite expira enquanto o profissional está na tela**

Gatilho: profissional tenta aceitar um card cujo convite expirou (RN-CIU-024, em CIU-E3) entre o carregamento da tela e o clique em "Aceitar". Comportamento: toast de erro MSG-E6-02; o card sai da área de destaque (o convite não existe mais como pendente). Recuperação: profissional contata o administrador da clínica convidante para receber um novo convite — mesma orientação do E3 (RN-CIU-024).

**EX-E6-04 — Falha ao carregar a lista de clínicas e convites**

Gatilho: erro de rede ou falha do back-end ao buscar vínculos ativos e convites pendentes do profissional autenticado. Comportamento: estado de erro na tela (mensagem MSG-E6-03 + ação "Tentar novamente"), sem lista nem cards exibidos. Recuperação: profissional aciona "Tentar novamente"; se persistir, orientação a contatar o suporte.

**EX-E6-05 — Clínica removida entre o carregamento da lista e a seleção**

**[PROPOSTA — cenário não descrito pelo solicitante]** Gatilho: profissional seleciona uma clínica cujo registro em `Cliente` foi removido (`RemovidoEm` preenchido) no intervalo entre carregar a lista e clicar no item. Comportamento proposto: toast de erro MSG-E6-04, lista recarregada automaticamente sem o item removido. Recuperação: profissional seleciona outra clínica da lista atualizada. Sinalizado como proposta por ser um cenário de borda não descrito pelo solicitante — a confirmar se vale a pena tratar nesta primeira versão ou se é aceitável deixar como erro genérico de seleção.

### Validações de Campos

Esta tela não tem campos de entrada de dados — apenas seleção de itens de lista e um botão de aceite por card. Não há, portanto, validações de campo a documentar (diferente de E2/E3, que têm formulários).

### Mapeamento de Componentes de Interface

|Componente|Variante|Estados|Tokens aplicados|Uso nesta tela|
|---|---|---|---|---|
|Card|Seleção (clínica)|default, hover, focus, loading|`--radius-l` (12px), `--shadow-level-light`, `--color-base-pure` bg, `--spacing-m` padding|Um por clínica com vínculo ativo, na lista normal|
|Card|Destaque (convite pendente)|default, loading (durante aceite)|`--radius-l` (12px), borda `--border-medium` em `--color-highlight-pure` (#FFC400), `--color-highlight-light` bg (#FFF8E1)|Um por convite pendente, separado da lista|
|Button|Primary|default, hover, loading, disabled|`--btn-height` (40px), `--color-primary-pure` bg (#00E676), `--color-base-pure` texto, `--radius-m` (8px)|Botão "Aceitar" no card de convite (MSG-B6-01)|
|Banner/Ícone informativo|Info|default|`--color-secondary-pure` (#40C4FF)|Mensagem de bloqueio sem Perfil de acesso (MSG-I6-01), associada ao item da lista|
|Toast|Error|default|`--color-error-pure` (#F44336)|Falhas de aceite de convite, expiração, carregamento (MSG-E6-01 a 04)|
|Skeleton|Lista|loading|`--color-neutral-lighter` (#E5EAF0)|Estado de carregamento inicial da tela, antes da lista e dos cards chegarem|

### Integração com Backend

**GET /api/v1/checkin/clinic-selection**
Função: retorna, para o profissional autenticado, a lista de clínicas com vínculo ativo e os convites pendentes.
Request: nenhum parâmetro (usuário identificado pelo token de sessão).
Response: `{ clinicasAtivas: [{ usuarioClienteId, clienteId, nome, caminhoLogo }], convitesPendentes: [{ usuarioClienteId, clienteId, nome, caminhoLogo }] }`
Códigos: 200 (sucesso, listas podem vir vazias apenas para `convitesPendentes`); 401 (não autenticado); 500 (falha ao carregar — EX-E6-04).
Tabelas envolvidas: UsuarioCliente, Cliente (IpSeguranca).

**POST /api/v1/checkin/clinic-selection/{usuarioClienteId}/accept-invite**
Função: aceita o convite pendente de um card, sem selecionar a clínica.
Request: nenhum corpo — `usuarioClienteId` no path identifica o vínculo.
Response: `{ usuarioClienteId, clienteId, nome, caminhoLogo }` (o mesmo item, agora pronto para entrar na lista normal).
Códigos: 200 (sucesso); 404 (convite não encontrado ou já resolvido); 409 (convite expirado — EX-E6-03, retorna MSG-E6-02); 500 (falha ao atualizar — EX-E6-02).
Tabelas envolvidas: UsuarioCliente (atualiza `Situacao`), UsuarioClienteConvite (deleta o registro — mesma tabela e mecanismo do E3, RN-CIU-024).

**POST /api/v1/checkin/clinic-selection/{usuarioClienteId}/select**
Função: seleciona a clínica para a sessão de trabalho, rodando a verificação de Perfil de acesso.
Request: nenhum corpo — `usuarioClienteId` no path.
Response, com Perfil de acesso: `{ perfilEncontrado: true, redirecionarPara: "<rota do cockpit do perfil>" }`. Sem Perfil de acesso: `{ perfilEncontrado: false, mensagem: "MSG-I6-01" }`.
Códigos: 200 (sucesso, com ou sem perfil — o corpo diferencia); 404 (clínica removida ou vínculo inválido — EX-E6-05); 401 (não autenticado).
Tabelas envolvidas: UsuarioCliente, ClientePerfilAcesso, ClientePerfilAcessoUsuario (IpSeguranca) — mesma verificação de RN-CIU-015, em CIU-E3.

### Catálogo de Mensagens do Sistema e Termos de Interface (i18n)

**Erros:**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-E6-01|Falha ao aceitar convite pelo card|"Não foi possível aceitar o convite. Tente novamente."|"Could not accept the invitation. Please try again."|"No fue posible aceptar la invitación. Inténtelo de nuevo."|
|MSG-E6-02|Convite expirado ao tentar aceitar|"Este convite expirou. Entre em contato com o administrador da clínica para receber um novo convite."|"This invitation has expired. Contact the clinic's administrator to receive a new invitation."|"Esta invitación ha expirado. Comuníquese con el administrador de la clínica para recibir una nueva invitación."|
|MSG-E6-03|Falha ao carregar lista de clínicas e convites|"Não foi possível carregar suas clínicas. Tente novamente."|"Could not load your clinics. Please try again."|"No fue posible cargar sus clínicas. Inténtelo de nuevo."|
|MSG-E6-04|Clínica removida entre carregar a lista e selecionar **[PROPOSTA]**|"Esta clínica não está mais disponível."|"This clinic is no longer available."|"Esta clínica ya no está disponible."|

**Informativas:**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-I6-01|Perfil de acesso ausente na clínica selecionada|"Você ainda não tem um perfil de acesso configurado nesta clínica. Aguarde ou entre em contato com o administrador."|"You don't have an access profile configured at this clinic yet. Wait or contact the administrator."|"Aún no tiene un perfil de acceso configurado en esta clínica. Espere o comuníquese con el administrador."|

**Textos orientadores:**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-T6-01|Título da área de destaque de convites|"Convite pendente"|"Pending invitation"|"Invitación pendiente"|
|MSG-T6-02|Título da lista de clínicas|"Selecione uma clínica"|"Select a clinic"|"Seleccione una clínica"|

**Botões/links:**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-B6-01|Botão (card de convite)|"Aceitar"|"Accept"|"Aceptar"|
|MSG-B6-02|Ação de recuperação (erro de carregamento)|"Tentar novamente"|"Try again"|"Intentar de nuevo"|

### Conformidade SBIS (detalhamento)

**NGS1.03.01 — Impedir acesso por pessoas não autorizadas** (estágio 1, obrigatório) — a seleção de clínica só concede acesso à tela inicial do profissional quando há Perfil de acesso associado (RN-CIU-015); sem ele, o profissional permanece bloqueado nesta tela, com orientação (MSG-I6-01).

**NGS1.03.03 — Gerenciamento de perfis** (estágio 1, obrigatório) — este épico consome a verificação de Perfil de acesso a cada seleção de clínica, não apenas uma vez no aceite do vínculo (E3) — reforça o controle a cada troca de contexto de trabalho.

**ECF.17.19 — Mensagens do sistema** (estágio 1, obrigatório) — todas as mensagens exibidas ao profissional estão catalogadas acima, em linguagem não técnica, em português do Brasil, com suporte multilíngue para en-US e es-419.

---

## SEÇÃO 3 — PROTÓTIPO HTML

Protótipo funcional único (HTML + CSS + JS inline), cobrindo os touchpoints de ponta a ponta: carregamento da tela (loading), lista de clínicas, card de convite pendente com aceite, seleção de clínica com os dois desfechos de RN-CIU-015 (perfil encontrado / ausente), e o estado de erro de carregamento (EX-E6-04). Usa os tokens do Design System (`Design System.md`) diretamente como CSS custom properties.

Arquivo: `(CIU-E6) Protótipo - Seleção de Clínica.html` (entregue separadamente, referenciado aqui).

### Estados contemplados

- **Loading:** skeleton nos lugares da lista e da área de destaque, exibido enquanto `GET /api/v1/checkin/clinic-selection` está em voo.
- **Default:** lista de clínicas + (quando houver) cards de convite em destaque.
- **Empty de convites:** área de destaque de convites simplesmente não é renderizada quando `convitesPendentes` vem vazio — não é tratada como "vazio" visualmente, pois é o caso comum (maioria dos logins não tem convite pendente).
- **Erro de carregamento (EX-E6-04):** mensagem MSG-E6-03 + botão "Tentar novamente" (MSG-B6-02), sem lista nem cards.
- **Aceite em andamento:** botão "Aceitar" do card em estado loading (spinner interno), desabilitado até a resposta do backend.
- **Bloqueio pós-seleção (RN-CIU-015, sem perfil):** mensagem inline MSG-I6-01 associada ao item selecionado, profissional permanece na tela.
- **Sucesso na seleção:** simulação de redirecionamento (placeholder — a tela real de destino é o cockpit de cada perfil, fora do escopo deste protótipo).

---

## SEÇÃO 4 — MAPEAMENTO DE BANCO DE DADOS

### Tabelas existentes utilizadas

|Tabela|Banco|Campos utilizados neste épico|
|---|---|---|
|UsuarioCliente|IpSeguranca|Id, UsuarioId, ClienteBDId, Situacao (domínio C/V/B — RN-CIU-011, em CIU-E3), RemovidoEm|
|Cliente|IpSeguranca|Id, Nome, CaminhoLogo — exibidos na lista de clínicas e no card de convite|
|ClientePerfilAcesso|IpSeguranca|Id, Nome, ClienteBDId — consultado na verificação de Perfil de acesso (RN-CIU-015)|
|ClientePerfilAcessoUsuario|IpSeguranca|Id, ClientePerfilAcessoId, UsuarioClienteId — consultado na verificação de Perfil de acesso (RN-CIU-015)|
|UsuarioClienteConvite|IpSeguranca|Token, DataExpiracao — consultados/apagados no aceite do card (mesma tabela criada em CIU-E3, Seção 4; deleção física ao aceitar, RN-CIU-024)|

Nenhuma tabela nova. Este épico reaproveita integralmente a estrutura de dados já mapeada em CIU-E3 — a tela de seleção de clínica é uma nova forma de consumir os mesmos vínculos e convites, não uma nova entidade de dados.

---

## Metadados do Épico

|Atributo|Valor|
|---|---|
|Prioridade|Must Have — sem esta tela, um profissional com mais de um vínculo ativo não tem como escolher onde entrar, e um convite pendente com vínculo já ativo nunca seria visto|
|Complexidade|Baixa — nenhuma tabela nova, reaproveita integralmente a estrutura e as regras de RN-CIU-014/015/024 já mapeadas no E3; a novidade é apenas o momento e o local em que essas regras rodam|
|Dependências|E1 (autenticação, roteamento pós-login); E3 (mecanismo de aceite de vínculo e verificação de Perfil de acesso, reaproveitados sem redefinição)|
|Regras transversais aplicadas|1 (RN-CIU-022)|
|Regras específicas deste épico|1 (RN-CIU-025)|
|Histórias de usuário|2 (US-CIU-006, US-CIU-007)|
|Critérios de aceitação|9 (CA-006.1 a CA-006.4, CA-007.1 a CA-007.5)|
|Fluxos de exceção|5 (EX-E6-01 a EX-E6-05)|
|Endpoints|3|
|Telas|1 (Seleção de clínica, com lista + área de destaque de convites) — prototipada em HTML nesta revisão|
|Tabelas utilizadas|5 existentes (UsuarioCliente, Cliente, ClientePerfilAcesso, ClientePerfilAcessoUsuario, UsuarioClienteConvite) — nenhuma nova|
|Mensagens catalogadas|7 (4 erros, 1 informativa, 2 textos orientadores) + 2 rótulos de botão|
|Requisitos SBIS atendidos|2 (NGS1.03.01, NGS1.03.03) + ECF.17.19|

### Lista consolidada de itens marcados [PROPOSTA] nesta versão

1. Critério de ordenação da lista de clínicas — proposto alfabético por nome, na ausência de indicação do solicitante (Seção 2, Descrição Funcional, "Lista de Clínicas").
2. Fluxo de exceção EX-E6-05 (clínica removida entre carregar a lista e selecionar) — cenário de borda não descrito pelo solicitante; comportamento proposto a confirmar.
3. Mensagem MSG-E6-04, associada ao item 2 acima — texto e existência dependem da confirmação do cenário.

---

## HISTÓRICO DE VERSÕES

- **v0.1** (27/08/2026) — Seção 1 (Definição) iniciada a partir da descrição do fluxo de login com múltiplas clínicas e do card de aceite de convite, fornecida pelo solicitante. Criada RN-CIU-025, com dois pontos sinalizados como proposta não confirmada. Documento ainda não cobre Seção 2 completa, Seção 3 nem Seção 4 — ver "Pendências para as próximas seções".
- **v0.2** (27/08/2026, mesmo dia) — RN-CIU-025 totalmente confirmada pelo solicitante, resolvendo os dois pontos em aberto da v0.1: o aceite do card não seleciona a clínica automaticamente, apenas a adiciona à lista normal de seleção (exige uma segunda ação manual); a verificação de Perfil de acesso (RN-CIU-015) não roda no aceite do card, só no momento da seleção da clínica na lista. Também dobrada para dentro do corpo da regra a confirmação, já registrada no guarda-chuva (RN-CIU-022), de que o caso de exatamente 1 vínculo ativo está coberto — removido o segundo bloco de proposta, que duplicava essa mesma questão já resolvida alhures. Seção 1 (Definição) considerada concluída. Seção 2, 3 e 4 seguem pendentes.
- **v1.0** (27/08/2026, mesmo dia) — Seção 2 (Especificação), Seção 3 (Protótipo HTML) e Seção 4 (Mapeamento de Banco de Dados) desenvolvidas, completando o épico no modelo padrão Seção 1-4 da Skill Designer. Adicionadas 2 histórias de usuário (US-CIU-006, US-CIU-007), 9 critérios de aceitação, 5 fluxos de exceção (um deles, EX-E6-05, marcado como proposta — cenário de borda não descrito pelo solicitante), mapeamento de componentes, 3 endpoints, catálogo de mensagens (7 mensagens + 2 rótulos de botão) e protótipo HTML funcional (`(CIU-E6) Protótipo - Seleção de Clínica.html`). Seção 4 confirma que nenhuma tabela nova é necessária — reaproveita integralmente a estrutura já mapeada em CIU-E3 (UsuarioCliente, Cliente, ClientePerfilAcesso, ClientePerfilAcessoUsuario, UsuarioClienteConvite). Um item de ordenação de lista também marcado como proposta, por falta de critério informado pelo solicitante.

---

_Documento elaborado em 27 de agosto de 2026. As informações contidas são de responsabilidade do solicitante._
