<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=905310923417895&amp;ev=PageView&amp;noscript=1">

Why should you use LOINC codes for SDTM?

Nov 6, 2023 3:34:30 PM



Ed Chappell

Find me on

In this blog, we take a detailed look at LOINC Codes and SDTM. We look at several LOINC code examples and examine why it’s beneficial to use the codes alongside CDISC and NCI controlled terminology. We also include details of where to find the official LOINC codes list.


What are LOINC Codes used for?

LOINC stands for ‘Logical Observation Identifiers Names and Codes’.

According to the LOINC website, ‘Reference labs, healthcare providers, government agencies, insurance companies, software and device manufacturers, researchers, and consumers from around the globe use LOINC to identify data and move it seamlessly between systems.’

Essentially, LOINC provides a unique identifier for each medical observation – such as lab test. It also provides additional information, such as standardized specimen type, category, etc.

LOINC is an internationally recognized classification system. It is often requested in regulatory data submissions to provide context to clinical measurement data, for example, Labs and ECG (electrocardiogram).


Top tip 

Central Labs and other data providers may offer LOINC codes with their data transfer. Make sure this is included as a requirement in your Data Transfer Specification (DTS) document (the document that outlines the agreed collection method) as this will ensure the data is LOINC coded at source.


Important information about LOINC codes for SDTM

CDISC and the NCI provide controlled terms for observations such as Lab test names, for example LBTESTCD (Laboratory Test Code) and LBTEST (the name of the lab test performed).

So why would another classification system be useful? The simple answer lies in the difference between the classification systems. The CDISC/NCI controlled terms for Lab test are not unique. Instead, they require additional information to differentiate the lab test. But LOINC codes are unique, so only the LOINC code is required to identify the test.

The CDISC knowledge base contains important information about LOINC and SDTM, including:

  • While LOINC codes are NOT required by CDISC standards, there are benefits to using them
  • LOINC codes have been an FDA requirement since March 2020
  • As not all tests have LOINC terms, the FDA allow that codes may not be used in this case provided this is explained in the Study Data Reviews Guide (SDRG) and that some effort is made to obtain them.

LOINC code examples

LOINC code example - Glucose:

From the CDISC NCI SDTM Controlled terms:

  • LBTESTCD (C65047) Term “GLUC” (C105585)
  • LBTEST (C67154) Term “Glucose” (C105585)

However, this is simply “A measurement of the glucose in a biological specimen.” Therefore the “specimen” is required to identify the measurement. CDISC NCI SDTM also provides a list of terms for Specimen (see below):

  • LBSPEC (C78734 Specimen Type)
  • “URINE” (C13283)
  • “BLOOD” (C12434)

Within the specimen types, the measurements are also classified by the testing process or method used. CDISC NCI SDTM also provides controlled terms for the different types of measurement e.g. Test strip (dipstick) vs. quantitative measurement, so LBMETHOD is also needed:

  • LBMETHOD (C85492 Method)
  • “DIPSTICK” (C106516)




LOINC code example – CDISC SDTM Labs (LB) domain

The table below shows how the CDISC SDTM Labs (LB) domain requires several columns populated to correctly identify a particular clinical measurement.

LOINC codes example 1




To represent a lab test in SDTM, several columns (LBTESTCD, LBSPEC, LBMETHOD etc.) are required, each having a different set of controlled terms. As the source data may not contain sufficient detail, it can be difficult to correctly classify a Lab test directly into CDISC SDTM – especially partial data such as local lab results.

However, LOINC provides a unique “code” for each test, along with an SDTM mapping to specimen type, method, units, etc. Below is a breakdown of the LOINC codes for the Glucose example:

Glucose (Urine) returns 27 tests, classified by time (timepoint, 6, 8, 10, 24 hours) and method (Quantitative, Test Strip, Test Strip automated).

So for [timepoint], [test strip] there are three possible tests, depending on the units e.g. “positive/negative”, “mmol/L” , “mg/dL”.

Most results in SDTM are submitted in the SI units, in this case, “mmol/L”, “mg/dL” being the conventional units. If the result is simply “positive/negative”, this would be submitted as a “character” result.

From the LOINC table and the CDISC NCI controlled terms, we can construct a code table to translate between the two schemes.

LOINC codes example 2


Note the code table should map the LOINC code (5792-7) to the CDISC Code (C1005585), not the free text (Glucose). This is because the free text is subject to revision between CDISC controlled term versions, but the CDISC Code stays constant for a given concept.

With the code table in place, a lab result would be processed as follows:

LOINC codes example 3



First get the SDTM LBTESTCD/LBTEST string pair

LOINC codes example 4



LOINC codes example 5



Next, get the specimen type:

LOINC codes example 6



LOINC codes 7




LOINC codes example 8



LOINC codes example 9



Original Unit (LBORRESU)

It is common for the unit string supplied by the EDC or central lab to not match the CDISC NCI string e.g. “MG/DL” instead of “mg/dL”. This requires manual mapping correction. However, with the LOINC code table, we know what the correct unit string should be (mg/dL), so can insert the value from the code table. A simple programmed check can compare both strings and trigger an alert for manual review.

