Cenários de Teste — Mensageria

Funcionalidade: Mensageria (Comunicação entre Profissionais) Versão de referência da especificação: 01-Definição v1.28 / 02-Especificação v1.28 / 03-Protótipo v1.28 / 04-Mapeamento de BD v1.28 / 05-Registro de Decisões v1.28 Autor: Marcos Arao, para uso da equipe de QA do Gemed 2.1 Massa de dados de referência: CargaCMZero.xlsx (pasta Central do Médico (Cockpit)/) traz usuários e as equipes Enfermagem, Farmácia e Onco com seus membros, mas nenhuma conversa. As conversas M1 a M10 abaixo são uma [PROPOSTA] de massa a ser criada por script (datas relativas à execução) antes dos testes. Tabelas do IpSeguranca (clínica, perfis, direitos) em Infra-estrutura/CargaSegGlobal.xlsx; os direitos Visualizar e Enviar ainda não existem na carga (04-Mapeamento, 4.6). Data-base dos testes: quinta, 22/10/2026, às 12:00 no fuso da clínica (America/Sao_Paulo, GMT−03:00). Os prazos da massa são relativos a esse momento.


1. Escopo

Cobre a homologação funcional da Mensageria: painel de Mensagens da Central, tela de Mensagens (abas Abertas e Finalizadas), cartão de conversa, nova mensagem, conversa (modal), responder, resolver e descartar, envio a equipe e a si mesmo, alertas do sistema, ordem, “vencida”, “não lida”, fuso e idioma, permissões, auditoria, acessibilidade e os contratos dos endpoints.

Fora de escopo:

  • Cadastro de equipes e de seus membros (outro módulo); aqui são pré-condição.
  • Geração dos alertas pelos módulos de origem (Assistencial, Estoque, Agendamento): aqui o alerta é criado pela interface de publicação (CT-MSG-191 a 198 API). A regra que dispara cada alerta é testada em cada módulo.
  • Conteúdo das telas de destino do atalho (prontuário, prescrição, consulta): aqui só se confere que o atalho leva ao módulo certo.
  • Alterações da Central do Médico (próxima versão): ver 05, P-MSG-09. Os casos CT-MSG-01 a 21 do Cenários da Central continuam valendo para o painel atual da Central até essa versão.
  • Componente de data e hora (P-MSG-04): resolvida (D-MSG-061 e 064): data nativa e horário em 24 h, em componente próprio; prazo só com a data em P-MSG-44. O padrão de botões está decidido (Design System, seção 12; CT-MSG-266).
  • Textos en-US e es-419: o catálogo existe (02, 2.9); a troca de idioma da interface é testada em CT-MSG-205 e 206.

Casos marcados (API) são executados direto no endpoint. Casos (BD) exigem alterar ou conferir o banco; restaurar o valor ao final.

Ordem de execução e massa: vários casos alteram as conversas (resolver, descartar, responder, ler). Recriar a massa M1 a M10 antes de cada seção, e antes de qualquer caso cujo “Estado de CT-MSG-nnn” dependa de uma conversa ainda aberta.

Usuários de teste

UsuárioIdUsuarioPapel no testeEquipes
Craig Evans1Médico logado na maior parte dos casosOnco
Gilliard Onório Santos4Segundo médicoOnco
Claire Vance5EnfermagemEnfermagem
Ingrid Jorgensen6FarmáciaFarmácia
Mateo Perez7EnfermagemEnfermagem
Li Wei8FarmáciaFarmácia

Massa proposta de conversas [PROPOSTA]

IDRemetente → DestinoAssuntoPaciente / processoEstado e momento
M1Ingrid → CraigReceita de antiemético para viagemRoberto N. Alves (19) / ProntuárioEnviada há 40 min; não lida por Craig; prazo hoje 18:00
M2Claire → equipe FarmáciaCarboplatina em faltaBeatriz A. Lima (20)Lida por Li Wei há 2 h; Ingrid não leu; sem prazo
M3Sistema (Assistencial) → CraigPeso divergente na prescriçãoMarcelo T. Pinto (22) / Prescrição “FOLFOX - C1D15”Não lida; prazo venceu há 2 h (10:00)
M4Craig → CraigRevisar protocolo de neutropeniasemLida; prazo amanhã 09:00
M5Mateo → CraigPaciente da sala 2 pronto para infusãoMaria Silva (4) / ConsultaCraig respondeu há 1 h (Respondida); sem prazo
M6Ingrid → CraigAtraso na manipulaçãosemResolvida por Craig ontem 16:10
M7Claire → CraigRecado de pacientesemDescartada por Claire (remetente) ontem 09:00
M8Craig → equipe OncoReunião de quintasemEnviada há 3 h; Gilliard não leu; Craig é membro
M9Sistema (Estoque) → ClaireMedicamento no limite mínimosemNão lida; sem prazo
M1025 conversas abertas de Craig (geradas)Mensagem de teste nsemPara paginação (CT-MSG-115)
M12Claire → GilliardSangramento na sala 3semImediato (stat); lida por Gilliard; enviada hoje às 07:00
M13Ingrid → GilliardDúvida de diluiçãosemRotina (routine); lida por Gilliard; enviada hoje às 11:50
M14Mateo → GilliardAjustar agenda de sextasemSem grau; lida por Gilliard; enviada hoje às 11:55
M15Sistema (Assistencial) → GilliardResultado de exame crítico sem análiseRoberto N. Alves (19) / ProntuárioQuanto antes (asap), definido pelo módulo de origem; não lida; publicada hoje às 08:00
M16Ingrid → CraigConferir laudoRoberto N. Alves (19) / Documento “Laudo de hemograma”Usar só em CT-MSG-327 a 330; fora das contagens dos demais casos
M17Mateo → CraigRever sinais vitaisMaria Silva (4) / Registro clínico “21/10/2026 · Sinais vitais · Dr. Carlos”Usar só em CT-MSG-327 a 330; fora das contagens dos demais casos
M18Claire → equipe FarmáciaCarboplatina: lote chegouBeatriz A. Lima (20)Li Wei (membro) respondeu há 20 min; usar só em CT-MSG-329; fora das contagens dos demais casos

M3: mensagem publicada às 09:30 (a chave de ordem é o prazo, 10:00). M10 é criada só para o caso de paginação (CT-MSG-115) e não faz parte da massa dos demais casos. M12 a M15 (v1.3; graus renomeados na v1.6) são de Gilliard (usuário 4) e cobrem o grau de urgência sem alterar o painel de Craig em CT-MSG-101: M1 a M10 não têm grau. Para Gilliard, abertas: M15 e M8 (não lidas) e M12, M13 e M14 (lidas). M8 não tem grau.


2. Painel de Mensagens (Central do Médico)

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-101Craig logado, Central aberta, desktop, 12:00Observar o painel de MensagensTítulo “Mensagens” com contagem 5 (M1, M3, M4, M5, M8). Os 5 cartões, na ordem M1, M3, M4, M5, M8 (ver detalhamento), sem link “Ver todas as mensagens”; se não cabem na altura do painel, ele rolaM1, M3, M4, M5, M8RN-MSG-001, 002; CA-MSG-001.1, 001.3
CT-MSG-102Estado de CT-MSG-101Conferir que M6 e M7 não aparecemResolvida e descartada não aparecem no painelM6, M7RN-MSG-001; CA-MSG-001.5
CT-MSG-103Craig sem conversas abertas (resolver todas via BD)Abrir a Central”Nenhuma conversa em aberto.” (MSG-TMSG-02), sem link “Ver todas”—CA-MSG-001.4
CT-MSG-104Estado de CT-MSG-101Clicar no cartão de M1Abre o modal da conversa; M1 passa a lida (some a borda) e o painel passa a M3, M4, M1, M5 (M1 sai do grupo de não lidas); a contagem não mudaM1RN-MSG-017; CA-MSG-003.1
CT-MSG-105Estado de CT-MSG-101Abrir M4 (modal) e clicar em “Resolver” (no cabeçalho)Confirmação com título “Resolver conversa?”, foco em “Cancelar”. Cancelar mantém. Confirmar: toast “Conversa resolvida.”; o cartão sai; contagem passa a 4M4RN-MSG-008; CA-MSG-005.1
CT-MSG-106Estado de CT-MSG-101Criar por BD uma conversa nova de Ingrid para Craig (fora da massa M1 a M10) e aguardar 1 minutoO novo cartão aparece no painel sem recarregar a tela—02 2.3.2
CT-MSG-107GET /conversations simulando falha (500)Abrir a CentralEstado de erro com “Não foi possível carregar as mensagens. Tente novamente.” e botão “Tentar novamente”; depois do botão com a API restabelecida, o painel carrega—EX-MSG-01
CT-MSG-108Painel carregado; derrubar a conexãoEsperar a próxima atualizaçãoDados permanecem; faixa de sem conexão; some quando a conexão volta—EX-MSG-02

Detalhamento — CT-MSG-101 (ordem)

Grupo 1, não lidas (da mais nova para a mais antiga pela chave “maior entre última mensagem e prazo”): M1 (mensagem às 11:20, prazo 18:00: chave 18:00) e M3 (mensagem às 09:30, prazo 10:00: chave 10:00). M1 vem antes de M3. Grupo 2, lidas pendentes: M4 (chave = prazo amanhã 09:00), M5 (chave = resposta há 1 h, 11:00), M8 (chave = 09:00 de hoje). Ordem: M4, M5, M8. Painel (5 cartões): M1, M3, M4, M5, M8. M1 a M10 não têm grau de urgência, então a ordem de RN-MSG-002 v1.3 coincide com a da v1.2 (o grau é coberto em CT-MSG-278 e 279). Conferir a ordem real contra a chave; se divergir, o defeito é da implementação, não da massa.


