La industria de salud enfrenta una crisis de eficiencia: médicos pasan el 49% de su tiempo en
documentación administrativa, los expedientes son fragmentados e inaccesibles en el punto de cuidado,
y las listas de espera crecen mientras la demanda supera la capacidad.
Los LLMs están cambiando esto. No reemplazan al médico — eliminan la carga administrativa
para que el médico se concentre en el paciente.
Problema: Un internista revisa 20-30 pacientes/día. Cada expediente puede
tener 50-200 páginas. Esto toma 10-20 minutos por paciente.
Solución: Pipeline RAG que indexa el expediente y genera un resumen ejecutivo
con: diagnósticos activos, medicamentos actuales, alergias, últimos labs y alertas.
Resultado: Reducción de 15 min a 3 min por paciente.
El médico tiene más contexto clínico relevante, no menos.
Privacidad: El sistema debe correr on-premise (Llama 3.1) o nube privada.
Los datos del paciente nunca deben enviarse a APIs de terceros sin acuerdos de confidencialidad.
Problema: Los médicos dedican 2-3 horas diarias a documentar consultas. Esta
carga causa burnout y reduce tiempo de atención.
Solución: El médico graba la consulta (con consentimiento). El sistema:
Un chatbot en WhatsApp o la app del hospital permite a pacientes:
# RAG para resumen de expediente medico
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import PGVector
from langchain_anthropic import ChatAnthropic
from langchain_core.prompts import ChatPromptTemplate
SYSTEM = '''Eres un asistente medico. Analiza expedientes y genera resumenes.
SOLO usa informacion del expediente. NO hagas diagnosticos nuevos.
Senala cuando algo requiere atencion urgente.'''
def resumir_expediente(pdf_path: str) -> str:
# Cargar expediente
docs = PyPDFLoader(pdf_path).load()
chunks = RecursiveCharacterTextSplitter(
chunk_size=800, chunk_overlap=100
).split_documents(docs)
# Indexar (modelo local para privacidad)
vectorstore = PGVector.from_documents(
chunks,
embedding=LocalEmbeddings(),
connection_string="postgresql://localhost/hospital_db"
)
# Recuperar contexto relevante
retriever = vectorstore.as_retriever(search_kwargs={"k": 8})
context = "\n\n".join(
[doc.page_content for doc in retriever.invoke("diagnostico medicamentos alergias labs")]
)
# Generar resumen
llm = ChatAnthropic(model="claude-sonnet-4-6")
prompt = ChatPromptTemplate.from_messages([
("system", SYSTEM),
("human", "Expediente:\n{context}\n\nGenera: 1) Diagnosticos activos 2) Medicamentos 3) Alergias 4) Ultimos labs 5) Alertas")
])
return llm.invoke(prompt.format_messages(context=context)).contentCarlos Montiel es arquitecto de soluciones IA empresarial con experiencia en LLMs, Agentes, RAG y orquestación en Guatemala y Latinoamérica.
Contactar a Carlos Montiel