Parser: extraer primer valor numerico despues de show_chart

This commit is contained in:
2026-04-16 13:16:47 -03:00
parent 6c5b4646a0
commit 08a3a0105f
+5 -16
View File
@@ -727,21 +727,11 @@ for (const linea of lineas) {
for (const [clave, info] of Object.entries(mapeoParametros)) { for (const [clave, info] of Object.entries(mapeoParametros)) {
if (lineaLower.includes(clave)) { if (lineaLower.includes(clave)) {
const cleanLinea = linea.replace(/show_chart|list_alt/g, '').replace(/\t+/g, ' ').replace(/\s+/g, ' ').trim(); // buscar primer número puro después de show_chart
const partes = cleanLinea.split(' '); const match = linea.match(/show_chart\s+[\w\s]+\s+(\d+\.?\d*)/);
if (match && match[1]) {
// show_chart está al inicio, el valor está en posicion 1 const valor = parseFloat(match[1].replace(',', '.'));
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);
if (!isNaN(valor) && valor > 0 && valor < 1000) { if (!isNaN(valor) && valor > 0 && valor < 1000) {
const sig = partes[i + 1] || '';
const esRango = sig === '-' || /\d/.test(sig);
if (!esRango) {
const nombreNormalizado = info.nombre; const nombreNormalizado = info.nombre;
let valorFinal = valor; let valorFinal = valor;
if (nombreNormalizado === 'Leucocitos' || nombreNormalizado === 'Plaquetas') { if (nombreNormalizado === 'Leucocitos' || nombreNormalizado === 'Plaquetas') {
@@ -753,13 +743,12 @@ for (const linea of lineas) {
parametro: nombreNormalizado, parametro: nombreNormalizado,
valor: valorFinal, valor: valorFinal,
unidad: info.unidad, unidad: info.unidad,
estado: calcularEstadoLaboratorio(nombreNormalizado, parte) estado: calcularEstadoLaboratorio(nombreNormalizado, match[1])
}); });
} }
break; break;
} }
} }
}
break; break;
} }
} }