๐Ÿ”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.

Last updated