6
respostas

O Uso Responsável do RAG na Prestação de Cuidados em Saúde

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Por Ricardo Costa Val do Rosário auxiliado por Microsoft CoPilot 365

1. Definição de um pipeline RAG no contexto médico

O pipeline RAG consiste em um fluxo estruturado no qual o modelo de linguagem atua
com base em informações fundamentadas, evitando a geração autônoma de respostas 
sem respaldo documental:

1.	Recepção da pergunta do usuário (por exemplo: “Qual é o manejo inicial da insuficiência 
cardíaca em idosos com dispneia aguda?”).

2.	Busca por documentos relevantes em bases confiáveis, como guidelines, protocolos,
consensos e fluxogramas médicos.

3	Recuperação de trechos específicos (como passagens de texto, tabelas ou algoritmos) 
pertinentes à questão.

4. Geração da resposta utilizando esses trechos como contexto, redigindo explicações, 
resumos ou estruturas em formatos úteis (exemplo: fluxograma, checklist ou síntese).
    
- No cenário de um fluxograma médico para insuficiência cardíaca em idosos, o pipeline pode:
1.	Consultar guidelines (como SBC, ESC, ACC/AHA).

2.	Recuperar informações relacionadas ao diagnóstico, estratificação de risco, manejo inicial, 
contraindicações em idosos e comorbidades.

3.	Elaborar um fluxograma textual ou uma descrição sequencial das etapas, que poderá ser 
posteriormente convertida em um diagrama visual.

2. Exemplo de pipeline RAG para fluxograma de insuficiência cardíaca em idosos

Em Python, baseado em frameworks como o LangChain, para demonstrar a lógica de 
funcionamento.

# Etapas principais do pipeline:
1.	Ingestão de dados: carregar PDFs, diretrizes, protocolos locais.

2.	Criação de embeddings: transformar textos em vetores.

3.	Armazenamento vetorial: usar um vector store (FAISS, Chroma, etc.).

Exemplo:

Python + LangChain
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyPDFLoader
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA

Carregar diretrizes de insuficiência cardíaca em idosos

loader = PyPDFLoader("diretriz_insuficiencia_cardiaca_idosos.pdf")
docs = loader.load()

Quebrar em chunks

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
docs_chunks = splitter.split_documents(docs)

Criar embeddings e vector store

embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectordb = Chroma.from_documents(docs_chunks, embedding=embeddings)

retriever = vectordb.as_retriever(search_kwargs={"k": 5})

Definir o LLM

llm = ChatOpenAI(model_name="gpt-4o", temperature=0.1)

Criar a chain de RAG

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=retriever,
    chain_type="stuff"  # simples: junta os trechos e passa para o modelo
)

Pergunta focada em fluxograma

pergunta = """
Você é um especialista em cardiologia geriátrica.
Com base APENAS nas diretrizes fornecidas, descreva um fluxograma textual
para avaliação e manejo inicial da insuficiência cardíaca aguda em idosos
com dispneia, incluindo:
•	avaliação clínica inicial

•	exames prioritários

•	estratificação de gravidade

•	decisões de internação

•	cuidados especiais em idosos (fragilidade, função renal, polifarmácia).

•	Não invente informações fora das diretrizes.
"""
resposta = qa_chain.run(pergunta)
print(resposta)

- 	A abordagem pode ser estruturada da seguinte forma:

Passo 1: Realizar avaliação dos sinais vitais, saturação de oxigênio e outros parâmetros 
    relevantes.
    
Passo 2: Classificar o perfil hemodinâmico do paciente (quente/frio, seco/congesto).
    
Passo 3: Solicitar exames complementares como BNP, ecocardiograma e radiografia de tórax.
    
Passo 4: Definir critérios para internação em Unidade de Terapia Intensiva versus enfermaria.
    
Passo 5: Proceder à adequação das doses medicamentosas em pacientes idosos, com atenção 
    especial à função renal.
    
- Este fluxograma textual pode posteriormente ser convertido em um diagrama visual utilizando 
    ferramentas como Mermaid ou draw.io.
6 respostas

3. Pipeline com abordagem clínica: verificação de segurança e análise de contexto

- Em saúde, é interessante adicionar camadas extras no pipeline:

# Camada de pré-processamento da pergunta:
•	Identificar se é caso clínico, dúvida teórica, prescrição, etc.

•	Detectar se envolve alto risco (ex.: dose de droga vasoativa).

# Camada de recuperação especializada:
•	Buscar em bases diferentes: diretriz nacional, protocolo do hospital, bula, etc.

•	Priorizar fontes locais (ex.: protocolo do SUS, hospital universitário).

# Camada de geração com instruções rígidas:
•	“Não forneça doses exatas de medicamentos; foque em princípios gerais.”

•	“Sempre recomende que a decisão final é do médico responsável.”

# Camada de pós-processamento:
•	Checar se a resposta cita as fontes.

•	Verificar se não há contradições óbvias (ex.: sugerir betabloqueador em 
choque cardiogênico).

Um pseudo-exemplo de “orquestração”:

def classificar_pergunta(pergunta: str) -> str:
    # Aqui poderia usar outro LLM ou regras simples
    if "dose" in pergunta.lower() or "posologia" in pergunta.lower():
        return "alto_risco"
    return "geral"

def pipeline_rag_clinico(pergunta: str):
    tipo = classificar_pergunta(pergunta)

    if tipo == "alto_risco":
        instrucao_extra = (
            "Não forneça doses específicas de medicamentos. "
            "Foque em princípios gerais e ressalte que a decisão é do médico assistente."
        )
    else:
        instrucao_extra = ""

    prompt = f"""
    Você é um assistente clínico baseado em diretrizes de insuficiência cardíaca em idosos.
    Responda APENAS com base nos documentos fornecidos pelo sistema.
    {instrucao_extra}

    Pergunta do usuário:
    {pergunta}
    """

    resposta = qa_chain.run(prompt)
    return resposta

pergunta_usuario = "Como manejar insuficiência cardíaca aguda em idoso com hipotensão e creatinina elevada?"
print(pipeline_rag_clinico(pergunta_usuario))

4. Vantagens do RAG em saúde

1. Redução de alucinações: O modelo é “ancorado” em diretrizes, artigos e protocolos, 
diminuindo o risco de inventar condutas.

2. Atualização mais fácil: Ao invés de re-treinar o modelo, basta atualizar a base de documentos
(nova diretriz, novo consenso), facilitando a incorporação de informações recentes.

3. Contexto local: Permite a utilização de protocolos do hospital, do SUS e consensos brasileiros, 
tornando as respostas mais aderentes à realidade do país.

4. Suporte à decisão clínica: Frameworks de RAG já estão sendo estudados para apoio à prescrição, 
diagnóstico e triagem, contribuindo para a tomada de decisão do profissional de saúde.

5. Transparência: É possível mostrar “de onde veio” a informação, exibindo trechos dos documentos 
que fundamentam a resposta.

5. Desafios e riscos

1. Qualidade da base de conhecimento: Caso os documentos estejam desatualizados ou sejam de baixa
qualidade, o RAG apenas “organiza o erro”.

2. Retrieval noise: O sistema pode recuperar trechos pouco relevantes ou ambíguos, confundindo o modelo 
e prejudicando a acurácia das respostas.

3. Domínio e contexto: Diretrizes internacionais podem não refletir a realidade de recursos do SUS, 
disponibilidade de exames, etc.

4. Latência e custo: Pipelines que combinam busca vetorial e LLM podem ser mais lentos e caros, especialmente 
em grande escala hospitalar.

5. Responsabilidade clínica: O sistema não pode substituir o julgamento do médico e deve ser claramente um apoio, 
não um “oráculo”.

6. Privacidade e LGPD: A utilização de prontuários ou dados de pacientes exige anonimização, governança de dados e
infraestrutura segura.

6. Perspectivas futuras em saúde

1. Clinical Decision Support (CDS) mais sofisticado: O RAG poderá combinar prontuário eletrônico, guidelines 
e histórico de casos semelhantes para sugerir condutas possíveis, sempre com validação humana.

2. Sistemas multi-agente (tipo ClinicalRAG): Agentes diferentes poderão atuar em diagnóstico, checagem de 
interações medicamentosas, explicação ao paciente, entre outras funções, utilizando bases médicas estruturadas
e não estruturadas.

3. Avaliação mais rigorosa: O uso de métricas específicas médicas (como FactScore, MED-F1, etc.) permitirá medir 
se a resposta é clinicamente correta, e não apenas se é bem formulada.

4. Integração com fluxos reais de hospital: O RAG pode ser embutido no prontuário, sugerindo resumos de internação, 
cartas de alta, ou checando guidelines à beira-leito.

7. Cenários Médicos no Brasil que vão se Beneficiar com o RAG

