phenopacket-schema
phenopacket-schema copied to clipboard
One-sided `ReferenceRange`
Dear Phenopacket team, I'd like to ask a question regarding ReferenceRange
.
The ReferenceRange
requires both low
and high
to be specified, both fields are mandatory. However, sometimes it may be problematic to determine one of the bounds for certain quantities while it may be desirable to use the other bound. Say, blood pressure. I'm not an MD, but I'm still not sure what the low
threshold for systolic blood pressure is. This is less of an issue for high
threshold, where one of several guidelines can be adopted.
How should this situation be handled? A tempting way is to set low=NaN
, which is a valid double
and, therefore, meets the current specs. The protobuf library does not mind either. However, is this an idiomatic use of ReferenceRange
?
Does the Phenopacket Schema expect both low
and high
to be finite numbers? Is it permissible to use NaN
s, or even infinities?
For systolic BP, the most common problem is hypertension and so people often just provide the upper limit. However, having less than 90 mmHG is considered abnormal as well. I doubt that there are any examples of clinical measurements that truly have only one bound. Another example is that for some metabolites that are normally not present, only an upper bound is given, but the reference range could then have 0-x, since having a "negative concentration" is also abnormal... NaN is a valid value for a Java Double, but is not a valid real number, and I do not think that it should be allowed.
Here is a nice explanation of a reference range for blood pressure, courtesy of the NHS:
As a general guide:
ideal blood pressure is considered to be between 90/60mmHg and 120/80mmHg high blood pressure is considered to be 140/90mmHg or higher low blood pressure is considered to be 90/60mmHg or lower
Hi, thanks for the explanation, this is useful for both prongs of my question! After a second thought, I agree that a reference range, if present, should have both bounds. Then, this becomes a possible validation check.
I think it would also be useful to comment on permissibility of NaN
s and infinities in the reference documentation. The documentation serves as an anchor for computational people, who should be concerned about NaN
s and infinities everytime they see a double
value.
I found only 3 double
fields in the Phenopacket Schema, all of them in measurement.proto
:
-
Quantity
-
value
-
-
ReferenceRange
-
low
-
high
-
I can open a PR if you'd like me to.
Thanks again! :)