1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
pub struct ResponseConnections {
    pub status: i32,
    pub data: Vec<Connection>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct ConnectionGraphResponse {
    status: i32,
    data: ConnectionGraphData,
    ticket: Ticket,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Connection {
    id: String,
    #[serde(rename = "patientId")]
    pub patient_id: String,
    country: String,
    status: i32,
    #[serde(rename = "firstName")]
    first_name: String,
    #[serde(rename = "lastName")]
    last_name: String,
    #[serde(rename = "targetLow")]
    target_low: i32,
    #[serde(rename = "targetHigh")]
    target_high: i32,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Sensor {
    #[serde(rename = "deviceId")]
    device_id: String,
    sn: String,
    a: i64,
    w: i32,
    pt: i32,
    s: bool,
    lj: bool,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Device {
    did: String,
    dtid: i32,
    v: String,
    ll: i32,
    hl: i32,
    #[serde(rename = "fixedLowAlarmValues")]
    fixed_low_alarm_values: FixedLowAlarmValues,
    alarms: bool,
    #[serde(rename = "fixedLowThreshold")]
    fixed_low_threshold: i32,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct FixedLowAlarmValues {
    mgdl: i32,
    mmoll: f32,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Ticket {
    token: String,
    expires: u64,
    duration: u64,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct ConnectionGraphData {
    connection: Connection,
    #[serde(rename = "activeSensors")]
    active_sensors: Vec<ActiveSensor>,
    #[serde(rename = "graphData")]
    graph_data: Vec<GraphData>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct GraphData {
    #[serde(rename = "FactoryTimestamp")]
    factory_timestamp: String,
    #[serde(rename = "Timestamp")]
    timestamp: String,
    #[serde(rename = "type")]
    _type: i32,
    #[serde(rename = "ValueInMgPerDl")]
    value_in_mg_per_dl: i32,
    #[serde(rename = "MeasurementColor")]
    measurement_color: i32,
    #[serde(rename = "GlucoseUnits")]
    glucose_units: i32,
    #[serde(rename = "Value")]
    value: i32,
    #[serde(rename = "isHigh")]
    is_high: bool,
    #[serde(rename = "isLow")]
    is_low: bool,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct ActiveSensor {
    sensor: Sensor,
    device: Device,
}