3. Tela de Mensagens, abas e ordem

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-111Craig logadoAbrir “Mensagens” pelo menuLinha de fuso “Fuso horário: Horário Padrão de Brasília (GMT−03:00)”; botão “Nova mensagem”; abas “Abertas (5)” e “Finalizadas (2)“—RN-MSG-011; CA-MSG-002.4
CT-MSG-112Estado de CT-MSG-111Observar “Abertas”Ordem completa: M1, M3 (não lidas); M4, M5, M8 (lidas pendentes). Cartões com a mesma estrutura do painelM1, M3, M4, M5, M8RN-MSG-002, 011; CA-MSG-001.1
CT-MSG-113Estado de CT-MSG-111Abrir “Finalizadas”M6 (Resolvida) e M7 (Descartada), com chip de estado; sem botão “Resolver”; ordem pela data de finalização, a mais nova primeiro [PROPOSTA, P-MSG-11]M6, M7RN-MSG-011; CA-MSG-001.5
CT-MSG-114Estado de CT-MSG-111Clicar em um cartãoAbre o modal da conversa sobre a lista (não há página); o endereço passa a ser /mensagens/{id} [PROPOSTA, E-MSG-024]M502 2.3.3
CT-MSG-115Craig com M10 (25 abertas)Rolar até o fim da aba “Abertas”Carrega 20; ao rolar, carrega as 5 seguintes [PROPOSTA]; sem duplicadosM1002 2.3.3
CT-MSG-116Usuário sem conversas finalizadasAbrir “Finalizadas""Nenhuma conversa finalizada.” (MSG-TMSG-03)——
CT-MSG-117Estado de CT-MSG-111Comparar M4 (lida, prazo amanhã 09:00) com M8 (lida, última mensagem hoje 09:00, sem prazo)M4 vem antes de M8: a chave de M4 é o prazo (amanhã), mais recente que a mensagem de M8M4, M8RN-MSG-002; CA-MSG-001.2
CT-MSG-118Estado de CT-MSG-111, desktop e celularComparar as colunasColuna única nos dois; nenhum cartão com rolagem horizontal—02 2.1

4. Cartão de conversa

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-121Estado de CT-MSG-112Conferir M1Sem ícone à esquerda; borda lateral de 3 px em secondary-dark; linha 1: “Ingrid Jorgensen:” em peso médio e a mensagem em peso normal (última mensagem, até 2 linhas; o não lido não muda o peso) e o horário relativo: “Há 40 min” (enviada às 11:20, data-base 12:00); linha 2: “Receita de antiemético para viagem” (assunto, menor); linha 3: nome do paciente (nome social, se houver; senão o nome legal) da massa: Roberto, e o prazo “22/10, 18:00” com o ícone de relógio (sem “Resolver até” visível; a dica traz “Resolver até 22/10/2026, 18:00”), ambos em texto cinza, sem chip; sem botão “Resolvido” (D-MSG-047, 053)M1RN-MSG-017; CA-MSG-003.1, 004.2
CT-MSG-122Estado de CT-MSG-112Conferir M3Sem ícone de tipo; a linha 1 começa com “Sistema:” em peso médio; horário “Há 2 h” (mensagem das 09:30); relógio e “Vencida” em vermelho (sem data, sem chip; a dica traz “Resolver até 22/10/2026, 10:00”); paciente em texto cinzaM3RN-MSG-003, 014; CA-MSG-002.2, 004.1
CT-MSG-123Estado de CT-MSG-112Conferir M5Linha 2 “Você: …” (última mensagem é de Craig); sem borda de não lidaM5CA-MSG-004.2
CT-MSG-124Estado de CT-MSG-112Conferir M4Sem paciente; prazo “23/10, 09:00” com relógio, em texto cinza; linha 1 “Você: …”M4RN-MSG-007
CT-MSG-125Estado de CT-MSG-112Conferir M2 como IngridLinha 2 “Claire Vance: …”; não lida para Ingrid, lida para Li WeiM2RN-MSG-017; CA-MSG-003.2
CT-MSG-126 (BD)M3 abertaAlterar PrazoEmUtc de M3 para daqui a 1 hora; recarregarO aviso deixa de ser “Vencida” em vermelho e passa a mostrar o relógio com a data e hora em cinza; a dica traz “Resolver até {dt}”; restaurarM3RN-MSG-003
CT-MSG-127M3 vencidaResolver M3; abrir “Finalizadas”O chip de vencida some; aparece “Resolvida”M3RN-MSG-003; CA-MSG-002.1
CT-MSG-128Texto de assunto com 200 caracteresVer o cartão no celular (360 px)Assunto truncado com reticências em uma linha; a segunda linha também; nenhum corte de layout—02 2.3.1
CT-MSG-129Tema escuroConferir todos os cartões acimaSó tokens do Design System; contraste de texto ≥ 4,5:1; borda de não lida visível mas discreta—CA-MSG-015.1
CT-MSG-130TecladoPercorrer com Tab a listaFoco no cartão (anel de foco) e depois no cartão seguinte, sem outro ponto de foco dentro do cartão; Enter abre—02 2.10

5. Nova mensagem

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-131Craig logadoAbrir “Nova mensagem” e a lista de destinatáriosGrupo “Pessoas” com Craig marcado “(você)” e a linha “Equipes: Onco”, Gilliard (Onco), Claire (Enfermagem), Ingrid (Farmácia), Mateo (Enfermagem), Li Wei (Farmácia), cada um com a linha “Equipes: …”; grupo “Equipes” com Enfermagem · 2 membros, Farmácia · 2 membros, Onco · 2 membros—RN-MSG-007; CA-MSG-007.1
CT-MSG-132Formulário vazioTocar em “Enviar”Erros “Informe o destinatário.”, “Informe o assunto.” e “Escreva a mensagem.”; nada é enviado—CA-MSG-008.1
CT-MSG-133Formulário preenchidoEnviar a Ingrid, assunto “Teste”, mensagem “Olá”, sem paciente e sem prazoToast “Mensagem enviada.”; volta à lista; a conversa aparece para Craig em “Abertas” lida e para Ingrid não lida—CA-MSG-003.3
CT-MSG-134Formulário abertoEnviar a si mesmo (Craig)Conversa criada com Craig como remetente e destinatário; aparece em “Abertas” e lida—RN-MSG-007; CA-MSG-007.1
CT-MSG-135Formulário abertoInformar data 22/10/2026 e horário 10:00 (passado)Erro “O prazo não pode ser anterior ao momento do envio.”; não envia—RN-MSG-004; CA-MSG-002.3
CT-MSG-136Formulário abertoInformar só a data do prazo (22/10/2026), sem horárioErro “Informe a data e o horário do prazo.”—RN-MSG-012; CA-MSG-008.2
CT-MSG-137Navegador em pt-BR e, depois, em en-USDigitar “1430” no campo “Horário (opcional)” do prazoO campo mostra “14:30” nos dois navegadores (24 h, sem AM/PM); o prazo gravado é o mesmo (22/10/2026 14:30 da clínica, em UTC); a data segue o formato do navegador—RN-MSG-012; D-MSG-064
CT-MSG-138Formulário aberto, sem pacienteObservar o campo de tipo de processo; escolher um pacienteDesabilitado sem paciente; depois do paciente, habilita com Paciente, Prescrição, Documento e Registro clínico (D-MSG-036)—CA-MSG-008.3, 019.1
CT-MSG-139Formulário com paciente e tipo PacienteEnviar; abrir a conversaChip do paciente e atalho “Abrir prontuário”; o clique leva ao prontuário—RN-MSG-020, 021; CA-MSG-009.1, 019.3
CT-MSG-140Assunto com 201 caracteresDigitarO campo limita a 200; contador visível—02 2.6
CT-MSG-141Mensagem com 2001 caracteresColarLimita a 2000; contador “2000/2000” (D-MSG-030)—CA-MSG-018.4; 02 2.6
CT-MSG-142Falha de rede durante o envioEnviar e restabelecer a rede; repetir “Enviar”Mensagem de erro “Não foi possível enviar. Tente novamente.”; o formulário continua preenchido; no segundo envio, uma só conversa é criada—EX-MSG-03
CT-MSG-143Formulário abertoCancelar com campos preenchidosVolta à lista sem enviar——
CT-MSG-144Formulário no celularObservar rótulosRótulo fixo acima de cada campo (sem rótulo flutuante); botão Voltar à esquerda da barra—02 2.3.4

6. Conversa (modal), resposta

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-151Craig abre M1Observar o cabeçalhoAssunto; “De: Ingrid Jorgensen”; “Para: Craig Evans (você)”; chips de paciente e prazo; atalho “Abrir prontuário”M1RN-MSG-006; CA-MSG-009.1
CT-MSG-152Craig abre M8Observar “Para""Equipe Onco · 2 membros”M8RN-MSG-006, 015
CT-MSG-153Craig abre M5Observar as mensagensOrdem cronológica; mensagem de Craig à direita; autor, data e hora em cada umaM5RN-MSG-019
CT-MSG-154Craig abre M1Responder “Receita emitida”Toast “Resposta enviada.”; a mensagem aparece à direita; status passa a Respondida; remetente (Ingrid) recebe a conversa como não lidaM1RN-MSG-019; CA-MSG-003.3
CT-MSG-155Ingrid abre M1 após CT-MSG-154Responder de voltaPermitido (quem enviou também responde); a conversa continua na mesma thread, sem tipo “réplica”M1RN-MSG-019
CT-MSG-156Craig abre M3 (alerta)Observar o rodapéSem campo de resposta; aviso “Alertas do sistema não recebem resposta.”; botões “Resolver” e “Descartar” presentes, no cabeçalhoM3RN-MSG-010; CA-MSG-006.1
CT-MSG-157 (API)Token de CraigPOST /conversations/{M3}/reply409M3CA-MSG-006.1
CT-MSG-158Craig abre M6 (finalizada)ObservarLinha “Resolvida por Você em 21/10 16:10”; sem campo de resposta e sem botões; aviso “Esta conversa foi finalizada. Não é possível responder.”M6RN-MSG-009; CA-MSG-005.4
CT-MSG-159Craig abre M1 não lidaObservar após abrirM1 deixa de ser não lida (a borda some) em painel e lista; para Ingrid o estado de leitura é independenteM1RN-MSG-017
CT-MSG-160Craig no modal do painelFechar com Esc, com “Fechar” e tocando foraFecha nos três modos; foco volta ao cartão de origem—02 2.10
CT-MSG-161Craig digita resposta em M8; Gilliard resolve M8Craig toca “Responder”409; a tela recarrega mostrando “Resolvida por Gilliard…”; o texto digitado permanece visívelM8EX-MSG-04
CT-MSG-162Craig abre conversa de outro usuário (id de M-qualquer de Ingrid→Claire) pelo linkAbrirTela “Conversa não encontrada.” e volta à lista—EX-MSG-05
CT-MSG-163Craig na conversa M2 (não participante) via APIGET /conversations/{M2}404M2EX-MSG-05; NGS1.03.01
CT-MSG-164Craig tenta editar texto enviadoProcurar ação de editar ou excluirNão existe; PUT/DELETE em qualquer rota de mensagem retornam 404 (a rota não existe) e PUT/DELETE em /conversations/{id} retornam 405M5RN-MSG-022; CA-MSG-012.1; EX-MSG-09
CT-MSG-165Conversa M8 como Gilliard, que respondeVer a autoria”Gilliard Onório Santos (Onco)” em cada respostaM8RN-MSG-030; CA-MSG-014.1
CT-MSG-166Claire (fora da Onco) responde M8 (adicionada como destinatária por BD)Ver a autoriaSó “Claire Vance”, sem equipe—RN-MSG-030

