Skip to content

OpenVitals v2.14.3

Choose a tag to compare

@github-actions github-actions released this 17 Oct 09:37
· 1511 commits to main since this release

Released 2026-10-17.

This release brings lab results from providers that still serve the older FHIR DSTU2 format, LabCorp among them, into Health Connect: their records are converted on import, family names included, and the results held inside a diagnostic report are imported instead of being dropped with it. The activity form offers every exercise type Health Connect knows, and a FIT file's yoga, pilates or climbing session keeps its sport. The cycle screen reaches the whole recorded history, and the CSV import counts rows, records and journal days apart.

Added

  • Every exercise type on the activity form. The form listed 22 types, so a yoga session could be shown but not created. It now lists every session type Health Connect has, each with the fields that fit it: a route sport with GPS and distance, a machine or pool with a distance and no route, or a timed session with an optional heart rate strap. A FIT file names the sport too: yoga, pilates, stretching, breathwork, elliptical, stair climbing, pool and open water swimming, the racket and ball sports, hockey, scuba diving, HIIT, martial arts, dancing, rock climbing and ice skating import as themselves instead of "Other workout".
  • The whole cycle history. The cycle screen read the last eighteen months, so the history, its detail sheet and the long-term statistics stopped at about nineteen cycles however far back the records went. It now reads the whole recorded history. The history card shows the newest twelve cycles and Load 10 more reveals older ones, without rescaling the bars. The prediction still uses only the last six cycles.
  • Where the maximum heart rate comes from. The cardio load explanation gives Banister's weighting for men and for women, and says where the maximum heart rate comes from: the body profile, else the highest heart rate measured when that is high enough to count, else the age formula, Gulati's for women and Tanaka's for everyone else. Both papers are linked there and from Body Energy's sources. Contributed by Ludwig Ettner.

Changed

  • CSV import results as three tallies. "Written 754. Already present 69. Rejected 1." read like a sum that never matched the rows read. The result card now keeps three tallies apart: the rows of the file, which add up (read, imported, rejected, nothing to import); the Health Connect records written, and how many of those replaced an earlier import; and, for a drip export, the cycle journal days with an entry and how many changed on this phone. When Health Connect could not be read for a record's type before writing, the card counts those records apart and says the replaced count is a lower bound. The report file lays out the same totals.
  • The age estimate of the maximum heart rate stands on its own. With an age on the body profile and no measured maximum high enough to count, the estimate is now the age formula alone. It used to be raised to the highest heart rate measured plus 10, or the resting heart rate plus 70, whichever was higher. Cardio load and intensity minutes follow.

Fixed

  • Lab results in the older FHIR format. LabCorp still serves FHIR DSTU2, and CommonHealth passes it on unchanged. A plain FHIR file does not say its version, so those records went to Health Connect as R4 and were refused ("Expected array for field: category"). The importer now recognises a DSTU2 record by its shape and converts it to R4, encounters and locations included; a record that reads the same in both versions is left alone.
  • Family names in DSTU2 records. DSTU2 holds family names as a list and R4 as one string, so Health Connect refused LabCorp's patient records. The converter joined the list in a patient's and a practitioner's names only; it now does so in every name, a contact's included.
  • Results inside a diagnostic report. Health Connect stores the results of a report, not the report. A report was left out whole, the results it contained with it, and a file of reports said it held nothing Health Connect stores. Every result a report contains is now imported as a record of its own. It takes the report's patient, visit, time and performer where it has none, and the laboratory category when the report comes from a lab section, so Health Connect can sort LabCorp's results, whose test codes are not LOINC. A file holding only reports whose results are elsewhere now says to import the Observation files instead.
  • drip import accounts for every row. A temperature, mucus or cervix observation marked excluded in drip is listed under the rejections as "Excluded in the source app", with the values it held, instead of disappearing without a word. A day with only journal content, a day cleared in drip and a day whose mucus says "nothing" are counted, and a note with quotes in it reads as typed.
  • Translations. The last English words left in the German, French, Italian and Polish translations are translated.

The app keeps the same package name and signing certificate, so this installs as a normal update.

Distribution flow:

  • GitHub release with signed APK, signed debug APK, and signed Android App Bundle assets.
  • Google Play update to follow, once 2.13.0 has cleared Play review.