1. Propósito e Escopo
Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para o Agente de IA para Comunicação de Atualizações de Atendimento, uma solução projetada para informar automaticamente os pacientes sobre atualizações de status do seu atendimento e tempo de espera via SMS ou aplicativo. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.
O objetivo principal é melhorar a experiência do paciente através de comunicação clara e oportuna, garantindo que as informações sobre o status do atendimento sejam precisas e atualizadas em tempo real.
2. Contexto e Problema
Cenário Atual
A comunicação entre as instituições de saúde e os pacientes sobre o status do atendimento muitas vezes é ineficaz. Isso leva a situações onde os pacientes não são informados sobre mudanças no tempo de espera ou status do atendimento.
Problemas Identificados
- Falta de comunicação eficaz: Pacientes frequentemente não recebem atualizações em tempo hábil sobre o status de seu atendimento.
- Incerteza sobre tempo de espera: Mudanças no tempo de espera não são comunicadas de forma eficiente, levando a frustração e experiências negativas.
3. Impactos Esperados
A implementação deste agente visa alcançar os seguintes resultados:
- Melhorar a experiência do paciente através de comunicação clara e oportuna.
- Garantir que as informações sobre o status do atendimento sejam precisas e atualizadas em tempo real.
- Utilizar múltiplos canais de comunicação como SMS e aplicativos móveis para alcançar os pacientes de forma eficaz.
4. Visão Geral da Solução
O agente de IA para comunicação de atualizações de atendimento informa automaticamente os pacientes sobre atualizações de status do seu atendimento e tempo de espera via SMS ou aplicativo. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um assistente útil e autônomo na comunicação com os pacientes.
A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a preparação do payload para consulta ao sistema de atendimento e termina com o envio de mensagens aos pacientes através de canais configurados.
A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.
| Agentes | Função Principal |
|---|---|
Agente Preparador de Consulta de Status de Atendimento (RF 1)
| Preparar o payload de consulta ao sistema de atendimento para recuperar status atual e tempo de espera do paciente/atendimento. |
Agente de Execução de Chamada à API - Obter Status de Atendimento (RF 2)
| Realizar chamada à API do Sistema de Atendimento para obter status atual e tempo de espera. |
Agente de Detecção de Mudanças de Status e Tempo de Espera (RF 3)
| Comparar o retorno atual com o snapshot anterior e decidir se há mudança relevante que justifique envio de atualização ao paciente. |
Agente de Composição de Mensagem Multicanal para Pacientes (RF 4)
| Gerar a mensagem final clara e oportuna para SMS e/ou push, escolhendo canais e conteúdo conforme preferências e regras de experiência. |
5. Protótipos
Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que o paciente receberá. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente Preparador de Consulta de Status de Atendimento
1.1 Tarefa do Agente
Preparar o payload de consulta ao sistema de atendimento para recuperar status atual e tempo de espera do paciente/atendimento.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um objeto JSON com os identificadores mínimos do evento de atendimento.
# 2. Objetivo
Preparar o payload de consulta ao sistema de atendimento para recuperar status atual e tempo de espera do paciente/atendimento.
# 3. Regras que você deve seguir para gerar sua resposta
- Regra 1 (Prioridade de identificador único): Selecionar exatamente UM identificador para compor a query, na ordem de prioridade: appointment_id > ticket_id > patient_id. Incluir apenas a chave escolhida em query; não incluir as demais.
- Regra 2 (Normalização de identificadores): Converter o identificador escolhido para string, trim de espaços, remover separadores não numéricos quando o identificador for numérico (pontos, hífens, espaços). Não alterar letras maiúsculas/minúsculas de IDs alfanuméricos.
- Regra 3 (Validação mínima): Se nenhum dos três identificadores estiver presente ou não for string após normalização, retornar erro no formato: {"error": {"code": "MISSING_IDENTIFIER", "message": "Nenhum identificador válido (appointment_id|ticket_id|patient_id) foi fornecido."}} ao invés do payload de consulta.
- Regra 4 (Formato estrito do payload): Montar o JSON exatamente com as chaves endpoint, method, query e headers. method = "GET". endpoint = "/v1/atendimentos/status". Não adicionar campos extras.
- Regra 5 (Autorização): Incluir sempre headers.Authorization = "Bearer {{auth_token}}". Não substituir o placeholder.
- Regra 6 (Sanidade do source): Se existir source e não estiver em {"status_event", "polling"}, aceitar mesmo assim, sem bloquear, mas não incluí-lo no payload.
- Regra 7 (Resiliência a campos supérfluos): Ignorar silenciosamente quaisquer campos do input que não façam parte de expected_input e que não sejam necessários para o payload. 1.3 Configurações do Agente
1.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de um objeto JSON com identificadores mínimos do evento de atendimento via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados para o agente diretamente por upload do JSON na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é um objeto JSON com identificadores mínimos do evento de atendimento.
- Formatos Suportados: Esse agente deve ser capaz de receber dados no formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 5.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON estruturado com as chaves endpoint, method, query e headers, pronto para a execução da chamada HTTP.
-
Exemplo de Estrutura de Output:
{"endpoint": "/v1/atendimentos/status", "method": "GET", "query": {"appointment_id": "..."}, "headers": {"Authorization": "Bearer {{auth_token}}"}} - Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 500 caracteres.
1.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
1.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não utiliza.
1.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Execução de Chamada à API - Obter Status de Atendimento (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Chamada à API - Obter Status de Atendimento (RF 2).
RF 2. Agente de Execução de Chamada à API - Obter Status de Atendimento
2.1 Tarefa do Agente
Realizar chamada à API do Sistema de Atendimento para obter status atual e tempo de espera.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo um payload pronto para execução da chamada HTTP. # 2. Objetivo Realizar chamada à API do Sistema de Atendimento para obter status atual e tempo de espera. # 3. Regras que você deve seguir para gerar sua resposta Esse agente não precisa de instruções para LLM, pois sua única função é executar a chamada à API cujo payload ele já recebe pronto.
2.3 Configurações do Agente
2.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 1).
- Tipo do input: Este agente deve ser apto a receber como input um payload pronto para execução da chamada HTTP.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 1.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo o status atual e tempo de espera retornado pela API.
-
Exemplo de Estrutura de Output:
{"status_atual": "em_atendimento", "estimativa_espera_min": 23, "posicao_fila": 5, "unidade": "Hospital Centro", "setor": "Pronto Atendimento", "profissional": "Dra. Silva", "last_update_iso": "2025-11-28T06:38:00Z", "appointment_id": "...", "patient_id": "...", "ticket_id": "..."} - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 500 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: Nenhum (uso de ferramenta)
- Temperatura: Não se aplica
2.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Executa chamada à API do Sistema de Atendimento.
2.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Detecção de Mudanças de Status e Tempo de Espera (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Detecção de Mudanças de Status e Tempo de Espera (RF 3).
RF 3. Agente de Detecção de Mudanças de Status e Tempo de Espera
3.1 Tarefa do Agente
Comparar o retorno atual com o snapshot anterior e decidir se há mudança relevante que justifique envio de atualização ao paciente.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um objeto JSON com os dados atuais retornados pela API e, quando disponível, um snapshot anterior.
# 2. Objetivo
Decidir se há mudança relevante que justifique envio de atualização ao paciente.
# 3. Regras que você deve seguir para gerar sua resposta
- Regra 1 (Normalização de valores): Tratar estimativa_espera_min negativa como 0. Tratar posicao_fila negativa como 0. Se ausentes no "atual", considerar nulos e não calcular delta correspondente.
- Regra 2 (Cálculo de deltas): delta_min = estimativa_atual - estimativa_anterior. delta_percent = (estimativa_atual - estimativa_anterior) / max(estimativa_anterior, 1) * 100, com duas casas decimais.
- Regra 3 (Transições sempre notificáveis): houve_mudanca_relevante = true quando houver mudança entre estados distintos do conjunto: {check-in, triagem, aguardando, em_atendimento, concluido, cancelado, pausado}. Definir criterio = "transicao_de_fase".
- Regra 4 (Variação de tempo de espera): houve_mudanca_relevante = true quando |delta_min| ≥ 5 OU |delta_percent| ≥ 15. Definir criterio = "delta_minutos" ou "delta_percentual" conforme o primeiro gatilho que se aplicar.
- Regra 5 (Mudança de posição na fila): houve_mudanca_relevante = true quando posicao_fila_anterior - posicao_fila_atual ≥ 3 e estimativa_atual > 0. Definir criterio = "posicao_fila".
- Regra 6 (Debounce temporal): Se anterior.last_update_iso existir e a diferença para atual.last_update_iso < 10 minutos e não houver transição de fase, definir houve_mudanca_relevante = false, mesmo que os deltas atendam aos limiares.
- Regra 7 (Primeira informação): Se não houver objeto "anterior", definir mudou_status e mudou_estimativa com base apenas em "atual" e houve_mudanca_relevante = true com criterio = "primeira_informacao".
- Regra 8 (Dados faltantes): Se status_atual estiver ausente em "atual", definir mudou_status = false. Se estimativa_espera_min ausente, definir mudou_estimativa = false. Decidir houve_mudanca_relevante apenas com os campos disponíveis.
- Regra 9 (Saída consistente): Sempre preencher no output: status_atual (quando disponível), estimativa_atual_min (ou null), posicao_fila_atual (ou null), mudou_status (boolean), mudou_estimativa (boolean), delta_min (ou null), delta_percent (ou null), houve_mudanca_relevante (boolean) e criterio (string). 3.3 Configurações do Agente
3.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 2).
- Tipo do input: Este agente deve ser apto a receber como input um objeto JSON com os dados atuais retornados pela API e, quando disponível, um snapshot anterior.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 2.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON indicando se houve mudança relevante e detalhando os critérios.
-
Exemplo de Estrutura de Output:
{"mudou_status": true, "mudou_estimativa": true, "delta_min": -12, "delta_percent": -34.29, "houve_mudanca_relevante": true, "criterio": "transicao_de_fase", "status_atual": "em_atendimento", "estimativa_atual_min": 23, "posicao_fila_atual": 5, "appointment_id": "...", "patient_id": "...", "ticket_id": "..."} - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 400 caracteres.
3.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
3.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Utiliza lógica interna para calcular deltas e avaliar mudanças.
- Busca Online: Não utiliza.
- Sistemas Externos: Não utiliza.
3.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Composição de Mensagem Multicanal para Pacientes (RF 4).
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Composição de Mensagem Multicanal para Pacientes (RF 4).
RF 4. Agente de Composição de Mensagem Multicanal para Pacientes
4.1 Tarefa do Agente
Gerar a mensagem final clara e oportuna para SMS e/ou push, escolhendo canais e conteúdo conforme preferências e regras de experiência.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um objeto JSON combinando decisão de mudança e, quando disponível, preferências do paciente.
# 2. Objetivo
Gerar a mensagem final clara e oportuna para SMS e/ou push, escolhendo canais e conteúdo conforme preferências e regras de experiência.
# 3. Regras que você deve seguir para gerar sua resposta
- Regra 1 (Gatilho de envio): Só compor mensagens quando decisao.houve_mudanca_relevante = true e prefs.opt_out != true. Se opt_out = true, retornar channels = [] e metadata.motive = "opt-out".
- Regra 2 (Seleção de canais): Se prefs.push = true, incluir "push" em channels. Se prefs.sms = true, incluir "sms". Se ambos true, priorizar push como canal principal, mantendo sms como redundância. Se nenhum canal ativo, retornar channels = [] e metadata.motive = "sem_canal".
- Regra 3 (Precisão e atualidade): Usar os valores mais recentes de decisao e contexto_unidade. Arredondar estimativa_atual_min para inteiro mais próximo, mínimo 0 e máximo 480. Não inventar dados ausentes.
- Regra 4 (Clareza por canal):
- SMS: alvo ≤ 140 caracteres (máximo 160). Incluir status e estimativa (se > 0). Referenciar unidade ou setor de forma curta. Evitar acentuação excessiva quando possível para reduzir risco de mensagem multipartida; não usar links.
- Push: até ~280 caracteres. Pode incluir nome preferido, posição na fila e unidade/setor com mais contexto.
- Regra 5 (Personalização segura): Se identificacao.nome_preferido existir, iniciar a mensagem push com o nome. Não incluir dados sensíveis (diagnóstico, sintomas, resultados). Não citar profissional se não estiver presente no input.
- Regra 6 (Janela de silêncio): Respeitar prefs.quiet_hours quando fornecida. Durante quiet_hours, definir priority = "low" e não incluir SMS; somente push silencioso (se push permitido). Exceção: se status_atual = "em_atendimento", definir priority = "high" e permitir envio imediato em ambos canais, quebrando a janela.
- Regra 7 (Deduplicação e idempotência): idempotency_key = hash(appointment_id|status_atual|estimativa_atual_min|posicao_fila_atual|decisao.criterio). Mesmo conteúdo deve gerar mesma chave. Incluir a chave no output.
- Regra 8 (Templates por status):
- check-in/triagem: enfatizar início de etapa e estimativa.
- aguardando: focar redução/aumento relevante do tempo e posição na fila quando disponível.
- em_atendimento: comunicar início imediato e orientar deslocamento quando aplicável.
- pausado: informar pausa e que nova estimativa será enviada.
- concluido/cancelado: indicar encerramento e, se pertinente, próximos passos (ex.: pesquisa de satisfação em canal do app).
- Regra 9 (Fallback de canal): Se push falhar em sistemas externos (fora do escopo deste agente), o SMS deve ser apto a ser enviado sem dependências do push; o conteúdo já deve estar pronto para ambos os canais de forma independente.
- Regra 10 (Saída consistente): Sempre preencher channels, message_push (string ou "" se não aplicável), message_sms (string ou "" se não aplicável), locale (usar prefs.idioma quando presente, senão "pt-BR"), priority ("low"|"normal"|"high"), idempotency_key e metadata com status_atual, estimativa_min (inteiro), posicao_fila (ou null), unidade e setor quando disponíveis. 4.3 Configurações do Agente
4.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 3).
- Tipo do input: Este agente deve ser apto a receber como input um objeto JSON combinando decisão de mudança e, quando disponível, preferências do paciente.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 3.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo os canais selecionados e as mensagens geradas para cada canal.
-
Exemplo de Estrutura de Output:
{"channels": ["push", "sms"], "message_push": "Maria, seu atendimento está em triagem. Estimativa de espera: 20 min. Você é a 5ª na fila no Pronto Atendimento do Hospital Centro.", "message_sms": "Atualização: triagem iniciada. Espera ~20 min. Fila: posição 5. Hospital Centro.", "locale": "pt-BR", "priority": "normal", "idempotency_key": "appointment_id|timestamp|hash", "metadata": {"status_atual": "triagem", "estimativa_min": 20, "posicao_fila": 5, "unidade": "Hospital Centro", "setor": "Pronto Atendimento"}} - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 600 caracteres.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
4.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não utiliza.
4.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser enviada para os sistemas externos configurados para envio de SMS e Push Notifications.
4.3.6 Regras de Orquestração e Transição
Este é o agente final do fluxo, e sua execução completa o processo de comunicação com o paciente.