Introduction
This is a technical documentation for “factor-based” concept ranges. For the background of these ranges, refer to the main documentation.
The criteria
field in the concept_reference_range
table allows for the dynamic and flexible validation of observations based on various patient attributes.
Architecture
The key challenge in implementing this feature was to design a system that does not require extensive changes to the existing database structure while still being robust and flexible enough to handle a variety of criteria based on different patient factors.
...
concept_reference_range
: This table holds the absolute, critical, and normal ranges along with acriteria
column. Thecriteria
column contains a coded function that performs validation checks, such as those based on age or gender, using the Velocity engine for evaluationvelocity text expressions that evaluate to true or false.obs_reference_range
: This table stores the validated reference ranges for observation numeric values that have been used in validation after the criteria have been applied.
These tables allow for dynamic storage of ranges based on different factors, including combinations different ranges. However, concept_reference_range
includes criteria expressions for factors - which can be combinations for different factors like age and gender. For example:
...
This design allows for easy updates and expansions of criteria without requiring changes to the underlying database schema.
Business Logic Flow
...
Schema Schema changes
Note that the main data model is documented here: Concept Data Model . Therefore, this page shows only the new changes in the data modelThis section details the new tables and relationships added to the OpenMRS data model to support factor-based concept ranges.
Note: The complete data model is documented here. This document only highlights the new schema additions relevant to factor-based concept ranges.
...
1. concept_reference_range
Table
The concept_reference_range
table is designed to store detailed reference ranges for concepts, along with criteria that determine when these ranges apply.
Table Structure:
Column Name | Data Type | Description |
---|---|---|
|
| Primary key. Unique identifier for each concept reference range. |
|
| Foreign key linking to |
|
| An expression that specifies conditions for when the reference range is applicable. |
|
| The high critical for the concept. |
|
| The high normal for the concept. |
|
| The high absolute for the concept. |
|
| The low critical for the concept. |
|
| The low normal for the concept. |
|
| The low absolute for the concept. |
Relationship:
1:N relationship with concept_numeric
: A single concept can have multiple reference ranges based on different criteria.
...
2. obs_reference_range
Table
The obs_reference_range
table records the validated reference range for a specific observation (Obs
).
Table Structure:
Column Name | Data Type | Description |
---|---|---|
|
| Primary key. Unique identifier for each observation reference range. |
|
| Foreign key linking to the |
|
| The high critical limit for the observation. |
|
| The high normal limit for the observation. |
|
| The high absolute limit for the observation. |
|
| The low critical limit for the observation. |
|
| The low normal limit for the observation. |
|
| The low absolute limit for the observation. |
Relationship:
Has 1:1 relationship with obs
: Each observation has one associated reference range.