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.
LOINC’s Groups have a Beta status. We do not have a schedule for promoting Groups to a production status.
The LOINC groups project aims to give you a flexible, extensible, and computable mechanism for rolling up groups of LOINC codes for various purposes
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.
Alternatively, you can access Groups as FHIR ValueSets
You can also retrieve LOINC Groups programmatically as FHIR ValueSets. You can also use this service to determine if a term is in a given Group. Learn more about LOINC's FHIR resources.
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.
Use the https://fhir.loinc.org/ValueSet endpoint to access Groups as FHIR ValueSets. See our FHIR server documentation.
Structure of the GroupLoincTerms File
Sort order: This file is sorted by the GroupId followed by the LongCommonName.
|Category||A short description that identifies the general purpose of the group, such as "Flowsheet", "Reportable microbiology" or "Document ontology grouped by role and subject matter domain".|
|GroupId||The unique identifier for a single Group that also has prefix "LG".|
|Archetype||The LOINC number of the most general representative term for a specific Group. For example, in a Group rolled up by method, the methodless term is the archetype term.|
|LoincNumber||The unique identifier for a given LOINC term.|
|LongCommonName||The Long Common Name for the LOINC term.|
Connections between ParentGroupId and GroupId are in the Group file. Additional information about each Group, including references and annotations, is available in the GroupAttributes file.
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.
Give us your thoughts
We are seeking feedback from the LOINC community on the file format, the content of the LOINC Groups created, and intended uses. Please share your advice on the LOINC Community Forum!