7. Resolver e descartar

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-171Craig abre M5Tocar “Resolver”; ler a confirmação; confirmarDiálogo “Resolver conversa?” com corpo “A conversa será marcada como resolvida para todos os destinatários.”; botões “Cancelar” (foco inicial) e “Resolver”. Confirmar: toast “Conversa resolvida.”; M5 vai para “Finalizadas”M5RN-MSG-008; CA-MSG-005.1
CT-MSG-172Craig abre M1Tocar “Descartar”; confirmarDiálogo “Descartar conversa?”; confirmar: “Conversa descartada.”; M1 em “Finalizadas” como DescartadaM1RN-MSG-008
CT-MSG-173Ingrid (remetente) abre M1ResolverPermitido; Craig vê M1 finalizada, “Resolvida por Ingrid Jorgensen em …”M1CA-MSG-005.2
CT-MSG-174M8 (equipe Onco): Gilliard resolveCraig abre “Abertas” e “Finalizadas”M8 sai de “Abertas” de Craig e aparece em “Finalizadas” com “Resolvida por Gilliard Onório Santos”M8CA-MSG-005.3
CT-MSG-175M8 finalizadaTentar resolver de novo, via API409 com quem finalizou e quandoM8CA-MSG-005.4
CT-MSG-176M1 sem respostasResolver sem responderNenhuma mensagem nova criada (a thread continua com 1 mensagem); cabeçalho mostra a linha de finalizaçãoM1RN-MSG-009; CA-MSG-005.5
CT-MSG-177Dois usuários resolvem M2 no mesmo segundoIngrid e Li WeiUm recebe sucesso, o outro 409; a conversa tem uma só ação ResolveM2EX-MSG-04
CT-MSG-178Alerta M9 como ClaireResolver M9Permitido; registra ciência; “Finalizadas” mostra “Resolvida”M9RN-MSG-028
CT-MSG-179Confirmação abertaEscCancela sem alterar—02 2.10
CT-MSG-180Usuário com Visualizar e sem EnviarResolver uma conversaPermitido—CA-MSG-010.2; D-MSG-070

8. Equipe e envio a si mesmo

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-181Craig (Onco) envia à equipe OncoEnviar; conferir como Gilliard e como CraigAmbos recebem; Craig também (remetente é membro); a conversa de Craig aparece lidaM8RN-MSG-015; CA-MSG-007.2
CT-MSG-182Claire (Enfermagem) envia à equipe OncoEnviarCraig e Gilliard recebem; Claire não é destinatária, mas é remetente e acompanha a conversa—RN-MSG-015, 018
CT-MSG-183 (BD)Equipe Onco com os membros 1 e 4Adicionar o usuário 5 à Onco depois de M8; abrir como ClaireClaire não vê M8M8CA-MSG-007.3
CT-MSG-184 (BD)Equipe FarmáciaRemover (RemovidoEmUtc) o usuário 8; enviar nova mensagem à FarmáciaLi Wei não recebe a nova; M2 continua listada para eleM2RN-MSG-015
CT-MSG-185 (BD)Equipe inativa (Ativa = 0)Tentar enviar à equipe422; “Este destinatário não pode receber mensagens agora.”—EX-MSG-07
CT-MSG-186Craig lê M8; Gilliard nãoConferir a leitura de cada umM8 é lida para Craig e não lida para GilliardM8CA-MSG-003.2
CT-MSG-187Craig envia a si mesmo (CT-MSG-134)Resolver o lembreteSai de “Abertas” e vai para “Finalizadas”—RN-MSG-007
CT-MSG-188Lista de equipesConferir o “(n membros)“Conta só membros ativos—RN-MSG-006

9. Alertas do sistema

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-191 (API)Interface de publicação disponívelPublishAlert para Craig, módulo Assistencial, chave “RX-001”, paciente 22, processo Prescrição, prazo hoje 15:00Conversa criada com OrigemTipo = System, mensagem inicial sem autor; aparece para Craig como não lida com sino e “Sistema:“—RN-MSG-028; CA-MSG-004.1
CT-MSG-192 (API)Após CT-MSG-191Repetir PublishAlert com a mesma chaveNenhuma nova conversa; devolve a existente—RN-MSG-029; CA-MSG-012.2
CT-MSG-193 (API)Alerta anterior resolvidoPublishAlert com previousConversationIdNova conversa ligada à anterior; a anterior continua finalizada—RN-MSG-016; CA-MSG-013.1
CT-MSG-194 (API)Alerta abertoAcrescentar atualização do sistema (AppendAlertUpdate)A mensagem (tipo gravado Response, autor nulo, sequência maior que 1) aparece rotulada “Atualização do sistema” [PROPOSTA]; a conversa volta a não lida para o destinatário—RN-MSG-019
CT-MSG-195Alerta sem paciente (M9)Ver o cartãoSem paciente na linha de contextoM9RN-MSG-020
CT-MSG-196Alerta com paciente e processo (M3)Abrir; clicar “Abrir prescrição”Leva à prescrição; se Craig não tiver acesso, o módulo de destino recusaM3RN-MSG-021; CA-MSG-009.1
CT-MSG-197Alerta vencido (M3)Conferir”Vencida”; some ao resolverM3CA-MSG-002.2
CT-MSG-198 (API)Chamada ao endpoint de criação como usuário comum com OrigemTipo=SystemEnviar POST /conversations com campo de origem do sistemaCampo ignorado ou 400; o usuário comum nunca cria conversa de sistema—NGS1.03.09

10. Fuso, idioma e textos

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-201Aparelho no fuso de São PauloAbrir a listaLinha do fuso discreta—RN-MSG-005
CT-MSG-202Aparelho em LondresAbrir a listaLinha do fuso destacada com ”— diferente do fuso deste aparelho”; horários continuam os da clínicaM1CA-MSG-002.4
CT-MSG-203Aparelho em Londres, 12:00 de São PauloConferir “vencida”Calculada no horário do servidor da clínica, não do aparelhoM3RN-MSG-003, 005
CT-MSG-204 (API)Token de CraigGET /conversations?tab=opentimeZone = "America/Sao_Paulo"; datas em UTC; serverNow presente—DT-001
CT-MSG-205Idioma da clínica es-419Percorrer painel, lista, formulário, conversa e confirmaçõesTodos os textos do catálogo em espanhol; nenhum texto em português ou inglês—RN-MSG-013; CA-MSG-011.1
CT-MSG-206Idioma en-USIdemTodos em inglês; data do prazo “mm/dd/yyyy hh:mm”—RN-MSG-013
CT-MSG-207Interface em pt-BRProvocar cada mensagem do catálogo (02, 2.9)O texto bate exatamente com o catálogo; nenhum termo técnico ou código HTTP visível—SBIS ECF.17.19
CT-MSG-265Clínica com idioma pt-BRPercorrer painel, lista, formulário, conversa, confirmações, erros e a linha do fuso, nos dois temasTodos os textos em português do Brasil; nenhum código (MSG-TMSG-nn, nome de processo) nem texto em outro idioma—ECF.17.18, 17.19; D-MSG-019

11. Permissões e auditoria

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-211Usuário sem o direito VisualizarAbrir a Central e o menuSem painel de Mensagens e sem item “Mensagens”—RN-MSG-024; CA-MSG-010.1
CT-MSG-212 (API)Mesmo usuárioChamar os endpoints de conversa403 em todos—CA-MSG-010.1
CT-MSG-213Usuário com Visualizar e sem EnviarAbrir a lista e uma conversaSem botão “Nova mensagem” e sem campo de resposta—CA-MSG-010.2
CT-MSG-214 (API)Mesmo usuárioPOST /conversations e /reply403—CA-MSG-010.2
CT-MSG-215Destinatários possíveisConferir a listaSó usuários com direito Visualizar; usuário sem o direito não aparece—RN-MSG-024
CT-MSG-216 (BD)Auditoria implantadaEnviar, ler, responder, resolver e descartar uma conversaUm evento de auditoria por ação, com usuário, data e hora, identificador da conversa e tipo da ação; sem conteúdo da mensagem e sem nome ou identificação do paciente—RN-MSG-023; CA-MSG-010.3; NGS1.07.03, 07.06
CT-MSG-217 (BD)Alerta publicadoConferir o evento de auditoriaOrigem “sistema” e o módulo gerador—RN-MSG-023; NGS1.07.03
CT-MSG-218 (BD)Auditoria implantadaConferir o endereço de origemNão executável enquanto a lacuna L-01 estiver aberta (04, 4.5)—NGS1.07.05
CT-MSG-219 (BD)Banco de testeTentar excluir fisicamente uma Conversa com mensagensNão executável com a decisão L-02 em aberto; depois dela, a exclusão deve ser impedida ou não apagar a trilha—NGS1.07.02
CT-MSG-220Cliente de uma clínicaTentar enviar a usuário sem acesso à clínica da conversa (API) [PROPOSTA, P-MSG-29]422; nenhuma conversa criada—RN-MSG-025
CT-MSG-262Cliente de três clínicas A, B e C; o Dr. 9 atende A e B e tem uma conversa aberta em cada uma (massa de CT-CONS-19 e CT-MSG-22 da Central) [PROPOSTA]Dr. 9 logado na clínica A; abrir o painel e a lista; responder a conversa de BAs conversas de A e de B aparecem; a de C não; cada cartão mostra a clínica (ícone building-2, nome curto, 12 px); a resposta fica gravada na clínica B—RN-MSG-025; DT-013; D-CM-064
CT-MSG-263Cliente de uma só clínica; Dr. 11 com uma conversa abertaAbrir o painelO cartão não mostra a linha da clínica—RN-MSG-025; D-CM-066
CT-MSG-264 (API)Enfermeira com acesso às clínicas A e B, logada em A; conversa aberta endereçada a ela em BAbrir a lista; depois GET /conversations/{id} da conversa de BA conversa de B não aparece na lista; a chamada devolve 404—RN-MSG-025; DT-013

12. Contrato dos endpoints

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-231 (API)Token de CraigGET /conversations?tab=open200; counts = {open: 5, closed: 2}; items na ordem de CT-MSG-112; unread verdadeiro só em M1 e M3; overdue verdadeiro só em M3M1–M802 2.8.1
CT-MSG-232 (API)Token de CraigGET /conversations?tab=closedM6, M7 com closedBy e closedAtM6, M702 2.8.1
CT-MSG-233 (API)Token de CraigGET /conversations?tab=invalid; limit=0400—02 2.8.1
CT-MSG-234 (API)Token de CraigGET /conversations/{M5}200 com messages em ordem de sequence; canReply = true; canClose = trueM502 2.8.2
CT-MSG-235 (API)Token de CraigGET /conversations/{M6}canReply = false; canClose = falseM602 2.8.2
CT-MSG-236 (API)Token de CraigPOST /conversations com deadline no passado400—CA-MSG-002.3
CT-MSG-237 (API)Token de CraigPOST /conversations com destinatário inexistente422—EX-MSG-07
CT-MSG-238 (API)Token de CraigPOST /conversations com Idempotency-Key repetida e corpo igual; depois com a mesma chave e corpo diferenteNas duas repetições: 200 com o id da conversa já criada; no segundo caso o texto novo é ignorado (opção B, sem comparar o conteúdo); uma só conversa existe—D-MSG-020; E-MSG-005
CT-MSG-239 (API)Token de CraigPOST /conversations/{M1}/read duas vezes204 nas duas; a leitura não retrocedeM102 2.8.4
CT-MSG-240 (API)Token de CraigPATCH /conversations/{M5}/resolve e /discard em M5 já resolvida204 na 1ª; 409 na 2ªM502 2.8.6
CT-MSG-241 (API)Token de CraigGET /conversations/recipientspeople com Craig isSelf = true; teams com memberCount—02 2.8.7
CT-MSG-242 (API)Sem tokenTodos os endpoints401—NGS1.03.01
CT-MSG-243 (API)Token de CraigPOST /conversations com content de 4001 caracteres400 [PROPOSTA]—02 2.6
CT-MSG-244 (API)Token de CraigGET /conversations/{id} de conversa de outra clínica404—RN-MSG-025
CT-MSG-267 (API)Banco com o CHECK de Mensagem.Tipo já alterado para só Response [a aplicar]Enviar uma conversa; responder; acrescentar atualização de alerta; consultar mensageria.MensagemTodas as linhas têm Tipo = 'Response'; a mensagem inicial tem Sequencia = 1; nenhuma gravação falha—04, 4.1 e L-08

| CT-MSG-245 | Usuário sem o direito Visualizar | Abrir o endereço da tela de Mensagens | Tela de acesso negado padrão do sistema | — | EX-MSG-06 | | CT-MSG-246 (API) | Token de Craig | POST /conversations com paciente 99999 inexistente; com processo Prescricao sem paciente | 422 nos dois; formulário correspondente mostra “Paciente ou processo inválido.” | — | EX-MSG-08 | | CT-MSG-247 (BD) | Usuário 8 inativado | Enviar a Li Wei | 422; “Este destinatário não pode receber mensagens agora.” | — | EX-MSG-07 | | CT-MSG-248 (BD) | Equipe sem nenhum membro ativo | Enviar à equipe | 422 com a mesma mensagem | — | EX-MSG-07 | | CT-MSG-249 | Craig envia a Ingrid; Ingrid ainda não abriu | Conferir o cartão como Craig; Ingrid abre; conferir de novo; Ingrid responde; conferir | Primeiro check antes da data e hora; depois check-check; depois o cartão mostra a resposta de Ingrid como última mensagem (autor, data e hora) com a borda e a carta de não lida, sem ícone de lida e sem chip “Respondida” | M1 | CA-MSG-016.1, 016.2 | | CT-MSG-250 | Craig envia a si mesmo | Conferir o cartão | Nasce com check-check | — | CA-MSG-016.1 | | CT-MSG-268 | Estado de CT-MSG-249, depois que Craig responde de novo | Conferir o cartão como Craig | A última mensagem é a de Craig e o check volta (Ingrid ainda não leu a nova); o sinal de não lida some para Craig | M1 | CA-MSG-016.1 | | CT-MSG-269 | Craig envia à equipe Onco (M8); Gilliard ainda não leu | Conferir o cartão como Craig; Gilliard abre; conferir de novo | check; depois check-check (pelo menos um membro leu) | M8 | CA-MSG-016.1; RN-MSG-018 | | CT-MSG-270 | Claire logada, com o alerta aberto M9 | Conferir o cartão | Sem check nem check-check | M9 | CA-MSG-016.1 | | CT-MSG-258 (API) | Token de Claire Vance sem participação | GET /conversations/{M1} | 404 | M1 | CA-MSG-031.1; RN-MSG-031 | | CT-MSG-259 (API) | Token de usuário com Enviar e sem Visualizar | GET /conversations e POST /conversations | 403 nos dois | — | CA-MSG-010.1; RN-MSG-024 | | CT-MSG-260 | Craig com M8 aberta | Em outra sessão, ler e responder M8 enquanto Craig resolve | A resolução termina com sucesso (não 409) e a conversa fica Resolvida | M8 | 02 2.8.6 | | CT-MSG-261 | Craig preenche só o horário (10:00) do prazo | Enviar | “Informe a data do prazo.”; nada é enviado | — | CA-MSG-008.2 |


13. Layout, tema e acessibilidade

IDPré-condiçãoPassosResultado EsperadoRN/CA
CT-MSG-251Celular 360 pxPercorrer painel, lista, formulário e conversaSem rolagem horizontal; alvos de toque ≥ 44 px; botão Voltar à esquerda; modal como folha inferior02 2.1
CT-MSG-252Desktop ≥ 640 pxAbrir o modal pelo painelCaixa centralizada; mesmo conteúdo no painel e na lista02 2.3.5
CT-MSG-253Leitor de telaNavegar até o cartão de M1Anuncia assunto, autor, última mensagem, data, “não lida” e prazo; nenhum botão separado no cartão02 2.10
CT-MSG-254Leitor de telaAtualização automática do painelNão anuncia a lista inteira; só a mudança de contagem de não lidas02 2.10
CT-MSG-255”Reduzir movimento” ativoAbrir/fechar modal e confirmarSem animações de deslocamento02 2.10
CT-MSG-256Campos do prazoInspecionarLegenda “Prazo para resolução (opcional)”; rótulos “Data” e “Horário (opcional)”; a ajuda “Sem horário, o prazo vai até 23:59.” ligada ao horário; cada erro ligado ao seu campo02 2.10
CT-MSG-257Tema escuro e claroMedir contraste de chips, borda de não lida, vencida e linha do fusoTexto ≥ 4,5:1; elementos não textuais ≥ 3:1CA-MSG-015.1
CT-MSG-266Painel, formulário, conversa e confirmação, nos dois temasContar os botões preenchidos de cada região e conferir as coresUm só preenchido por região (verde escuro, texto branco, 5,5:1); “Cancelar”, “Voltar”, “Resolver” e “Descartar” têm contorno; no tema escuro o limite do botão preenchido tem pelo menos 3:1 sobre a superfícieDesign System, seção 12; D-MSG-022

