From 7b4b9ae099c4fd075182776c16fc16d41ead9fdc Mon Sep 17 00:00:00 2001 From: inportb Date: Sat, 1 Oct 2022 01:16:19 -0400 Subject: [PATCH] Improved lab report edge case parsing --- htdocs/reportparser.mjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/reportparser.mjs b/htdocs/reportparser.mjs index b52d016..91ab80a 100644 --- a/htdocs/reportparser.mjs +++ b/htdocs/reportparser.mjs @@ -53,6 +53,10 @@ function lab_parse1default(data) { else x.comment = [line.substring(12)]; } else console.log('DANGLING:', line); } else if(m = line.match(/^\b(?.*?)\s{2,}(?.*?)(?: (?L\*|L|H\*|H))?\s+(?:(?.{10}) (?.*?)(?: \[(?\d+)\])?)?$/)) { + if(m.groups.name.startsWith('COVID-19 SCR (CEPHEID-RAPID)')) { + m = line.substring(28).match(/^(?.*?)(?: (?L\*|L|H\*|H))?\s+(?:(?.{10}) (?.*?)(?: \[(?\d+)\])?)?$/); + m.groups.name = 'COVID-19 SCR (CEPHEID-RAPID)'; + } if((m.groups.range) && (m.groups.range.startsWith('Ref: '))) m.groups.range = m.groups.range.substring(5); results.push(x = m.groups); if((x.value === '') && (m = x.name.match(/^(?.*?)(?(?:[\d\.]+|positive|negative|reactive|not detected|collected - specimen in lab|test not performed))\s*$/i))) { @@ -60,7 +64,7 @@ function lab_parse1default(data) { x.value = m.groups.value; } for(var k in x) if(x[k]) x[k] = x[k] ? x[k].replace(/^\s+|\s+$/g, '') : undefined; - } else if(m = line.match(/^\b(?.*?) (?(?:[\d\.]+|positive|negative|reactive|not detected|collected - specimen in lab|test not performed))\s*$/i)) { + } else if(m = line.match(/^\b(?.*?)(?(?:[\d\.]+|positive|negative|reactive|not detected|collected - specimen in lab|test not performed))\s*$/i)) { results.push(x = m.groups); for(var k in x) if(x[k]) x[k] = x[k] ? x[k].replace(/^\s+|\s+$/g, '') : undefined; } else if(line.startsWith(' [')) {