Fix parser laboratorio: encontrar valor después del nombre de parámetro

This commit is contained in:
2026-04-16 12:33:27 -03:00
parent 2638a68831
commit 1fd48b98df
+6 -6
View File
@@ -730,16 +730,18 @@ for (const linea of lineas) {
const cleanLinea = linea.replace(/show_chart|list_alt/g, '').replace(/\t+/g, ' ').replace(/\s+/g, ' ').trim();
const partes = cleanLinea.split(' ');
for (let i = 0; i < partes.length; i++) {
let idxParam = partes.findIndex(p => p.toLowerCase().includes(clave));
if (idxParam === -1) idxParam = 0;
for (let i = Math.max(0, idxParam); i < partes.length; i++) {
const parte = partes[i].replace(',', '.');
const valor = parseFloat(parte);
if (!isNaN(valor) && valor > 0 && valor < 1000) {
const sig = partes[i + 1] || '';
const esUnidad = /^(10[^µ]*µl|%|g\/dl|mg\/dl|mEq\/L|u\/l|fL|pg|seg|ng\/ml)/i.test(sig) || /^10[\^*]?[³6]?[\/]?µl$/i.test(sig);
const esRango = sig === '-' || /\d/.test(sig);
if (!esUnidad || i === 0) {
if (!esRango) {
const nombreNormalizado = info.nombre;
let valorFinal = valor;
if (nombreNormalizado === 'Leucocitos' || nombreNormalizado === 'Plaquetas') {
valorFinal = valor * 1000;
@@ -752,8 +754,6 @@ if (!esUnidad || i === 0) {
unidad: info.unidad,
estado: calcularEstadoLaboratorio(nombreNormalizado, parte)
});
} else if (!['Eritroblastos', 'Neutrófilos', 'Linfocitos', 'Monocitos', 'Eosinófilos', 'Basófilos'].includes(info.nombre)) {
observacionesExtra.push(`${info.nombre}: ${valor} ${info.unidad}`.trim());
}
break;
}