13A. Grau de urgência (v1.3)

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-271Craig logado, pt-BRAbrir “Nova mensagem”Grupo “Grau de urgência (opcional)” com quatro opções do tamanho do chip (24 px), “Rotina”, “Urgente”, “Quanto antes”, “Imediato”, com contorno neutro, sem ícone e nenhuma marcada, e o texto MSG-TMSG-37—CA-MSG-017.1; RN-MSG-034; D-MSG-065
CT-MSG-272Estado de CT-MSG-271Marcar “Quanto antes”; tocar de novo em “Quanto antes”Marca e depois desmarca; o texto de ajuda volta a MSG-TMSG-37 (com a opção marcada, mostra MSG-TMSG-38)—CA-MSG-017.1
CT-MSG-273Craig envia a Ingrid, assunto “Teste”, sem marcar o grauConferir o cartão e a conversa de Craig e de Ingrid; consultar GET /conversations/{id} e a coluna GrauUrgenciaNenhum chip de urgência em nenhuma tela; urgencyLevel nulo; GrauUrgencia nulo—CA-MSG-017.2
CT-MSG-274Craig envia a Ingrid marcando “Imediato”Conferir como Craig (Abertas) e como Ingrid (painel e conversa); consultar a colunaChip “Imediato” como primeiro item da linha de contexto, antes do paciente (se houver) e do prazo, nas duas contas, no cartão e no cabeçalho da conversa; GrauUrgencia = stat; urgencyLevel = { key: "STAT", name: "Imediato" }—CA-MSG-017.3
CT-MSG-275Quatro conversas de Craig a Ingrid, com os graus routine, urgent, asap e statConferir os quatro chipsRotina: contorno neutro; Urgente: neutro cheio; Quanto antes: só contorno de 1 px em error-dark, bandeira vazia; Imediato: só contorno de 2 px em error-dark, bandeira cheia (D-MSG-057). Textos “Rotina”, “Urgente”, “Quanto antes” e “Imediato” (sem a palavra “Urgência”); título e nome acessível “Grau de urgência: {nome}“—02 2.3.8; D-MSG-027, 039
CT-MSG-276Conversa de CT-MSG-274Ingrid responde; conferir como Craig e como IngridO chip continua “Imediato”; nenhuma tela tem controle para alterar o grau—CA-MSG-017.4
CT-MSG-277 (API)Conversa de CT-MSG-274Tentar alterar o grau (PATCH na conversa com urgencyLevel) e enviar urgencyLevel no corpo de uma respostaNão existe endpoint de alteração (404 ou 405); o grau da conversa não muda depois da resposta. Se a API recusa o campo na resposta (400) ou o ignora está em aberto (E-MSG-018)—CA-MSG-017.4
CT-MSG-278Gilliard logado, 12:00Abrir “Mensagens”, aba “Abertas”Ordem: M15 (Quanto antes, não lida), M8 (sem grau, não lida), M12 (Imediato, lida), M13 (Rotina, lida), M14 (sem grau, lida). Contagem 5. Sem o grau, a ordem seria M8, M15 e M14, M13, M12M8, M12 a M15CA-MSG-017.5; RN-MSG-002
CT-MSG-279Estado de CT-MSG-278Abrir a Central de GilliardPainel com os 5 cartões: M15, M8, M12, M13, M14, sem link “Ver todas as mensagens”M8, M12 a M15CA-MSG-017.5; RN-MSG-001
CT-MSG-280Estado de CT-MSG-278Resolver M12; abrir “Finalizadas”M12 aparece com o chip “Imediato” e o chip “Resolvida”; o chip também aparece dentro da conversaM12E-MSG-017
CT-MSG-281Gilliard com M15Conferir o cartão e a conversaSem ícone de tipo no cartão (o sino continua nas mensagens da conversa); autor “Sistema:”; chip “Quanto antes”; sem campo de resposta (MSG-TMSG-20)M15CA-MSG-017.6; RN-MSG-028
CT-MSG-282 (serviço)M15 abertaChamar AppendAlertUpdate em M15A mensagem “Atualização do sistema” é acrescentada; o grau continua “Quanto antes” (a interface não aceita urgencyLevel nessa chamada)M15RN-MSG-034; D-MSG-033
CT-MSG-283 (serviço)—Chamar PublishAlert sem urgencyLevel e, em outra execução, com urgencyLevel = asapSem urgencyLevel: alerta sem chip. Com asap: chip “Quanto antes”—CA-MSG-017.6
CT-MSG-284 (API)Token de CraigPOST /conversations com urgencyLevel = 0, 3, “alta”, “stat” (minúsculas) e “Urgente”; depois com urgencyLevel nulo e ausenteOs cinco primeiros: 400 com MSG-EMSG-13; os dois últimos: 201—CA-MSG-017.7
CT-MSG-285 (BD)Coluna GrauUrgencia criada (L-09)Gravar na Conversa os valores ‘Alta’, ‘stat’, ‘asap’ e NULL’Alta’ recusado pelo CHECK; ‘stat’, ‘asap’ e NULL aceitos. Se a collation do banco não diferenciar maiúsculas de minúsculas, ‘STAT’ também passa no CHECK; a API recusa essa grafia com 400 (CA-MSG-017.7)—04 L-09; D-MSG-046
CT-MSG-286Clínicas pt-BR, en-US e es-419Conferir o chip da conversa asap em cada idioma”Quanto antes”, “ASAP”, “Cuanto antes”; o título é “Grau de urgência: …”, “Urgency level: …”, “Grado de urgencia: …”. Termo sem tradução: a própria chave aparece e o back-end registra anomalia (DT-011, D-CM-044)—RN-MSG-013; ECF.17.18, 17.19
CT-MSG-287Temas claro e escuroMedir o contraste do texto dos quatro chips e olhar em escala de cinzaTexto ≥ 4,5:1 nos quatro níveis e nos dois temas (Imediato 5,0:1 e 4,6:1; Quanto antes 5,5:1 e 6,3:1; Urgente 12,1:1 e 8,8:1); os níveis se distinguem pelo texto e pelo ícone, sem a cor—CA-MSG-017.8; CA-MSG-015.1
CT-MSG-288Leitor de telaNavegar até o cartão de M12 e até o seletor de grauO cartão anuncia “grau de urgência: imediato” junto do assunto, do autor e das demais informações; o seletor anuncia a legenda “Grau de urgência (opcional)” e cada opção com nomeM1202 2.10
CT-MSG-289TecladoNo formulário, ir ao seletor de grau com Tab; usar as setas e a barra de espaçoAs setas mudam a opção; a barra de espaço na opção marcada a desmarca; o foco é visível—02 2.10
CT-MSG-290Celular de 360 pxAbrir o formulário e os cartões com chips de paciente, urgência e prazoAs quatro opções do grau ficam lado a lado (quebrando de linha se faltar espaço), com área de toque de 44 px e sem rolagem horizontal; os itens da linha de contexto quebram de linha sem cortar o texto—02 2.1

13B. Horário relativo, limite de texto, processo e agravamento (v1.4)

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-291Craig logado, 12:00Conferir M1 (mensagem às 11:20), M3 (09:30), M5 (resposta às 11:00) e M8 (09:00) no painel”Há 40 min”, “Há 2 h”, “Há 1 h” e “Há 3 h”M1, M3, M5, M8CA-MSG-018.1, 018.2; RN-MSG-035
CT-MSG-292Mensagens às 11:01 e às 11:00, com data-base 12:00Conferir os cartões11:01: “Há 59 min”; 11:00: “Há 1 h” (a fronteira é 60 min)—CA-MSG-018.1, 018.2
CT-MSG-293Mensagem às 00:10, data-base 23:50 do mesmo diaConferir o cartão”Há 23 h”—CA-MSG-018.2
CT-MSG-294Mensagem ontem às 23:50, data-base hoje 00:10Conferir o cartãoData e hora (“21/10 23:50”), não “Há 20 min”: o dia de calendário mudou—CA-MSG-018.3
CT-MSG-295Conversa M1Abrir a conversaCada mensagem mostra data e hora, não o horário relativoM1CA-MSG-018.3
CT-MSG-296Clínicas en-US e es-419Conferir M1 e M3”40 min ago” e “2 h ago”; “Hace 40 min” e “Hace 2 h”M1, M3RN-MSG-013, 035
CT-MSG-297Aparelho em fuso diferente do da clínica, perto da meia-noiteConferir uma mensagem enviada 30 min antes da meia-noite da clínicaO “mesmo dia” é o da clínica, não o do aparelho—RN-MSG-005, 035
CT-MSG-298Painel aberto às 12:00Esperar a atualização automática de 1 minutoM1 passa de “Há 40 min” a “Há 41 min” sem recarregarM102 2.3.7 (E-MSG-019)
CT-MSG-299Craig respondendo uma conversaColar 2001 caracteres no campo de respostaO campo limita a 2000, com contador “2000/2000”; a API recusa 2001 com 400—CA-MSG-018.4
CT-MSG-300Formulário com pacienteEscolher o tipo “Documento”, o item e enviarA conversa é criada com o processo; o atalho “Abrir documento” aparece na conversa—CA-MSG-008.3, 009.1, 019.2
CT-MSG-301 (API)Token de CraigPOST /conversations com dois processos400; só um processo por conversa—RN-MSG-021
CT-MSG-302 (serviço)M15 aberta (Quanto antes)O módulo de origem publica novo alerta com grau stat (Imediato) e previousConversationId = M15, e descarta M15M15 fica Descartada, com ação sem usuário exibida como “Descartada por Sistema”; a nova conversa tem o chip “Imediato” e aparece como não lidaM15CA-MSG-018.5; RN-MSG-016, 034
CT-MSG-303Paciente e tipo Prescrição escolhidosAbrir o campo do itemLista só as prescrições do paciente—CA-MSG-019.2
CT-MSG-304Tipo Prescrição, sem itemEnviarErro MSG-EMSG-14 “Escolha o item do processo.” e foco no campo do item—CA-MSG-019.2
CT-MSG-305Tipo PacienteObservar o formulárioNão há campo de item—CA-MSG-019.3
CT-MSG-306Tipo e item escolhidosTrocar o pacienteTipo e item são limpos—CA-MSG-019.4
CT-MSG-307Tipo Registro clínico e item escolhidosEnviar; abrir a conversaAtalho “Abrir registro clínico”—CA-MSG-009.1
CT-MSG-308 (API)Token de CraigPOST /conversations com processo do tipo Agenda, ou com tipo Prescricao sem item400 MSG-EMSG-11 (tipo inválido) / 400 MSG-EMSG-14 (sem item)—RN-MSG-021

13C. Busca com autocomplete e ordem do formulário (v1.6)

Massa fictícia para as buscas: equipes “Enfermagem” (5 membros) e “Farmácia Oncológica” (4); pessoas “Ana Ribeiro”, “Mariana Costa”, “Carlos Lima”, “Craig Evans (você)”; pacientes “Maria Souza”, “Mariana Alves”, “João Alves”; para o paciente Maria Souza: prescrições com identificação “FOLFOX - C1D1”, “FOLFOX - C1D15” e “Carboplatina AUC5 - C2D1” (data de cada uma); documentos “Laudo de hemograma” (20/10/2026) e “Termo de consentimento” (02/09/2026); registros clínicos com data do evento 20/10/2026 (modelo “Evolução de enfermagem”, profissional “Enf. Ana”) e 21/10/2026 (modelo “Sinais vitais”, profissional “Dr. Carlos”). Todos fictícios.

