SDTM and LOINC Codes

/, SDTM/SDTM and LOINC Codes


What is a LOINC Code?

Firstly, LOINC provides a unique identifier for each medical observation – such as lab test. It also provides additional information, such as standardised 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.


What about LOINC Codes for SDTM?

CDISC/NCI provide controlled terms for observations such as Lab test names (LBTESTCD, LBTEST) etc. 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 code is required to identify the test.

Glucose example:

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.


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 very 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.


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 version, but the CDISC Code stays constant for a given concept.

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


First get the SDTM LBTESTCD/LBTEST string pair

sdtm-loinc-codes   sdtm-loinc-codes-nci

Next get the specimen type:

sdtm-loinc-codes sdtm-loinc-codes-nci-codes


nci-codest-loinc-codes normalizing-original-result-standard-numeric-result-loinc-codes

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.

normalizing-result-loinc-codes normalizing-original-result-standard-loinc-codes

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


Example Lab (LB) output


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.

Lab Category (LBCAT) 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 subjects 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:


Conversion table cont.


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:


Example of data cleaning process:


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:


Example output:


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.

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 e.g. SDTM LB columns, and provides a mechanism to standardise the unit normalization process.

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

LOINC also provides the option of 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.

Related posts you might be interested in