109 lines
3.2 KiB
Python
109 lines
3.2 KiB
Python
|
import json
|
||
|
from datetime import datetime, timedelta
|
||
|
|
||
|
import records as r
|
||
|
|
||
|
def get_records() -> list[r.Collection]:
|
||
|
"""Returns the trial data as a list of `records.Collection` objects."""
|
||
|
|
||
|
json_data = []
|
||
|
with open('data.json', 'r') as file:
|
||
|
json_data = json.load(file)
|
||
|
|
||
|
def incremented(time: datetime) -> datetime:
|
||
|
if time.hour == 22:
|
||
|
time += timedelta(hours=12)
|
||
|
else:
|
||
|
time += timedelta(hours=3)
|
||
|
return time
|
||
|
|
||
|
records: list[r.Collection] = []
|
||
|
time = datetime.fromisoformat("2023-08-14T10:00:00")
|
||
|
|
||
|
for item in json_data:
|
||
|
p1 = item['p1']
|
||
|
home_environment = item['home']
|
||
|
|
||
|
if p1:
|
||
|
mews = None
|
||
|
blood_pressure = None
|
||
|
body_temp = None
|
||
|
heart_rate = None
|
||
|
respiration_score = None
|
||
|
spo2 = None
|
||
|
s1 = None
|
||
|
b1 = None
|
||
|
t1 = None
|
||
|
p2 = None
|
||
|
s2 = None
|
||
|
b2 = None
|
||
|
t2 = None
|
||
|
uplink = None
|
||
|
downlink = None
|
||
|
rtt = None
|
||
|
else:
|
||
|
blood_pressure = r.BloodPressure(
|
||
|
time=datetime.fromisoformat(item['blood_pressure']['time']),
|
||
|
value_systolic=item['blood_pressure']['value_systolic'],
|
||
|
value_diastolic=item['blood_pressure']['value_systolic']
|
||
|
)
|
||
|
body_temp = r.BodyTemp(
|
||
|
time=datetime.fromisoformat(item['body_temp']['time']),
|
||
|
value=item['body_temp']['value']
|
||
|
)
|
||
|
heart_rate = r.HeartRate(
|
||
|
time=datetime.fromisoformat(item['heart_rate']['time']),
|
||
|
value=item['heart_rate']['value']
|
||
|
)
|
||
|
respiration_score = r.RespirationScore(
|
||
|
time=datetime.fromisoformat(item['respiration_score']['time']),
|
||
|
value=item['respiration_score']['value']
|
||
|
)
|
||
|
spo2 = r.Spo2(
|
||
|
time=datetime.fromisoformat(item['spo2']['time']),
|
||
|
value=item['spo2']['value']
|
||
|
)
|
||
|
s1 = item['s1']
|
||
|
b1 = item['b1']
|
||
|
t1 = item['t1']
|
||
|
p2 = item['p2']
|
||
|
s2 = item['s2']
|
||
|
b2 = item['b2']
|
||
|
t2 = item['t2']
|
||
|
uplink = item['uplink']
|
||
|
downlink = item['downlink']
|
||
|
rtt = item['rtt']
|
||
|
if s2 or b2 or t2:
|
||
|
mews = None
|
||
|
else:
|
||
|
mews = r.Mews(
|
||
|
time=datetime.fromisoformat(item['mews']['time']),
|
||
|
value=item['mews']['value']
|
||
|
)
|
||
|
|
||
|
records.append(r.Collection(
|
||
|
notification_time=time,
|
||
|
mews=mews,
|
||
|
blood_pressure=blood_pressure,
|
||
|
body_temp=body_temp,
|
||
|
heart_rate=heart_rate,
|
||
|
respiration_score=respiration_score,
|
||
|
spo2=spo2,
|
||
|
s1=s1,
|
||
|
b1=b1,
|
||
|
t1=t1,
|
||
|
s2=s2,
|
||
|
b2=b2,
|
||
|
t2=t2,
|
||
|
p1=p1,
|
||
|
p2=p2,
|
||
|
home_environment=home_environment,
|
||
|
uplink=uplink,
|
||
|
downlink=downlink,
|
||
|
rtt=rtt
|
||
|
))
|
||
|
|
||
|
time = incremented(time)
|
||
|
|
||
|
return records
|