IDPré-condiçãoPassosResultado EsperadoDados de TesteRN/CA
CT-MSG-309Craig logadoAbrir “Nova mensagem”Ordem dos campos: Destinatário, Assunto, Mensagem; subtítulo “Opcionais”; Grau de urgência, Prazo para resolução, Paciente, Processo relacionado—CA-MSG-020.1; D-MSG-040
CT-MSG-310Campo Destinatário vazioTocar no campoLista com as primeiras opções: cabeçalho “Equipes” (Enfermagem, 5; Farmácia Oncológica, 4) e depois “Pessoas”—CA-MSG-020.2
CT-MSG-311IdemDigitar “ANA”Resultados sem distinguir maiúsculas: “Ana Ribeiro”; sem grupo “Equipes” se nenhuma equipe contém o texto—CA-MSG-020.2
CT-MSG-312IdemDigitar “mari”; escolher “Mariana Costa”Aparece “Mariana Costa”; depois da escolha o campo mostra o nome; digitar de novo limpa a escolha—CA-MSG-020.2
CT-MSG-313IdemDigitar “enf”Aparece a equipe “Enfermagem (5 membros)” no grupo “Equipes”—CA-MSG-020.2
CT-MSG-314Campo PacienteDigitar “mari”Os pacientes cujo nome ou nome da mãe contém o texto, cada um com “Prontuário: … - Sexo: … - Nasc: … - Mãe: … - CPF: …”; rodapé de orientação (MSG-TMSG-49)—CA-MSG-020.3; D-MSG-071
CT-MSG-315Paciente Maria Souza e tipo PrescriçãoDigitar “c1d15”; depois “folfox”; depois “02/09”Só “FOLFOX - C1D15”; depois as duas de FOLFOX (termo no início da identificação); depois nada (a data não é chave de busca da prescrição)—CA-MSG-020.4; D-MSG-050
CT-MSG-316Tipo DocumentoDigitar “laudo”; depois “02/09""Laudo de hemograma” mostrado com a data “20/10/2026”; depois nenhum resultado (a data não é chave de busca do documento)—CA-MSG-020.4; D-MSG-050
CT-MSG-317Tipo Registro clínicoDigitar “20/10”; depois “21/10/2026”; depois “carlos”Registro de 20/10 mostrado como data, modelo e profissional (“20/10/2026 · Evolução de enfermagem · Enf. Ana”); depois o de 21/10; “carlos” não encontra nada (o profissional é só exibição)—CA-MSG-020.4; D-MSG-050
CT-MSG-318Qualquer campo de buscaDigitar texto sem correspondência (“zzz”)MSG-TMSG-41 “Nenhum resultado para “zzz”.”—CA-MSG-020.5
CT-MSG-319Busca com mais de 8 resultadosDigitar um termo comum8 resultados e o aviso MSG-TMSG-42—CA-MSG-020.5
CT-MSG-320Campo DestinatárioTeclado: setas, Enter e Esc; leitor de telaAs setas movem o destaque; Enter escolhe; Esc fecha a lista; o leitor anuncia caixa de combinação e o número de resultados—CA-MSG-020.6
CT-MSG-321 (API)Token de CraigGET /conversations/recipients?q=ana&limit=8; GET /conversations/process-options?patientId=…&type=Prescricao&q=c1d15 (a identificação contém o termo em qualquer posição)Equipes antes das pessoas; só itens do paciente; hasMore verdadeiro quando há mais que o limite—RN-MSG-036; 2.8.7, 2.8.9
CT-MSG-322Celular de 360 pxAbrir o formulário e a lista de resultadosA lista cabe na largura, sem rolagem horizontal; resultados com alvo de toque ≥ 44 px—02 2.1
CT-MSG-323Conversa com grau routineConferir o cartão e a conversaChip “Rotina” (contorno neutro) aparece—CA-MSG-021.1; D-MSG-043
CT-MSG-324Painel e lista, tema claro e escuroConferir os cartõesCartões separados, cantos arredondados (8 px), borda de 1 px e espaço entre eles; o não lido muda só a borda esquerda—CA-MSG-021.2; D-MSG-045
CT-MSG-325Paciente com vários documentos e registrosAbrir a lista de itens sem digitarDo mais recente ao mais antigo pela data do evento—CA-MSG-021.3; D-MSG-044
CT-MSG-326Painel e lista, com M1, M3 (alerta) e uma conversa aberta qualquerProcurar botões dentro dos cartões; tocar no cartãoNenhum botão no cartão; o toque abre o modal (painel e lista), onde “Resolver” e “Descartar” aparecem, no cabeçalho—CA-MSG-021.4; D-MSG-047
CT-MSG-327Painel e lista, com uma conversa com paciente e sem processo (M2) e M1 (processo do tipo Paciente)Ver o cartão; tocar no link; depois tocar no resto do cartãoUm só link, o nome do paciente (sublinhado, secondary-dark), que leva ao prontuário; a conversa não abre ao tocar no link; tocar no resto do cartão abre a conversaM1, M2CA-MSG-021.5; D-MSG-054, 055
CT-MSG-328Conversa com processo Prescrição (M3); repetir com Documento (M16) e Registro clínico (M17)Observar a linha de contexto do cartão e o cabeçalho da conversa; tocar no linkUm só link, com ícone do tipo e o texto “{item} de {paciente}”: “FOLFOX - C1D15 de Marcelo T. Pinto”; “Laudo de hemograma de Roberto N. Alves”; “21/10/2026 - Sinais vitais de Maria Silva” (sem o profissional); sem link separado do paciente; leva ao item; no cabeçalho não há botão “Abrir …”M3, M16, M17CA-MSG-009.1, 021.5; RN-MSG-021; D-MSG-055
CT-MSG-329M18: conversa endereçada à equipe Farmácia, respondida por Li Wei (membro)Ver o cartão e a conversa como Ingrid (membro); depois, como Li Wei, ver a própria resposta; por fim, como Claire (remetente, fora da equipe), ver o que ela mesma escreveuAutor “Li Wei (Farmácia)” no cartão e nas mensagens dela; para Li Wei, “Você (Farmácia)” (D-MSG-055); Claire, que não é da equipe, aparece só com o próprio nomeM18CA-MSG-021.6; RN-MSG-030
CT-MSG-330Celular de 360 px e tecladoMedir a área de toque do link; navegar com Tab; ativar com EnterÁrea de toque de pelo menos 44 x 44 px; a ordem do foco é o botão do cartão e depois o link; anel de foco visível em ambos; o leitor de tela lê “Abrir prontuário: {paciente}” ou “Abrir prescrição: {item} de {paciente}“M2, M3CA-MSG-021.5; D-MSG-054, 055
CT-MSG-331Painel e lista, M1 (não lida) e M5 (lida), temas claro e escuroConferir o início do cartão e os pesos do textoSem círculo nem ícone à esquerda; o autor em peso médio e a mensagem em peso normal nos dois; M1 só se distingue pela borda lateralM1, M5CA-MSG-004.1, 022.4; D-MSG-056
CT-MSG-332M1 (prazo 22/10 18:00, a vencer), computadorConferir a linha de contexto; passar o mouse sobre o prazo e sairRelógio e “22/10, 18:00” em cinza, sem contorno e sem “Resolver até” visível; a dica “Resolver até 22/10/2026, 18:00” abre ao passar, fica aberta enquanto o ponteiro estiver sobre o prazo ou sobre ela e fecha cerca de 150 ms depois de sair; o leitor de tela lê “Resolver até” antes da dataM1CA-MSG-022.1, 022.3; D-MSG-058, 059
CT-MSG-333M3 (vencida), computadorConferir; passar o mouse; apertar Esc; abrir de novo e rolar o painelRelógio e “Vencida” em vermelho (error-dark), sem data e sem o tempo de atraso; a dica mostra “Resolver até 22/10/2026, 10:00”; Esc fecha só a dica (a conversa não abre; um modal aberto por cima só fecharia no Esc seguinte); rolar fecha; clicar em “Vencida” com o mouse abre a dica e não abre a conversa; o nome acessível do cartão termina com “Vencida. Resolver até 22/10/2026, 10:00”M3CA-MSG-002.1, 022.2, 022.3; D-MSG-058, 059
CT-MSG-334M3 (vencida), celular de 360 px com toqueTocar em “Vencida”; tocar de novo; abrir de novo e tocar fora, sobre outro cartão; tocar nesse cartão outra vezO primeiro toque abre a dica sem abrir a conversa; o segundo fecha; tocar fora só fecha a dica e não abre o cartão tocado; o toque seguinte no cartão o abre; área de toque de pelo menos 44 x 44 px; girar a tela fecha a dicaM3CA-MSG-022.3; D-MSG-059
CT-MSG-335M13 (Imediato) e M12 (Quanto antes), temas claro e escuro, com e sem o mouse sobre o cartãoConferir os chips e medir o contraste do textoImediato: contorno de 2 px, bandeira cheia; Quanto antes: contorno de 1 px, bandeira vazia; sem preenchimento; contraste do texto de pelo menos 4,5:1 em todos os casosM12, M13CA-MSG-022.5; D-MSG-057
CT-MSG-336Massa: Gilliard também na equipe “Plantão” (criar), Claire só em Enfermagem, um usuário sem equipe (criar)Digitar o nome de cada um no destinatárioGilliard: “Equipes: Onco, Plantão”; com 3 ou mais, só duas e “+n”; Claire: “Equipes: Enfermagem”; o usuário sem equipe: “Sem equipe”; cada equipe: “n membros”—CA-MSG-020.7; D-MSG-060
CT-MSG-337Mesma massaDigitar “Gilliard”; escolher a equipe “Plantão” e enviarNo grupo “Equipes” aparecem Onco e Plantão, cada uma com “n membros · Inclui Gilliard”; no grupo “Pessoas”, Gilliard; enviada a Plantão, a mensagem chega a todos os membros ativos da equipe (RN-MSG-015)—CA-MSG-020.7; RN-MSG-015; E-MSG-023
CT-MSG-338Formulário abertoConferir o prazo; preencher só o horário; preencher a data sem horário; digitar horário 25:75Legenda “Prazo para resolução (opcional)”, “Data” e “Horário (opcional)” lado a lado; só o horário: “Informe a data do prazo.”; só a data: envia (CT-MSG-344); horário 25:75: “Informe o horário de 00:00 a 23:59.” ligada ao horário—CA-MSG-008.2; D-MSG-064
CT-MSG-339Painel da Central e lista da Mensageria, com M3Com a dica aberta, abrir o modal por teclado (Enter no cartão); com a dica aberta, redimensionar a janelaA dica fecha ao abrir o modal e ao redimensionar; não há dica aberta atrás do modalM3CA-MSG-022.3; D-MSG-059
CT-MSG-340 (API)Token de Craig, massa de CT-MSG-336GET /conversations/recipients?q=gilliard&limit=8teams com Onco e Plantão, cada uma com matchedMembers contendo Gilliard; people com Gilliard e teams com Onco e Plantão; pessoa sem equipe com teams vazio—CA-MSG-020.7; 02 2.8.7
CT-MSG-341Formulário aberto, Craig logadoMarcar “Imediato”; marcar “Rotina”; tocar em “Rotina” de novo”Imediato” assume o visual do chip dos cartões (contorno de 2 px em error-dark e flag cheia); ao marcar “Rotina”, só ela fica no visual do chip (contorno cinza, flag) e “Imediato” volta ao neutro; tocar de novo desmarca (sem grau); só uma opção marcada por vez; ao enviar, o chip do cartão é igual ao da opção—CA-MSG-017.1; D-MSG-065
CT-MSG-342Formulário aberto, navegador em inglês e em pt-BRDigitar no horário “2575”, “1430”, “9” e letrasSó números; aparece “25:75” e, ao enviar, MSG-EMSG-15; “14:30” é aceito; letras são ignoradas; no celular abre o teclado numérico—CA-MSG-008.2; D-MSG-064
CT-MSG-343M1 (a vencer) e M3 (vencida)Conferir a dica e o nome acessível”Resolver até 22/10/2026, 18:00” na dica; o nome acessível de M3 termina com “Vencida. Resolver até 22/10/2026, 10:00”; em en-US, “Resolve by”; em es-419, “Resolver hasta”M1, M3CA-MSG-022.1 a 022.3; MSG-TMSG-05
CT-MSG-344Craig envia uma conversa com prazo só com a data (25/12/2026) e outra com 23:30Conferir os cartões, a dica e o bancoA 1ª: cartão “25/12” e dica “Resolver até 25/12/2026”, sem “23:59”; PrazoEmUtc = 26/12/2026 02:59 UTC (23:59 da clínica); passa a “Vencida” só depois das 23:59 de 25/12. A 2ª: cartão “25/12, 23:30” e dica com a hora—CA-MSG-008.2, 022.1; D-MSG-066
CT-MSG-345Campo PacienteDigitar “15/08”, “1508”, “000.000.00” e “00000003”Entrada que começa com dígito busca por CPF ou data de nascimento (com ou sem pontuação): “15/08” e “1508” acham quem nasceu em 15/08; “00000003” acha só o paciente de CPF 000.000.003-53—CA-MSG-020.3; D-MSG-071
CT-MSG-346Campo Paciente e a busca do cabeçalho da Central, mesma massaDigitar o mesmo texto nos dois: nome, nome da mãe, CPF, nascimento; 1 caractere; texto sem resultadoOs resultados e a ordem são iguais; 1 caractere mostra MSG-TMSG-48; sem resultado, MSG-TMSG-50; o rodapé é o MSG-TMSG-49; a única diferença é que escolher preenche o campo, em vez de abrir o prontuário—D-MSG-071; Central 2.1
CT-MSG-347 (API)Alerta publicado por módulo (PublishAlert) para usuário inativo; para usuário de licença; para usuário sem Visualizar; para equipe sem membros ativosPublicar cada alertaNenhuma conversa é criada e o módulo recebe “não entregue”; cada caso grava uma anomalia no log de sistema, com o módulo de origem, a chave de idempotência e o motivo, para o suporte avisar o cliente—EX-MSG-07; D-MSG-069
CT-MSG-348Processo Registro clínico e Documento, paciente com vários itensAbrir a lista de itensRegistro clínico: cada item mostra data, modelo de formulário e profissional; Documento: nome e data (o modelo de documento ainda não é critério, D-MSG-067); a lista aparece inteira, sem paginação—CA-MSG-020.4; D-MSG-067
CT-MSG-349Craig enviou a conversa X com o paciente erradoResponder em X “Paciente errado, ignore”; descartar X; enviar nova conversa com o paciente certoO paciente de X não pode ser alterado (sem opção na conversa); a resposta aparece para o destinatário; X vai para “Finalizadas” como “Descartada por Craig”; a nova conversa aparece com o paciente certo—CA-MSG-020.8; D-MSG-072
CT-MSG-350Craig logado; M1 abertaAbrir /mensagens/{id de M1}; depois um id de outra pessoaO 1º: a lista com o modal de M1 por cima; o 2º: o modal não abre, a lista mostra “Conversa não encontrada.” (MSG-EMSG-09) [PROPOSTA, E-MSG-024]M1EX-MSG-05; D-MSG-075
CT-MSG-351Lista com M1; modal de M1 aberto a partir do cartãoFechar pelo “x”, por Esc e pelo Voltar do navegador (um de cada vez)O modal fecha nos três casos; a lista mantém o filtro e a rolagem; o foco volta ao cartão de M1 [PROPOSTA, E-MSG-024]M102 2.3.5; D-MSG-075
CT-MSG-352Conversa com muitas mensagens (criar 15), celular de 360 px e desktopAbrir o modal e rolar a trilhaTítulo, De e Para, tags de urgência, link e prazo ficam fixos; só a trilha rola; o campo de resposta e “Responder” ficam no fim; em 360 px o modal ocupa quase toda a altura—02 2.3.5; D-MSG-075
CT-MSG-353Modal de uma conversa aberta de pessoa (M4), de um alerta (M3) e de uma finalizada (M6), celular de 360 pxConferir o cabeçalho e o rodapéM4 e M3: “Resolver” e “Descartar”, com contorno e 44 px, à direita das linhas De e Para, longe do “x”; o rodapé de M4 tem só o campo e “Responder” (único preenchido), com topo e altura iguais aos da caixa do campo; o de M3 tem só o aviso; M6: nenhum dos dois botõesM3, M4, M6CA-MSG-005.1; D-MSG-076

