Exemple #1
0
def interval_average():
    """
    calculate the average heartrate since a given time via post

    :return: json containing the average, or error message
    """
    interval_request = request.get_json()
    pat_id = interval_request["patient_id"]

    if heart_server_helpers.validate_patient(pat_id) is False:
        return jsonify({"Error": "invalid patient ID"})

    if heart_server_helpers.exisiting_beats(pat_id) is False:
        return jsonify({"Error": "no heartbeats recorded for patient"})

    start_time = interval_request["heart_rate_average_since"]

    try:
        datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S.%f")
    except ValueError:
        return jsonify({"Error": "Enter date a YYYY-mm-dd HH:MM:SS.ffffff"})

    interval_average = heart_server_helpers.hr_avg_since(pat_id, start_time)

    return jsonify({"interval_average": interval_average})
Exemple #2
0
def heart_rate():
    """
    Add a heart rate to the database for a given patient via post

    :return: json indicating success adding heart rate, or error message
    """
    heart_data = request.get_json()
    pat_id = heart_data["patient_id"]
    rate = heart_data["heart_rate"]

    if not isinstance(rate, int):
        return jsonify({"Error": "non-integer value for heart rate"})

    if heart_server_helpers.validate_patient(pat_id) is False:
        return jsonify({"Error": "invalid patient ID"})

    for user in Patient.objects.raw({"_id": pat_id}):
        patient = user

    try:
        existing_hr = patient.heart_rate
        existing_hr.append(rate)
        patient.heart_rate = existing_hr

        existing_hr_times = patient.h_r_times
        existing_hr_times.append(datetime.datetime.now())
        patient.h_r_times = existing_hr_times
    except:
        print('exception handled')
        patient.heart_rate = [rate]
        patient.h_r_times = [datetime.datetime.now()]

    patient.save()

    tachycardia = heart_server_helpers.is_tachycardic(pat_id)

    if tachycardia is True:
        heart_server_helpers.email_alert(pat_id)

    return jsonify({"status": "true"})
Exemple #3
0
def patient_status(patient_id):
    """
    check whether a given patient is tachycardic

    :param patient_id: integer ID of patient to check tachycardic status
    :return: json indicating whether patient is tachycardic, or error message
    """
    patient_id = int(patient_id)

    if heart_server_helpers.validate_patient(pat_id) is False:
        return jsonify({"Error": "invalid patient ID"})

    if heart_server_helpers.existing_beats(pat_id) is False:
        return jsonify({"Error": "no heartbeats recorded for patient"})

    tachycardia = heart_server_helpers.is_tachycardic(patient_id)

    if tachycaria is True:
        heart_server_helpers.email_alert(patient_id)

    status = {"patient_tachycardic": tachycardia}
    return jsonify(status)
Exemple #4
0
def return_heartrates(patient_id):
    """
    access database to get heart rate history for a patient

    :param patient_id: integer ID of patient to get heart rates of
    :return: json with the heart rate list for patient, or error message
    """
    patient_id = int(patient_id)

    if heart_server_helpers.validate_patient(pat_id) is False:
        return jsonify({"Error": "invalid patient ID"})

    if heart_server_helpers.existing_beats(pat_id) is False:
        return jsonify({"Error": "no heartbeats recorded for patient"})

    for user in Patient.objects.raw({"_id": patient_id}):
        patient = user

    heartrate_list = patient.heart_rate
    print(heartrate_list)
    heart_list = {"heat_rates": heartrate_list}
    return jsonify(heart_list)
Exemple #5
0
def return_avg_rate(patient_id):
    """
    access database to get last heart rate recorded for patient

    :param patient_id: integer ID of patient to get heart rates from
    :return: json with the last heart rate for patient, or error message

    """
    patient_id = int(patient_id)

    if heart_server_helpers.validate_patient(pat_id) is False:
        return jsonify({"Error": "invalid patient ID"})

    if heart_server_helpers.existing_beats(pat_id) is False:
        return jsonify({"Error": "no heartbeats recorded for patient"})

    for user in Patient.objects.raw({"_id": patient_id}):
        patient = user

    heartrate_list = patient.heart_rate
    num_rates = len(heartrate_list)

    avg_rate = {"rate_avg": sum(heartrate_list) / num_rates}
    return jsonify(avg_rate)
Exemple #6
0
def test_existing_beats(pat_id, expected):
    pat_exist = validate_patient(pat_id)
    assert pat_exist == expected