...
The following describes how to set up a measurement range on a single ServiceRequest. In case the CarePlan contains multiple ServiceRequest for the same activity code, copying of changes to measurement ranges can be relevant. Multiple ServiceRequest in the same CarePlan or sub-CarePlan can refer to the same ActivityDefinition (through ServiceRequest.definition
) and/or each refer to an individual ActivityDefinition with the same ActivityDefinition.code
.
Note |
---|
It is likely to be expected from Employee Solutions that they address a Telemedicine Solution used by an employee that it addresses copying of changes in measurement ranges to other ServiceRequest in the same CarePlan/sub-Careplan having the same activity code. As copying is not always the desired effect, prompting of user when to do that should be considered. |
Preparing Details for Setting Measurement Ranges
In the descriptions below, measurement ranges can be expressed in the same measurement unit (system
, code
, and displayable unit
) as the measurement would be submitted with. The proper measurement unit in this case can be determined using the approach outlined in https://ehealth-dk.atlassian.net/wiki/spaces/EDTW/pages/2235432961/Interactions+with+the+Terminology+Service#Determining-the-proper-code%2C-system-and-unit-for-Quantity.
Note |
---|
If the used measurement unit in existing measurement ranges expressed in the same measurement unit differs from what can be determined with the approach referenced above, the measurement unit of existing measurement ranges should be used. There is little sense in expressing, say, an absolute red alarm type (see below) measurement range in multiple measurement units. |
Setting up Absolute
...
Measurement Ranges
An absolute reference measurement range is set up by adding a an ehealth-referenceRange structure to ServiceRequest.ehealth-referenceRange
where:
ehealth-referenceRange.type
is a Coding with:system
:http://ehealth.sundhed.dk/cs/reference-range-type
code
:RAL
orGAL
, for red alarm absolute reference measurement range and yellow alarm absolute reference measurement range, respectively.
ehealth-referenceRange.low
and/or.high
is a:a SimpleQuantity where:
value
: the integer or decimal value for the low/high boundaryunit
:<same unit as measured value is expressed with>
system
:<same system as measured value is expressed with>
code
:<same code as measured value is expressed with>
Setting up
...
Component-based Measurement Ranges
For component-based measurements (e.g. systolic/diastolic blood pressure) it is necessary to specify which component a reference range belongs to. This is done by adding an additional Coding to ehealth-referenceRange.type
from https://ehealth.sundhed.dk/fhir/ValueSet-ehealth-observation-codes.html
Setting up Relative Measurement Ranges and a Reference Base
A relative reference measurement range is set up by adding a an ehealth-referenceRange structure to ServiceRequest.ehealth-referenceRange
where:
ehealth-referenceRange.type
is a Coding with:system
:http://ehealth.sundhed.dk/cs/reference-range-type
code
:RELRAL
orRELGAL
, for red alarm relative reference measurement range and yellow alarm relative reference measurement range, respectively.
ehealth-referenceRange.low
and/or.high
is either of:a SimpleQuantity for a percentage change (stated as percent point change to measurement already expressed in percent) compared to the reference base where:
value
: the integer or decimal value for the low/high boundaryunit
:percent point
system
:http://ehealth.sundhed.dk/cs/ehealth-unit-code
code
:percentpoint
a SimpleQuantity for a percentage change (stated as percent change to measurement not already expressed in percent) compared to the reference base where:
value
: the integer or decimal value for the low/high boundaryunit
:percent
system
:http://unitsofmeasure.org
code
:%
a SimpleQuantity for a relative change compared to the reference base where:
value
: the integer or decimal value for the low/high boundaryunit
:<same unit as measured value is expressed with>
system
:<same system as measured value is expressed with>
code
:<same code as measured value is expressed with>
Info |
---|
A relative reference measurement range states a change relative to some reference base. This way, a measured value can be compared to a reference base taking the relative reference measurement range into account. There are several ways to find a reference base:
|
Info |
The Goal resource described in the following is available as of eHealth Infrastructure Release 7. For now, it can be accessed as Goal. |
To add a designated reference base, create a FHIR Goal resource with:
status
:accepted
description
: A Coding with:code
:reference-value
system
:http://ehealth.sundhed.dk/cs/goal-description
subject
: Reference to PatientstartDate
: A datetime representing the starting point at which this reference base is applicable.target.measure
: Coding (the same ascode
in the ServiceRequest as the relative reference measurement range is defined in)target.detailQuantity
: A Quantity containing the reference base valueaddresses
: Reference to ServiceRequest (the same ServiceRequest as the relative reference measurement range is defined in)addresses
: Reference to the Observation from which the value intarget.detailQuantity
has been copied (if that is the case)
...
CarePlan.goal
Over time, the relative reference measurement ranges can change and new Goal resources can be created and added to the CarePlan.
Info |
---|
Example use of relative reference measurement range stated in percent point. A measurement of oxygen saturation is submitted as an Observation where the
A red alarm relative reference measurement range given as zero to -5 percent point is stated as:
A reference base could be defined as a Goal where
Because the measured value 88% is within a range of [-5; -2] percent point relative to the reference base value 92%, this would constitute a value which lies within the red alarm relative reference measurement range. If the designated reference base was instead 95%, the measured value of 88% would not be within the red alarm relative reference range.measurement range. |
Expressing Exclusiveness of Measurement Range Boundaries
The Common workplace UI solution supports inclusive (>=, <=) and exclusive (<, >) range even though the underlying FHIR model only supports inclusive representation.
The exclusive ranges are handled by having seven decimals in the FHIR model. This is done by adding or subtracting 0,0000001 depending on <, > and sign (+, -).
As a result, the UI solutions must implement logic for transforming in both directions (read and write).
Info |
---|
The FHIR model only supports inclusive representation. To support exclusivity it has been decided to use the seventh decimal for determining exclusiveness. Precision is supported up to 6 decimals as the seventh is used for comparator logic. |
Note |
---|
It is recommended that UI solutions to implement the same solution for consistency. |
Algorithm
Read scenario:
If upper bound
and a positive number then add 0,0000001 if the seventh decimal is 9. Comparator type is < less than.
and a negative number then add 0,0000001 if the seventh decimal is 1. Comparator type is < less than.
if not matching the above scenarios then use the original value. Comparator type is <= less than Or Equal.
if lower bound
and a positive number then subtract 0,0000001 if the seventh decimal is 1. Comparator type is > larger than.
and a negative number then subtract 0,0000001 if the seventh decimal is 9. Comparator type is > larger than.
if not matching the above scenarios then use the original value. Comparator type is >= larger than Or Equal.
Write scenario:
if the comparator type is < less than, then subtract 0,0000001.
if the comparator type is > larger than, then add 0,0000001.
Info |
---|
Algorithm example 1: Positive range Range UI: > 1,4578 to < 2,7858 Write range: lower bound: 1,4578 + 0,0000001 = 1,4578001 (when comparator type is > larger than, then add 0,0000001) Upper bound: 2,7858 - 0,0000001 = 2,7857999 (when comparator type is < less than, then subtract 0,0000001) Read range from FHIR: lower bound: 1,4578001 - 0,0000001 = 1,4578 and comparator type > larger than. (When lower bound and a positive number then subtract 0,0000001 if the seventh decimal is 1) Upper bound: 2,7857999 + 0,0000001 = 2,7858 and comparator type < less than. (When the upper bound and a positive number then add 0,0000001 if the seventh decimal is 9) |
Info |
---|
Algorithm example 2: Positive range Range UI: >= 1,4578 to <= 2,7858 Write range: lower bound: 1,4578 (when comparator type is not < less or > larger than, then use value as is) Upper bound: 2,7858 (when comparator type is not < less or > larger than, then use value as is) Read range from FHIR: lower bound: 1,4578 and comparator type >= equal or larger than. (when not matching the two first scenarios for the lower bound then use the original value) Upper bound: 2,7858 and comparator type <= equal or less than. (when not matching the two first scenarios for the upper bound then use the original value) |
Info |
---|
Algorithm example 3: Negative range Range UI: > -7,4365 to < -3,4520 Write range: lower bound: -7,4365 + 0,0000001 = -7,4364999 (when comparator type is > larger than, then add 0,0000001) Upper bound: -3,4520 - 0,0000001 = -3,4520001 (when comparator type is < less than, then subtract 0,0000001) Read range from FHIR: lower bound: -7,4364999 - 0,0000001 = -7,4365 (When lower bound and a negative number then subtract 0,0000001 if the seventh decimal is 9) Upper bound: -3,4520001 + 0,0000001 = -3,4520 (When upper bound and a negative number then add 0,0000001 if the seventh decimal is 1) |