diff --git a/src/sections/HistoriaClinica.tsx b/src/sections/HistoriaClinica.tsx index 1b31632..f5b178a 100644 --- a/src/sections/HistoriaClinica.tsx +++ b/src/sections/HistoriaClinica.tsx @@ -727,37 +727,26 @@ for (const linea of lineas) { for (const [clave, info] of Object.entries(mapeoParametros)) { if (lineaLower.includes(clave)) { - const cleanLinea = linea.replace(/show_chart|list_alt/g, '').replace(/\t+/g, ' ').replace(/\s+/g, ' ').trim(); - const partes = cleanLinea.split(' '); - - // show_chart está al inicio, el valor está en posicion 1 - const hasIcon = linea.includes('show_chart') || linea.includes('list_alt'); - let idxParam = hasIcon ? 1 : 0; - - for (let i = idxParam + 1; i < partes.length; i++) { - const parte = partes[i].replace(',', '.').replace('³', '').replace('²', ''); - const valor = parseFloat(parte); + // buscar primer número puro después de show_chart + const match = linea.match(/show_chart\s+[\w\s]+\s+(\d+\.?\d*)/); + if (match && match[1]) { + const valor = parseFloat(match[1].replace(',', '.')); if (!isNaN(valor) && valor > 0 && valor < 1000) { - const sig = partes[i + 1] || ''; - const esRango = sig === '-' || /\d/.test(sig); - - if (!esRango) { - const nombreNormalizado = info.nombre; - let valorFinal = valor; - if (nombreNormalizado === 'Leucocitos' || nombreNormalizado === 'Plaquetas') { - valorFinal = valor * 1000; - } - - if (info.esPrincipal) { - resultados.push({ - parametro: nombreNormalizado, - valor: valorFinal, - unidad: info.unidad, - estado: calcularEstadoLaboratorio(nombreNormalizado, parte) - }); - } - break; + const nombreNormalizado = info.nombre; + let valorFinal = valor; + if (nombreNormalizado === 'Leucocitos' || nombreNormalizado === 'Plaquetas') { + valorFinal = valor * 1000; } + + if (info.esPrincipal) { + resultados.push({ + parametro: nombreNormalizado, + valor: valorFinal, + unidad: info.unidad, + estado: calcularEstadoLaboratorio(nombreNormalizado, match[1]) + }); + } + break; } } break;