O3 Test & Lab Results MVP and Version 1

Jira Epic

Error rendering macro 'jira' : Unable to locate Jira server for this macro. It may be due to Application Link configuration.

The 3 Major Pages in the 3.x Designs

There are 3 major pages that support a user's ability to review Test Results:


Current Test Results Wireframes available here: 

Results Overview: https://zpl.io/adlBoYE 

Trend Page: https://zpl.io/bLZ73pG 

Timeline: https://zpl.io/aBXg3GQ

Search: https://zpl.io/2G8LdWW 

Filter: https://zpl.io/aRlykjr 

Important Things to Know if You are Working on this

A "Test" and a "Panel" are different things. 

Definition of a Test: A test is a single assessment of something. E.g. A test for the amount of Potassium in the patient's blood, aka "Serum Potassium".

Definition of a Panel: A Panel is like a file-folder of multiple tests. Referencing a "Panel" helps clinicians to rapidly order sets of tests without having to order each specific test individually. This is especially common where a set of tests would help to explain the patient's health from multiple dimensions.

  • A test can be ordered on it's own, or as part of a Panel. For example, a Potassium test might be ordered individually if the doctor is specifically worried about a patient's Potassium levels. Or, a Potassium test might be included in a Panel, such as an "Electrolyte Panel" that also tests for other types of chemical concentrations in the blood stream. 
  • The same test can be ordered in multiple Panels. For example, a Potassium test might be ordered as part of a "Short Electrolyte Panel", or a "Longer Electrolyte Panel". Another example: Blood Cholesterol might be ordered as part of a "Heart Health Panel", or as part of a "Diabetic Workup Panel", because it's helpful to know the result in both of these cases. The same patient might even have these different panels ordered for them in the same day. 

Test results are not always numeric

e.g. an HIV test can be recorded as “Reactive” or "Positive" or simply "+".

Abnormal Results Guidelines

Reference Ranges

In our Demo environment, Reference Ranges are specified on concepts, e.g. https://openmrs-spa.org/openmrs/owa/conceptdictionary/index.html#/concept/857AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ - note the "range values". Note: Some concepts may only have a few reference range fields filled out (sometimes this is appropriate); some concepts may have no reference range fields filled out. 

Ranges should NOT be generated or suggested if they are not explicitly specified - where ranges are not available, it is safer to show a visual that shows there's no guidance data, e.g.:

  • In the Results Overview view, one result had no normal range available, so no range was shown:  
  • In the Trendline view, no normal range was available, so only the unit is shown: 

Do not use Absolute Range to guide normal values. A good example of this is Blood Oxygen Saturation. The Absolute low is 0% and the Absolute high is 100%. Does this mean the normal range is 0-100%? No! In fact, a Blood Oxygen of <92% means not enough oxygen is getting to the brain! At a values like <80%, the patient is in extreme danger. So 0-100 is not equivalent to a normal range. This is a good example for why we don't use Absolute Ranges in lieu of Normal Range values.

(Note on the Real Field Context: In the field, some implementations use the Reference Ranges from concepts; however, many implementations pull the reference range values from other sources of truth, such as the local Lab Information System. Lab Information Systems are often designed to handle the complexity of lab reference ranges - e.g. differences depending on age range, sex, etc, whereas the current concept-based Reference Range model is fairly limiting to just one range set per concept. Reference Ranges are also generally kept more up-to-date in the Lab Information System, because Lab Technicians are the experts on the ranges expected for different labs, particularly if there are nuances in different types of equipment or practice standard changes.)

How to show Abnormal Results

*1) *In General: For safety reasons we always try to use 2 different visual indicators to call attention to an abnormal result (e.g. bolding and color; icon and color, etc). As much as possible, all abnormal results should at least have a bolded result and a shaded red background.

2) High/Low Results: Numeric results above Normal High or below Normal Low ranges should appear like:


  • the row is shaded red similar to this wireframe
  • there is either an up or a down arrow to indicate whether the result is higher or lower than the normal range)

3) Critically High/Low Results: Numeric results above Critical High or below Critical Low ranges should appear like:


  • the row is shaded red
  • there is a red outline around the row
  • there are two arrows up or down to indicate that the result is substantially higher or substantially lower than the normal range
  • This styling over-rides other rules, to ensure proper attention is drawn to critical results (e.g. rule 5 below about the extra note/yellow shading)

4) No Data: Where there is no data available, a "–" is used:  

5) Extra Note: Where there is a note of some kind, yellow shading and an icon is used: