Skip to content

Releases: openmhealth/shimmer

v0.3.0

11 Sep 15:54
Compare
Choose a tag to compare

This release does a few great things.

  • It adds support for new APIs, namely Google Fit and Misfit.
  • It overhauls the logic that maps third-party data to an Open mHealth format in order to simplify testing and produce data points complete with metadata.
  • It leverages new Docker tooling to make deployments simpler and enable deployments to many cloud platforms like AWS, Azure, and Google Compute Engine.

To prepare for this release, we painstakingly reviewed the documentation of all third-party APIs and peppered them with questions. This knowledge helped us ensure that the data we convert matches Open mHealth semantics. It also allowed us to expose more data from the same endpoints. In our upcoming releases, we'll be building on this knowledge to support more advanced features.

Here are the full release notes.

Highlights

  • Adds shims to support the Google Fit and Misfit APIs.
  • Exposes more data from existing shims, including calories and body mass index.
  • Refactors shims to expose full data points with metadata, not just measures.
  • Separates mapping logic from API logic, allowing the conversion of third-party data to be tested in isolation.
  • Rewrites the mappers to use the Java schema SDK.
  • Creates a data point mapper hierarchy to simplify writing mapping logic for new and existing APIs.
  • Adds hundreds of unit tests to check that mappers produce correct data in an Open mHealth compliant format.
  • Migrates to Java 8 and transitions time classes from Joda to Java 8.

Devops improvements

  • Adds Docker Compose support to simplify deployments.
  • Adds Docker Machine support to enable deployments to multiple cloud platforms including AWS, Azure, GCE, Rackspace, and more.
  • Reworks installation instructions to leverage Docker Compose and Docker Machine.
  • Adds shell scripts to simplify building and running both natively and with Docker Compose.
  • Switches to TestNG for parameterized unit test support.
  • Sets up TravisCI for continuous integration.
  • Switches from Maven Central to JCenter for faster builds.
  • Upgrades to Gradle 2.5.
  • Bumps all dependencies to latest stable releases.

APIs

  • Adds support for Google Fit.
  • Add support for Misfit.
  • Disables support for HealthVault. The future of HealthVault is currently unclear with the advent of the Microsoft Health API.
    We decided to hold off on researching the API, refactoring the shim to use the schema SDK, and implementing the mapper architecture until HealthVault's viability is confirmed to avoid throwaway work.
  • Adds Markdown files for each API with information gathered from our research, to serve as a reference and knowledge base.
    • These files are still in draft form, but will become more polished over time.

Fitbit

  • Removes the heart endpoint because heart rate data can now only be retrieved using OAuth 2.0 authentication, which is still in beta.
  • Removes the blood_glucose and blood_pressure endpoints because they have been deprecated by Fitbit.
  • Adds endpoints for body_mass_index and sleep.
  • Changes the steps endpoint to retrieve daily step counts instead of intraday step counts because the time series endpoints on the Fitbit API are currently in flux.

Google Fit

  • Adds endpoints for activity, body_weight, body_height, step_count, calories_burned, heart_rate.

Jawbone

  • Separates the body endpoint into weight and body_mass_index endpoints.
  • Renames the moves endpoint to steps to reflect the data that is retrieved from the endpoint and for consistency with other APIs.
  • Renames the workouts endpoint to activity to reflect the data that is retrieved from the endpoint and for consistency with other APIs.
  • Adds a heart_rate endpoint.

Misfit

  • Adds endpoints for steps, sleep, and activities.

Runkeeper

  • Removes the weight endpoint due to a lack of time zone information in the Runkeeper response.
  • Adds a calories endpoint that retrieves calories burned data.
  • Updates the shim to only retrieve data created by the Runkeeper platform instead of any data on their HealthGraph API, which may come from 3rd parties and be missing time zone information.

Withings

  • Separates the body endpoint into endpoints for individual measures in Withings responses, namely
    • a blood_pressure endpoint.
    • a body_height endpoint.
    • a body_weight endpoint.
    • a heart_rate endpoint.
  • Renames the intraday endpoint to steps to reflect the data that it retrieves and to capture the nuance that steps can be retrieved at different granularities depending on the access level of the client's API credentials.
  • Adds a calories endpoint that retrieves calories burned data.

Bug fixes

  • Fixes the normalize parameter of the API and turns it on by default.
  • Adopts Spring's UriComponentsBuilder for URI request creation to prevent URL encoding bugs.
  • Fixes a number of small issues.

v0.2.2

14 Dec 23:23
Compare
Choose a tag to compare
  • Removed Maven build, leaving Gradle as the resource server build system. (#15)
  • Updated DTOs to better reflect Open mHealth schemas, specifically the renaming of the TimeInterval fields start_time and end_time to start_date_time and end_date_time, respectively.

Withings

  • Filtered out awake state sleep data.
  • Filtered out goal data.

Fitbit

  • Added support for the public API, in addition to the partner API. (#11,#12)
    • Intraday step data is retrieved from the partner API, daily aggregates are retrieved from the public API.
  • Optimised weight data retrieval to use a single API call instead of an API call per day.

RunKeeper

  • Read newly added timezone data from summary API calls. (#3)

v0.2.1

20 Sep 17:26
Compare
Choose a tag to compare
  • Fixed typos in HealthVault XPath.
  • Improved timestamp handling and re-enabled ignored unit tests.

v0.2.0

18 Sep 22:33
Compare
Choose a tag to compare
  • Added a UI to make shim server requests and view responses, and to configure client IDs and secrets.
  • Added a binary Dockerfile for faster deployment.

v0.1.1

10 Sep 14:50
Compare
Choose a tag to compare
  • Added Docker support.
  • Improved documentation.

v0.1.0

09 Sep 12:29
Compare
Choose a tag to compare
  • Initial public release.