ba-thesis/docs/analysis/main.py

109 lines
3.2 KiB
Python
Raw Normal View History

2023-08-26 00:36:24 +01:00
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