LOINC codes example 10



LOINC codes example 11



We can extend the LOINC code table to assign the “SI Unit”, “Conventional Unit” and then document the conversion factor between the two.


LOINC codes example 12



Example Lab (LB) output

LOINC codes example 13


This process can be applied to other controlled terms, it is not restricted to just CDISC NCI SDTM. Additional information such as “Lab category” (LBCAT), can also be assigned using the LOINC code.

LOINC code example – Lab Category (LBCAT)

LOINC codes example 14



LOINC code example – Lab Toxicity Grade (LBTOXGR)

To calculate LBTOXGR, the measurement or lab test must first be identified and the appropriate grade threshold calculations found from the “Common Terminology Criteria for Adverse Events (CTCAE)” documentation. Having the LOINC code makes this process more reliable, as the grade calculation may depend on several factors (specimen, unit, etc). Additional information, such as the subject’s gender, may have to be included to select the correct calculation.

LOINC Code Example – “Conventional Unit” to “SI Unit” conversion

Normalizing “Original Result” (–ORRES) to standard result numeric (–STRN) is common for most SDTM Findings datasets. This process relies on the correct identification of the measurement being standardized. We often find different conversion factors are required depending on the original unit, specimen, etc. So LOINC codes are very helpful in controlling this process. Note this process can cover Lab, ECG, Vital Signs, etc. as these all have available LOINC codes.

To drive the normalization process, we first prepare a code table aligning the LOINC code to the units.

Conversion table:

LOINC codes example 15


Conversion table cont.

LOINC codes example 16


And using the equation below to calculate the normalized value:


If the conversion factors are not fractions e.g. 0.55 instead of 5/9, we simply set “Constant A” to the multiplier (0.55) and set “Constant B” to one. This will introduce a rounding error, which should be documented in the conversion table “Comment” column. Additional information, such as LOINC table version number, measurement name, specimen type, or additional notes, should be included to provide context.

In preparation for the normalization process, we must align the “Original Units” to the CDISC/NCI terminology. This is done using a code table to convert the collected “Unit string” into the CDISC NCI Unit NCI Code.

It’s recommended to “clean” the collected unit first e.g.  upper-case the string and remove trailing spaces etc. This reduces the number of entries in the alignment code table and also makes the SDTM conversion more robust.

CDISC NCI also provides a list of synonyms for each submission value. These can be imported into the alignment table from the NCI documentation. For example:


LOINC codes example 17





Example of data cleaning process:

LOINC codes example 18


With the aligned VSORRESU, for each input data row we perform a lookup using the LOINC code and “Unit NCICode” to get the conversion factors (Constant A, Constant B, Constant C, Constant K) and apply the normalization formula:


LOINC codes example 19


Example output:

LOINC codes example 20


This approach has several advantages:

  • Correct identification of measurement (Body Temperature).
  • Uses the “unit” NCI code – not the collected text – which provides a “submission ready” unit.
  • Allows different conversion factors for each measurement. For example, it is quite common for conversion factors to depend on specimen type or method.
  • Provides full documentation of the normalization process (often requested for FDA submissions).
  • Standardizes the process across all studies – but neutral to CDISC NCI SDTM terminology version, by using the NCI Code, not “unit” text.

Where to find the LOINC Codes list

Find information on common LOINC Codes, including lists of the most frequently used codes, on the LOINC website.


Why use LOINC codes for STDM?

  • Greater consistency
  • Easier analysis and reporting
  • More efficient, standardized process

Using the above approach gives a consistent assignment of several SDTM LB columns, and provides a mechanism to standardize the unit normalization process.

For local lab data or results without LOINC codes, there is a robust coding process available, with several tools for the assignment of LOINC.

LOINC also provides the option of a more granular and reliable grouping of results for analysis and reporting, as each lab test is identified.

Standard processes, such as normalization to SI units, assignment of “Category”, calculation of “LBTOXGR” etc. can all leverage the LOINC code to provide a fully documented and standardized process. This can be applied across all study SDTM conversions.

Finally, LOINC Codes are available for several SDTM findings datasets e.g. Labs (LB), Vital Signs (VS), ECG (EG), etc.

Want to find out more about SDTM and using LOINC codes? Read our blog all you need to know about SDTM!


Read more about SDTM and LOINC




About the author



Ed Chappell

Solutions Consultant | Formedix


Ed Chappell has been working as a Solutions Consultant with Formedix for over 15 years, and has 22 years’ experience in data programming. He authored and presents our training courses for SEND, SDTM, Define-XML, ODM-XML, Define-XML and Dataset-XML.

Ed was heavily involved in the development of our ryze dataset mapper, and works closely with customers on SDTM dataset mapping. As an expert in clinical data programming, Ed also supports customers with Interim Analysis (IA) SDTM and FDA SDTM clinical trial submissions.


Similar blogs you might like...