Data models
Kligo's API uses OpenMHealth as a standard data format. In this page you can find examples of data points returned from every devices compatible with Kligo.
Kligo adds some properties to OpenMHealth standard such as archived
and consultationId
consultationId
: This parameter is defined by Kligo. It is used to identify the consultation. When the user starts an encounter then a consultationId is generated. Each data point will inherit the same consultationId until the user starts a new consultation.
archived
: This boolean is set to true once the consultation is over. Therefore the user has started a new consultation.
In future releases of Kligo, we will expose the data using FHIR.
Data point examples
Kligo's datapoints override Open mHealth default measurement.
Blood pressure monitor
Here is a sample heart rate data point in JSON delivered by Kligo:
Copy {
"deviceId" : "5bcde9cc1b23d30019e47f7f" ,
"deviceType" : "blood_pressure_monitor" ,
"consultationId" : "0fecc0fc-9c07-4576-8917-549c5aec3e9b" ,
"id" : "c79d09fa-2cd4-4139-8f3b-aa947fb66fee" ,
"value" : 66 ,
"unit" : "mmHg" ,
"type" : "diastolic_blood_pressure" ,
"archived" : false ,
"timestamp" : 1544799982719
} ,
{
"deviceId" : "5bcde9cc1b23d30019e47f7f" ,
"deviceType" : "blood_pressure_monitor" ,
"consultationId" : "0fecc0fc-9c07-4576-8917-549c5aec3e9b" ,
"id" : "36943935-38a6-47cc-b5e4-d8245eba141d" ,
"value" : 122 ,
"unit" : "mmHg" ,
"type" : "systolic_blood_pressure" ,
"archived" : false ,
"timestamp" : 1544800685145
} ,
{
"deviceId" : "5bcde9cc1b23d30019e47f7f" ,
"deviceType" : "blood_pressure_monitor" ,
"consultationId" : "0fecc0fc-9c07-4576-8917-549c5aec3e9b" ,
"id" : "868b215d-4597-40bb-9109-de3d07b1c74f" , "value" : 70 ,
"unit" : "bpm" ,
"type" : "heart_rate" ,
"archived" : false ,
"timestamp" : 1544800685168
} ,
For instance, heart rate measurements can either be made by blood pressure monitors or oxymeters. If the user wants to favor one device over another one, delivering device types allows your software to filter out data points.
Weight scale
Copy {
"deviceId" : "59fc6fcc0639bb000fe98d23" ,
"deviceType" : "body_scale" ,
"consultationId" : "224e2420-55b3-4676-bff8-58f20e5d7f3f" ,
"id" : "1b749937-689e-4bd2-a1d4-fc561baa22a7" ,
"value" : 78.2 ,
"unit" : "kg" ,
"type" : "body_weight" ,
"archived" : false ,
"timestamp" : 1537286406129
}
Copy {
"deviceId" : "59fc6fcc0639bb000fe98d23" ,
"deviceType" : "body_scale" ,
"consultationId" : "224e2420-55b3-4676-bff8-58f20e5d7f3f" ,
"id" : "1b749937-689e-4bd2-a1d4-fc561baa22a7" ,
"value" : 78.2 ,
"unit" : "kg" ,
"type" : "body_weight" ,
"archived" : false ,
"timestamp" : 1537286406129
} ,
{
"deviceId" : "59fc6fcc0639bb000fe98d23" ,
"deviceType" : "body_scale" ,
"consultationId" : "224e2420-55b3-4676-bff8-58f20e5d7f3f" ,
"id" : "96a2b1b2-4f08-43e6-bd3f-e2ea51175503" ,
"value" : 4481 ,
"unit" : "ohm" ,
"type" : "body_impedance" ,
"archived" : false ,
"timestamp" : 1537288188891
}
If your software sends to Kligo the patient's height (currently in development) (
more information ) Kligo can send you back more data, such as bmi etc... :
Copy {
"deviceId" : "59fc6fcc0639bb000fe98d23" ,
"deviceType" : "body_scale" ,
"consultationId" : "eabdc349-2053-470b-8f0b-28bf837b7866" ,
"id" : "36915685-dad7-427a-8fbf-1a6116be94b5" ,
"components" :{
"body_weight" : {
"value" : 78 ,
"unit" : "kg"
} ,
"body_impedance" : {
"value" : 4481 ,
"unit" : "ohm"
} ,
"body_fat_%" : {
"value" : 23 ,
"unit" : "%"
} ,
"total_body_water_percentage" : {
"value" : [ "data" ] ,
"unit" : "%"
} ,
"body_muscle_percentage" : {
"value" : [ "data" ] ,
"unit" : "%"
} ,
"bone_weight" : {
"value" : [ "data" ] ,
"unit" : "kg"
} ,
"body_mass_index" : {
"value" : [ "data" ] ,
"unit" : "kg/m^2"
} ,
"calorie" : {
"value" : [ "data" ] ,
"unit" : "cal"
}
} ,
"type" : "partial_body_composition" ,
"archived" : false ,
"timestamp" : 1546864517568
}
Thermometer
Copy {
"deviceId" : "5a9ed48fe61a9b001914b27c" ,
"deviceType" : "thermometer" ,
"consultationId" : "0ead9198-5fcf-45b8-b5f8-9978334a7179" ,
"id" : "05704627-65fa-4e0c-933c-2a70d077b2ca" ,
"value" : 36.7 ,
"unit" : "C" ,
"type" : "body_temperature" ,
"archived" : false ,
"timestamp" : 1539878211041
}
Glucometer
Copy {
"deviceId" : "58e74a1a880c8b0024d51955" ,
"deviceType" : "blood_glucose_monitor" ,
"consultationId" : "8e2887f3-3bd7-4bfc-800d-aae6e301f45d" ,
"id" : "dd920ef6-53ef-45b7-8fe3-d81ba91f7bee" ,
"value" : 180 ,
"unit" : "mg/dL" ,
"type" : "blood_glucose" ,
"archived" : false ,
"timestamp" : 1546873605412
}
Oxymeter
Copy {
"deviceId" : "5c336cfc155a9f0017714ab2" ,
"deviceType" : "pulse_oximeter" ,
"consultationId" : "f80546a9-1198-4b0a-a005-e6de07d94893" ,
"id" : "f3142649-37e0-4dac-8d3d-02c01fbe7304" ,
"value" : 81 ,
"unit" : "bpm" ,
"type" : "heart_rate" ,
"archived" : false ,
"timestamp" : 1546874219777
} ,
{
"deviceId" : "5c336cfc155a9f0017714ab2" ,
"deviceType" : "pulse_oximeter" ,
"consultationId" : "f80546a9-1198-4b0a-a005-e6de07d94893" ,
"id" : "77c6c043-a1ee-43d8-8771-2bcd176bbc5c" ,
"value" : 98 ,
"unit" : "%" ,
"type" : "oxygen_saturation" ,
"archived" : false ,
"timestamp" : 1546874220777
}
Height gauge
Copy {
"deviceId" : "5c336cfc155a9f0017714ab2" ,
"deviceType" : "weight_scale" ,
"consultationId" : "f80546a9-1198-4b0a-a005-e6de07d94893" ,
"id" : "1b749937-689e-4bd2-a1d4-fc561baa22a7" ,
"value" : 78.2 ,
"unit" : "kg" ,
"type" : "body_weight" ,
"archived" : false ,
"timestamp" : 1537286406129
} ,
{
"deviceId" : "5c336cfc155a9f0017714ab2" ,
"deviceType" : "weight_scale" ,
"consultationId" : "f80546a9-1198-4b0a-a005-e6de07d94893" ,
"id" : "1b749937-689e-4bd2-a1d4-fc561baa22a7" ,
"value" : 24 ,
"unit" : "kg/m^2" ,
"type" : "body_mass_index" ,
"archived" : false ,
"timestamp" : 1537286406129
} , {
"deviceId" : "5c336cfc155a9f0017714ab2" ,
"deviceType" : "weight_scale" ,
"consultationId" : "f80546a9-1198-4b0a-a005-e6de07d94893" ,
"id" : "77c6c043-a1ee-43d8-8771-2bcd176bbc5c" ,
"value" : 178 ,
"unit" : "cm" ,
"type" : "body_height" ,
"archived" : false ,
"timestamp" : 1546874220777
}
ECG
There are currently two ways of getting data from the ECG:
ECG report: this is a pdf file that Kligo will save on the user's computer. The REST server shows the pointer the ECG on the corresponding record.
ECG data: this is basically raw data coming from the ECG that Kligo will serve from the REST server.
In order to get ECG raw data, you must use Kligo mobile application.
This is due to the fact that the ECG that provide raw data can only be operated from a mobile device (Android or iOS).
Result after using the EDAN - SE-301
Copy {
"deviceId" : "59c4df93435de3002411c59d" ,
"deviceType" : "ecg" ,
"consultationId" : "c06e3e80-b28f-4890-bc26-956a3a5b8fc6" ,
"id" : "00ffa56c-6a06-45c6-9383-d182fd211080" ,
"value" : "/Users/docteur/Downloads/14-20171117-184952.pdf" ,
"type" : "ecg_report" ,
"archived" : false ,
"timestamp" : 1507626814399
}
ECG Data using the Diagnosis - Istel HR-2000
Copy {
"deviceId" : "59c4df93435de3002411c59d" ,
"deviceType" : "ecg" ,
"consultationId" : "eabdc349-2053-470b-8f0b-28bf837b7866" ,
"id" : "36915685-dad7-427a-8fbf-1a6116be94b5" ,
"components" :{
"L1" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "mV"
} ,
"L2" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "mV"
} ,
"L3" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "mV"
} ,
"aVF" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "mV"
} ,
"aVR" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "mV"
} ,
"aVL" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "mV"
}
} ,
"type" : "ecg_data" ,
"archived" : false ,
"timestamp" : 1546864517568
}
Result after using the CheckMe Pro
check-me-pro-response.json
Copy {
"deviceId" : "98c4df93435de3002411t43e" ,
"deviceType" : "ecg" ,
"consultationId" : "3632b347-5fc5-4a4d-880d-b12245621b48" ,
"id" : "3b6aa6b9-96df-4151-be99-9be90b08f65c" ,
"components" : {
"L1" : {
"value" : [ 0.00032 , - 0.00477 , /* ... */ ] ,
"unit" : "uV" ,
"interpretation" : "N"
} ,
"ST_amplitude" : {
"value" : 0 ,
"unit" : "mV"
} ,
"QT_interval" : {
"value" : 404 ,
"unit" : "ms"
} ,
"QRS_duration" : {
"value" : 68 ,
"unit" : "ms"
} ,
"QTc" : {
"value" : 400 ,
"unit" : "ms"
} ,
"PVC" : {
"value" : 0 ,
"unit" : ""
} ,
"heart_rate" : {
"value" : 59 ,
"unit" : "/min"
}
} ,
"type" : "ecg_data" ,
"archived" : false ,
"timestamp" : 1547197077666
}
Spirometer
Copy {
"deviceId" : "59c4df93435de30024751c5a" ,
"deviceType" : "spirometer" ,
"consultationId" : "afd2c1a5-0112-4ee5-8e56-43addd80d7fa" ,
"id" : "1496fb4a-128e-4636-90bf-6dcfbcc7fa25" ,
"components" :{
"FVC" : {
"value" : 2.3399999141693115 ,
"unit" : "L"
} ,
"FEV1" : {
"value" : 2.3399999141693115 ,
"unit" : "L"
} ,
"PEF" : {
"value" : 3.180000066757202 ,
"unit" : "L/s"
} ,
"Flow" : {
"value" : [ "data" ] ,
"unit" : "L/s"
}
} ,
"type" : "Spirometry panel" ,
"archived" : false ,
"timestamp" : 1544628006343
}
Stethoscope
Audio streams are only available through Kligo's socket. Please make sure to read the Socket.IO page for more details about this.
Audio streams are encoded in PCM 16 bits (little endian) and can be easily buffered into an audio input.
Here are 10 secs of audio recording sampled from the ekuorePro. This recording can be played using ffplay
:
Copy ffplay -f s16le -ar 44100 -ac 2 samples_pcm16le
Summary Table
This table holds every type of data points available through Kligo's API.