Pulling together similar LOINC codes isn't as easy as it first seems
Maybe you're creating a flowsheet display within an EHR system. Or, maybe you're retrieving data to fulfill a quality measure report. Perhaps you are processing data from many sources for a research project.
Sometimes, you just want to find all the variables that record a patient's weight.
Of course, there's the generic LOINC term 29463-7 Body weight.
But when you search the LOINC database you find a bunch more. What about these?
- 8341-0 Dry body weight Measured
- 8338-6 Body weight Measured --ante partum
- 8345-1 Body weight Measured --post partum
- 8350-1 Body weight Measured --with clothes
- 8351-9 Body weight Measured --without clothes
- and lots more like this...
Yeah, if those are stored in the EHR for your patient, you want them too.
The data inside many EHRs and clinical data warehouses are stored, appropriately so, with these granular LOINC codes that make fine grained distinctions. The problem is that for your purpose, you want to treat them similarly.
As you scan further down the list of terms though, you notice some "special" (a.k.a. oddball) terms that need to be excluded.
You definitely need to limit to quantitative terms only, so you don't get things like 8337-8 Body weight special circumstances, which is used to record things like patient position and other special environmental factors about the measurement.
Even with only quantitative terms, there are other specialized measurements to exclude that aren't actual patient weights, such as:
- 73965-6 Body muscle mass/Body weight Measured
- 8336-0 Body weight [Percentile] Per age Measured
- 73964-9 Body muscle mass Calculated
You could write custom lists that enumerated all the possible LOINC codes of interest or keep coming up with more complicated search criteria, but that's hard to maintain at scale across many tests or measurements you may be interested in.
The LOINC groups project aims to give you a flexible, extensible, and computable mechanism for rolling up groups of LOINC codes for various purposes
With funding support from the National Center for Advancing Translational Sciences and input from diverse users, we designed a release format for publishing LOINC Groups. A LOINC Group is sets of terms that might be considered equivalent for a particular purpose.
Beginning with the June 2017 LOINC release, we are now publishing the LOINC Group File as part of each LOINC release. We're still early in this journey, so expect the contents of this file to evolve over time.
TIPS Important notes
- The LOINC Group project is a work in progress. Expect the contents of this file, including the Group and Subgroup names and the types of Groups that are included, to change from release to release as we receive feedback from users and refine our processes.
- The LOINC Groups themselves are NOT meant to be targets of mapping. That is, they are designed for use to aggregate existing data identified with LOINC codes. Don't map your local test codes to LOINC Groups; you'll be throwing away information.
- The contents of the file and the groupings MUST be validated by the user prior to implementation in any aspect of clinical care. We have created Groups that may be useful in specific contexts, but these Groups have not been vetted for use in either patient care or research and should be used with caution.
Structure of the LOINC Group File
Sort order: This file is sorted by the ParentGroup followed by the Group.
|ParentGroupId||The unique identifier for the ParentGroup that has a prefix of "LG".|
|ParentGroup||A systematic name for the high-level group from which all of the individual groups are created.|
|ParentGroupCategory||Categories for the ParentGroup concept such as "Laboratory" and "Clinical".
NOTE Despite their initial appearance, these categories are not strictly limited to the LOINC Classtype values.
|ParentGroupDescription||Description of which axes are contained in and ignored by the ParentGroup.|
|GroupId||The unique identifier for a single Group that also has prefix "LG".|
|Group||The systematic name for a single Group containing a set of LOINC codes that could potentially be rolled up in certain contexts.|
|LoincNumber||The unique identifier for a given LOINC term.|
|LongCommonName||The Long Common Name for the LOINC term.|
Patterns for constructing ParentGroup and Group names
Each ParentGroup is named as a concatenation of the:
- High-level group concept;
- Axes that are the same for each term in a given group in angle brackets;
- (If applicable) axis values that are purposely grouped together in a given group in angle brackets; and
- Axes that are purposely ignored and therefore automatically grouped together in angle brackets.
For example, the ParentGroup CHEM<SAME:Comp|Prop|Tm><Sys:ANYBldSerPlas><ROLLUP:Meth> contains:
- Terms in the CHEM (Chemistry) class;
- Where all of the LOINC terms in each individual group have the same Component, Property, and Time;
- Where the LOINC terms in a given Group can have a System in ANY of the blood, serum or plasma categories, such as: Bld, BldA, Ser/Plas, etc. (with a few exceptions such as cord blood and dried blood spot); and
- Terms are rolled up into a single Group regardless of whether they are methodless or have a specific Method. In other words, ANY Method (including null) is allowed.
Each Group is named as a concatenation of the following pieces delimited by vertical bars (|):
- Values in the axes that contain the same value for all LOINC terms in a Group, which corresponds to the first set of angle brackets in the ParentGroup; and
- Label assigned to the set of values in a given axis that are purposely grouped together, which corresponds to the second set of angle brackets in the ParentGroup.
Note that the axes that are automatically rolled together, corresponding to the third set of angle brackets in the ParentGroup, are not represented in the individual Group names.
For example, the Glucose|MCnc|Pt|ANYBldSerPlas Group, which is part of the CHEM ParentGroup described on the left, contains terms that have:
- Component of Glucose, Property of MCnc, and Timing of Pt;
- ANY blood, serum or plasma System (with those noted exceptions); and
- ANY Method
An example Group to illustrate
To see how these Group names correspond to the list of LOINC codes they aggregate, let's take the example of this group:
- 2339-0 Glucose [Mass/volume] in Blood
- 2340-8 Glucose [Mass/volume] in Blood by Automated test strip
- 2341-6 Glucose [Mass/volume] in Blood by Test strip manual
- 32016-8 Glucose [Mass/volume] in Capillary blood
- 41653-7 Glucose [Mass/volume] in Capillary blood by Glucometer
- 2345-7 Glucose [Mass/volume] in Serum or Plasma
- 74774-1 Glucose [Mass/volume] in Serum, Plasma or Blood
- 41651-1 Glucose [Mass/volume] in Arterial blood
- 41652-9 Glucose [Mass/volume] in Venous blood
- 6777-7 Deprecated Glucose [Mass/volume] in Serum or Plasma
As you can see from the syntax of the Group name, this collects all LOINC terms that have Component of Glucose, Property of MCnc, and Timing of Pt; ANY blood, serum or plasma System (with those noted exceptions); and ANY Method.