Funcionalidade: Mensageria (Comunicação entre Profissionais)
Versão de referência da especificação: 01-Definição v1.16 / 02-Especificação v1.16 / 03-Protótipo v1.16 / 04-Mapeamento de BD v1.16 / 05-Registro de Decisões v1.16
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 (página e 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): em aberto. 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ário
IdUsuario
Papel no teste
Equipes
Craig Evans
1
Médico logado na maior parte dos casos
Onco
Gilliard Onório Santos
4
Segundo médico
Onco
Claire Vance
5
Enfermagem
Enfermagem
Ingrid Jorgensen
6
Farmácia
Farmácia
Mateo Perez
7
Enfermagem
Enfermagem
Li Wei
8
Farmácia
Farmácia
Massa proposta de conversas [PROPOSTA]
ID
Remetente → Destino
Assunto
Paciente / processo
Estado e momento
M1
Ingrid → Craig
Receita de antiemético para viagem
Roberto N. Alves (19) / Prontuário
Enviada há 40 min; não lida por Craig; prazo hoje 18:00
M2
Claire → equipe Farmácia
Carboplatina em falta
Beatriz A. Lima (20)
Lida por Li Wei há 2 h; Ingrid não leu; sem prazo
M3
Sistema (Assistencial) → Craig
Peso divergente na prescrição
Marcelo T. Pinto (22) / Prescrição “FOLFOX - C1D15”
Não lida; prazo venceu há 2 h (10:00)
M4
Craig → Craig
Revisar protocolo de neutropenia
sem
Lida; prazo amanhã 09:00
M5
Mateo → Craig
Paciente da sala 2 pronto para infusão
Maria Silva (4) / Consulta
Craig respondeu há 1 h (Respondida); sem prazo
M6
Ingrid → Craig
Atraso na manipulação
sem
Resolvida por Craig ontem 16:10
M7
Claire → Craig
Recado de paciente
sem
Descartada por Claire (remetente) ontem 09:00
M8
Craig → equipe Onco
Reunião de quinta
sem
Enviada há 3 h; Gilliard não leu; Craig é membro
M9
Sistema (Estoque) → Claire
Medicamento no limite mínimo
sem
Não lida; sem prazo
M10
25 conversas abertas de Craig (geradas)
Mensagem de teste n
sem
Para paginação (CT-MSG-115)
M12
Claire → Gilliard
Sangramento na sala 3
sem
Imediato (stat); lida por Gilliard; enviada hoje às 07:00
M13
Ingrid → Gilliard
Dúvida de diluição
sem
Rotina (routine); lida por Gilliard; enviada hoje às 11:50
M14
Mateo → Gilliard
Ajustar agenda de sexta
sem
Sem grau; lida por Gilliard; enviada hoje às 11:55
M15
Sistema (Assistencial) → Gilliard
Resultado de exame crítico sem análise
Roberto N. Alves (19) / Prontuário
Quanto antes (asap), definido pelo módulo de origem; não lida; publicada hoje às 08:00
M16
Ingrid → Craig
Conferir laudo
Roberto N. Alves (19) / Documento “Laudo de hemograma”
Usar só em CT-MSG-327 a 330; fora das contagens dos demais casos
M17
Mateo → Craig
Rever sinais vitais
Maria 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
M18
Claire → equipe Farmácia
Carboplatina: lote chegou
Beatriz 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)
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-101
Craig logado, Central aberta, desktop, 12:00
Observar o painel de Mensagens
Tí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 rola
M1, M3, M4, M5, M8
RN-MSG-001, 002; CA-MSG-001.1, 001.3
CT-MSG-102
Estado de CT-MSG-101
Conferir que M6 e M7 não aparecem
Resolvida e descartada não aparecem no painel
M6, M7
RN-MSG-001; CA-MSG-001.5
CT-MSG-103
Craig 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-104
Estado de CT-MSG-101
Clicar no cartão de M1
Abre o modal da conversa; M1 passa a lida (some a borda e o peso médio da mensagem) e o painel passa a M3, M4, M1, M5 (M1 sai do grupo de não lidas); a contagem não muda
M1
RN-MSG-017; CA-MSG-003.1
CT-MSG-105
Estado de CT-MSG-101
Abrir M4 (modal) e clicar em “Resolvido”
Confirmação com título “Resolver conversa?”, foco em “Cancelar”. Cancelar mantém. Confirmar: toast “Conversa resolvida.”; o cartão sai; contagem passa a 4
M4
RN-MSG-008; CA-MSG-005.1
CT-MSG-106
Estado de CT-MSG-101
Criar por BD uma conversa nova de Ingrid para Craig (fora da massa M1 a M10) e aguardar 1 minuto
O novo cartão aparece no painel sem recarregar a tela
—
02 2.3.2
CT-MSG-107
GET /conversations simulando falha (500)
Abrir a Central
Estado 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-108
Painel carregado; derrubar a conexão
Esperar a próxima atualização
Dados 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
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-111
Craig logado
Abrir “Mensagens” pelo menu
Linha 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-112
Estado de CT-MSG-111
Observar “Abertas”
Ordem completa: M1, M3 (não lidas); M4, M5, M8 (lidas pendentes). Cartões com a mesma estrutura do painel
M1, M3, M4, M5, M8
RN-MSG-002, 011; CA-MSG-001.1
CT-MSG-113
Estado de CT-MSG-111
Abrir “Finalizadas”
M6 (Resolvida) e M7 (Descartada), com chip de estado; sem botão “Resolvido”; ordem pela data de finalização, a mais nova primeiro [PROPOSTA, P-MSG-11]
M6, M7
RN-MSG-011; CA-MSG-001.5
CT-MSG-114
Estado de CT-MSG-111
Clicar em um cartão
Abre a página da conversa (não o modal)
M5
02 2.3.3
CT-MSG-115
Craig com M10 (25 abertas)
Rolar até o fim da aba “Abertas”
Carrega 20; ao rolar, carrega as 5 seguintes [PROPOSTA]; sem duplicados
M10
02 2.3.3
CT-MSG-116
Usuário sem conversas finalizadas
Abrir “Finalizadas"
"Nenhuma conversa finalizada.” (MSG-TMSG-03)
—
—
CT-MSG-117
Estado de CT-MSG-111
Comparar 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 M8
M4, M8
RN-MSG-002; CA-MSG-001.2
CT-MSG-118
Estado de CT-MSG-111, desktop e celular
Comparar as colunas
Coluna única nos dois; nenhum cartão com rolagem horizontal
—
02 2.1
4. Cartão de conversa
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-121
Estado de CT-MSG-112
Conferir M1
Ícone de pessoa à esquerda; borda lateral de 3 px em secondary-dark; linha 1: “Ingrid Jorgensen: …” (última mensagem, até 2 linhas, peso médio por ser não lida) 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 “Responder até 22/10 18:00”, ambos em texto cinza com ícone, sem chip; sem botão “Resolvido” (D-MSG-047, 053)
M1
RN-MSG-017; CA-MSG-003.1, 004.2
CT-MSG-122
Estado de CT-MSG-112
Conferir M3
Ícone de sino; a linha 1 começa com “Sistema:”; horário “Há 2 h” (mensagem das 09:30); “Vencida desde 22/10 10:00” (texto vermelho com ícone, sem chip); paciente em texto cinza
M3
RN-MSG-003, 014; CA-MSG-002.2, 004.1
CT-MSG-123
Estado de CT-MSG-112
Conferir M5
Linha 2 “Você: …” (última mensagem é de Craig); sem borda de não lida
M5
CA-MSG-004.2
CT-MSG-124
Estado de CT-MSG-112
Conferir M4
Sem paciente; prazo “Responder até 23/10 09:00” em texto cinza; linha 1 “Você: …”
M4
RN-MSG-007
CT-MSG-125
Estado de CT-MSG-112
Conferir M2 como Ingrid
Linha 2 “Claire Vance: …”; não lida para Ingrid, lida para Li Wei
M2
RN-MSG-017; CA-MSG-003.2
CT-MSG-126 (BD)
M3 aberta
Alterar PrazoEmUtc de M3 para daqui a 1 hora; recarregar
O chip passa a “Responder até {dt}” (sem vermelho); restaurar
M3
RN-MSG-003
CT-MSG-127
M3 vencida
Resolver M3; abrir “Finalizadas”
O chip de vencida some; aparece “Resolvida”
M3
RN-MSG-003; CA-MSG-002.1
CT-MSG-128
Texto de assunto com 200 caracteres
Ver 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-129
Tema escuro
Conferir todos os cartões acima
Só 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-130
Teclado
Percorrer com Tab a lista
Foco 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
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-131
Craig logado
Abrir “Nova mensagem” e a lista de destinatários
Grupo “Pessoas” com Craig marcado “(você)”, Gilliard, Claire, Ingrid, Mateo, Li Wei; grupo “Equipes” com Enfermagem · 2 membros, Farmácia · 2 membros, Onco · 2 membros
—
RN-MSG-007; CA-MSG-007.1
CT-MSG-132
Formulário vazio
Tocar em “Enviar”
Erros “Informe o destinatário.”, “Informe o assunto.” e “Escreva a mensagem.”; nada é enviado
—
CA-MSG-008.1
CT-MSG-133
Formulário preenchido
Enviar a Ingrid, assunto “Teste”, mensagem “Olá”, sem paciente e sem prazo
Toast “Mensagem enviada.”; volta à lista; a conversa aparece para Craig em “Abertas” lida e para Ingrid não lida
—
CA-MSG-003.3
CT-MSG-134
Formulário aberto
Enviar 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-135
Formulário aberto
Informar prazo 22/10/2026 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-136
Formulário aberto
Informar só a data do prazo (22/10/2026)
Erro “Informe data e hora completas (dd/mm/aaaa hh:mm).”
Observar o campo de tipo de processo; escolher um paciente
Desabilitado 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-139
Formulário com paciente e tipo Paciente
Enviar; abrir a conversa
Chip 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-140
Assunto com 201 caracteres
Digitar
O campo limita a 200; contador visível
—
02 2.6
CT-MSG-141
Mensagem com 2001 caracteres
Colar
Limita a 2000; contador “2000/2000” (D-MSG-030)
—
CA-MSG-018.4; 02 2.6
CT-MSG-142
Falha de rede durante o envio
Enviar 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-143
Formulário aberto
Cancelar com campos preenchidos
Volta à lista sem enviar
—
—
CT-MSG-144
Formulário no celular
Observar rótulos
Rótulo fixo acima de cada campo (sem rótulo flutuante); botão Voltar à esquerda da barra
—
02 2.3.4
6. Conversa (página e modal), resposta
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-151
Craig abre M1
Observar o cabeçalho
Assunto; “De: Ingrid Jorgensen”; “Para: Craig Evans (você)”; chips de paciente e prazo; atalho “Abrir prontuário”
M1
RN-MSG-006; CA-MSG-009.1
CT-MSG-152
Craig abre M8
Observar “Para"
"Equipe Onco · 2 membros”
M8
RN-MSG-006, 015
CT-MSG-153
Craig abre M5
Observar as mensagens
Ordem cronológica; mensagem de Craig à direita; autor, data e hora em cada uma
M5
RN-MSG-019
CT-MSG-154
Craig abre M1
Responder “Receita emitida”
Toast “Resposta enviada.”; a mensagem aparece à direita; status passa a Respondida; remetente (Ingrid) recebe a conversa como não lida
M1
RN-MSG-019; CA-MSG-003.3
CT-MSG-155
Ingrid abre M1 após CT-MSG-154
Responder de volta
Permitido (quem enviou também responde); a conversa continua na mesma thread, sem tipo “réplica”
M1
RN-MSG-019
CT-MSG-156
Craig abre M3 (alerta)
Observar o rodapé
Sem campo de resposta; aviso “Alertas do sistema não recebem resposta.”; botões Resolvido e Descartado presentes
M3
RN-MSG-010; CA-MSG-006.1
CT-MSG-157 (API)
Token de Craig
POST /conversations/{M3}/reply
409
M3
CA-MSG-006.1
CT-MSG-158
Craig abre M6 (finalizada)
Observar
Linha “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.”
M6
RN-MSG-009; CA-MSG-005.4
CT-MSG-159
Craig abre M1 não lida
Observar após abrir
M1 deixa de ser não lida (a borda e o peso médio da mensagem somem) em painel e lista; para Ingrid o estado de leitura é independente
M1
RN-MSG-017
CT-MSG-160
Craig no modal do painel
Fechar com Esc, com “Fechar” e tocando fora
Fecha nos três modos; foco volta ao cartão de origem
—
02 2.10
CT-MSG-161
Craig digita resposta em M8; Gilliard resolve M8
Craig toca “Responder”
409; a tela recarrega mostrando “Resolvida por Gilliard…”; o texto digitado permanece visível
M8
EX-MSG-04
CT-MSG-162
Craig abre conversa de outro usuário (id de M-qualquer de Ingrid→Claire) pelo link
Abrir
Tela “Conversa não encontrada.” e volta à lista
—
EX-MSG-05
CT-MSG-163
Craig na conversa M2 (não participante) via API
GET /conversations/{M2}
404
M2
EX-MSG-05; NGS1.03.01
CT-MSG-164
Craig tenta editar texto enviado
Procurar ação de editar ou excluir
Não existe; PUT/DELETE em qualquer rota de mensagem retornam 404 (a rota não existe) e PUT/DELETE em /conversations/{id} retornam 405
M5
RN-MSG-022; CA-MSG-012.1; EX-MSG-09
CT-MSG-165
Conversa M8 como Gilliard, que responde
Ver a autoria
”Gilliard Onório Santos (Onco)” em cada resposta
M8
RN-MSG-030; CA-MSG-014.1
CT-MSG-166
Claire (fora da Onco) responde M8 (adicionada como destinatária por BD)
Ver a autoria
Só “Claire Vance”, sem equipe
—
RN-MSG-030
7. Resolver e descartar
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-171
Craig abre M5
Tocar “Resolvido”; ler a confirmação; confirmar
Diá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”
M5
RN-MSG-008; CA-MSG-005.1
CT-MSG-172
Craig abre M1
Tocar “Descartado”; confirmar
Diálogo “Descartar conversa?”; confirmar: “Conversa descartada.”; M1 em “Finalizadas” como Descartada
M1
RN-MSG-008
CT-MSG-173
Ingrid (remetente) abre M1
Resolver
Permitido; Craig vê M1 finalizada, “Resolvida por Ingrid Jorgensen em …”
M1
CA-MSG-005.2
CT-MSG-174
M8 (equipe Onco): Gilliard resolve
Craig abre “Abertas” e “Finalizadas”
M8 sai de “Abertas” de Craig e aparece em “Finalizadas” com “Resolvida por Gilliard Onório Santos”
M8
CA-MSG-005.3
CT-MSG-175
M8 finalizada
Tentar resolver de novo, via API
409 com quem finalizou e quando
M8
CA-MSG-005.4
CT-MSG-176
M1 sem respostas
Resolver sem responder
Nenhuma mensagem nova criada (a thread continua com 1 mensagem); cabeçalho mostra a linha de finalização
M1
RN-MSG-009; CA-MSG-005.5
CT-MSG-177
Dois usuários resolvem M2 no mesmo segundo
Ingrid e Li Wei
Um recebe sucesso, o outro 409; a conversa tem uma só ação Resolve
M2
EX-MSG-04
CT-MSG-178
Alerta M9 como Claire
Resolver M9
Permitido; registra ciência; “Finalizadas” mostra “Resolvida”
M9
RN-MSG-028
CT-MSG-179
Confirmação aberta
Esc
Cancela sem alterar
—
02 2.10
CT-MSG-180
Usuário com Visualizar e sem Enviar
Resolver uma conversa
Permitido [PROPOSTA, P-MSG-12]
—
CA-MSG-010.2
8. Equipe e envio a si mesmo
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-181
Craig (Onco) envia à equipe Onco
Enviar; conferir como Gilliard e como Craig
Ambos recebem; Craig também (remetente é membro); a conversa de Craig aparece lida
M8
RN-MSG-015; CA-MSG-007.2
CT-MSG-182
Claire (Enfermagem) envia à equipe Onco
Enviar
Craig 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 4
Adicionar o usuário 5 à Onco depois de M8; abrir como Claire
Claire não vê M8
M8
CA-MSG-007.3
CT-MSG-184 (BD)
Equipe Farmácia
Remover (RemovidoEmUtc) o usuário 8; enviar nova mensagem à Farmácia
Li Wei não recebe a nova; M2 continua listada para ele
M2
RN-MSG-015
CT-MSG-185 (BD)
Equipe inativa (Ativa = 0)
Tentar enviar à equipe
422; “Este destinatário não pode receber mensagens agora.”
—
EX-MSG-07
CT-MSG-186
Craig lê M8; Gilliard não
Conferir a leitura de cada um
M8 é lida para Craig e não lida para Gilliard
M8
CA-MSG-003.2
CT-MSG-187
Craig envia a si mesmo (CT-MSG-134)
Resolver o lembrete
Sai de “Abertas” e vai para “Finalizadas”
—
RN-MSG-007
CT-MSG-188
Lista de equipes
Conferir o “(n membros)“
Conta só membros ativos
—
RN-MSG-006
9. Alertas do sistema
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-191 (API)
Interface de publicação disponível
PublishAlert para Craig, módulo Assistencial, chave “RX-001”, paciente 22, processo Prescrição, prazo hoje 15:00
Conversa 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-191
Repetir PublishAlert com a mesma chave
Nenhuma nova conversa; devolve a existente
—
RN-MSG-029; CA-MSG-012.2
CT-MSG-193 (API)
Alerta anterior resolvido
PublishAlert com previousConversationId
Nova conversa ligada à anterior; a anterior continua finalizada
—
RN-MSG-016; CA-MSG-013.1
CT-MSG-194 (API)
Alerta aberto
Acrescentar 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-195
Alerta sem paciente (M9)
Ver o cartão
Sem paciente na linha de contexto
M9
RN-MSG-020
CT-MSG-196
Alerta com paciente e processo (M3)
Abrir; clicar “Abrir prescrição”
Leva à prescrição; se Craig não tiver acesso, o módulo de destino recusa
M3
RN-MSG-021; CA-MSG-009.1
CT-MSG-197
Alerta vencido (M3)
Conferir
”Vencida”; some ao resolver
M3
CA-MSG-002.2
CT-MSG-198 (API)
Chamada ao endpoint de criação como usuário comum com OrigemTipo=System
Enviar POST /conversations com campo de origem do sistema
Campo ignorado ou 400; o usuário comum nunca cria conversa de sistema
—
NGS1.03.09
10. Fuso, idioma e textos
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-201
Aparelho no fuso de São Paulo
Abrir a lista
Linha do fuso discreta
—
RN-MSG-005
CT-MSG-202
Aparelho em Londres
Abrir a lista
Linha do fuso destacada com ”— diferente do fuso deste aparelho”; horários continuam os da clínica
M1
CA-MSG-002.4
CT-MSG-203
Aparelho em Londres, 12:00 de São Paulo
Conferir “vencida”
Calculada no horário do servidor da clínica, não do aparelho
M3
RN-MSG-003, 005
CT-MSG-204 (API)
Token de Craig
GET /conversations?tab=open
timeZone = "America/Sao_Paulo"; datas em UTC; serverNow presente
—
DT-001
CT-MSG-205
Idioma da clínica es-419
Percorrer painel, lista, formulário, conversa e confirmações
Todos os textos do catálogo em espanhol; nenhum texto em português ou inglês
—
RN-MSG-013; CA-MSG-011.1
CT-MSG-206
Idioma en-US
Idem
Todos em inglês; data do prazo “mm/dd/yyyy hh:mm”
—
RN-MSG-013
CT-MSG-207
Interface em pt-BR
Provocar 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-265
Clínica com idioma pt-BR
Percorrer painel, lista, formulário, conversa, confirmações, erros e a linha do fuso, nos dois temas
Todos 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
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-211
Usuário sem o direito Visualizar
Abrir a Central e o menu
Sem painel de Mensagens e sem item “Mensagens”
—
RN-MSG-024; CA-MSG-010.1
CT-MSG-212 (API)
Mesmo usuário
Chamar os endpoints de conversa
403 em todos
—
CA-MSG-010.1
CT-MSG-213
Usuário com Visualizar e sem Enviar
Abrir a lista e uma conversa
Sem botão “Nova mensagem” e sem campo de resposta
—
CA-MSG-010.2
CT-MSG-214 (API)
Mesmo usuário
POST /conversations e /reply
403
—
CA-MSG-010.2
CT-MSG-215
Destinatários possíveis
Conferir a lista
Só usuários com direito Visualizar; usuário sem o direito não aparece
—
RN-MSG-024
CT-MSG-216 (BD)
Auditoria implantada
Enviar, ler, responder, resolver e descartar uma conversa
Um 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 publicado
Conferir o evento de auditoria
Origem “sistema” e o módulo gerador
—
RN-MSG-023; NGS1.07.03
CT-MSG-218 (BD)
Auditoria implantada
Conferir o endereço de origem
Não executável enquanto a lacuna L-01 estiver aberta (04, 4.5)
—
NGS1.07.05
CT-MSG-219 (BD)
Banco de teste
Tentar excluir fisicamente uma Conversa com mensagens
Nã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-220
Cliente de uma clínica
Tentar enviar a usuário sem acesso à clínica da conversa (API) [PROPOSTA, P-MSG-29]
422; nenhuma conversa criada
—
RN-MSG-025
CT-MSG-262
Cliente 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 B
As 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-263
Cliente de uma só clínica; Dr. 11 com uma conversa aberta
Abrir o painel
O 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 B
Abrir a lista; depois GET /conversations/{id} da conversa de B
A conversa de B não aparece na lista; a chamada devolve 404
—
RN-MSG-025; DT-013
12. Contrato dos endpoints
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-231 (API)
Token de Craig
GET /conversations?tab=open
200; counts = {open: 5, closed: 2}; items na ordem de CT-MSG-112; unread verdadeiro só em M1 e M3; overdue verdadeiro só em M3
M1–M8
02 2.8.1
CT-MSG-232 (API)
Token de Craig
GET /conversations?tab=closed
M6, M7 com closedBy e closedAt
M6, M7
02 2.8.1
CT-MSG-233 (API)
Token de Craig
GET /conversations?tab=invalid; limit=0
400
—
02 2.8.1
CT-MSG-234 (API)
Token de Craig
GET /conversations/{M5}
200 com messages em ordem de sequence; canReply = true; canClose = true
M5
02 2.8.2
CT-MSG-235 (API)
Token de Craig
GET /conversations/{M6}
canReply = false; canClose = false
M6
02 2.8.2
CT-MSG-236 (API)
Token de Craig
POST /conversations com deadline no passado
400
—
CA-MSG-002.3
CT-MSG-237 (API)
Token de Craig
POST /conversations com destinatário inexistente
422
—
EX-MSG-07
CT-MSG-238 (API)
Token de Craig
POST /conversations com Idempotency-Key repetida e corpo igual; depois com a mesma chave e corpo diferente
Nas 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 Craig
POST /conversations/{M1}/read duas vezes
204 nas duas; a leitura não retrocede
M1
02 2.8.4
CT-MSG-240 (API)
Token de Craig
PATCH /conversations/{M5}/resolve e /discard em M5 já resolvida
204 na 1ª; 409 na 2ª
M5
02 2.8.6
CT-MSG-241 (API)
Token de Craig
GET /conversations/recipients
people com Craig isSelf = true; teams com memberCount
—
02 2.8.7
CT-MSG-242 (API)
Sem token
Todos os endpoints
401
—
NGS1.03.01
CT-MSG-243 (API)
Token de Craig
POST /conversations com content de 4001 caracteres
400 [PROPOSTA]
—
02 2.6
CT-MSG-244 (API)
Token de Craig
GET /conversations/{id} de conversa de outra clínica
404
—
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.Mensagem
Todas 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 envia a Ingrid com prazo “31/02/2026 10:00” | Enviar | “Informe data e hora completas (dd/mm/aaaa hh:mm).” | — | CA-MSG-008.2 |
13. Layout, tema e acessibilidade
ID
Pré-condição
Passos
Resultado Esperado
RN/CA
CT-MSG-251
Celular 360 px
Percorrer painel, lista, formulário e conversa
Sem rolagem horizontal; alvos de toque ≥ 44 px; botão Voltar à esquerda; modal como folha inferior
02 2.1
CT-MSG-252
Desktop ≥ 640 px
Abrir o modal pelo painel
Caixa centralizada; mesmo conteúdo da página
02 2.3.5
CT-MSG-253
Leitor de tela
Navegar até o cartão de M1
Anuncia assunto, autor, última mensagem, data, “não lida” e prazo; nenhum botão separado no cartão
02 2.10
CT-MSG-254
Leitor de tela
Atualização automática do painel
Não anuncia a lista inteira; só a mudança de contagem de não lidas
02 2.10
CT-MSG-255
”Reduzir movimento” ativo
Abrir/fechar modal e confirmar
Sem animações de deslocamento
02 2.10
CT-MSG-256
Campo de prazo
Inspecionar
Rótulo associado, máscara anunciada, erro associado ao campo
02 2.10
CT-MSG-257
Tema escuro e claro
Medir contraste de chips, borda de não lida, vencida e linha do fuso
Texto ≥ 4,5:1; elementos não textuais ≥ 3:1
CA-MSG-015.1
CT-MSG-266
Painel, formulário, conversa e confirmação, nos dois temas
Contar os botões preenchidos de cada região e conferir as cores
Um só preenchido por região (verde escuro, texto branco, 5,5:1); “Cancelar”, “Voltar” e “Descartado” têm contorno; no tema escuro o limite do botão preenchido tem pelo menos 3:1 sobre a superfície
Design System, seção 12; D-MSG-022
13A. Grau de urgência (v1.3)
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-271
Craig logado, pt-BR
Abrir “Nova mensagem”
Grupo “Grau de urgência (opcional)” com quatro botões “Rotina”, “Urgente”, “Quanto antes”, “Imediato”, nenhum marcado, e o texto MSG-TMSG-37
—
CA-MSG-017.1; RN-MSG-034
CT-MSG-272
Estado de CT-MSG-271
Marcar “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-273
Craig envia a Ingrid, assunto “Teste”, sem marcar o grau
Conferir o cartão e a conversa de Craig e de Ingrid; consultar GET /conversations/{id} e a coluna GrauUrgencia
Nenhum chip de urgência em nenhuma tela; urgencyLevel nulo; GrauUrgencia nulo
—
CA-MSG-017.2
CT-MSG-274
Craig envia a Ingrid marcando “Imediato”
Conferir como Craig (Abertas) e como Ingrid (painel e conversa); consultar a coluna
Chip “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-275
Quatro conversas de Craig a Ingrid, com os graus routine, urgent, asap e stat
Conferir os quatro chips
Rotina: contorno neutro; Urgente: neutro cheio; Quanto antes: fundo claro de erro com contorno; Imediato: sólido (alert-fill, ícone preenchido). 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-276
Conversa de CT-MSG-274
Ingrid responde; conferir como Craig e como Ingrid
O chip continua “Imediato”; nenhuma tela tem controle para alterar o grau
—
CA-MSG-017.4
CT-MSG-277 (API)
Conversa de CT-MSG-274
Tentar alterar o grau (PATCH na conversa com urgencyLevel) e enviar urgencyLevel no corpo de uma resposta
Nã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-278
Gilliard logado, 12:00
Abrir “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, M12
M8, M12 a M15
CA-MSG-017.5; RN-MSG-002
CT-MSG-279
Estado de CT-MSG-278
Abrir a Central de Gilliard
Painel com os 5 cartões: M15, M8, M12, M13, M14, sem link “Ver todas as mensagens”
M8, M12 a M15
CA-MSG-017.5; RN-MSG-001
CT-MSG-280
Estado de CT-MSG-278
Resolver M12; abrir “Finalizadas”
M12 aparece com o chip “Imediato” e o chip “Resolvida”; o chip também aparece dentro da conversa
M12
E-MSG-017
CT-MSG-281
Gilliard com M15
Conferir o cartão e a conversa
Ícone de sino; chip “Quanto antes”; sem campo de resposta (MSG-TMSG-20)
M15
CA-MSG-017.6; RN-MSG-028
CT-MSG-282 (serviço)
M15 aberta
Chamar AppendAlertUpdate em M15
A mensagem “Atualização do sistema” é acrescentada; o grau continua “Quanto antes” (a interface não aceita urgencyLevel nessa chamada)
M15
RN-MSG-034; D-MSG-033
CT-MSG-283 (serviço)
—
Chamar PublishAlert sem urgencyLevel e, em outra execução, com urgencyLevel = asap
Sem urgencyLevel: alerta sem chip. Com asap: chip “Quanto antes”
—
CA-MSG-017.6
CT-MSG-284 (API)
Token de Craig
POST /conversations com urgencyLevel = 0, 3, “alta”, “stat” (minúsculas) e “Urgente”; depois com urgencyLevel nulo e ausente
Os 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-286
Clínicas pt-BR, en-US e es-419
Conferir 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-287
Temas claro e escuro
Medir o contraste do texto dos quatro chips e olhar em escala de cinza
Texto ≥ 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-288
Leitor de tela
Navegar até o cartão de M12 e até o seletor de grau
O 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 nome
M12
02 2.10
CT-MSG-289
Teclado
No formulário, ir ao seletor de grau com Tab; usar as setas e a barra de espaço
As 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-290
Celular de 360 px
Abrir o formulário e os cartões com chips de paciente, urgência e prazo
Os quatro botões ficam lado a lado, com alvo de toque ≥ 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)
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-291
Craig logado, 12:00
Conferir 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, M8
CA-MSG-018.1, 018.2; RN-MSG-035
CT-MSG-292
Mensagens às 11:01 e às 11:00, com data-base 12:00
Conferir os cartões
11:01: “Há 59 min”; 11:00: “Há 1 h” (a fronteira é 60 min)
—
CA-MSG-018.1, 018.2
CT-MSG-293
Mensagem às 00:10, data-base 23:50 do mesmo dia
Conferir o cartão
”Há 23 h”
—
CA-MSG-018.2
CT-MSG-294
Mensagem ontem às 23:50, data-base hoje 00:10
Conferir o cartão
Data e hora (“21/10 23:50”), não “Há 20 min”: o dia de calendário mudou
—
CA-MSG-018.3
CT-MSG-295
Conversa M1
Abrir a conversa
Cada mensagem mostra data e hora, não o horário relativo
M1
CA-MSG-018.3
CT-MSG-296
Clínicas en-US e es-419
Conferir M1 e M3
”40 min ago” e “2 h ago”; “Hace 40 min” e “Hace 2 h”
M1, M3
RN-MSG-013, 035
CT-MSG-297
Aparelho em fuso diferente do da clínica, perto da meia-noite
Conferir uma mensagem enviada 30 min antes da meia-noite da clínica
O “mesmo dia” é o da clínica, não o do aparelho
—
RN-MSG-005, 035
CT-MSG-298
Painel aberto às 12:00
Esperar a atualização automática de 1 minuto
M1 passa de “Há 40 min” a “Há 41 min” sem recarregar
M1
02 2.3.7 (E-MSG-019)
CT-MSG-299
Craig respondendo uma conversa
Colar 2001 caracteres no campo de resposta
O campo limita a 2000, com contador “2000/2000”; a API recusa 2001 com 400
—
CA-MSG-018.4
CT-MSG-300
Formulário com paciente
Escolher o tipo “Documento”, o item e enviar
A 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 Craig
POST /conversations com dois processos
400; 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 M15
M15 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 lida
M15
CA-MSG-018.5; RN-MSG-016, 034
CT-MSG-303
Paciente e tipo Prescrição escolhidos
Abrir o campo do item
Lista só as prescrições do paciente
—
CA-MSG-019.2
CT-MSG-304
Tipo Prescrição, sem item
Enviar
Erro MSG-EMSG-14 “Escolha o item do processo.” e foco no campo do item
—
CA-MSG-019.2
CT-MSG-305
Tipo Paciente
Observar o formulário
Não há campo de item
—
CA-MSG-019.3
CT-MSG-306
Tipo e item escolhidos
Trocar o paciente
Tipo e item são limpos
—
CA-MSG-019.4
CT-MSG-307
Tipo Registro clínico e item escolhidos
Enviar; abrir a conversa
Atalho “Abrir registro clínico”
—
CA-MSG-009.1
CT-MSG-308 (API)
Token de Craig
POST /conversations com processo do tipo Agenda, ou com tipo Prescricao sem item
400 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.
ID
Pré-condição
Passos
Resultado Esperado
Dados de Teste
RN/CA
CT-MSG-309
Craig logado
Abrir “Nova mensagem”
Ordem dos campos: Destinatário, Assunto, Mensagem; subtítulo “Opcionais”; Grau de urgência, Prazo para resposta, Paciente, Processo relacionado
—
CA-MSG-020.1; D-MSG-040
CT-MSG-310
Campo Destinatário vazio
Tocar no campo
Lista com as primeiras opções: cabeçalho “Equipes” (Enfermagem, 5; Farmácia Oncológica, 4) e depois “Pessoas”
—
CA-MSG-020.2
CT-MSG-311
Idem
Digitar “ANA”
Resultados sem distinguir maiúsculas: “Ana Ribeiro”; sem grupo “Equipes” se nenhuma equipe contém o texto
—
CA-MSG-020.2
CT-MSG-312
Idem
Digitar “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-313
Idem
Digitar “enf”
Aparece a equipe “Enfermagem (5 membros)” no grupo “Equipes”
—
CA-MSG-020.2
CT-MSG-314
Campo Paciente
Digitar “mari"
"Maria Souza” e “Mariana Alves”; busca por nome
—
CA-MSG-020.3
CT-MSG-315
Paciente Maria Souza e tipo Prescrição
Digitar “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-316
Tipo Documento
Digitar “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-317
Tipo Registro clínico
Digitar “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-318
Qualquer campo de busca
Digitar texto sem correspondência (“zzz”)
MSG-TMSG-41 “Nenhum resultado para “zzz”.”
—
CA-MSG-020.5
CT-MSG-319
Busca com mais de 8 resultados
Digitar um termo comum
8 resultados e o aviso MSG-TMSG-42
—
CA-MSG-020.5
CT-MSG-320
Campo Destinatário
Teclado: setas, Enter e Esc; leitor de tela
As 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 Craig
GET /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-322
Celular de 360 px
Abrir o formulário e a lista de resultados
A lista cabe na largura, sem rolagem horizontal; resultados com alvo de toque ≥ 44 px
—
02 2.1
CT-MSG-323
Conversa com grau routine
Conferir o cartão e a conversa
Chip “Rotina” (contorno neutro) aparece
—
CA-MSG-021.1; D-MSG-043
CT-MSG-324
Painel e lista, tema claro e escuro
Conferir os cartões
Cartõ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-325
Paciente com vários documentos e registros
Abrir a lista de itens sem digitar
Do mais recente ao mais antigo pela data do evento
—
CA-MSG-021.3; D-MSG-044
CT-MSG-326
Painel e lista, com M1, M3 (alerta) e uma conversa aberta qualquer
Procurar botões dentro dos cartões; tocar no cartão
Nenhum botão no cartão; o toque abre o modal (painel) ou a página (lista), onde “Resolvido” e “Descartado” aparecem
—
CA-MSG-021.4; D-MSG-047
CT-MSG-327
Painel e lista, com uma conversa com paciente (M1)
Tocar no nome do paciente no cartão; depois tocar no resto do cartão
O nome é link (sublinhado, secondary-dark) e leva ao prontuário do paciente (módulo de destino); a conversa não abre. Tocar no resto do cartão abre a conversa
M1
CA-MSG-021.5; D-MSG-054
CT-MSG-328
Conversa 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 link do processo
Link com ícone do tipo e o texto do item (identificação da prescrição, nome do documento, ou data, modelo e profissional); leva ao item; no cabeçalho não há botão “Abrir …”; no tipo Paciente só há o link do paciente
M3, M16, M17
CA-MSG-009.1, 021.5; RN-MSG-021
CT-MSG-329
M18: 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 escreveu
Autor “Li Wei (Farmácia)” no cartão e nas mensagens dela; para Li Wei, “Você (Farmácia)” [PROPOSTA]; Claire, que não é da equipe, aparece só com o próprio nome
M18
CA-MSG-021.6; RN-MSG-030
CT-MSG-330
Celular de 360 px e teclado
Medir a área de toque dos links; navegar com Tab; ativar o link com Enter
Área de toque de pelo menos 44 x 44 px; a ordem do foco é o botão do cartão e depois os links do cartão; anel de foco visível em todos; o leitor de tela lê “Abrir prontuário: {paciente}” e “Abrir prescrição: {item}“
Massa de três clínicas é [PROPOSTA]; 267 só executa depois da alteração do CHECK no banco
Aviso de lida no cartão
CT-MSG-249, 250, 268 a 270
RN-MSG-016, 018
CA-MSG-016.1, 016.2
—
Completo
Busca e ordem do formulário
CT-MSG-309 a 326
RN-MSG-036, 020, 021, 034
CA-MSG-020.1 a 021.4
—
Comportamento da busca é [PROPOSTA] (E-MSG-021); as massas são fictícias
Grau de urgência
CT-MSG-271 a 290
RN-MSG-002, 028, 032, 034
CA-MSG-017.1 a 017.8
ECF.17.18, 17.19
A 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 agravamento
CT-MSG-291 a 308; 138, 141
RN-MSG-016, 021, 035
CA-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)
Acessibilidade
CT-MSG-251 a 257
RN-MSG-027
CA-MSG-015.1
—
Completo
Cobertura dos critérios de aceitação: todos os CA-MSG da Especificação (001.1 a 021.4) 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: 195 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:
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.
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.
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).
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.
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).