๐Ÿ”Observation

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:

{
    "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

{
    "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":"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... :

{
    "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

{
    "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

{
    "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

{
    "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

{
    "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

{
    "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

{
    "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
{
        "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

{
    "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 :

ffplay  -f s16le -ar 44100 -ac 2 samples_pcm16le

Summary Table

This table holds every type of data points available through Kligo's API.

type

device

systolic_blood_pressure

blood pressure monitor

diastolic_blood_pressure

blood pressure monitor

heart_rate

blood pressure monitor, pulse_oxymeter, ecg

body_weight

weight scale

body_impedance

weight scale

body_fat_percentage

weight scale

total_body_water_percentage

weight scale

body_muscle_percentage

weight scale

bone_weight

weight scale

calorie

weight scale

body_mass_index

weight scale

body_temperature

thermometer

blood_glucose

glucometer

oxygen_saturation

pulse_oxymeter, ecg

body_height

weight_scale

albumin

urine_analysis

bilirubin

urine_analysis

creatinine

urine_analysis

glucose

urine_analysis

ketone

urine_analysis

leukocyte

urine_analysis

nitrite

urine_analysis

occult_blood

urine_analysis

ph

urine_analysis

protein

urine_analysis

specific_gravity

urine_analysis

urobilinogen

urine_analysis

albumin_creatinine

urine_analysis

protein_creaninine

urine_analysis

hcg

immuno_analysis

ecg_report

ecg

ecg_data

ecg

spirometry_panel

spirometer

sonography_report

spirometer

ketone

glucometer

hematocrit

glucometer

hemoglobin

glucometer

uric_acid

glucometer

total_cholesterol

glucometer

Last updated