User biomarkers
A user biomarker is one value of a biomarker, read from the participant's phone health store. The apps record steps, heart rate, resting heart rate, heart-rate variability (SDNN on iPhone, RMSSD on Android: different measures, never comparable, both in milliseconds), sleep duration, flights climbed, body mass and active energy, once the participant has allowed it. A tenant's build of the apps can be made to record none at all.
Sync
The phone is the source of truth for what it records; the server merges and never overwrites.
- Readings are stored on the phone first and sent up in batches of at most 200
(
syncUserBiomarkers), on opening the app (after 15 minutes since the last sync), after a reading is stored, and on a push. - Every reading carries an id the phone generates, and a resend is an upsert, so sending the same batch twice changes nothing.
- Readings are refused with
consent_requireduntil the participant has consented. - Each reading arriving runs the participant's journeys, so a condition on a measure is looked at again.
A blood pressure typed into a blood_pressure atom is a response, not a biomarker.
Staff reading a participant's biomarkers need the participant's consent to stand, and each read is written to the audit trail.