Fix parser laboratorio: encontrar valor después del nombre de parámetro
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user