Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, render_template, session, sessions, redirect, url_for, request, flash
- from werkzeug.utils import secure_filename
- from flask_login import LoginManager
- from flask_login import login_user , logout_user , current_user , login_required
- from flask_sqlalchemy import SQLAlchemy
- from datetime import datetime
- import statistics
- import numpy as np
- import matplotlib.pyplot as plt
- import MySQLdb
- import pandas as pd
- import plotly
- from plotly.graph_objs import *
- import plotly.tools as tls
- import plotly.dashboard_objs as dashboard
- from sqlalchemy.types import String
- from sqlalchemy import create_engine
- import csv
- from flask_uploads import UploadSet
- from sqlalchemy import Column
- from FHR_analysis import get_Basal_fHR, get_STV_Arduini, get_STV_Haan
- conn = MySQLdb.connect(host="mysql.agh.edu.pl", user="uzuch", passwd="e1eSLKm9Y1NTMt27", db="uzuch")
- app = Flask(__name__)
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
- app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://uzuch:e1eSLKm9Y1NTMt27@mysql.agh.edu.pl/uzuch'
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = 'True'
- db = SQLAlchemy(app)
- login_manager = LoginManager()
- login_manager.init_app(app)
- engine = create_engine('mysql://uzuch:e1eSLKm9Y1NTMt27@mysql.agh.edu.pl/uzuch')
- class Patientdata(db.Model):
- __tablename__ = 'patientdata'
- user_id = db.Column(db.Integer, primary_key=True, unique=True)
- password = db.Column(db.String(20))
- created_at = db.Column(db.DateTime, default=datetime.now)
- firstname = db.Column(db.String(40), nullable=False)
- surname = db.Column(db.String(40), nullable = False)
- hospital = db.Column(db.String(80))
- doctor = db.Column(db.String(40))
- age = db.Column(db.Integer)
- gestationalage = db.Column(db.Integer)
- situs = db.Column(db.String(20))
- positio = db.Column(db.String(20))
- AFI = db.Column(db.Integer)
- pregnancy = db.Column(db.String(20))
- pregnancyinfo = db.Column(db.String(250))
- def __init__(self, user_id, password, firstname, surname, age, doctor, hospital, gestationalage, situs, positio, AFI, pregnancy, pregnancyinfo):
- self.user_id = user_id
- self.password = password
- self.firstname = firstname
- self.surname = surname
- self.age = age
- self.doctor = doctor
- self.hospital = hospital
- self.gestationalage = gestationalage
- self.situs = situs
- self.positio = positio
- self.AFI = AFI
- self.pregnancy = pregnancy
- self.pregnancyinfo = pregnancyinfo
- class Examinations(db.Model):
- __tablename__ = 'examinations'
- id = db.Column(db.Integer, primary_key=True, unique=True)
- user_id = db.Column(db.Integer)
- password = db.Column(db.String(20))
- exam = db.BLOB
- def __init__(self, id, user_id, password,exam):
- self.user_id = user_id
- self.password = password
- self.id = id
- self.exam=exam
- db.create_all()
- photos = UploadSet('exam', csv)
- @login_manager.user_loader
- def load_user(user_id):
- return Patientdata.get(user_id)
- login_manager.login_view = 'user_id'
- def is_authenticated(self):
- return True
- def is_active(self):
- return True
- def is_anonymous(self):
- return False
- def get_id(self):
- return unicode(self.user_id)
- def __repr__(self):
- return '<User %r>' % (self.user_id)
- @app.route("/")
- def welcome():
- return render_template('welcome.html')
- @app.route('/login', methods=['GET', 'POST'])
- def login():
- if 'logged_in' in session:
- return redirect(url_for('index'))
- if request.method == 'POST':
- user_id = request.form['user_id']
- password = request.form['password']
- registered_user = Patientdata.query.filter_by(user_id=user_id,password=password).first()
- if registered_user is None:
- flash('Username or Password is invalid' , 'error')
- return redirect(url_for('login'))
- login_user(registered_user)
- flash('Logged in successfully')
- return render_template('login.html')
- @app.route("/patient")
- def show_patient():
- fd = db.session.query(Patientdata).all()
- return render_template('patient.html', formdata=fd)
- @app.route("/archiwum")
- def archiwum():
- fd = db.session.query(Patientdata).all()
- return render_template('archiwum.html', formdata=fd)
- @app.route("/obstetrician")
- def show_raw():
- fd = db.session.query(Patientdata).all()
- return render_template('obstetrician.html', formdata=fd)
- @app.route("/new_survey")
- def show_result():
- fd_list = db.session.query(Patientdata).all()
- # Prepare data for google charts
- #data = [['Satisfaction', mean_satisfaction], ['Python skill', mean_q1], ['Flask skill', mean_q2]]
- return render_template('new_survey.html', data=fd_list)
- @app.route("/save", methods=['POST'])
- def save():
- # Get data from FORM
- user_id=request.form['user_id']
- password = request.form['password']
- firstname = request.form['firstname']
- surname = request.form['surname']
- age = request.form['age']
- doctor = request.form['doctor']
- hospital = request.form['hospital']
- gestationalage = request.form['gestationalage']
- situs = request.form['situs']
- positio = request.form['positio']
- AFI = request.form['AFI']
- pregnancy = request.form['pregnancy']
- pregnancyinfo = request.form['pregnancyinfo']
- # Save the data
- fd = Patientdata(user_id, password, firstname, surname, age, doctor, hospital, gestationalage, situs, positio, AFI, pregnancy, pregnancyinfo)
- db.session.add(fd)
- db.session.commit()
- return redirect('/')
- @app.route("/load", methods=['POST'])
- def load():
- with engine.connect() as conn, conn.begin():
- data = pd.read_sql_table('patientdata', conn)
- return render_template('load_exams.html', data=data)
- @app.route("/load_survey")
- def load_survey1():
- return render_template('show_survey.html')
- @app.route("/load_survey2", methods=['POST'])
- def load_survey2():
- id = request.form['id']
- with engine.connect() as conn, conn.begin():
- data1 = pd.read_sql_table('examinations', conn)
- data = conn.execute("select * from examinations")
- for row in data:
- idx = row['id']
- idx = int(idx)
- id = int(id)
- if idx == id:
- exam = row['exam']
- exam_data = [float(s) for s in exam.split()]
- fHR = np.asarray(exam_data)
- t_exam= row['t_exam']
- t_exam_data = [float(s) for s in t_exam.split()]
- t_fHR = np.asarray(t_exam_data)
- param=get_Basal_fHR(fHR,t_fHR)
- data = Data([t_fHR, fHR])
- myChart=plotly.offline.plot(data, filename = 'basic-line')
- conn.close()
- return render_template('show_survey.html', data=fHR,data2=t_fHR, data3=param, data4=myChart)
- @app.route('/save_exam', methods=[ 'POST'])
- def save_exam():
- exam = request.files['exam']
- id = request.form['id']
- user_id = request.form['user_id']
- password = request.form['password']
- # Save the data
- fd = Examinations(id, user_id, password, exam)
- db.session.add(fd)
- db.session.commit()
- return redirect('/')
- if __name__ == "__main__":
- app.secret_key = 'some secret key'
- app.debug = True
- app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement