Jose Salazar commited on
Commit
3a64e85
·
1 Parent(s): 42cdd91

Update prompt: include all values with reference ranges and detected patterns

Browse files
Files changed (1) hide show
  1. js/ia.js +24 -38
js/ia.js CHANGED
@@ -48,53 +48,39 @@ function construirPrompt(obtenerDatosPaciente, obtenerValoresFormulario, getUlti
48
  const signosText = document.getElementById('signos-clinicos').value.trim();
49
  const refEspecie = paciente.especie ? (getReferencias()[paciente.especie] || {}) : {};
50
 
51
- const totalImagenes = imagenesDataUrl.filter(Boolean).length + capturasMicroscopio.length;
52
- const hayImagenes = totalImagenes > 0;
53
-
54
- // SIEMPRE enviar solo hallazgos anormales para reducir razonamiento del modelo
55
- const lineasValores = hallazgos.length > 0
56
- ? hallazgos.map(h => ` ${h.nombre}: ${h.valor} ${h.unidad || ''} (${h.direccion} · ${h.gravedad})`).join('\n')
57
- : 'Todos los valores dentro de rangos de referencia.';
 
 
 
 
 
 
58
 
59
  const edadTexto = paciente.edadMeses != null
60
  ? (paciente.edadMeses < 24 ? `${Math.round(paciente.edadMeses)} meses` : `${(paciente.edadMeses / 12).toFixed(1)} años`)
61
  : 'desconocida';
62
 
63
- let notaImagenes = '';
64
- let cierre = '';
65
- if (hayImagenes) {
66
- notaImagenes = `TAREA PRINCIPAL: Se adjuntan ${totalImagenes} imagen${totalImagenes > 1 ? 'es' : ''} de citología. DEBES analizarlas exhaustivamente ANTES de considerar los resultados de laboratorio. Describe morfología celular, lesiones, patrones anormales, hemoparásitos intracelulares y extracelulares (Anaplasma, Babesia, Ehrlichia, Hepatozoon, Piroplasma, Mycoplasma, etc.) e inclusiones citoplasmáticas. Luego integra los hallazgos citológicos con los resultados de laboratorio. NO omitas el análisis de las imágenes bajo ninguna circunstancia.`;
67
- cierre = `Estructura tu respuesta en dos partes claras: (1) Análisis citológico detallado de las imágenes adjuntas, y (2) Integración con los resultados de laboratorio y recomendaciones diagnósticas.`;
68
- } else {
69
- cierre = `Proporciona una interpretación clínica breve (8-10 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
70
- }
71
-
72
- const ejemploRespuesta = hayImagenes
73
- ? 'Las imágenes muestran neutrófilos con toxicidad moderada y presencia de cuerpos de Döhle, indicativos de respuesta inflamatoria sistémica. Los resultados de laboratorio confirman leucocitosis con desviación izquierda. Se sugiere descartar proceso infeccioso severo mediante hemocultivo y paneles diagnósticos dirigidos.'
74
- : 'El paciente presenta leucocitosis con neutrofilia y linfopenia, sugestiva de respuesta inflamatoria aguda con posible compromiso inmune. Los valores de creatinina elevados indican disfunción renal que requiere evaluación adicional. Se recomienda completar el estudio con urocultivo y ecografía abdominal.';
75
-
76
- return `Eres médico veterinario especialista en patología clínica. Interpreta los siguientes resultados de laboratorio y proporciona un análisis clínico conciso.
77
-
78
- REGLAS DE RESPUESTA:
79
- - Responde ÚNICAMENTE en español
80
- - Máximo 10 oraciones
81
- - Comienza DIRECTAMENTE con la interpretación clínica, sin introducciones
82
- - No uses listas numeradas ni expliques tu proceso de análisis
83
- - Sé directo, profesional y clínico
84
-
85
- Ejemplo de formato esperado:
86
- "${ejemploRespuesta}"
87
 
88
- PACIENTE:
89
- ${paciente.especie || 'desconocido'}, raza: ${paciente.raza || 'NE'}, edad: ${edadTexto}, sexo: ${paciente.sexo || 'NE'}
 
90
 
91
- RESULTADOS DE LABORATORIO:
92
- ${lineasValores}
93
 
94
- ${signosText ? `SIGNOS CLÍNICOS: ${signosText}` : ''}
 
95
 
96
- ${notaImagenes ? notaImagenes + '\n' : ''}
97
- ${cierre}`;
 
 
98
  }
99
 
100
  function limpiarRespuesta(text) {
 
48
  const signosText = document.getElementById('signos-clinicos').value.trim();
49
  const refEspecie = paciente.especie ? (getReferencias()[paciente.especie] || {}) : {};
50
 
51
+ const lineasValores = Object.entries(valores).map(([clave, valor]) => {
52
+ const ref = refEspecie[clave];
53
+ const nombre = ref?.nombre || clave;
54
+ const unidad = ref?.unidad || '';
55
+ const rango = ref ? ` [ref: ${ref.inferior}-${ref.superior}]` : '';
56
+ const h = hallazgos.find(h => h.clave === clave);
57
+ const flag = h ? ` ${h.direccion === 'alto' ? 'ELEVADO' : 'BAJO'} (${h.gravedad})` : '';
58
+ return ` ${nombre}: ${valor} ${unidad}${rango}${flag}`;
59
+ }).join('\n') || 'Sin valores ingresados';
60
+
61
+ const lineasPatrones = patrones.length > 0
62
+ ? patrones.map(p => ` - ${p.nombre}: ${p.descripcion}`).join('\n')
63
+ : ' Ninguno detectado';
64
 
65
  const edadTexto = paciente.edadMeses != null
66
  ? (paciente.edadMeses < 24 ? `${Math.round(paciente.edadMeses)} meses` : `${(paciente.edadMeses / 12).toFixed(1)} años`)
67
  : 'desconocida';
68
 
69
+ return `IMPORTANTE: Responde ÚNICAMENTE en español. Do not write in English under any circumstance.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
+ Eres un médico veterinario especialista en patología clínica. Sólo responderás consultas asociadas a ésta área de conocimiento y basado en la evidencia proporcionada.
72
+ Si te envían imágenes de citología debes hacer una revisión exhaustiva de la morfología celular, identificar lesiones, patrones anormales, presencia de hemoparásitos intracelulares y extracelulares (Anaplasma, Babesia, Ehrlichia, Hepatozoon, Piroplasma, Mycoplasma, etc) o inclusiones citoplasmáticas.
73
+ Analiza los resultados y proporciona una interpretación clínica concisa.
74
 
75
+ Paciente: ${paciente.especie || 'desconocido'}, raza: ${paciente.raza || 'NE'}, edad: ${edadTexto}, sexo: ${paciente.sexo || 'NE'}
 
76
 
77
+ Resultados de laboratorio:
78
+ ${lineasValores}
79
 
80
+ Patrones detectados:
81
+ ${lineasPatrones}
82
+ ${signosText ? `\nSignos clínicos: ${signosText}` : ''}
83
+ Proporciona una interpretación clínica breve (6-8 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
84
  }
85
 
86
  function limpiarRespuesta(text) {