14. Matriz de rastreabilidade

ÁreaCasosRN cobertasCA / EX cobertosSBISCobertura
PainelCT-MSG-101 a 108RN-MSG-001, 002, 008, 017CA-MSG-001.1 a 001.5, 003.1, 005.1; EX-MSG-01, 02—Completo
Lista e ordemCT-MSG-111 a 118RN-MSG-001, 002, 011CA-MSG-001.1, 001.2, 001.5, 002.4ECF.17.04Ordem de Finalizadas é [PROPOSTA]
CartãoCT-MSG-121 a 130RN-MSG-003, 014, 017CA-MSG-002.1, 002.2, 003.1, 003.2, 004.1, 004.2, 015.1, 022.1 a 022.5 (CT-MSG-331 a 335)—Completo
Nova mensagemCT-MSG-131 a 144RN-MSG-004, 007, 012, 015, 020, 021CA-MSG-002.3, 003.3, 007.1, 008.1 a 008.3, 009.1; EX-MSG-03NGS1.05.02Limites de caracteres e processo são [PROPOSTA]
ConversaCT-MSG-151 a 166RN-MSG-006, 009, 010, 017, 019, 022, 030CA-MSG-003.1, 005.4, 006.1, 012.1, 014.1; EX-MSG-04, 05, 09NGS1.03.01Completo
Resolver/descartarCT-MSG-171 a 180RN-MSG-008, 009, 018, 028CA-MSG-005.1 a 005.5, 010.2—Direito sem Enviar é [PROPOSTA]
Equipe e si mesmoCT-MSG-181 a 188RN-MSG-006, 007, 015, 018CA-MSG-007.1 a 007.3; EX-MSG-07—Completo
AlertasCT-MSG-191 a 198RN-MSG-016, 019, 020, 021, 028, 029CA-MSG-004.1, 009.1, 012.2, 013.1NGS1.03.09Interface de publicação é [PROPOSTA]
Fuso e idiomaCT-MSG-201 a 207RN-MSG-003, 005, 013CA-MSG-002.4, 011.1ECF.17.18, 17.19Completo
Permissões e auditoriaCT-MSG-211 a 220RN-MSG-023, 024, 025CA-MSG-010.1 a 010.3NGS1.03.03, 03.04, 07.01 a 07.03, 07.05, 07.06218 e 219 não executáveis até L-01 e L-02
EndpointsCT-MSG-231 a 244RN-MSG-004, 009, 025—NGS1.05.01, 05.02Completo
Clínica, idioma, botões e tipo de mensagemCT-MSG-262 a 267RN-MSG-013, 025—ECF.17.18, 17.19Massa de três clínicas é [PROPOSTA]; 267 só executa depois da alteração do CHECK no banco
Aviso de lida no cartãoCT-MSG-249, 250, 268 a 270RN-MSG-016, 018CA-MSG-016.1, 016.2—Completo
Busca e ordem do formulárioCT-MSG-309 a 326, 336, 337, 340RN-MSG-036, 020, 021, 034CA-MSG-020.1 a 021.4—Comportamento da busca é [PROPOSTA] (E-MSG-021); as massas são fictícias
Grau de urgênciaCT-MSG-271 a 290RN-MSG-002, 028, 032, 034CA-MSG-017.1 a 017.8ECF.17.18, 17.19A coluna GrauUrgencia e os seeds de Indicadores são [PROPOSTA] (L-09, L-10); 277 e 282 dependem de decisões abertas (E-MSG-018, P-MSG-30)
Horário, limite, processo e agravamentoCT-MSG-291 a 308; 138, 141RN-MSG-016, 021, 035CA-MSG-018.1 a 018.5, 008.3—Contador no campo de resposta e o mecanismo DismissAlert são [PROPOSTA]; as categorias e a ordem dos itens do processo estão em aberto (P-MSG-34)
AcessibilidadeCT-MSG-251 a 257RN-MSG-027CA-MSG-015.1—Completo

Cobertura dos critérios de aceitação: todos os CA-MSG da Especificação (001.1 a 022.5) têm ao menos um caso. Fluxos de exceção: 9/9 (EX-MSG-01 a 09; 06 em CT-MSG-245, 07 em CT-MSG-185, 247 e 248, 08 em CT-MSG-246). Total: 222 casos.

Não coberto, por decisão de escopo: volume e desempenho (a Especificação não define meta); concorrência além de CT-MSG-177; estados pressionado e desabilitado e botão de ação destrutiva, ainda não definidos no Design System.


