Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.14 KB | None | 0 0
  1. from flask import Flask, render_template, session, sessions, redirect, url_for, request, flash
  2. from werkzeug.utils import secure_filename
  3. from flask_login import LoginManager
  4. from flask_login import login_user , logout_user , current_user , login_required
  5. from flask_sqlalchemy import SQLAlchemy
  6. from datetime import datetime
  7. import statistics
  8. import numpy as np
  9. import matplotlib.pyplot as plt
  10. import MySQLdb
  11. import pandas as pd
  12. import plotly
  13. from plotly.graph_objs import *
  14. import plotly.tools as tls
  15. import plotly.dashboard_objs as dashboard
  16. from sqlalchemy.types import String
  17. from sqlalchemy import create_engine
  18. import csv
  19. from flask_uploads import UploadSet
  20. from sqlalchemy import Column
  21.  
  22. from FHR_analysis import get_Basal_fHR, get_STV_Arduini, get_STV_Haan
  23. conn = MySQLdb.connect(host="mysql.agh.edu.pl", user="uzuch", passwd="e1eSLKm9Y1NTMt27", db="uzuch")
  24.  
  25. app = Flask(__name__)
  26. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
  27. app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://uzuch:e1eSLKm9Y1NTMt27@mysql.agh.edu.pl/uzuch'
  28. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = 'True'
  29.  
  30. db = SQLAlchemy(app)
  31. login_manager = LoginManager()
  32. login_manager.init_app(app)
  33.  
  34. engine = create_engine('mysql://uzuch:e1eSLKm9Y1NTMt27@mysql.agh.edu.pl/uzuch')
  35.  
  36. class Patientdata(db.Model):
  37. __tablename__ = 'patientdata'
  38. user_id = db.Column(db.Integer, primary_key=True, unique=True)
  39. password = db.Column(db.String(20))
  40. created_at = db.Column(db.DateTime, default=datetime.now)
  41. firstname = db.Column(db.String(40), nullable=False)
  42. surname = db.Column(db.String(40), nullable = False)
  43. hospital = db.Column(db.String(80))
  44. doctor = db.Column(db.String(40))
  45. age = db.Column(db.Integer)
  46. gestationalage = db.Column(db.Integer)
  47. situs = db.Column(db.String(20))
  48. positio = db.Column(db.String(20))
  49. AFI = db.Column(db.Integer)
  50. pregnancy = db.Column(db.String(20))
  51. pregnancyinfo = db.Column(db.String(250))
  52.  
  53. def __init__(self, user_id, password, firstname, surname, age, doctor, hospital, gestationalage, situs, positio, AFI, pregnancy, pregnancyinfo):
  54. self.user_id = user_id
  55. self.password = password
  56. self.firstname = firstname
  57. self.surname = surname
  58. self.age = age
  59. self.doctor = doctor
  60. self.hospital = hospital
  61. self.gestationalage = gestationalage
  62. self.situs = situs
  63. self.positio = positio
  64. self.AFI = AFI
  65. self.pregnancy = pregnancy
  66. self.pregnancyinfo = pregnancyinfo
  67.  
  68.  
  69. class Examinations(db.Model):
  70. __tablename__ = 'examinations'
  71. id = db.Column(db.Integer, primary_key=True, unique=True)
  72. user_id = db.Column(db.Integer)
  73. password = db.Column(db.String(20))
  74. exam = db.BLOB
  75.  
  76.  
  77. def __init__(self, id, user_id, password,exam):
  78. self.user_id = user_id
  79. self.password = password
  80. self.id = id
  81. self.exam=exam
  82.  
  83.  
  84. db.create_all()
  85.  
  86. photos = UploadSet('exam', csv)
  87.  
  88.  
  89. @login_manager.user_loader
  90. def load_user(user_id):
  91. return Patientdata.get(user_id)
  92.  
  93. login_manager.login_view = 'user_id'
  94.  
  95. def is_authenticated(self):
  96. return True
  97.  
  98. def is_active(self):
  99. return True
  100.  
  101. def is_anonymous(self):
  102. return False
  103.  
  104. def get_id(self):
  105. return unicode(self.user_id)
  106.  
  107. def __repr__(self):
  108. return '<User %r>' % (self.user_id)
  109.  
  110. @app.route("/")
  111. def welcome():
  112. return render_template('welcome.html')
  113.  
  114.  
  115. @app.route('/login', methods=['GET', 'POST'])
  116. def login():
  117. if 'logged_in' in session:
  118. return redirect(url_for('index'))
  119. if request.method == 'POST':
  120. user_id = request.form['user_id']
  121. password = request.form['password']
  122. registered_user = Patientdata.query.filter_by(user_id=user_id,password=password).first()
  123. if registered_user is None:
  124. flash('Username or Password is invalid' , 'error')
  125. return redirect(url_for('login'))
  126. login_user(registered_user)
  127. flash('Logged in successfully')
  128. return render_template('login.html')
  129.  
  130. @app.route("/patient")
  131. def show_patient():
  132. fd = db.session.query(Patientdata).all()
  133.  
  134. return render_template('patient.html', formdata=fd)
  135.  
  136. @app.route("/archiwum")
  137. def archiwum():
  138. fd = db.session.query(Patientdata).all()
  139. return render_template('archiwum.html', formdata=fd)
  140.  
  141.  
  142. @app.route("/obstetrician")
  143. def show_raw():
  144. fd = db.session.query(Patientdata).all()
  145. return render_template('obstetrician.html', formdata=fd)
  146.  
  147.  
  148. @app.route("/new_survey")
  149. def show_result():
  150. fd_list = db.session.query(Patientdata).all()
  151.  
  152.  
  153.  
  154. # Prepare data for google charts
  155. #data = [['Satisfaction', mean_satisfaction], ['Python skill', mean_q1], ['Flask skill', mean_q2]]
  156.  
  157. return render_template('new_survey.html', data=fd_list)
  158.  
  159.  
  160. @app.route("/save", methods=['POST'])
  161. def save():
  162. # Get data from FORM
  163. user_id=request.form['user_id']
  164. password = request.form['password']
  165. firstname = request.form['firstname']
  166. surname = request.form['surname']
  167. age = request.form['age']
  168. doctor = request.form['doctor']
  169. hospital = request.form['hospital']
  170. gestationalage = request.form['gestationalage']
  171. situs = request.form['situs']
  172. positio = request.form['positio']
  173. AFI = request.form['AFI']
  174. pregnancy = request.form['pregnancy']
  175. pregnancyinfo = request.form['pregnancyinfo']
  176.  
  177. # Save the data
  178. fd = Patientdata(user_id, password, firstname, surname, age, doctor, hospital, gestationalage, situs, positio, AFI, pregnancy, pregnancyinfo)
  179. db.session.add(fd)
  180. db.session.commit()
  181.  
  182. return redirect('/')
  183.  
  184. @app.route("/load", methods=['POST'])
  185. def load():
  186. with engine.connect() as conn, conn.begin():
  187. data = pd.read_sql_table('patientdata', conn)
  188.  
  189. return render_template('load_exams.html', data=data)
  190.  
  191. @app.route("/load_survey")
  192. def load_survey1():
  193. return render_template('show_survey.html')
  194.  
  195. @app.route("/load_survey2", methods=['POST'])
  196. def load_survey2():
  197. id = request.form['id']
  198.  
  199. with engine.connect() as conn, conn.begin():
  200. data1 = pd.read_sql_table('examinations', conn)
  201. data = conn.execute("select * from examinations")
  202. for row in data:
  203. idx = row['id']
  204. idx = int(idx)
  205. id = int(id)
  206. if idx == id:
  207. exam = row['exam']
  208. exam_data = [float(s) for s in exam.split()]
  209. fHR = np.asarray(exam_data)
  210.  
  211. t_exam= row['t_exam']
  212. t_exam_data = [float(s) for s in t_exam.split()]
  213. t_fHR = np.asarray(t_exam_data)
  214. param=get_Basal_fHR(fHR,t_fHR)
  215. data = Data([t_fHR, fHR])
  216.  
  217. myChart=plotly.offline.plot(data, filename = 'basic-line')
  218.  
  219.  
  220. conn.close()
  221.  
  222.  
  223. return render_template('show_survey.html', data=fHR,data2=t_fHR, data3=param, data4=myChart)
  224.  
  225. @app.route('/save_exam', methods=[ 'POST'])
  226. def save_exam():
  227. exam = request.files['exam']
  228.  
  229.  
  230. id = request.form['id']
  231. user_id = request.form['user_id']
  232. password = request.form['password']
  233.  
  234.  
  235. # Save the data
  236. fd = Examinations(id, user_id, password, exam)
  237. db.session.add(fd)
  238. db.session.commit()
  239.  
  240. return redirect('/')
  241.  
  242.  
  243.  
  244.  
  245.  
  246. if __name__ == "__main__":
  247. app.secret_key = 'some secret key'
  248. app.debug = True
  249. app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement