# Cenários de Teste — Central do Médico (Cockpit)

**Funcionalidade:** [DOC-004] Central do Médico (Cockpit)
**Versão de referência da especificação:** 01-Definição v4.26 / 02-Especificação v4.25 / 04-Mapeamento de BD v4.28
**Autor:** Gerado por IA (Claude), a pedido do usuário, para uso da equipe de QA do Gemed 2.1
**Data:** 14/09/2026
**Massa de dados de referência:** `CargaPrescricaoZero_massa_teste.xlsx` (entregue junto com este documento)

> Nota de proveniência: este documento não foi lido a partir de um template de "cenários de teste" já existente no projeto — não foi localizado nenhum no Índice estruturado de documentos. A estrutura de casos (ID / Pré-condição / Passos / Resultado Esperado / Prioridade / Dados de Teste) segue convenção usual de QA, não um padrão já definido pela Skill Designer (que cobre Definição/Especificação/Protótipo/Mapeamento de BD, não casos de teste). Ajustes de formato são bem-vindos.

---

## 1. Escopo

Este documento cobre a homologação funcional da Central do Médico (Cockpit), conforme [DOC-004]: KPI Bar (4 indicadores clicáveis) e os 4 painéis do grid — **Consultas**, **Prescrições Pendentes**, **Comunicação** e **Procedimentos na Clínica** — além da Busca Inteligente de pacientes.

Fora de escopo deste documento: Agenda do Médico (DOC-006, tela dedicada, especificação própria ainda sem Protótipo/Mapeamento de BD) e o fluxo de Agendamento da Recepção (não mapeado no projeto). Cenários aqui tratam apenas do que a Central do Médico exibe/consome desses dados.

### Endpoints envolvidos (referência)

| Endpoint | Painel/KPI |
|---|---|
| `GET /api/v1/patients/search` | Busca Inteligente |
| `GET /api/v1/cockpit/doctor/kpis/appointments-today` | KPI Consultas Hoje |
| `GET /api/v1/cockpit/doctor/kpis/in-treatment` | KPI Em Tratamento |
| `GET /api/v1/cockpit/doctor/kpis/procedures-today` | KPI Procedimentos Hoje |
| `GET /api/v1/cockpit/doctor/kpis/prescription-alerts` | KPI Alertas de Prescrição |
| `GET /api/v1/cockpit/doctor/appointments` | Painel Consultas |
| `GET /api/v1/cockpit/doctor/prescriptions` | Painel Prescrições Pendentes |
| `GET /api/v1/cockpit/doctor/conversations` | Painel Comunicação |
| `GET /api/v1/cockpit/doctor/procedures` | Painel Procedimentos |

### Massa de dados criada para estes testes

- **Médicos:** IdChProfissional 11 (Craige Evans) e 9 (Gilliard Onório Santos), especialidade Oncologista.
- **Pacientes novos:** IdPaciente 19-24 (3 vinculados ao Dr. 11, 3 ao Dr. 9), com convênio próprio cadastrado.
- **Agenda de hoje (14/09/2026):** 10+ registros cobrindo todos os 9 estados do domínio `Agenda.Situacao` (A=Aberta, V=Confirmada, C=Cancelada pelo usuário, D=Cancelada pelo paciente, M=Cancelada pelo médico, F=Falta, I=Cancelado por internação, O=Cancelada por óbito, T=Transferido), distribuídos entre os dois médicos.
- **Agenda passada:** confirmadas/realizadas (V) e canceladas (C/D/M/F/I/O/T variados), de 5 a 60 dias atrás.
- **Agenda futura:** todas em estado Agendado (A), de 7 a 45 dias à frente.
- **Plano terapêutico completo #1** — Paciente 19 (Roberto Nascimento Alves), Dr. 11, protocolo NIVOLUMAB + IPILIMUMAB, C1D1 em 13/07/2026 (~2 meses atrás) até C5D1 em 05/10/2026 (próximo mês): **todas as 5 prescrições do ciclo geradas** (C1-C3 finalizadas, C4 é hoje, C5 futura), cada uma com sua Agenda de quimioterapia correspondente.
- **Plano terapêutico completo #2** — Paciente 21 (Helena Duarte Costa), Dr. 9, protocolo DOCETAXEL + CARBOPLATINA, C1D1 em 14/08/2026 (~1 mês atrás), programação de 6 ciclos: **apenas as prescrições até o próximo ciclo foram geradas** (C1-C2 finalizadas, C3 é o próximo ciclo em 25/09/2026) — as demais (C4-C6) existem só na programação (`PEPProjetoTerapeuticoProtocoloP`), sem prescrição ainda gerada.
- **Prescrições avulsas baseadas em protocolo** (sem plano terapêutico formal) para os pacientes 20, 22, 23 e 24 — protocolos Ácido Zoledrônico e Prescrição Livre, em estados variados (finalizada, cancelada, futura).

---

## 2. KPI Bar

### CT-KPI-01 — KPI "Consultas Hoje" reflete a contagem correta
**Pré-condição:** Logado como Dr. Craige Evans (IdChProfissional 11).
**Passos:** Abrir o Cockpit na data de hoje (14/09/2026).
**Resultado esperado:** O card "Consultas Hoje" mostra a contagem de agendas do Dr. 11 com `Data = hoje`, incluindo todos os estados (não apenas as confirmadas) — conferir contra a massa de teste (5 consultas do Dr. 11 hoje: pacientes 19/A, 20/C, 23/M, 7/I, 13/T).
**Prioridade:** Alta
**Dados de teste:** Agenda IdAgenda 101, 103, 105, 107, 109.

### CT-KPI-02 — KPI "Em Tratamento" (aderência ao protocolo)
**Pré-condição:** Logado como Dr. Gilliard Onório Santos (IdChProfissional 9).
**Passos:** Abrir o Cockpit; observar o KPI "Em Tratamento".
**Resultado esperado:** A paciente 21 (Helena Duarte Costa) deve aparecer como "em tratamento" (tem `PEPProjetoTerapeuticoProtocolo` ativo, C1/C2 finalizados dentro do intervalo de 21 dias esperado). Validar também o critério de desvio: se o QA alterar manualmente a `DataEstimada` do próximo ciclo para simular atraso, o indicador de aderência deve refletir a mudança (regra "OU" entre desvio de C1D1 e desvio de intervalo entre sessões).
**Prioridade:** Alta
**Dados de teste:** PEPProjetoTerapeuticoProtocolo (paciente 21), PEPProjetoTerapeuticoProtocoloP linhas C1-C3.
**Observação:** este KPI depende da coluna `Protocolo.ToleranciaDiasAdesao`, listada em DOC-004 como **[PROPOSTA]** — confirmar com o time se já foi criada antes de rodar este caso; se não, o caso deve ficar bloqueado/pendente.

### CT-KPI-03 — KPI "Procedimentos Hoje"
**Pré-condição:** Logado como Dr. 11.
**Passos:** Abrir o Cockpit hoje.
**Resultado esperado:** Deve contar a sessão de quimioterapia do paciente 19 agendada para hoje (Agenda tipo 'Q', ciclo C4D1 do protocolo NIVOLUMAB+IPILIMUMAB).
**Prioridade:** Média
**Dados de teste:** Prescrição IdPrescricao 61 / Agenda vinculada (tipo Q, hoje).

### CT-KPI-04 — KPI "Alertas de Prescrição"
**Pré-condição:** Logado como Dr. 9.
**Passos:** Abrir o Cockpit; verificar o KPI de alertas.
**Resultado esperado:** Prescrições com aplicação agendada dentro de 24h e ainda sem assinatura de revisão por outro médico (RN-CM-020) devem gerar alerta — chip vermelho se <12h, laranja se 12-24h. A prescrição C3D1 da paciente 21 (25/09/2026, sem assinatura ainda — situação 'G') **não deve** alertar ainda (está a mais de 24h); usar para caso negativo. Para caso positivo, o QA deve criar (ou o Dev de apoio deve disponibilizar) uma prescrição G com aplicação em menos de 24h.
**Prioridade:** Alta
**Dados de teste:** Prescrição IdPrescricao 65 (caso negativo).

### CT-KPI-05 — Clique no KPI navega para o painel/filtro correspondente
**Pré-condição:** Qualquer médico logado.
**Passos:** Clicar em cada um dos 4 KPIs.
**Resultado esperado:** Navega para o painel relacionado já filtrado pelo critério do KPI (ex.: clicar em "Consultas Hoje" abre o painel Consultas filtrado no dia de hoje).
**Prioridade:** Média

---

## 3. Painel Consultas

### CT-CONS-01 — Exibição de todos os estados de agenda do dia
**Pré-condição:** Logado como Dr. 11 ou Dr. 9, data de hoje.
**Passos:** Abrir o painel Consultas.
**Resultado esperado:** As 10 consultas de hoje aparecem, cada uma com o chip de status correspondente ao código em `Agenda.Situacao` (Aberta, Confirmada, Cancelada pelo usuário, Cancelada pelo paciente, Cancelada pelo médico, Falta, Cancelado por internação, Cancelada por óbito, Transferido). Validar que os 9 rótulos existem e correspondem ao código certo — este é o teste mais importante da massa gerada, pois cobre o domínio completo de uma só vez.
**Prioridade:** Alta
**Dados de teste:** Agenda IdAgenda 101-110 (ver tabela no §1).

### CT-CONS-02 — Toque na consulta abre o PEP
**Pré-condição:** Painel Consultas aberto.
**Passos:** Tocar em uma consulta com paciente (ex.: paciente 19, estado Aberta).
**Resultado esperado:** Abre o prontuário (PEP) do paciente em no máximo 2 toques (herdado da Agenda do Médico).
**Prioridade:** Média

### CT-CONS-03 — Paciente "1ª consulta"
**Pré-condição:** —
**Resultado esperado:** Nenhum registro da massa gerada tem `PrimeiraConsulta='S'`; este caso deve ser testado com dado adicional (fora desta massa) ou o QA pode alterar manualmente um registro de teste para `S` e validar a tag correspondente no card.
**Prioridade:** Baixa
**Observação:** gap conhecido da massa gerada — sinalizado explicitamente aqui.

### CT-CONS-04 — Bloco recolhido de consultas já realizadas/canceladas
**Pré-condição:** Dia de hoje com mistura de estados.
**Passos:** Abrir o painel; verificar que consultas com estado final (V já atendida, C/D/M/F/I/O/T) aparecem agrupadas em bloco recolhido, com linha "AGORA" ancorando a posição atual do dia.
**Resultado esperado:** Conforme RN-AGM-010 (herdada visualmente pela Central do Médico via painel "Consultas").
**Prioridade:** Média

---

## 4. Painel Prescrições Pendentes

### CT-PRES-01 — Prescrição finalizada não aparece como pendente
**Pré-condição:** Dr. 11 logado.
**Passos:** Abrir painel Prescrições Pendentes.
**Resultado esperado:** As prescrições C1-C3 do paciente 19 (situação 'F', já finalizadas e assinadas) **não** devem aparecer na lista de pendentes.
**Prioridade:** Alta
**Dados de teste:** Prescrição IdPrescricao 58-60.

### CT-PRES-02 — Prescrição futura (G) aparece como pendente de assinatura
**Pré-condição:** Dr. 11 logado.
**Passos:** Abrir painel Prescrições Pendentes.
**Resultado esperado:** As prescrições C4D1 (hoje) e C5D1 (futura) do paciente 19 — situação 'G', sem `IdChProfissionalAssinou` — aparecem na lista, com indicação de urgência conforme proximidade da aplicação (RN-CM-020).
**Prioridade:** Alta
**Dados de teste:** Prescrição IdPrescricao 61 (hoje) e 62 (futura).

### CT-PRES-03 — Prescrição cancelada não aparece como pendente
**Pré-condição:** Dr. 11 logado.
**Passos:** Abrir painel Prescrições Pendentes.
**Resultado esperado:** A prescrição de "Prescrição Livre" cancelada da paciente 23 (situação 'C') não deve aparecer na lista.
**Prioridade:** Média
**Dados de teste:** Prescrição avulsa da paciente 23 (protocolo 187).

### CT-PRES-04 — Assinatura com/sem certificado digital
**Pré-condição:** Prescrição pendente aberta.
**Passos:** Assinar com certificado digital e, em outro caso, sem certificado.
**Resultado esperado:** Ambos os fluxos concluem e o registro correspondente é criado em `PrescricaoAssinatura` (TipoAssinatura='A' para médico — corrigido na v4.28, não mais 'M').
**Prioridade:** Alta
**Observação:** validar especificamente que a assinatura do médico grava `'A'`, não `'M'` — bug já documentado e corrigido na especificação (Log de Mudanças, v4.28); é um bom caso de regressão.

---

## 5. Painel Procedimentos na Clínica

### CT-PROC-01 — Barra de progresso de infusão em andamento
**Pré-condição:** Existir uma sessão de quimioterapia com `DtHrIniAtend`/`DtHrInicioInfusao` preenchidos e `DtHrFimAtend` vazio (infusão em curso).
**Passos:** Abrir o painel Procedimentos.
**Resultado esperado:** Barra de progresso inline (3px) calculada a partir do tempo decorrido vs. `Prescrição/ProtocoloDetalhe.TempoAplicacao`; fica vermelha se ultrapassar 100%.
**Prioridade:** Alta
**Dados de teste:** A massa gerada não deixou nenhuma sessão "em andamento" no momento exato da execução do teste — como os horários são fixos, este caso deve ser testado ajustando o relógio do ambiente de teste (ou gerando uma sessão com início "agora") para o horário coincidir com uma sessão de quimio de hoje. Sinalizado como gap.

### CT-PROC-02 — Procedimento do dia listado por médico
**Pré-condição:** Dr. 11 logado.
**Passos:** Abrir painel Procedimentos.
**Resultado esperado:** Mostra a sessão de quimioterapia de hoje do paciente 19 (C4D1, NIVOLUMAB+IPILIMUMAB).
**Prioridade:** Alta

---

## 6. Painel Comunicação

A massa gerada **não inclui** dados de mensageria (`Conversa`/`Mensagem`, schema `mensageria`) — fora do escopo explícito do pedido original. Os casos abaixo ficam registrados como pendentes de massa de dados adicional.

### CT-COM-01 — Conversas lidas e não lidas juntas, não lidas com prioridade
**Status:** Bloqueado — requer massa de `Conversa`/`Mensagem` (schema `mensageria`), não gerada nesta rodada.

### CT-COM-02 — Conversa endereçada a uma equipe (recepção/farmácia/enfermagem)
**Status:** Bloqueado — mesma razão acima.

> Recomendação: se a equipe de QA precisar homologar este painel, peça uma nova rodada de massa de dados específica para `Conversa`/`Mensagem`/`Equipe`/`EquipeMembro`.

---

## 7. Busca Inteligente

### CT-BUSCA-01 — Busca por nome (mínimo 2 caracteres, debounce 1s)
**Passos:** Digitar "Rob" na busca.
**Resultado esperado:** Após 1s sem digitação, retorna o paciente 19 (Roberto Nascimento Alves) entre os resultados.
**Prioridade:** Média

### CT-BUSCA-02 — Detecção de CPF
**Passos:** Digitar o CPF do paciente 21 (58273049166).
**Resultado esperado:** Sistema reconhece o padrão como CPF (não nome) e busca por igualdade.
**Prioridade:** Média
**Dados de teste:** Paciente 21.

### CT-BUSCA-03 — Detecção de data de nascimento
**Passos:** Digitar "14/03/1958" (nascimento do paciente 19).
**Resultado esperado:** Sistema reconhece como data de nascimento e retorna o paciente correspondente.
**Prioridade:** Baixa

---

## 8. Cenários de KPI/painel com volume (regressão de performance/paginação)

### CT-VOL-01 — Painel Consultas com muitos registros no dia
**Pré-condição:** Dia de hoje com 11 agendas (10 consultas + 1 sessão de quimio simultânea do paciente 19).
**Resultado esperado:** Painel carrega, ordena por horário e não trava/pagina incorretamente com esse volume (ainda modesto — recomenda-se replicar a massa por 5-10x para um teste de carga real antes de produção).
**Prioridade:** Baixa

---

## 9. Matriz de rastreabilidade (resumo)

| Painel/KPI | Casos | Cobertura de dados |
|---|---|---|
| KPI Bar | CT-KPI-01 a 05 | Completa, exceto CT-KPI-02 (depende de coluna proposta) |
| Consultas | CT-CONS-01 a 04 | Completa para estados de agenda; gap em "1ª consulta" |
| Prescrições Pendentes | CT-PRES-01 a 04 | Completa |
| Procedimentos | CT-PROC-01 a 02 | Gap em "infusão em andamento" (depende de horário real) |
| Comunicação | CT-COM-01 a 02 | Bloqueado — sem massa de mensageria |
| Busca Inteligente | CT-BUSCA-01 a 03 | Completa |

---

## 10. Premissas e observações desta rodada de geração de dados

Estas são decisões tomadas pela IA ao gerar a massa, sem confirmação prévia do solicitante — sinalizadas explicitamente conforme as Regras de Conduta do projeto:

1. **[PROPOSTA]** Estado "V" (Confirmada) foi usado, com `DtHrChegada`/`DtHrIniAtend`/`DtHrFimAtend` todos preenchidos, para representar visualmente uma consulta "Finalizada" no passado — o domínio oficial de `Agenda.Situacao` (Log de Mudanças Estruturais, 10/09/2026) não tem um código literal "Finalizada"; V=Confirmada foi o mais próximo semanticamente e é o mesmo padrão observado nos dados reais já existentes na planilha.
2. **[PROPOSTA]** Campos de auditoria/UTC (`DhAgendaIniUTC`, `DhChegadaUTC`, `DhAtendimentoIniUTC` etc.) foram deixados em branco nas linhas novas — são campos de reconciliação legada cuja regra de preenchimento não está documentada nas especificações consultadas; preencher exigiria inventar uma lógica não confirmada.
3. **[PROPOSTA]** `Agenda.IdChRecurso` para consultas foi definido como igual ao `IdChProfissional` do médico (padrão consistente com a tabela `Recurso`, IDs 7-21); para quimioterapia, foi usado um dos recursos 22-29 (poltronas/leitos dos Setores Verde/Rosa) — a planilha original também tem alguns registros legados que usam o ID do médico como recurso mesmo em sessões de quimio, mas a Biblioteca de Schema (DDL) modela os recursos 22-29 como a estrutura correta.
4. A coluna final "INSERT INTO ... VALUES (...)" de cada aba (fórmula do Excel) **não foi replicada** nas linhas novas — é uma conveniência de geração de SQL específica da planilha original, cuja fórmula usa referências de tabela (`[#This Row]`) que a IA optou por não recriar manualmente para não arriscar corromper a fórmula original. As colunas de dados estruturados (que são o que importa para os testes) estão todas preenchidas.
5. Os nomes de pacientes e médicos são fictícios, como já era o padrão dos dados existentes na planilha.

---

**Arquivo de dados:** `CargaPrescricaoZero_massa_teste.xlsx`