# Manejo de síndrome coronariana aguda no SUS
•	Problema: 
Protocolos variam entre serviços, recursos são limitados, nem sempre há
hemodinâmica 24h.
    
•	RAG poderia: 
1.	Integrar diretrizes da SBC + protocolos do hospital + fluxos de regulação.

2.	Gerar fluxogramas de conduta adaptados à realidade local

3.	Ajudar na padronização de condutas entre diferentes unidades.

# Atenção primária em doenças crônicas (HAS, DM, DPOC)
•	Problema: 
Médicos de APS lidam com muitas diretrizes, pouco tempo, e grande volume 
    de pacientes.

•	RAG poderia: 
1.	Responder perguntas rápidas baseadas em protocolos do Ministério da Saúde.

2.	Gerar planos de cuidado resumidos, lembretes de rastreio, metas de controle.

3.	Ajudar a criar materiais educativos em linguagem simples conforme às recomendações 
oficiais.

8. Fluxograma clínico tradicional (sem RAG)

O modelo clássico: o médico, pesquisador ou equipe técnica lê diretrizes, revisa artigos, 
consulta protocolos do hospital e monta um fluxograma.

# Na prática
1. Leitura manual de diretrizes (SBC, ESC, ACC/AHA).

2. Extração manual de passos clínicos.

3. Organização em fluxograma (Mermaid, Draw.io, PowerPoint).

4. Revisão por pares.

5. Atualização periódica (às vezes só a cada anos).

Exemplo: Manejo inicial Insuficiência Cardíaca Aguda em Idosos

# Avaliação imediata
•	Sinais vitais, SpO₂, nível de consciência.
•	Identificar sinais de choque ou hipoperfusão.

# Classificação hemodinâmica
•	Quente e úmido
•	Frio e úmido
•	Quente e seco
•	Frio e seco

# Exames prioritários
•	BNP/NT-proBNP
•	ECG
•	RX tórax
•	Função renal e eletrólitos
•	Gasometria se necessário

# Condutas iniciais
•	Oxigenoterapia se SpO₂ < 90
•	Diurético IV se congesto
•	Vasodilatador se PA adequada
•	Evitar betabloqueador em choque

# Critérios de internação
•	Hipotensão
•	Hipóxia persistente
•	Arritmias graves
•	Deterioração renal

# Atenção especial ao idoso
•	Risco de hipotensão
•	Polifarmácia
•	Fragilidade
•	Ajuste de doses

# Pontos fortes
•	Alta confiabilidade.
•	Revisado por especialistas.
•	Adequado para protocolos institucionais.

# Limitações
•	Demorado para produzir.
•	Difícil de atualizar.
•	Não personaliza para o contexto local.
•	Não responde perguntas específicas do médico em tempo real.

9. Fluxograma clínico com apoio de um pipeline RAG

O fluxograma é derivado automaticamente das diretrizes, recuperadas 
por embeddings e busca semântica. O pipeline RAG cria:

1.	Ingestão de diretrizes (PDFs, protocolos do SUS, consensos).

2.	Indexação com embeddings.

3.	Busca semântica dos trechos relevantes.

4.	Geração do fluxograma textual com base nesses trechos.

5.	Checagem de segurança (sem doses, sem extrapolações).

Exemplo

Python + LangChain
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA

Carregar diretrizes

loader = PyPDFLoader("diretriz_IC_idosos.pdf")
docs = loader.load()

Dividir em chunks

splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(docs)

Criar embeddings e banco vetorial

emb = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectordb = Chroma.from_documents(chunks, emb)

retriever = vectordb.as_retriever(search_kwargs={"k": 5})

LLM

llm = ChatOpenAI(model_name="gpt-4o", temperature=0.1)

Chain RAG

qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)

Pergunta para gerar fluxograma

query = """
Com base APENAS nas diretrizes fornecidas,
gere um fluxograma textual para manejo inicial da insuficiência cardíaca aguda em idosos.
Inclua:
- avaliação inicial
- exames prioritários
- estratificação
- condutas
- cuidados específicos em idosos
"""

resposta = qa.run(query)
print(resposta)

10. Fluxograma RAG – IC Aguda em Idosos

# Avaliação inicial
•	Sinais vitais, SpO₂, nível de consciência.
•	Identificar sinais de hipoperfusão.
•	Avaliar comorbidades e fragilidade.

# Exames prioritários
•	BNP/NT-proBNP
•	ECG
•	RX tórax
•	Função renal e eletrólitos

# Estratificação hemodinâmica
•	Quente/úmido → congestão predominante
•	Frio/úmido → risco aumentado
•	Frio/seco → hipoperfusão

# Condutas iniciais
•	Oxigênio se SpO₂ < 90
•	Diurético IV se congesto
•	Vasodilatador se PA adequada
•	Evitar betabloqueador em instabilidade

# Cuidados específicos em idosos
•	Ajustar doses por função renal
•	Atenção à hipotensão
•	Revisar polifarmácia
•	Avaliar risco de delirium

11. Comparação com e sem utilização do RAG

|1 Aspecto | 2 Sem RAG  | 3 Com RAG |
| -------- | -------- | -------- |
|1 Muito rápido      | 2  Velocidade    | 3 Lento     |
| -------- | -------- | -------- |
| 1 Atualização | 2 Manual    | 3  Automática    |
| -------- | -------- | -------- |
| 1  Personalização   | 2 Baixa  | 3 Alta  |
| -------- | -------- | -------- |
| 1  Risco de erro   | 2 Depende do    humano | 3  Depende da qualidade da base |
| -------- | -------- | -------- |
| 1   Transparência  | 2 Média    | 3  Alta    |
| -------- | -------- | -------- |
| 1  Escalabilidade   | 2 Difícil    | 3  Excelente    |
| -------- | -------- | -------- |
| 1  Uso em tempo real   | 2  Não    | 3  Sim    |

12. Propondo Melhorias para a Saúde Brasileira

# Objetivo
Desenvolver um exemplo de aplicação de RAG no SUS, considerando cenários reais da 
Atenção Primária à Saúde (APS) e protocolos do MS. Além disso, delinear uma arquitetura 
adaptável para hospitais e serviços de saúde brasileiros.

# Cenário principal
O foco está na APS, especialmente em equipes da Estratégia Saúde da Família (ESF) ou 
Unidades Básicas de Saúde (UBS), lidando com condições como hipertensão arterial 
sistêmica (HAS), diabetes mellitus (DM) e estratificação do risco cardiovascular.

# Visão de arquitetura
A solução proposta deve ser integrável tanto a ambientes de APS quanto hospitalares, 
estruturando-se como um módulo de Suporte à Decisão Clínica (Clinical Decision Support) 
baseado em tecnologia RAG.

13. Cenário SUS: RAG na Atenção Primária (HAS/DM, risco cardiovascular

# Contextualização do problema
Na APS, médicos e enfermeiros frequentemente enfrentam desafios como:

1. Necessidade de consultar múltiplas diretrizes (HAS, DM, dislipidemia, risco cardiovascular, 
pé diabético, entre outras);

2. Uso combinado de protocolos nacionais (Ministério da Saúde) com municipais/estaduais;

3. Tempo restrito para cada consulta;

4. Dúvidas clínicas pontuais, como: "Esse paciente entra em alto risco cardiovascular?", 
"Qual a prioridade de encaminhamento?" ou "Quais exames mínimos devo pedir hoje?".
    
5. Atualmente, essas dúvidas são solucionadas principalmente por meio da experiência individual,
consulta manual a documentos ou cadernos de atenção básica, e nem sempre há tempo 
suficiente para conferir todos os detalhes.

# O que o RAG faria aqui

1. Indexar e organizar informações de cadernos de atenção básica, PCDT, protocolos e
linhas de cuidado;

2. Receber perguntas em linguagem natural;

3. Recuperar trechos relevantes das diretrizes;

4. Gerar respostas estruturadas, claras e focadas na dúvida do profissional, o que é destacado
na literatura científica como promissor para suporte à decisão, perguntas 
e respostas médicas (QA) e sumarização clínica.

Exemplo

Python + LangChain

from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA

Carregar documentos do SUS e locais

arquivos = [
    "caderno_atencao_basica_HAS.pdf",
    "caderno_atencao_basica_DM.pdf",
    "protocolo_municipal_risco_cv.pdf"
]

docs = []
for arq in arquivos:
    loader = PyPDFLoader(arq)
    docs.extend(loader.load())

Dividir em chunks

splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(docs)

Embeddings + vector store

emb = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectordb = Chroma.from_documents(chunks, emb)

retriever = vectordb.as_retriever(search_kwargs={"k": 6})

LLM

llm = ChatOpenAI(model_name="gpt-4o", temperature=0.1)

Chain RAG

qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)

def responder_pergunta_clinica(pergunta: str) -> str:
    prompt = f"""
    Você é um assistente clínico para Atenção Primária no SUS.
    Use APENAS as informações dos documentos fornecidos (cadernos de atenção básica,
    protocolos do MS e protocolos municipais).
    Não forneça doses exatas de medicamentos.
    Não substitua o julgamento clínico do profissional.
    Sempre que possível, organize a resposta em:
    - classificação de risco
    - exames prioritários
    - condutas recomendadas
    - critérios de encaminhamento
    - observações importantes

    Pergunta do profissional:
    {pergunta}
    """
    return qa.run(prompt)

pergunta = """
Paciente de 68 anos, HAS e DM2, tabagista, creatinina 1,6.
Como classifico o risco cardiovascular e o que devo priorizar hoje na consulta,
segundo protocolos do SUS?
"""

print(responder_pergunta_clinica(pergunta))

14. Correlação entre o tema e os hospitais brasileiros.

A arquitetura mencionada apresenta flexibilidade para ser aplicada em diferentes 
contextos hospitalares:

1.	Pronto-atendimento / UPA:
•	RAG com indexação de protocolos clínicos relevantes, como dor torácica, AVC, sepse e 
insuficiência respiratória.

•	Suporte ágil à estratificação de risco e na definição dos fluxos de encaminhamento (e.g., 
trombólise ou transferência).

2.	Hospitais de média/alta complexidade:
•	Integração do RAG ao prontuário eletrônico, com funcionalidades como:

•	Resumos de internação.

•	Verificação da adesão às diretrizes (e.g., IC, IAM, pneumonia).

•	Lembretes automáticos sobre profilaxia, vacinação e outros procedimentos.
    
A distinção essencial reside nos tipos de documentos utilizados como base e no modo como 
o sistema se conecta aos fluxos operacionais institucionais (APS versus ambiente hospitalar).

15. Considerações Finais

1. A incorporação de Inteligência Artificial (IA) à prática médica contemporânea 
configura um marco evolutivo relevante, cujo propósito principal é ampliar e
aprimorar as capacidades cognitivas dos profissionais, não os substituir. 

2. A implementação de sistemas como o RAG (Retrieval-Augmented Generation)
proporciona diversos benefícios práticos, incluindo:

- a. Atualização permanente dos protocolos clínicos, assegurando o acesso às 
recomendações mais recentes;

- b. Geração de respostas rápidas e contextualizadas às demandas da rotina clínica;

- c. Minimização de falhas decorrentes de esquecimento ou sobrecarga informacional;

- d Padronização de condutas entre instituições, promovendo equidade e segurança 
assistencial;

- e Apoio à tomada de decisões clínicas em tempo real, auxiliando diagnósticos e definições 
terapêuticas.

3. Para que esses avanços sejam plenamente aproveitados, é imprescindível que médicos
compreendam os princípios básicos da IA e, paralelamente, que desenvolvedores estejam 
familiarizados com a lógica e os desafios inerentes à Medicina. Esta colaboração interdisciplinar
é indispensável para o progresso sustentável da área.

16. Fontes bibliográficas

1. Clinical RAG - Enhancing Clinical Decision Support through Heterogeneous
https://aclanthology.org/2024.knowllm-1.6.pdf

2. Retrieval-Augmented Generation (RAG) in Healthcare: A Comprehensive Review
https://www.mdpi.com/2673-2688/6/9/226 

3. Retrieval-Augmented Framework for LLM-Based Clinical Decision Support
https://arxiv.org/abs/2510.01363

4. Curso de Arquiteturas RAG com LLMs: embeddings, busca semântica e criação de 
agentes com LangChain 
https://cursos.alura.com.br/course/langchain-chatbots-rag 

Olá, Ricardo! Como vai?

Achei muito interessante a forma como você organizou o pipeline RAG aplicado ao contexto médico e trouxe exemplos práticos com código!

Sua produção mostra uma excelente clareza na definição das etapas do pipeline, evidencia preocupação com segurança clínica ao incluir camadas de processamento e destaca vantagens relevantes como a redução de alucinações e a facilidade de atualização das diretrizes.

Uma sugestão para o futuro seria explorar a integração com sistemas de prontuário eletrônico, permitindo que o pipeline RAG se conecte diretamente a dados clínicos reais e personalize ainda mais as recomendações.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

A sequência e a didática estão bem sincronizadas, parabéns!