15. Histórico de Versões

  • v1.0 (22/10/2026) — Versão inicial, construída a partir da Definição, Especificação, Mapeamento e Registro de Decisões v1.0, a pedido do solicitante. O que a QA precisa saber, sem abrir outros documentos:
    1. A carga atual não tem conversas. CargaCMZero.xlsx tem apenas as equipes Enfermagem, Farmácia e Onco e os membros (usuários 1, 4, 5, 6, 7, 8). As conversas M1 a M10 são uma proposta de massa que precisa ser criada antes dos testes.
    2. Lacunas de especificação que mudam resultados: ordem da aba “Finalizadas” (CT-MSG-113), limite de 2000 caracteres (CT-MSG-141), paginação de 20 (CT-MSG-115), processo condicionado a paciente (CT-MSG-138), rótulo “Atualização do sistema” (CT-MSG-194) e resolver sem o direito Enviar (CT-MSG-180) são [PROPOSTA]; se o solicitante decidir diferente, o resultado esperado muda.
    3. CT-MSG-218 e 219 não são executáveis até o solicitante decidir as lacunas L-01 (endereço de origem na auditoria) e L-02 (exclusão em cascata).
    4. O padrão de cor dos botões e o componente de data e hora estão em aberto; os casos não conferem a cor final do botão.
    5. Ordem do painel (CT-MSG-101): com a massa proposta, os não lidos M1 e M3 vêm antes dos lidos, e dentro de cada grupo vale o maior entre a última mensagem e o prazo.
    • Total: 130 casos.
    • Revisão por Dois Críticos (22/10/2026): corrigidos IDs inexistentes, massa M11, cobertura de EX-MSG-06 a 08 (CT-MSG-245 a 248), estado visível ao remetente (CT-MSG-249, 250), participação (CT-MSG-258), Enviar sem Visualizar (CT-MSG-259), concorrência (CT-MSG-260), data inexistente (CT-MSG-261); 405 trocado por 404 em rota inexistente; ordem do painel depois de abrir M1 (CT-MSG-104); instrução de recriar a massa.
  • v1.1 (27/10/2026) — Acompanha os documentos 01 a 05 v1.1. Seis casos novos (CT-MSG-262 a 267): clínicas do médico e linha da clínica (RN-MSG-025, DT-013), pt-BR completo (ECF.17.18 e 17.19), um botão preenchido por região (Design System, seção 12) e tipo de mensagem só Response. Alterados: CT-MSG-121 (borda de 3 px em secondary-dark), 194 (atualização do sistema com tipo Response), 220 (envio entre clínicas, [PROPOSTA]) e 238 (idempotência pela opção B: a mesma chave devolve sempre a conversa antiga, sem comparar o conteúdo). Total: 136 casos. O que a QA precisa saber: 267 só roda depois que o CHECK de Mensagem.Tipo for alterado no banco; 262 e 264 precisam do cliente de três clínicas da massa da Central; o selo de estado do cartão está em aberto (CT-MSG-249 e 250 podem mudar).
  • v1.2 (27/10/2026) — Estado no cartão (D-MSG-023): CT-MSG-249 e 250 reescritos (ícones check e check-check, sem chip “Respondida”); novos CT-MSG-268 a 270 (nova resposta do usuário, equipe e alerta). Total: 139 casos. O que a QA precisa saber: o cartão não tem chip de estado; o estado “respondida” continua no banco, mas não aparece. CT-MSG-270 depende de uma conversa de alerta (M9) da massa proposta.
  • v1.3 (28/10/2026) — Grau de urgência (D-MSG-025 a 027): massa nova M12 a M15 (de Gilliard, para não mudar o painel de Craig); nova seção 13A com 20 casos (CT-MSG-271 a 290): formulário, chip nos quatro níveis, imutabilidade, ordem (CT-MSG-278 e 279), alertas, validação na API e no banco, idiomas, contraste, leitor de tela, teclado e celular; CT-MSG-101 com a observação de que M1 a M10 não têm grau; matriz atualizada. Total: 159 casos. O que a QA precisa saber: (1) a coluna GrauUrgencia e os seeds de Indicadores são proposta; CT-MSG-273, 274, 285 e 286 só executam depois deles; (2) em CT-MSG-278, M8 não tem grau e fica abaixo de M15 porque Alta vem antes; (3) a regra do horário relativo (D-MSG-028) é da Central e não é testada aqui.
  • v1.4 (28/10/2026) — Respostas do solicitante: horário relativo no cartão (CT-MSG-291 a 298; CT-MSG-121 e 122 reescritos), limite de 2000 caracteres (CT-MSG-141, 299), processo de um só tipo sem depender do paciente (CT-MSG-138, 300, 301) e alerta que se agrava (CT-MSG-302). Total: 171 casos. O que a QA precisa saber: a regra de “mesmo dia” é o dia de calendário no fuso da clínica; a lista de itens por tipo (categorias de documento e de registro clínico) está em aberto (P-MSG-34); os casos 303 a 307 usam itens fictícios.
  • v1.5 (28/10/2026) — Processo em três etapas (D-MSG-035 a 037): CT-MSG-138, 139 e 300 reescritos; novos CT-MSG-303 a 308. Total: 177 casos. Agenda não é mais tipo de processo.
  • v1.6 (28/10/2026) — Grau de urgência no domínio HL7: massa (M12, M13, M15) e os casos CT-MSG-271 a 290, 302 reescritos com Rotina, Urgente, Quanto antes e Imediato e com a chave STAT/ASAP na API e no banco; nova seção 13C (CT-MSG-309 a 322): ordem do formulário e buscas com autocomplete. Total: 191 casos.
  • v1.7 (29/10/2026) — CT-MSG-323 a 325 (chip Rotina, aparência do cartão, ordem dos itens). Total: 194 casos.
  • v1.9 (29/10/2026) — CT-MSG-283: urgencyLevel no PublishAlert (D-MSG-048). Nenhum caso novo. Total: 195 casos.
  • v1.8 (29/10/2026) — Chaves do grau em minúsculas (CT-MSG-275, 283, 285, 302, 323, M12, M13); botão fora do cartão (CT-MSG-105, 130, 253, 266); CT-MSG-326. Total: 195 casos.
  • v1.10 (29/10/2026) — CT-MSG-101 e 279: painel sem limite de 4 cartões e sem o link “Ver todas as mensagens” (D-MSG-049). Total: 195 casos.
  • v1.11 (29/10/2026) — CT-MSG-315 a 317 e massa fictícia: busca por Prescricao.Identificacao (qualquer parte), nome do documento e data do registro clínico (D-MSG-050). Total: 195 casos.
  • v1.12 (30/10/2026) — CT-MSG-317 e massa fictícia: profissional exibido como tratamento e apelido (D-MSG-051). Total: 195 casos.
  • v1.13 (30/10/2026) — Sem mudança de casos (D-MSG-052 confirma a busca por data em dd/mm e dd/mm/aaaa). Total: 195 casos.
  • v1.14 (30/10/2026) — Sem mudança de conteúdo; acompanha a correção do Mapeamento (nome da coluna SegurancaUsuarioId).
  • v1.15 (05/11/2026) — Sem mudança de casos; CT-MSG-324 e 326 continuam válidos com o novo visual (D-MSG-053). Total: 195 casos.
  • v1.16 (05/11/2026) — Novos CT-MSG-327 a 330 (links de paciente e processo; equipe junto ao autor; área de toque). Total: 199 casos (CT-MSG-101 a 330).
  • v1.17 (05/11/2026) — CT-MSG-327, 328 e 330: um só link por cartão (D-MSG-055). Total: 199 casos.
  • v1.18 (10/11/2026) — Cartão mais leve (D-MSG-056 a 058): CT-MSG-104, 121, 122, 124, 126, 159, 275 e 281 reescritos; novos CT-MSG-331 a 335 (sem ícone e pesos, prazo a vencer, Vencida com dica, balão no toque, chips em contorno). Total: 204 casos (CT-MSG-101 a 335).
  • v1.19 (11/11/2026) — Dica do prazo como a de 1ª Consulta (CT-MSG-332 a 334 reescritos; novo CT-MSG-339); destinatário com equipes (CT-MSG-131; novos CT-MSG-336, 337 e 340); prazo em dois campos (CT-MSG-135 a 137, 256, 261 e 309 reescritos; novo CT-MSG-338). Total: 209 casos.
  • v1.20 (11/11/2026) — “Inclui {nome}” adotado (CT-MSG-337 sem [PROPOSTA]); prazo com data obrigatória e horário opcional em 24 h (CT-MSG-137, 256, 261 e 338 reescritos; novo CT-MSG-342); “Resolver até” (CT-MSG-332, 333 e 334; novo CT-MSG-343); grau de urgência do tamanho do chip (CT-MSG-271 e 290 reescritos; novo CT-MSG-341). Total: 212 casos.
  • v1.21 (11/11/2026) — Prazo sem horário mostra só a data (CT-MSG-338 ajustado; novo CT-MSG-344). Total: 213 casos. O que a QA precisa saber: o prazo gravado às 23:59:00 da clínica é exibido sem horário (sem coluna nova, [PROPOSTA]).
  • v1.22 (11/11/2026) — Busca de paciente como a do cabeçalho (CT-MSG-314 reescrito; novos CT-MSG-345 e 346); alerta para destinatário que não pode receber (CT-MSG-347); itens do processo sem paginação (CT-MSG-348); CT-MSG-180 sem [PROPOSTA]. Total: 217 casos. O que a QA precisa saber: os CPFs da massa são fictícios; o modelo de documento ainda não é critério.
  • v1.23 (11/11/2026) — Busca de paciente completa, como a do cabeçalho (CT-MSG-314, 345 e 346 reescritos); CT-MSG-347 sem [PROPOSTA] (D-MSG-069 confirmada); novo CT-MSG-349 (paciente errado). Total: 218 casos.
  • v1.24 (11/11/2026) — Sem caso novo. Total: 218 casos.
  • v1.25 (11/11/2026) — Sem caso novo. Total: 218 casos.
  • v1.26 (11/11/2026) — Tela Conversa eliminada (CT-MSG-114, 252 e 326 reescritos; novos CT-MSG-350 a 352: endereço da conversa, fechar e cabeçalho fixo). Total: 221 casos.
  • v1.27 (11/11/2026) — “Resolver” e “Descartar” no cabeçalho do modal (CT-MSG-105, 113, 156, 171, 172, 266 e 326 reescritos; novo CT-MSG-353). Total: 222 casos.
  • v1.28 (11/11/2026) — CT-MSG-353 ajustado (posição dos botões e alinhamento de Responder; D-MSG-077). Total: 222 casos.