Esempio n. 1
0
def doctorNewSlot():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    doctor_id = current_user.get_id()
    date = datetime.datetime.strptime(request.form['date'], "%m/%d/%Y")
    startTime = datetime.datetime.strptime(request.form['startTime'],
                                           helper.TIME_FORMAT)
    total_slots = request.form['slotNumber']
    t_seg = Time_segment.query.filter(
        Time_segment.t_seg_starttime == startTime).one()

    # check if a time slot exists for the datetime
    exist_slot = Time_slot.query.filter(
        Time_slot.doctor_id == doctor_id,
        Time_slot.slot_seg_id == t_seg.t_seg_id,
        Time_slot.slot_date == date).first()
    if exist_slot:
        return make_response({'ret': 1, 'msg': 'Slot Already Created'})

    time_slot = Time_slot(slot_date=date,
                          n_total=total_slots,
                          n_booked=0,
                          slot_seg_id=t_seg.t_seg_id,
                          doctor_id=doctor_id)
    db.session.add(time_slot)
    try:
        db.session.commit()
        return make_response(jsonify({'ret': 0}))
    except:
        db.session.rollback()
        return make_response(jsonify({'ret': "Database error"}))

    return make_response({"ret": 0})
Esempio n. 2
0
def viewMC():
    if not (helper.check_doctor_privilege() or helper.check_nurse_privilege()):
        return redirect("/loadHomePage")

    patient_id = request.form['patientID']

    helper.load_id2name_map()
    table = Application.query.filter(
        Application.patient_id == patient_id,
        Application.status == StatusEnum.finished).all()
    return make_response(
        jsonify({
            'patientID':
            str(patient_id),
            'patientName':
            helper.id2name(patient_id),
            'appts': [{
                'appID': str(table[i].id),
                'mcID': table[i].mc_id,
                'date': table[i].date.strftime(helper.DATE_FORMAT),
                'time': table[i].time.strftime(helper.TIME_FORMAT),
                'doctor': helper.id2name(table[i].doctor_id),
                'symptoms': table[i].symptoms
            } for i in range(len(table))]
        }))
Esempio n. 3
0
def goViewMC():
    if not (helper.check_doctor_privilege() or helper.check_nurse_privilege()):
        return redirect("/loadHomePage")

    patient_id = request.form['patientID']

    helper.load_id2name_map()
    return render_template('doctorNurseViewMC.html',
                           patientID=patient_id,
                           patientName=helper.id2name(patient_id))
Esempio n. 4
0
def doctorFinishAppt():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    app_id = request.form['appID']
    appt = Application.query.filter(Application.id == app_id).first()
    appt.status = StatusEnum.finished
    try:
        db.session.commit()
        return make_response(jsonify({'ret': 0}))
    except:
        db.session.rollback()
        return make_response(jsonify({'ret': "Database error"}))
Esempio n. 5
0
def doctorEditDiag():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    mc_id = request.form['mcID']
    diagnosis = request.form['diagnosis']
    mc = Medical_record.query.filter(Medical_record.id == mc_id).first()
    if not mc:
        return make_response({"ret": "Medical Record Not Found!"})
    mc.diagnosis = diagnosis
    try:
        db.session.commit()
    except:
        db.session.rollback()
        return make_response(jsonify({'ret': "Database error"}))
    return make_response(jsonify({'ret': 0}))
Esempio n. 6
0
def doctorTodayAppt():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    doctorID = current_user.get_id()
    appt_list = helper.doc2appts(doctorID, 0)

    helper.load_id2name_map()
    return make_response(
        jsonify([{
            "appID": str(appt_list[i].id),
            "date": appt_list[i].date.strftime(helper.DATE_FORMAT),
            "time": appt_list[i].time.strftime(helper.TIME_FORMAT),
            "nurse": helper.id2name(appt_list[i].approver_id),
            "patient": helper.id2name(appt_list[i].patient_id),
            "symptoms": appt_list[i].symptoms
        } for i in range(len(appt_list))]))
