Agente de IA para Comunicação de Atualizações de Atendimento

28 de November de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que informa automaticamente os pacientes sobre atualizações de status do seu atendimento.

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

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

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

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.

© 2025 prototipe.ai. Todos os direitos reservados.