Last updated:
0 purchases
openmhealth schemas
Open mHealth Schemas for Flutter #
A Flutter implementation of the Open mHealth schemas.
The original Java schemas are available on the Open mHealth GitHub.
Disclaimer: Note that not all OMH schemas are implemented yet. This is work in progress.
Usage #
To use this plugin, add openmhealth_schemas as a dependency in your pubspec.yaml file.
Example #
The following example shows how to use the OMH Flutter classes to model OMH measures, convert these to JSON, and read them back from JSON.
Creating OMH Measures as Dart Objects #
First, create an OMH BloodPressure measure similar to the OMH BloodPressure example.
BloodPressure bp = BloodPressure(
systolicBloodPressure: SystolicBloodPressure(
unit: BloodPressureUnit.MM_OF_MERCURY, value: 160.0),
diastolicBloodPressure: DiastolicBloodPressure(
unit: BloodPressureUnit.MM_OF_MERCURY, value: 80.0),
positionDuringMeasurement: PositionDuringMeasurement.SITTING);
DateTime start = new DateTime(2016, 2, 5);
DateTime end = new DateTime(2016, 6, 5);
TimeInterval time = new TimeInterval(startDateTime: start, endDateTime: end);
bp.effectiveTimeFrame = new TimeFrame(timeInterval: time);
bp.descriptiveStatistic = DescriptiveStatistic.MAXIMUM;
copied to clipboard
This can now be converted to JSON.
final bp_json = JsonEncoder.withIndent(' ').convert(bp);
copied to clipboard
which should produce the following JSON
{
"effective_time_frame": {
"time_interval": {
"start_date_time": "2016-02-05T00:00:00.000",
"end_date_time": "2016-06-05T00:00:00.000"
}
},
"descriptive_statistic": "maximum",
"systolic_blood_pressure": {
"unit": "mmHg",
"value": 160.0
},
"diastolic_blood_pressure": {
"unit": "mmHg",
"value": 60.0
},
"position_during_measurement": "sitting"
}
copied to clipboard
Similarly, a OMH Geoposition similar to the OMH Geoposition example can be created
Geoposition position = Geoposition(
longitude: PlaneAngleUnitValue(
unit: PlaneAngleUnit.DEGREE_OF_ARC, value: 40.059692382),
latitude: PlaneAngleUnitValue(
unit: PlaneAngleUnit.DEGREE_OF_ARC, value: -105.21440124511719),
elevation: LengthUnitValue((LengthUnit.METER), 1548.5));
position.positioningSystem = PositioningSystem.GPS;
position.effectiveTimeFrame = new TimeFrame(dateTime: DateTime.now());
copied to clipboard
This should give the following JSON OMH measure.
{
"effective_time_frame": {
"date_time": "2018-08-24T11:08:33.772301"
},
"latitude": {
"unit": "deg",
"value": 40.059692382
},
"longitude": {
"unit": "deg",
"value": -105.21440124511719
},
"elevation": {
"unit": "m",
"value": 1548.5
},
"positioning_system": "GPS"
}
copied to clipboard
Reading OMH JSON Schemas #
If you have a OMH JSON measure (in this case a PhysicalActivity) you can instantiate a Dart object from it by;
final activity = PhysicalActivity.fromJson(json.decode(json_activity_string) as Map<String, dynamic>);
copied to clipboard
Creating and Uploading OMH Data Points #
An OMH DataPoint for the above BloodPressure measure can be created by;
DataPoint dp = new DataPoint(body: bp);
copied to clipboard
which can be converted (using JsonEncoder.withIndent(' ').convert(dp)) into the following OMH JSON data point with its header and body.
{
"header": {
"id": "747cf980-9620-11e8-afe9-9bf5923b2a8c",
"creation_date_time": "2018-08-24T11:31:18.681644",
"schema_id": {
"namespace": "omh",
"name": "blood-pressure",
"version": "1.0"
}
},
"body": {
"effective_time_frame": {
"time_interval": {
"start_date_time": "2016-02-05T00:00:00.000",
"end_date_time": "2016-06-05T00:00:00.000"
}
},
"descriptive_statistic": "maximum",
"systolic_blood_pressure": {
"unit": "mmHg",
"value": 160.0
},
"diastolic_blood_pressure": {
"unit": "mmHg",
"value": 60.0
},
"position_during_measurement": "sitting"
}
}
copied to clipboard
Uploading to OMH Data Storage Unit #
Uploading to a OMH Data Storage Unit (DSU) (like the omh-dsu-ri) is not implemented yet.
Getting Started with Flutter #
For help getting started with Flutter, view the online documentation.
For help on editing package code, view the documentation.
Features and bugs #
Please file feature requests and bug reports at the issue tracker.
License #
This software is copyright (c) 2018-2021 Copenhagen Center for Health Technology (CACHET) at the Technical University of Denmark (DTU).
This software is made available 'as-is' in a MIT license.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.