CareCompanion / tools /triaje_tool.py
Pdro-ruiz's picture
Update tools/triaje_tool.py
488bf17 verified
import re
def evaluar_triaje(sintomas, intensidad, duracion, antecedentes):
score = 0
# Listas ampliadas con posibles sinónimos o expresiones comunes
sintomas_criticos = ["dolor intenso", "falta de aire", "desmayo", "pérdida de conciencia"]
for sintoma in sintomas_criticos:
if sintoma in sintomas.lower():
score += 5
sintomas_moderados = ["fiebre alta", "dolor en el pecho", "mareos", "náusea"]
for sintoma in sintomas_moderados:
if sintoma in sintomas.lower():
score += 3
intensidad = intensidad.lower()
if intensidad in ["intensa", "alta"]:
score += 3
elif intensidad == "moderada":
score += 2
elif intensidad in ["leve", "baja"]:
score += 1
try:
duracion = float(duracion)
if duracion >= 24:
score += 3
elif duracion >= 6:
score += 2
else:
score += 1
except ValueError:
print("Error: La duración debe ser un valor numérico.")
antecedentes_relevantes = ["cardiopatía", "hipertensión", "diabetes"]
for item in antecedentes_relevantes:
if item in antecedentes.lower():
score += 2
return score
def recomendar_atencion(score):
if score >= 12:
return "Se recomienda atención de emergencia. Llame a los servicios de urgencia."
elif score >= 7:
return "Se sugiere acudir a consulta médica lo antes posible."
else:
return "Puede programar una consulta médica de rutina."
def triaje_primer_tool(data):
score = evaluar_triaje(
data.get("sintomas", ""),
data.get("intensidad", ""),
data.get("duracion", "0"),
data.get("antecedentes", "")
)
recomendacion = recomendar_atencion(score)
return {
"score": score,
"recomendacion": recomendacion
}
if __name__ == "__main__":
ejemplo_data = {
"sintomas": "El paciente presenta dolor intenso en el pecho y falta de aire.",
"intensidad": "intensa",
"duracion": "8",
"antecedentes": "El paciente tiene antecedentes de hipertensión."
}
resultado = triaje_primer_tool(ejemplo_data)
print("Puntaje de riesgo:", resultado["score"])
print("Recomendación:", resultado["recomendacion"])