OHDSI Home | Forums | Wiki | Github

Negative values in Lab test records

I vote for option 4.

But use a more unique and unambiguous concept to reflect that an ETL action was done. (ETL data enhancement step)

If we make the next step in converting compatible units to a single target units - we will need a similar mechanism that an ETL action on a data row was done.
E.g., the LDL value was converted by ETL to the the preferred single target unit.
See possible examples
here https://github.com/OHDSI/StudyProtocolSandbox/blob/master/themis/extras/partial_results/C-tests-aggregated.csv#L389
(hemoglobin row)

Marking implausible values during ETL is similar to unit conversion during ETL.

…and finally a teaser: measurement.source_value_as_number (CDISC SDTM format takes this approach)

Friends: Can we not just “vote”, but actually produce use cases? What is the use case for having an incorrect result? I am at a loss.

1 Like

Aren’t there some lab results that can be negative?

1925-7-Base excess in Arterial blood by calculation
RANGE: mmol.L:[-2,+2]
https://s.details.loinc.org/LOINC/1925-7.html

1927-3-Base excess in Venous blood by calculation
RANGE: mmol.L:[-5,+5]
https://s.details.loinc.org/LOINC/1927-3.html

Good Catch @ericaVoss.
@mvanzandt and @Christian_Reich, Can you please add Erica’s point to the deck.
Is there validity test we can run in ETL to check for valid range from LOINC? We can’t just remove/flag negative values if they are within valid range.

1 Like

Is there validity test we can run in ETL to check for valid range from LOINC?
Pretty sure that there isn’t unless you do some NLP with LOINC webpages to get the range.

We can make a list of exclusions for which this rule won’t apply.

Reading through this post again and summarizing what was said at the THEMIS F2F.

RECOMMENDATION
Only allow values for negative measurements. If you have negative values for positive measurements, then set it to 0.

