File size: 3,252 Bytes
21dae66
 
a725af0
 
 
21dae66
 
 
 
 
 
 
a63231d
 
 
21dae66
7b05d65
a725af0
21dae66
a725af0
21dae66
a63231d
21dae66
a63231d
 
 
 
a725af0
21dae66
a725af0
21dae66
a63231d
21dae66
 
 
 
 
a63231d
21dae66
a725af0
 
 
a63231d
21dae66
a63231d
 
21dae66
 
a725af0
 
21dae66
a63231d
21dae66
a725af0
21dae66
 
 
 
 
 
a63231d
 
a725af0
21dae66
 
a63231d
21dae66
a725af0
21dae66
a725af0
 
21dae66
a63231d
 
a725af0
 
21dae66
a725af0
 
21dae66
 
a725af0
 
 
21dae66
a725af0
21dae66
a725af0
21dae66
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
#### PROCESS FUNCTIONS


def process_circumstance(data):
    fields_to_check = ["option_dropdown", "open_field", "extra"]
    reformatted = {}
    if (
        ("circumstance_radio" in data.keys())
        and ("circumstance" in data.keys())
        and ("circumstance_type" in data.keys())
        and (data["circumstance_radio"] == "Yes")
    ):
        reformatted["circumstance_radio"] = data["circumstance_radio"]
        reformatted["circumstance"] = data["circumstance"]
        reformatted["circumstance_type"] = {}
        if "type" in data["circumstance_type"]:
            reformatted["circumstance_type"]["type"] = data["circumstance_type"]["type"]
        for field in fields_to_check:
            if not data["circumstance_type"][field + "_label"] == "NA":
                val = data[f"circumstance_{field}"]
                key = data["circumstance_type"][field + "_label"]
                reformatted["circumstance_type"][key] = val
    else:
        reformatted["circumstance_radio"] = None
        reformatted["circumstance"] = None
        reformatted["circumstance_type"] = {}
    return reformatted


def process_behaviors(data):
    behaviors = []
    reformatted = {}
    if (
        ("behaviors_radio" in data.keys())
        and ("behaviors_type" in data.keys())
        and (data["behaviors_radio"] == "Yes")
    ):
        reformatted["behaviors_radio"] = data["behaviors_radio"]
        for type in data["behaviors_type"]:
            new_behavior = {}
            new_behavior["type"] = type
            behaviors.append(new_behavior)
        reformatted["behaviors_type"] = behaviors
    else:
        reformatted["behaviors_radio"] = None
        reformatted["behaviors_type"] = []
    return reformatted


def process_physical(data):
    body_parts = ["beak", "body", "legs", "feathers/wings/tail", "head incl. eyes"]
    body_parts_search = ["beak", "body", "legs", "feathers", "head"]
    anomalies = []
    reformatted = {}
    if (
        ("physical_radio" in data.keys())
        and (data["physical_radio"] == "Yes")
        and any("type_" in key for key in data.keys())
        and any("anomaly_" in key for key in data.keys())
    ):
        reformatted["physical_radio"] = data["physical_radio"]
        for b, body_part in enumerate(body_parts_search):
            anomaly = {}
            for key, val in data.items():
                if "type_" + body_part in key:
                    anomaly["type"] = body_parts[b]
                elif "anomaly_" + body_part in key:
                    anomaly["anomaly_type"] = val
            if anomaly:
                anomalies.append(anomaly)
        reformatted["physical_anomalies_type"] = anomalies
    else:
        reformatted["physical_radio"] = None
        reformatted["physical_anomalies_type"] = []
    return reformatted


def process_followup(data):
    followup_events = []
    for key, val in data.items():
        followup_event = {}
        type = key.split("followup")[-1]
        option = type.split(" ")[-1]
        followup_event["type"] = type.strip()
        followup_event[option.strip()] = val
        followup_events.append(followup_event)
    reformatted = {}
    reformatted["follow_up_events"] = followup_events
    return reformatted