Esempio n. 7
0
def doctorFutureAppt():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    if request.method == "POST":
        start_date = request.form["startDate"]
        end_date = request.form["endDate"]
    elif request.method == "GET":
        start_date = 0
        end_date = 0
    doctorID = current_user.get_id()

    # if start date is given, use it directly; o.w. set it to today
    if start_date == datetime.datetime.today().strftime(helper.DATE_FORMAT):
        filter = True
    if start_date:
        start_date = datetime.datetime.strptime(start_date, helper.DATE_FORMAT)
    else:
        start_date = datetime.datetime.today()

    # similar to start date
    if end_date:
        end_date = datetime.datetime.strptime(end_date, helper.DATE_FORMAT)
    if end_date:
        apps = helper.doc2appts(doctorID,
                                period=(end_date - start_date).days,
                                start_date=start_date)
    else:
        apps = helper.doc2appts(doctorID, start_date=start_date, limit='no')
    if filter:
        for i in range(len(apps)):
            if datetime.datetime.combine(
                    apps[i].date, apps[i].time
            ) < datetime.datetime.now() - timedelta(minutes=30):
                apps.pop(i)

    helper.load_id2name_map()
    return make_response(
        jsonify([{
            "appID": app.id,
            "date": app.date.strftime(helper.DATE_FORMAT),
            "time": app.time.strftime(helper.TIME_FORMAT),
            "nurse": helper.id2name(app.approver_id),
            "patient": helper.id2name(app.patient_id),
            "symptoms": app.symptoms,
        } for app in apps]))
Esempio n. 8
0
def getPatientInfo():
    if not (helper.check_doctor_privilege() or helper.check_nurse_privilege()):
        return redirect("/login")

    p_id = request.form['patientID']
    patient = db.session.query(Patient).filter(Patient.id == p_id).first()
    gender = patient.gender
    if gender:
        gender = gender.value
    return make_response(
        jsonify({
            "ret": 0,
            "age": patient.age,
            "gender": gender,
            "bloodType": patient.blood_type,
            "allergies": patient.allergies,
            "chronics": patient.chronics,
            "medications": patient.medications
        }), 200)
Esempio n. 9
0
def doctorAddPrescrip():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    mc_id = request.form['mcID']
    medicine = request.form['medicine']
    dose = request.form['dose']
    comments = request.form['comments']
    prescription = Prescription(medicine=medicine,
                                dose=dose,
                                comments=comments,
                                mc_id=mc_id)
    db.session.add(prescription)

    try:
        db.session.commit()
        return make_response(jsonify({'ret': 0}))
    except:
        db.session.rollback()
        return make_response(jsonify({'ret': "Database error"}))
Esempio n. 10
0
def getLabReports():
    if not (helper.check_doctor_privilege() or helper.check_nurse_privilege()):
        return redirect("/loadHomePage")

    mc_id = request.form['mcID']
    mc = Medical_record.query.filter(Medical_record.id == mc_id).first()
    if not mc:
        return make_response({"ret": "Medical Record Not Found!"})
    return make_response(
        jsonify({
            "ret":
            0,
            "labReports": [{
                "lr_type": lr.lr_type,
                "id": lr.id,
                "nurse_comments": lr.nurse_comment,
                "doctor_comments": lr.doctor_comment,
                "file_path": lr.file_path
            } for lr in mc.lab_reports]
        }))
Esempio n. 11
0
def doctorGetPrescrip():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    mc_id = request.form['mcID']
    mc = Medical_record.query.filter(Medical_record.id == mc_id).first()
    if not mc:
        return make_response({"ret": "Medical Record Not Found!"})
    prescription_list = Prescription.query.filter(
        Prescription.mc_id == mc_id).all()
    return make_response(
        jsonify({
            "ret":
            0,
            "prescriptions": [{
                "id": pres.id,
                "medicine": pres.medicine,
                "dose": pres.dose,
                "comments": pres.comments
            } for pres in prescription_list]
        }))
Esempio n. 12
0
def doctorGoViewAppt(appID):
    if not helper.check_doctor_privilege():
        return redirect("/login")

    appt_res = Application.query.filter(Application.id == appID).first()
    finished = False
    if appt_res.status.value == "finished":
        finished = True

    helper.load_id2name_map()
    return render_template('doctorViewAppt.html',
                           appID=appt_res.id,
                           date=appt_res.date.strftime(helper.DATE_FORMAT),
                           time=appt_res.time.strftime(helper.TIME_FORMAT),
                           approverID=appt_res.approver_id,
                           patientID=appt_res.patient_id,
                           patient=helper.id2name(appt_res.patient_id),
                           symptoms=appt_res.symptoms,
                           comments=appt_res.reject_reason,
                           mcID=appt_res.mc_id,
                           finished=finished)
Esempio n. 13
0
def doctorPastAppt():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    if request.method == "POST":
        start_date = request.form["startDate"]
        end_date = request.form["endDate"]
    elif request.method == "GET":
        start_date = 0
        end_date = 0
    doctorID = current_user.get_id()
    if start_date:
        start_date = datetime.datetime.strptime(start_date, helper.DATE_FORMAT)
    if end_date:
        end_date = datetime.datetime.strptime(end_date, helper.DATE_FORMAT)
    else:
        end_date = datetime.date.today()

    if start_date:
        apps = helper.doc2appts(doctorID,
                                period=(end_date - start_date).days,
                                direction='past',
                                start_date=end_date)
    else:
        apps = helper.doc2appts(doctorID,
                                start_date=start_date,
                                direction='past',
                                limit='no')

    helper.load_id2name_map()
    return make_response(
        jsonify([{
            "appID": app.id,
            "date": app.date.strftime(helper.DATE_FORMAT),
            "time": app.time.strftime(helper.TIME_FORMAT),
            "nurse": helper.id2name(app.approver_id),
            "patient": helper.id2name(app.patient_id),
            "symptoms": app.symptoms,
        } for app in apps]))
Esempio n. 14
0
def doctorGetSlots():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    doctor_id = current_user.get_id()
    t_slots = Time_slot.query.filter(Time_slot.doctor_id == doctor_id).all()

    ret = {
        "ret":
        0,
        "data": [{
            "title":
            f'total: {item.n_total}, booked: {item.n_booked}',
            "start":
            item.slot_date.strftime(helper.DATE_FORMAT) + "T" +
            Time_segment.query.filter(Time_segment.t_seg_id == item.slot_seg_id
                                      ).one().t_seg_starttime.strftime(
                                          helper.TIME_FORMAT)
        } for item in t_slots]
    }

    return make_response(jsonify(ret), 200)
Esempio n. 15
0
def doctorReqLabReport():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    mc_id = request.form['mcID']
    patient_id = Medical_record.query.filter(
        Medical_record.id == mc_id).first().patient_id
    lr_type = request.form['type']
    comments = request.form['comments']
    lab_report = Lab_report(doctor_comment=comments,
                            lr_type=lr_type,
                            mc_id=mc_id,
                            patient_id=patient_id)

    db.session.add(lab_report)

    try:
        db.session.commit()
        return make_response(jsonify({'ret': 0}))
    except:
        db.session.rollback()
        return make_response(jsonify({'ret': "Database error"}))
Esempio n. 16
0
def doctorOnGoingAppt():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    doctorID = current_user.get_id()
    nowtime = datetime.datetime.now()
    appt_list = helper.doc2appts(doctorID, 0)

    now_approved_appts = []
    for appt in appt_list:
        appt_date_time = datetime.datetime.combine(appt.date, appt.time)
        if appt_date_time <= nowtime <= appt_date_time + timedelta(minutes=30):
            now_approved_appts.append(appt)

    helper.load_id2name_map()
    return make_response(
        jsonify([{
            "appID": appt.id,
            "date": appt.date.strftime(helper.DATE_FORMAT),
            "time": appt.time.strftime(helper.TIME_FORMAT),
            "nurse": helper.id2name(appt.approver_id),
            "patient": helper.id2name(appt.patient_id),
            "symptoms": appt.symptoms
        } for appt in now_approved_appts]))
Esempio n. 17
0
def doctorAllAppt():
    if not helper.check_doctor_privilege():
        return redirect("/login")

    return render_template('doctorAllAppt.html')
Esempio n. 18
0
def userViewAppt():
    if request.method == "POST":
        mc_id = request.form['mcID']
    elif request.method == "GET":
        mc_id = request.args.get('mcID')
    mc = Medical_record.query.filter(Medical_record.id == mc_id).first()
    if not mc:
        return make_response({"ret": "Medical Record Not Found!"})

    if helper.check_patient_privilege():
        if current_user.get_id() != mc.patient_id:
            return redirect(url_for("/login"))

    # passed medical record existence check and user privilege check
    prescription_list = Prescription.query.filter(
        Prescription.mc_id == mc_id).all()
    lab_reports = mc.lab_reports

    ret = {
        "ret":
        "0",
        "preExam": {
            "bodyTemperature": str(mc.body_temperature),
            "heartRate": str(mc.heart_rate),
            "lowBloodPressure": str(mc.low_blood_pressure),
            "highBloodPressure": str(mc.high_blood_pressure),
            "weight": str(mc.weight),
            "height": str(mc.height),
            "state": mc.state.value
        },
        "diagnosis":
        mc.diagnosis,
        "prescriptions": [{
            "id": pres.id,
            "medicine": pres.medicine,
            "dose": pres.dose,
            "comments": pres.comments
        } for pres in prescription_list],
        "labReports": [{
            "lr_type": lr.lr_type,
            "id": lr.id,
            "doctor_comments": lr.doctor_comment,
            "nurse_comments": lr.nurse_comment,
            "file_path": lr.file_path
        } for lr in lab_reports]
    }

    # get the lab report types for doctor for lab report request creation
    if request.form['type'] == "1":
        if not helper.check_doctor_privilege():
            return make_response(
                {"ret": "Access to lab report types not granted"})

        lab_r_types = Lab_report_type.query.all()

        ret["labReportTypes"] = [{
            "type": lrt.type,
            "description": lrt.description
        } for lrt in lab_r_types]

    return make_response(jsonify(ret))