ACTION

  1. Work to develop an exception list (e.g. 1925-7-Base excess in Arterial blood by calculation, RANGE: mmol.L:[-2,+2], https://s.details.loinc.org/LOINC/1925-7.html)

  2. Update ACHILLES to do a warning on non-exempt tests that are negative.

  3. Work with CDM WG to document both the exception list and above text in the VALUE_AS_NUMBER column. https://github.com/OHDSI/CommonDataModel/wiki/MEASUREMENT

Does anyone have a list of the LOINCs that can be negative? We found 2 so far:

1925-7-Base excess in Arterial blood by calculation
RANGE: mmol.L:[-2,+2]
https://s.details.loinc.org/LOINC/1925-7.html3

1927-3-Base excess in Venous blood by calculation
RANGE: mmol.L:[-5,+5]
https://s.details.loinc.org/LOINC/1927-3.html1

1 Like

ThemisUnits and ThemisMeasurement study can be extended to go after all negative value tests.

Also, who is tasked with implementing that in Achilles. I am happy to volunteer.

Don’t understand. You want to query the data whether they contain negative results? Why? They are wrong in 99% of the cases. Junk. We need to decide that deterministically.

Thanks so much, @Vojtech_Huser. We need to give you some credit for pushing this into Achilles.

A third exception would be

LOINC, NAME
11555-0 Base excess of blood

We also see negative values in non LOINC coded tests.

QRS-Axis (that would most likely be LOINC code 8632-2 )

Sorry for confusion - Yes - I did mean deterministic decision.

the first thing coming to my mind is to take a look on the range defined by the LOINC, this way I got this list

11555-0 | Base excess in Blood by calculation | mEq/L:[-2,+3];mmol/L:[-2,+3];
1927-3 | Base excess in Venous blood by calculation | mmol.L:[-5,+5]:
1925-7 | Base excess in Arterial blood by calculation | mmol.L:[-2,+2];
1926-5 | Base excess in Capillary blood by calculation | mmol.L:[-2,+2];
28638-5 | Base excess in Arterial cord blood by calculation | mmol.L:[-10,-2];
28639-3 | Base excess in Venous cord blood by calculation | mmol.L:[-10,-2];

But this approach misses the cases where the range is null in LOINC, the

is the good example.
@Vojtech_Huser, how did you find the QRS-Axis thing? just looking on your data?

Updating my post based on the above notes.

RECOMMENDATION
Only allow values for negative measurements. If you have negative values for positive measurements, then set it to 0.

ACTION
Work to develop an exception list (e.g. 1925-7-Base excess in Arterial blood by calculation, RANGE: mmol.L:[-2,+2], https://s.details.loinc.org/LOINC/1925-7.html)

Update ACHILLES to do a warning on non-exempt tests that are negative.

Work with CDM WG to document both the exception list and above text in the VALUE_AS_NUMBER column. https://github.com/OHDSI/CommonDataModel/wiki/MEASUREMENT1

Does anyone have a list of the LOINCs that can be negative? We found the following so far:

  • 1925-7-Base excess in Arterial blood by calculation
    RANGE: mmol.L:[-2,+2]
    https://s.details.loinc.org/LOINC/1925-7.html3

  • 1927-3-Base excess in Venous blood by calculation
    RANGE: mmol.L:[-5,+5]
    https://s.details.loinc.org/LOINC/1927-3.html1

  • QRS-Axis (that would most likely be LOINC code 8632-2 )

  • 11555-0 | Base excess in Blood by calculation | mEq/L:[-2,+3];mmol/L:[-2,+3];

  • 1926-5 | Base excess in Capillary blood by calculation | mmol.L:[-2,+2];

  • 28638-5 | Base excess in Arterial cord blood by calculation | mmol.L:[-10,-2];

  • 28639-3 | Base excess in Venous cord blood by calculation | mmol.L:[-10,-2];

Is that what we said? A value of 0 mg/dL Glucose in plasma is hardly a useful record. The patient would look pretty miserable with that value. Shouldn’t we set it to NULL?

Friends: Where are we on this? Should we start publishing things? The better list is the enemy of the current list.

On Achilles implementation, I am waiting on Ajit @Ajit_Londhe to explain to me how new rules can be added after making the SQL to execute in paralell mode. The new files are hard to navigate. (1 Heel file now broken into 15+ files)

Sorry for the delay @Vojtech_Huser – I’m creating a developer’s Readme and trying to simplify things a bit. I’ll push this new Readme by Friday.

Agree, I will update!


RECOMMENDATION
Only allow values for negative measurements. If you have negative values for positive measurements, then set it to NULL.

ACTION
Work to develop an exception list (e.g. 1925-7-Base excess in Arterial blood by calculation, RANGE: mmol.L:[-2,+2], https://s.details.loinc.org/LOINC/1925-7.html)

Update ACHILLES to do a warning on non-exempt tests that are negative.

Work with CDM WG to document both the exception list and above text in the VALUE_AS_NUMBER column. https://github.com/OHDSI/CommonDataModel/wiki/MEASUREMENT11

@ericaVoss @Vojtech_Huser @Christian_Reich @Asha_Mahesh @nzvyagina
I’m not sure this is related with what you’re discussing, but I have a question.
One of the results from Heptitis B virus surface Ab (concept_id = 3023421) in our institution is ‘Positive, 85.34’, which means positive for the Ab and value of titer is 85 (Definitely it is not wrong record).

In this case, we records both the value_as_number (85.34) and value_as_concept_id (’+’).
Do we have standardized solution for this, too?

1 Like

@SCYou:

Yes. Use 9191 “Positive”. Or any concepts where standard_concept=‘S’ and domain_id='Meas Value".

3 Likes

Thank you @Christian_Reich, That’s what we’re doing now!

Just updating this thread with the most current recommendation. If you have ideas or more items for the exception list let us know!

RECOMMENDATION
Only allow values for negative measurements (see list below). If you have negative values for positive measurements, then set it to NULL. Negative Measurements 1925-7-Base excess in Arterial blood by calculation 1927-3-Base excess in Venous blood by calculation 8632-2 - QRS-Axis 11555-0 - Base excess in Blood by calculation 1926-5 - Base excess in Capillary blood by calculation 28638-5 - Base excess in Arterial cord blood by calculation 28639-3 - Base excess in Venous cord blood by calculation

NEXT STEP

  1. Work to develop an exception list (e.g. 1925-7-Base excess in Arterial blood by calculation, RANGE: mmol.L:[-2,+2], https://s.details.loinc.org/LOINC/1925-7.html)
  2. Update ACHILLES (@vojtechhuser) to do a warning on non-exempt tests that are negative.
  3. Work with CDM WG to document both the exception list and above text in the VALUE_AS_NUMBER column. https://github.com/OHDSI/CommonDataModel/wiki/MEASUREMENT
t