1. Propósito e Escopo
Este documento define todos os prompts, configurações de memória e transição entre estados para o Agente de IA "Análise de Dados de Alta Hospitalar", uma solução projetada para analisar dados de alta hospitalar e identificar padrões de readmissão. 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 é fornecer insights acionáveis para reduzir taxas de readmissão e melhorar o cuidado ao paciente, através da análise de dados hospitalares pós-alta.
2. Contexto e Problema
Cenário Atual
Atualmente, as instituições de saúde enfrentam desafios significativos na análise eficaz dos dados de alta hospitalar para prever readmissões. A dificuldade em identificar padrões que possam indicar a necessidade de intervenções preventivas resulta em taxas elevadas de readmissão, impactando negativamente a qualidade do cuidado ao paciente e os custos operacionais.
Problemas Identificados
- Falta de análise eficaz: A análise inadequada dos dados de alta hospitalar impede a previsão precisa de readmissões, dificultando a implementação de intervenções preventivas.
- Dificuldade na identificação de padrões: A identificação de padrões que possam indicar a necessidade de intervenções preventivas é um desafio, resultando em oportunidades perdidas para melhorar o cuidado ao paciente.
3. Impactos Esperados
A implementação deste agente de IA visa alcançar os seguintes resultados:
- Reduzir taxas de readmissão através da identificação de padrões de risco e da sugestão de intervenções preventivas.
- Melhorar o cuidado ao paciente ao fornecer insights acionáveis para intervenções personalizadas baseadas em dados analisados e históricos de pacientes.
- Otimizar custos operacionais reduzindo readmissões desnecessárias e melhorando a eficiência dos cuidados de saúde.
4. Visão Geral da Solução
O agente de IA para análise de dados de alta hospitalar processa dados hospitalares pós-alta, identifica padrões de readmissão e sugere intervenções preventivas baseando-se em dados históricos de pacientes. 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 eficaz na redução de taxas de readmissão e melhoria do cuidado ao paciente.
A solução consiste em um fluxo de automação composto por 3 agentes de IA. O processo inicia com a preparação de scripts de consolidação de dados e termina com a geração de relatórios de intervenções preventivas.
A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.
| Agentes | Função Principal |
|---|---|
Agente de Preparação de Script de Consolidação de Altas e Readmissões (RF 1)
| Preparar um script para consolidar episódios de internação e identificar readmissões. |
Agente de Execução de Consolidação em Python (RF 2)
| Executar o script para consolidar episódios e calcular métricas de readmissão. |
Agente de Análise de Padrões e Sugerir Intervenções Preventivas (RF 3)
| Analisar dados consolidados para identificar padrões de risco e sugerir intervenções. |
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 cliente receberá. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Preparação de Script de Consolidação de Altas e Readmissões
1.1 Tarefa do Agente
Preparar um script determinístico e parametrizável que consolida episódios de internação e identifica readmissões em uma janela definida (padrão 30 dias), produzindo schemas de saída padronizados.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo metainformações do dicionário de dados de altas hospitalares, incluindo nomes reais das colunas e preferências de negócio.
# 2. Objetivo
Preparar um script determinístico e parametrizável que consolida episódios de internação e identifica readmissões em uma janela definida (padrão 30 dias), produzindo schemas de saída padronizados.
# 3. Regras que você deve seguir para gerar sua resposta
- Defina uma função main(df, config) -> dict no script gerado.
- Utilize os parâmetros de configuração recebidos para ajustar o comportamento do script.
- Produza um script que retorne JSON conforme os schemas 'patient_episodes' e 'aggregates'.
- Não inclua exemplos de dados ou dataframes no script.
# 4. Exemplo de Output que você deve produzir
{
"script": "# string com código Python auto-contido que, dado um dataframe 'df' e 'config', retorna JSON conforme schemas 'patient_episodes' e 'aggregates'\n# Deve definir uma função main(df, config) -> dict\n...",
"config": {
"readmission_window_days": 30,
"date_columns": {"admission": "admission_date", "discharge": "discharge_date"},
"id_column": "patient_id",
"facility_column": "facility_id",
"diagnosis_columns": ["primary_diagnosis"],
"cci_column": "cci",
"death_flag_column": "death_flag",
"planned_flag_column": "planned_flag",
"transfer_flag_column": "transfer_flag",
"discharge_disposition_column": "discharge_disposition",
"sex_column": "sex",
"age_column": "age",
"los_column": "length_of_stay",
"payer_column": "payer",
"time_zone": "UTC",
"episode_merge_gap_days": 1,
"transfer_merge_gap_days": 1,
"exclude_dispositions_from_denominator": ["Óbito"],
"planned_readmission_rules": {
"enabled": true,
"diagnosis_code_lists": {"obstetric": [], "oncology": []},
"disposition_keywords": ["programada", "eletiva"]
},
"diagnosis_group_mapping": {"Cardíaco": ["I50", "I10", "I20"], "Respiratório": ["J44", "J45"], "Endócrino/DM": ["E10", "E11"], "Renal": ["N18"], "Oncológico": ["C"], "Cirúrgico": ["Z48"], "Outras": []},
"age_buckets": [[0,17],[18,44],[45,64],[65,200]],
"los_quantiles": [0.25,0.5,0.75],
"data_quality_thresholds": {"min_rows": 100, "max_missing_pct_any_key_col": 0.2}
},
"schemas": {
"patient_episodes": {
"required_fields": ["patient_id","data_inicio","data_fim","length_of_stay","grupo_diagnostico","cci","idade","sexo","facility_id","discharge_disposition","readmissao_30d"],
"field_types": {
"patient_id": "string",
"data_inicio": "date",
"data_fim": "date",
"length_of_stay": "int",
"grupo_diagnostico": "string",
"cci": "int|null",
"idade": "int|null",
"sexo": "string|null",
"facility_id": "string",
"discharge_disposition": "string",
"readmissao_30d": "bool",
"dias_ate_readmissao": "int|null",
"bucket_readmissao": "string|null",
"score_heuristico": "int",
"planned_readmission_excluded": "bool",
"transferencia_continuada": "bool"
}
},
"aggregates": {
"required_sections": ["global","por_facility","por_grupo_diagnostico","por_faixa_etaria","por_discharge","por_bucket_tempo"],
"section_field_types": {
"global": {"taxa_readmissao_30d": "float","n_episodios": "int","n_elegiveis": "int"},
"por_facility": [{"facility_id": "string","taxa": "float","n": "int"}],
"por_grupo_diagnostico": [{"grupo": "string","taxa": "float","n": "int"}],
"por_faixa_etaria": [{"faixa": "string","taxa": "float","n": "int"}],
"por_discharge": [{"tipo": "string","taxa": "float","n": "int"}],
"por_bucket_tempo": [{"bucket": "string","taxa": "float","n": "int"}]
}
}
}
} 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 metainformações do dicionário de dados via API. Na fase de testes, o fluxo será iniciado pelo envio manual dessas informações na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo são metainformações do dicionário de dados de altas hospitalares, incluindo nomes reais das colunas e preferências de negócio.
-
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 texto com até 10.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um objeto JSON contendo o script gerado, as configurações e os schemas de saída.
-
Exemplo de Estrutura de Output:
{ "script": "# string com código Python auto-contido que, dado um dataframe 'df' e 'config', retorna JSON conforme schemas 'patient_episodes' e 'aggregates'\n# Deve definir uma função main(df, config) -> dict\n...", "config": { "readmission_window_days": 30, "date_columns": {"admission": "admission_date", "discharge": "discharge_date"}, "id_column": "patient_id", "facility_column": "facility_id", "diagnosis_columns": ["primary_diagnosis"], "cci_column": "cci", "death_flag_column": "death_flag", "planned_flag_column": "planned_flag", "transfer_flag_column": "transfer_flag", "discharge_disposition_column": "discharge_disposition", "sex_column": "sex", "age_column": "age", "los_column": "length_of_stay", "payer_column": "payer", "time_zone": "UTC", "episode_merge_gap_days": 1, "transfer_merge_gap_days": 1, "exclude_dispositions_from_denominator": ["Óbito"], "planned_readmission_rules": { "enabled": true, "diagnosis_code_lists": {"obstetric": [], "oncology": []}, "disposition_keywords": ["programada", "eletiva"] }, "diagnosis_group_mapping": {"Cardíaco": ["I50", "I10", "I20"], "Respiratório": ["J44", "J45"], "Endócrino/DM": ["E10", "E11"], "Renal": ["N18"], "Oncológico": ["C"], "Cirúrgico": ["Z48"], "Outras": []}, "age_buckets": [[0,17],[18,44],[45,64],[65,200]], "los_quantiles": [0.25,0.5,0.75], "data_quality_thresholds": {"min_rows": 100, "max_missing_pct_any_key_col": 0.2} }, "schemas": { "patient_episodes": { "required_fields": ["patient_id","data_inicio","data_fim","length_of_stay","grupo_diagnostico","cci","idade","sexo","facility_id","discharge_disposition","readmissao_30d"], "field_types": { "patient_id": "string", "data_inicio": "date", "data_fim": "date", "length_of_stay": "int", "grupo_diagnostico": "string", "cci": "int|null", "idade": "int|null", "sexo": "string|null", "facility_id": "string", "discharge_disposition": "string", "readmissao_30d": "bool", "dias_ate_readmissao": "int|null", "bucket_readmissao": "string|null", "score_heuristico": "int", "planned_readmission_excluded": "bool", "transferencia_continuada": "bool" } }, "aggregates": { "required_sections": ["global","por_facility","por_grupo_diagnostico","por_faixa_etaria","por_discharge","por_bucket_tempo"], "section_field_types": { "global": {"taxa_readmissao_30d": "float","n_episodios": "int","n_elegiveis": "int"}, "por_facility": [{"facility_id": "string","taxa": "float","n": "int"}], "por_grupo_diagnostico": [{"grupo": "string","taxa": "float","n": "int"}], "por_faixa_etaria": [{"faixa": "string","taxa": "float","n": "int"}], "por_discharge": [{"tipo": "string","taxa": "float","n": "int"}], "por_bucket_tempo": [{"bucket": "string","taxa": "float","n": "int"}] } } } } - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 5.000 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 documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
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 Consolidação em Python (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 Consolidação em Python (RF 2).
RF 2. Agente de Execução de Consolidação em Python
2.1 Tarefa do Agente
Executar o script preparado para consolidar episódios e calcular métricas de readmissão a partir da base fornecida, retornando JSON conforme schemas.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um objeto do agente anterior contendo o script de consolidação, as configurações e os schemas de saída.
# 2. Objetivo
Executar o script preparado para consolidar episódios e calcular métricas de readmissão a partir da base fornecida, retornando JSON conforme schemas.
# 3. Regras que você deve seguir para gerar sua resposta
- Execute a função main(df, config) do script recebido.
- Assegure-se de que o JSON retornado respeite os schemas fornecidos.
- Capture exceções e retorne um objeto JSON com a chave "error" em caso de falhas.
# 4. Exemplo de Output que você deve produzir
{"patient_episodes": [{"patient_id": "123","data_inicio": "2025-01-10","data_fim": "2025-01-15","length_of_stay": 6,"grupo_diagnostico": "Cardíaco","cci": 2,"idade": 71,"sexo": "F","facility_id": "HOSP_A","discharge_disposition": "Domicílio","readmissao_30d": true,"dias_ate_readmissao": 12,"bucket_readmissao": "8-14","score_heuristico": 3,"planned_readmission_excluded": false,"transferencia_continuada": false}], "aggregates": {"global": {"taxa_readmissao_30d": 0.1900, "n_episodios": 542, "n_elegiveis": 510}, "por_facility": [{"facility_id": "HOSP_A", "taxa": 0.2200, "n": 210}], "por_grupo_diagnostico": [{"grupo": "Cardíaco", "taxa": 0.2700, "n": 150}], "por_faixa_etaria": [{"faixa": "65+", "taxa": 0.3100, "n": 200}], "por_discharge": [{"tipo": "Domicílio", "taxa": 0.1800, "n": 400}], "por_bucket_tempo": [{"bucket": "0-7", "taxa": 0.1200, "n": 60}]}, "data_quality_warnings": ["coluna cci ausente; preenchido como null"]} 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 o objeto JSON contendo o script, as configurações e os schemas de saída.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json(JSON). - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 15.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um objeto JSON contendo os dados consolidados conforme os schemas fornecidos, ou uma chave "error" em caso de exceções.
-
Exemplo de Estrutura de Output:
{"patient_episodes": [{"patient_id": "123","data_inicio": "2025-01-10","data_fim": "2025-01-15","length_of_stay": 6,"grupo_diagnostico": "Cardíaco","cci": 2,"idade": 71,"sexo": "F","facility_id": "HOSP_A","discharge_disposition": "Domicílio","readmissao_30d": true,"dias_ate_readmissao": 12,"bucket_readmissao": "8-14","score_heuristico": 3,"planned_readmission_excluded": false,"transferencia_continuada": false}], "aggregates": {"global": {"taxa_readmissao_30d": 0.1900, "n_episodios": 542, "n_elegiveis": 510}, "por_facility": [{"facility_id": "HOSP_A", "taxa": 0.2200, "n": 210}], "por_grupo_diagnostico": [{"grupo": "Cardíaco", "taxa": 0.2700, "n": 150}], "por_faixa_etaria": [{"faixa": "65+", "taxa": 0.3100, "n": 200}], "por_discharge": [{"tipo": "Domicílio", "taxa": 0.1800, "n": 400}], "por_bucket_tempo": [{"bucket": "0-7", "taxa": 0.1200, "n": 60}]}, "data_quality_warnings": ["coluna cci ausente; preenchido como null"]} - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 10.000 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: Não se aplica (execução de script)
- Temperatura: Não se aplica
2.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
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 Análise de Padrões e Sugerir Intervenções Preventivas (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Análise de Padrões e Sugerir Intervenções Preventivas (RF 3).
RF 3. Agente de Análise de Padrões e Sugerir Intervenções Preventivas
3.1 Tarefa do Agente
Analisar os dados consolidados de altas/readmissões, identificar padrões de risco e sugerir intervenções preventivas acionáveis para reduzir a taxa de readmissão.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo o JSON do agente de execução contendo patient_episodes, aggregates e, opcionalmente, data_quality_warnings e metadados contextuais. # 2. Objetivo Analisar os dados consolidados de altas/readmissões, identificar padrões de risco e sugerir intervenções preventivas acionáveis para reduzir a taxa de readmissão. # 3. Regras que você deve seguir para gerar sua resposta - Analise os dados de alta para identificar padrões de readmissão usando patient_episodes e aggregates recebidos. - Sugira intervenções preventivas baseadas nos padrões observados e histórico contido nos episódios. - Forneça insights acionáveis com responsáveis, prazos e critérios claros, visando reduzir readmissões e melhorar cuidado. - Produza o relatório em markdown com seções fixas da saída esperada e listas claras. # 4. Exemplo de Output que você deve produzir # Relatório de Readmissões (Janela 30 dias) ## Sumário Executivo - Taxa global de readmissão: X% - Estratos críticos: ... - Principais alavancas: ... ## Padrões Identificados - Análises por facility, diagnóstico, faixa etária, discharge e bucket de tempo - Coeficientes de risco relativos vs. média ## Intervenções Prioritárias (0–30 dias pós-alta) 1. ... (descrição, critérios de inclusão, responsável, SLA) ## Planos Específicos por Cohort - Cardíaco: ... - Respiratório (DPOC): ... - Endócrino/DM: ... - Renal: ... ## Métricas e Metas (KPIs) - ... ## Checklist Operacional - Itens por intervenção com responsável/prazo/status/evidência ## Riscos e Limitações - Avisos de qualidade de dados e possíveis vieses ## Backlog e Próximos Passos - Pilotos, validações e escalonamento
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 o JSON contendo patient_episodes, aggregates e, opcionalmente, data_quality_warnings e metadados contextuais.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json(JSON). - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 20.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output final deve ser um relatório em formato Markdown que contém análises detalhadas e sugestões de intervenções preventivas.
-
Exemplo de Estrutura de Output:
# Relatório de Readmissões (Janela 30 dias) ## Sumário Executivo - Taxa global de readmissão: X% - Estratos críticos: ... - Principais alavancas: ... ## Padrões Identificados - Análises por facility, diagnóstico, faixa etária, discharge e bucket de tempo - Coeficientes de risco relativos vs. média ## Intervenções Prioritárias (0–30 dias pós-alta) 1. ... (descrição, critérios de inclusão, responsável, SLA) ## Planos Específicos por Cohort - Cardíaco: ... - Respiratório (DPOC): ... - Endócrino/DM: ... - Renal: ... ## Métricas e Metas (KPIs) - ... ## Checklist Operacional - Itens por intervenção com responsável/prazo/status/evidência ## Riscos e Limitações - Avisos de qualidade de dados e possíveis vieses ## Backlog e Próximos Passos - Pilotos, validações e escalonamento
- Número de caracteres esperado: O relatório final deve ter um tamanho aproximado de 7.000 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 documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
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 é o entregável final e não é passada para outros agentes internos.
3.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. O relatório gerado é o resultado que deve ser disponibilizado ao usuário.