Docs
Overview
Ambrosia BluCon has provided the OAuth 2.0 Authentication and HIPAA Authorization, where Developers can leverage this platform to create novel applications with BluCon data, including estimated glucose values and notes. The BluCon API is RESTful and utilizes the OAuth 2.0 standard for authentication, allowing individuals to securely authorize their BluCon data for use in third-party applications. To Build any application using the Ambrosia's BluCon API, the application must have to register first for getting its client_id and client_secret.
Resource
"https://developer.ambrosiasys.com/app"
Authentication
The BluCon API uses OAuth 2.0 to enable client applications to make requests on behalf of users. Users can authenticate themselves with BluCon and do not enter their login information into the client application directly. Users also authorize a specific scope of data that may be transferred from BluCon to the client application and can revoke the access at any time.
This walkthrough goes over the basics of the authentication process as it applies to the BluCon API but is not a comprehensive introduction to OAuth 2.0. The following references give elaborated data on the principles and implementation of OAuth 2.0:
Step One: User and Application Authentication
All applications have credentials that change them to create requests. To obtain these credentials, register as a developer and build an application. New credentials generated for every app and may be found within the app management section.
Resource
"GET /authentication"
Query Parameters
An application's client_secret should never be shared or distributed. If it's compromised, a replacement one could also be generated within the app management section, which is able to right away invalidate the previous one.
Parameter |
Description |
---|---|
|
The unique ID for the client application—similar to a username |
|
The secret for the client application—similar to a password |
|
The OAuth 2.0 response type; currently, |
|
The redirect URI associated with the application; must match the one specified in the app management section |
|
This is the LinkBluCon patient email_id. This will be entered by user in application. |
|
This is the LinkBluCon patient password. This will be entered by user in application. |
The Content-Type
field within the header must be set to application/x-www-form-urlencoded
Here's an example of obtaining an access_token
using step one, which used for further HIPAA Authentication.
curl -X GET \
'https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}' \
-H 'cache-control: no-cache'
var client = new RestClient("https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
IRestResponse response = client.Execute(request);
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}")
.get()
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
var settings = {
"async": true,
"crossDomain": true,
"url": "https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}",
"method": "GET",
"headers": {
"cache-control": "no-cache",
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
var http = require("http");
var options = {
"method": "GET",
"hostname": "https://developer.ambrosiasys.com",
"path": "/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}",
"headers": {
"cache-control": "no-cache",
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
$request = new HttpRequest();
$request->setUrl('https://developer.ambrosiasys.com/app/authentication');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'client_id' => '{your_client_id}',
'client_secret' => '{your_client_secret}',
'response_type' => 'code',
'redirect_uri' => '{your_redirect_uri}',
'email' => '{user_email_id}',
'password' => '{user_password}'
));
$request->setHeaders(array(
'cache-control' => 'no-cache'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
import Foundation
let headers = [
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
require 'uri'
require 'net/http'
url = URI("https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
import Foundation
let headers = [
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://developer.ambrosiasys.com/app/authentication?client_id={your_client_id}&client_secret={your_client_secret}&response_type=code&redirect_uri={your_redirect_uri}&email={user_email_id}&password={user_password}")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
The response will look like:
{ "response_type": "authorization_code", "scope": "offline", "access_token": "{your_access_token}" }
The application enable the option for Hipaa Authrization.
Step Two: User HIPAA Authorization
On clicking of Hipaa Authorization button will allow you for second stage Authorization.
Resource
"GET /user_authorization"
Query Parameters
The query parameters are described below:
Parameter |
Description |
---|---|
|
To obtain an access token using an authorization code, use a grant type of |
|
The |
|
This is the LinkBluCon patient Full Name. This will be entered by user in application. |
See the Authorization Request section of the RFC 6749 OAuth 2.0 Authorization Framework standard for more details on these parameters.
Upon successful authentication and authorization by the user, an HTTP 302 (redirect) will be returned, and the authorization_code
will be get in your response. Extract the access_token
from the response for use in the reading and notes API call. Note that the access_token
is single-use and expires after another login. The optional state
parameter will only be returned if it was used in further functionality.
If the user denies authotization in Step Two, then the redirect_uri
will be redirected on Authentication step and It will not allow you for calling reading and notes API. If user credentials are not valid than response is appended with ?error=access_denied
instead of the authorization code.
The access_token
acquired in Step one can now be exchanged for an access_token
and a refresh_token
. The endpoint used this access_token for the API call.
The Content-Type
field in the header must be set to application/x-www-form-urlencoded
Here's an example of obtaining an access_token
using the step Two, which used for further calling Reading and Notes API.
curl -X GET \
'https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}' \
-H 'cache-control: no-cache'
var client = new RestClient("https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
IRestResponse response = client.Execute(request);
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}")
.get()
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
var settings = {
"async": true,
"crossDomain": true,
"url": "https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}",
"method": "GET",
"headers": {
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
var http = require("http");
var options = {
"method": "GET",
"hostname": "https://developer.ambrosiasys.com",
"path": "/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}",
"headers": {
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
$request = new HttpRequest();
$request->setUrl('https://developer.ambrosiasys.com/app/user_authorization');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'grant_type' => 'access_token',
'code' => '{your_access_token}',
'signature' => '{user_signature}'
));
$request->setHeaders(array(
'cache-control' => 'no-cache'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
import http.client
conn = http.client.HTTPConnection("https://developer.ambrosiasys.com")
headers = {
'cache-control': "no-cache"
}
conn.request("GET", "/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
url = URI("https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
import Foundation
let headers = [
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://developer.ambrosiasys.com/app/user_authorization?grant_type=access_token&code={your_access_token}&signature={user_signature}")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
The response will look like:
{ "access_token": "{your_access_token}", "token_type": "Bearer", "expires_in": 7200, "grant_type": "access_token" }
The expires_in
value is expressed in seconds.
GET /readings
The /readings
endpoint enables retrieval of a user's glucose information, including reading time, reading, and reading unit. The response is an array of all glucose data which user has retrieved by selecting the begin time and end time of the specified time window with the access_token of second stage HIPAA authorization.
Resource
"GET /readings"
Query Parameters
These query parameters specify the time window for the requested data; each are needed. Also required the access_token which is retrieved from the second stage HIPAA Authorization.
Name |
Type |
Description |
---|---|---|
|
DateTime |
Beginning of the time window |
|
DateTime |
End of the time window |
The Content-Type
field in the header must be set to application/x-www-form-urlencoded
Here's an example of obtaining an access_token
using step one, which used for further HIPAA Authentication.
curl -X GET \
'https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625' \
-H 'authorization: {your_access_token}' \
-H 'cache-control: no-cache'
var client = new RestClient("https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "{your_access_token}");
IRestResponse response = client.Execute(request);
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "{your_access_token}")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625")
.get()
.addHeader("authorization", "{your_access_token}")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
var settings = {
"async": true,
"crossDomain": true,
"url": "https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625",
"method": "GET",
"headers": {
"authorization": "{your_access_token}",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
var http = require("http");
var options = {
"method": "GET",
"hostname": "https://developer.ambrosiasys.com",
"path": "/app/readings?begin_date=1536411001423&end_date=1536413701625",
"headers": {
"authorization": "{your_access_token}",
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
$request = new HttpRequest();
$request->setUrl('https://developer.ambrosiasys.com/app/readings');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'begin_date' => '1536411001423',
'end_date' => '1536413701625'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => '{your_access_token}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
import http.client
conn = http.client.HTTPConnection("https://developer.ambrosiasys.com")
headers = {
'authorization': "{your_access_token}",
'cache-control': "no-cache"
}
conn.request("GET", "/app/readings?begin_date=1536411001423&end_date=1536413701625", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
url = URI("https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["authorization"] = '{your_access_token}'
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
import Foundation
let headers = [
"authorization": "{your_access_token}",
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://developer.ambrosiasys.com/app/readings?begin_date=1536411001423&end_date=1536413701625")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
The response will look like:
{ "readings": [ { "reading": "73", "reading_time": "1536411301423" }, { "reading": "73", "reading_time": "1536411601422" }, { "reading": "73", "reading_time": "1536411901622" }, { "reading": "73", "reading_time": "1536412201627" }, { "reading": "73", "reading_time": "1536412501824" }, { "reading": "73", "reading_time": "1536412801421" }, { "reading": "73", "reading_time": "1536413101623" }, { "reading": "73", "reading_time": "1536413401622" } ], "count": 8, "unit": "mmol/L" }
Response Fields
Response
array fields are as follows
Name |
Type |
Description |
---|---|---|
|
String |
Glucose value of the patient. |
|
Long() |
Reading time of particular glucose. It will be in milliseconds |
|
String |
Reading unit such as mgdl or mmol. It should be based on patient settings. |
GET /notes
The /notes
endpoint enables retrieval of a user's Notes information, such as food, blood glucose, medicine, RAI, LAI and exercise type of data which user has stored as notes. The response is an array of all the notes data which user has retrieved by selecting the begin time and end time of the specified time window with the access_token of second stage Hippa authorization.
Resource
"GET /notes"
Query Parameters
These query parameters specify the time window for the requested data; each is needed. Also required the access_token which is retrieved from the second stage HIPAA Authorization.
Name |
Type |
Description |
---|---|---|
|
DateTime |
Beginning of the time window |
|
DateTime |
End of the time window |
The Content-Type
field within the header must be set to application/x-www-form-urlencoded
Here's an example of obtaining an access_token
using step one, which used for further HIPAA Authentication.
curl -X GET \
'https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239' \
-H 'authorization: {your_access_token}' \
-H 'cache-control: no-cache'
var client = new RestClient("https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "{your_access_token}");
IRestResponse response = client.Execute(request);
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "{your_access_token}")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239")
.get()
.addHeader("authorization", "{your_access_token}")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
var settings = {
"async": true,
"crossDomain": true,
"url": "https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239",
"method": "GET",
"headers": {
"authorization": "{your_access_token}",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
var http = require("http");
var options = {
"method": "GET",
"hostname": "https://developer.ambrosiasys.com",
"path": "/app/notes?begin_date=1530616257239&end_date=1530616257239",
"headers": {
"authorization": "{your_access_token}",
"cache-control": "no-cache",
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
$request = new HttpRequest();
$request->setUrl('https://developer.ambrosiasys.com/app/notes');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'begin_date' => '1530616257239',
'end_date' => '1530616257239'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => '{your_access_token}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
import http.client
conn = http.client.HTTPConnection("https://developer.ambrosiasys.com")
headers = {
'authorization': "{your_access_token}",
'cache-control': "no-cache"
}
conn.request("GET", "/app/notes?begin_date=1530616257239&end_date=1530616257239", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
url = URI("https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["authorization"] = '{your_access_token}'
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
import Foundation
let headers = [
"authorization": "{your_access_token}",
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://developer.ambrosiasys.com/app/notes?begin_date=1530616257239&end_date=1530616257239")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
The response will look like:
{ "notes": [ { "note": "4", "blood_glucose": "0", "unit": "mg/dL", "food": "0", "carbs_servings": "0", "RAI": "0", "LAI": "0", "excercise": "0", "exc_time": null, "comments": "test", "date_time": "1526016967065", "medicine": null }, { "note": "3", "blood_glucose": "0", "unit": "mg/dL", "food": "0", "carbs_servings": "0", "RAI": "0", "LAI": "0", "excercise": "0", "exc_time": "8:0", "comments": null, "date_time": "1526017219236", "medicine": null }, { "note": "5", "blood_glucose": "60", "unit": "mg/dL", "food": "0", "carbs_servings": "0", "RAI": "0", "LAI": "0", "excercise": "0", "exc_time": null, "comments": null, "date_time": "1526017235614", "medicine": null }, { "note": "1", "blood_glucose": "0", "unit": "mg/dL", "food": "0", "carbs_servings": "0", "RAI": "96", "LAI": "0", "excercise": "0", "exc_time": null, "comments": null, "date_time": "1526017243886", "medicine": null }, { "note": "2", "blood_glucose": "0", "unit": "mg/dL", "food": "0", "carbs_servings": "0", "RAI": "0", "LAI": "6", "excercise": "0", "exc_time": null, "comments": null, "date_time": "1526017256421", "medicine": null }, { "note": "0", "blood_glucose": "0", "unit": "", "food": "1", "carbs_servings": "23", "RAI": "0", "LAI": "0", "excercise": "0", "exc_time": null, "comments": null, "date_time": "1528278241640", "medicine": null }, .... ], "count": 8 }
Response Fields
Response
array fields are as follows
Name |
Type |
Description |
---|---|---|
|
String |
It is type of note. If it value is 0 then it is the food type of note, 1 for RAI, 2 for LAI, 3 for for excercise, 4 for comments, 5 for blood glucose and 6 for medicine. |
|
String |
It is the value of blood glucose. |
|
String |
It is the value of Glucose Unit(mgdl or mmol). |
|
String |
It is the type of food. It it is breakfast then 0, 1 for lunch, 2 for snacks, 3 for dinner. |
|
String |
It is the serving per plate or gram per plate. Define how much food you have take in terms of gram and servings. |
|
String |
It defines Insulin dose. |
|
String |
It defines Insulin dose. |
|
String |
It defines your exercise efficiency as high, low, or medium. |
|
String |
Defines the how much time have you done the exercise. |
|
String |
It defines the user added some extra or bookmark type of information. |
|
Long |
It defined the time of crated note(in milliseconds). |
|
String |
It defines the user added some medicine information, if he/she takes other than diabitic medicine. |