Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One-sided ReferenceRange #343

Open
ielis opened this issue Aug 1, 2022 · 3 comments
Open

One-sided ReferenceRange #343

ielis opened this issue Aug 1, 2022 · 3 comments

Comments

@ielis
Copy link
Contributor

ielis commented Aug 1, 2022

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 NaNs, or even infinities?

@pnrobinson
Copy link
Collaborator

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.

@julesjacobsen
Copy link
Collaborator

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

@ielis
Copy link
Contributor Author

ielis commented Aug 3, 2022

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 NaNs and infinities in the reference documentation. The documentation serves as an anchor for computational people, who should be concerned about NaNs 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! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants