From 6393fbc40036bb213c8eb3375be179980aab69e9 Mon Sep 17 00:00:00 2001 From: Raj Sangani <57042606+rajlm10@users.noreply.github.com> Date: Tue, 8 Jun 2021 17:44:08 +0530 Subject: [PATCH 1/5] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ad0e75..77e2141 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,15 @@ ### Winner of the 24 hours Hackathon conducted by Microsoft Innovations Club,VIT Chennai and sponsored by Geek for Geeks. -The PharmaCat Project is divided into **2 sections**: +The PharmaCat Project is divided into **3 sections**: ...The PharmaCat Android App (based on PharmaCat REST API) created by [Prince Singh](https://github.com/princesinghr1) ...The Web Application(utilizes Flask) and API Server created by [Apratim Shukla](https://github.com/apratimshukla6), [Mayank Tolani](https://github.com/mak1082) and [Swapnil Mishra](https://github.com/Swapnil0115) +... The Machine Learning and NLP based diagnosis created (utilizes Flask) by [Raj Sangani] (https://github.com/rajlm10) + *To setup the Web Application along with API server do:* ``` pip install virtualenv From 5e78819ab96632a944fcf047a1b909bd745e753c Mon Sep 17 00:00:00 2001 From: Raj Sangani <57042606+rajlm10@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:05:52 +0530 Subject: [PATCH 2/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77e2141..b229649 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The PharmaCat Project is divided into **3 sections**: ...The Web Application(utilizes Flask) and API Server created by [Apratim Shukla](https://github.com/apratimshukla6), [Mayank Tolani](https://github.com/mak1082) and [Swapnil Mishra](https://github.com/Swapnil0115) -... The Machine Learning and NLP based diagnosis created (utilizes Flask) by [Raj Sangani] (https://github.com/rajlm10) +... The Machine Learning and NLP based diagnosis created (utilizes Flask) by [Raj Sangani](https://github.com/rajlm10) *To setup the Web Application along with API server do:* ``` From c030a92da5debc801f5b34bb157f4291fba3d5a0 Mon Sep 17 00:00:00 2001 From: Raj Sangani <57042606+rajlm10@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:06:36 +0530 Subject: [PATCH 3/5] Final Tuned ML Model --- Web/pickle_model.pkl | Bin 0 -> 250736 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Web/pickle_model.pkl diff --git a/Web/pickle_model.pkl b/Web/pickle_model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..477e580097b53f3413a81c81f1f87657b1bf4f67 GIT binary patch literal 250736 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 DFP>>_ literal 0 HcmV?d00001 From 7be80f9515f7b61f0f12d71d74ab16bf608b3f77 Mon Sep 17 00:00:00 2001 From: Raj Sangani <57042606+rajlm10@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:08:08 +0530 Subject: [PATCH 4/5] Updated Main.py with new model and chatting service The NLP Model hasn't been integrated yet --- Web/main.py | 426 ++++++++++++++++++++++------------------------------ 1 file changed, 177 insertions(+), 249 deletions(-) diff --git a/Web/main.py b/Web/main.py index 8fc0450..f5b6540 100644 --- a/Web/main.py +++ b/Web/main.py @@ -2,7 +2,7 @@ This script handles the execution of the Flask Web Server(Web Application + JSON API) """ -from flask import Flask, render_template, request, redirect, url_for, session, jsonify, flash +from flask import Flask, render_template, request, redirect, url_for, session, jsonify from flaskext.mysql import MySQL from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB @@ -47,7 +47,7 @@ -"""-------------------------------Start of Pharmacat API for developers-------------------------------""" +"""-------------------------------Start of HealthHUB API for developers-------------------------------""" @app.route('/api/details/',methods=['GET']) def detailsapi(token): @@ -109,7 +109,7 @@ def hospital(token): cursor = mysql.get_db().cursor() cursor.execute('SELECT * FROM users WHERE Username = %s', [username]) account = cursor.fetchone() - API_KEY = 'your google api key' + API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' str1 = str(account[5]).split(",") l="" for i in range(0,len(str1)): @@ -232,7 +232,7 @@ def diagnosesym(code): special = cursor2.fetchone() return jsonify({'Disease': answer, 'Medicine': medicine[2], 'Doctor': special[2]}) -"""-------------------------------End of Pharmacat API for developers-------------------------------""" +"""-------------------------------End of HealthHub API for developers-------------------------------""" @@ -241,10 +241,7 @@ def diagnosesym(code): #Homepage @app.route('/') def index(): - if 'loggedin' not in session: - return render_template('index.html') - else: - return home() + return render_template('index.html') #Dashboard @app.route('/dashboard') @@ -268,45 +265,33 @@ def home(): #Patient Login @app.route('/login', methods=['GET', 'POST']) def login(): - if 'loggedin' not in session: # Output message if something goes wrong... - msg = None - # Check if "username" and "password" POST requests exist (user submitted form) - if request.method == 'POST' and 'username' in request.form and 'password' in request.form: - # Create variables for easy access - username = request.form['username'] - password = request.form['password'] - if(username and password): - # Check if account exists using MySQL - cursor = mysql.get_db().cursor() - cursor.execute('SELECT * FROM users WHERE Username = %s', (username)) - # Fetch one record and return result - account = cursor.fetchone() - # If account exists in accounts table in out database - if account: - if bcrypt.checkpw(password.encode('utf-8'), account[2].encode('utf-8')): - # Create session data, we can access this data in other routes - session['loggedin'] = True - session['id'] = account[0] - session['username'] = account[1] - session['api'] = account[8] - session['isdoctor'] = 0 - # Redirect to dashboard - return home() - else: - # Account doesnt exist or username/password incorrect - msg = 'Incorrect username/password!' - flash(msg) - else: - # Account doesnt exist or username/password incorrect - msg = 'Incorrect username/password!' - flash(msg) - else: - msg = 'Please provide both username and password!' - flash(msg) - # Show the login form with message (if any) - else: - return home() + msg = '' + # Check if "username" and "password" POST requests exist (user submitted form) + if request.method == 'POST' and 'username' in request.form and 'password' in request.form: + # Create variables for easy access + username = request.form['username'] + password = request.form['password'] + # Check if account exists using MySQL + cursor = mysql.get_db().cursor() + cursor.execute('SELECT * FROM users WHERE Username = %s', (username)) + # Fetch one record and return result + account = cursor.fetchone() + # If account exists in accounts table in out database + # if account: + if bcrypt.checkpw(password.encode('utf-8'), account[2].encode('utf-8')): + # Create session data, we can access this data in other routes + session['loggedin'] = True + session['id'] = account[0] + session['username'] = account[1] + session['api'] = account[8] + session['isdoctor'] = 0 + # Redirect to dashboard + return home() + else: + # Account doesnt exist or username/password incorrect + msg = 'Incorrect username/password!' + # Show the login form with message (if any) return render_template('patientlogin.html', msg=msg) #Patient Register @@ -314,160 +299,120 @@ def login(): def register(): # Output message if something goes wrong... msg = '' - if('loggedin' not in session): # Check if "username", "password" and "email" POST requests exist (user submitted form) - if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form: - # Create variables for easy access - username = request.form['username'] - password = request.form['password'] - email = request.form['email'] - full_name = request.form['full_name'] - address = request.form['address'] - age = request.form['age'] - blood = request.form['blood'] - if(username and password and email and full_name and address and age and blood): - # Check if account exists using MySQL - cursor = mysql.get_db().cursor() - cursor.execute('SELECT * FROM users WHERE Username = %s', (username)) - account = cursor.fetchone() - # If account exists show error and validation checks - if account: - msg = 'Account already exists!' - flash(msg) - elif not re.match(r'[^@]+@[^@]+\.[^@]+', email): - msg = 'Invalid email address!' - flash(msg) - elif not re.match(r'[A-Za-z0-9]+', username): - msg = 'Username must contain only characters and numbers!' - flash(msg) - else: - # Account doesnt exists and the form data is valid, now insert new account into users table - apistr = username; - result = hashlib.md5(apistr.encode()) - comb = username+'(~)'+password - s = comb.encode() - s1 = pybase64.b64encode(s) - api=s1.decode('utf-8') - hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) - cursor.execute('INSERT INTO users VALUES (NULL, %s, %s, %s, %s, %s, %s, %s, %s)', (username, hashed_password, email, full_name, address, blood, age, api)) - cursor.execute('SELECT * FROM users WHERE Username = %s', (username)) - # Fetch one record and return result - account = cursor.fetchone() - session['loggedin'] = True - session['id'] = account[0] - session['username'] = account[1] - session['api'] = account[8] - session['isdoctor'] = 0 - msg = 'You have successfully registered!' - return home() - else: - msg = 'Please fill out the form!' - flash(msg) - elif request.method == 'POST': - # Form is empty... (no POST data) + if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form: + # Create variables for easy access + username = request.form['username'] + password = request.form['password'] + email = request.form['email'] + full_name = request.form['full_name'] + address = request.form['address'] + age = request.form['age'] + blood = request.form['blood'] + # Check if account exists using MySQL + cursor = mysql.get_db().cursor() + cursor.execute('SELECT * FROM users WHERE Username = %s', (username)) + account = cursor.fetchone() + # If account exists show error and validation checks + if account: + msg = 'Account already exists!' + elif not re.match(r'[^@]+@[^@]+\.[^@]+', email): + msg = 'Invalid email address!' + elif not re.match(r'[A-Za-z0-9]+', username): + msg = 'Username must contain only characters and numbers!' + elif not username or not password or not email: msg = 'Please fill out the form!' - # Show registration form with message (if any) - else: - return home() + else: + # Account doesnt exists and the form data is valid, now insert new account into users table + apistr = username; + result = hashlib.md5(apistr.encode()) + comb = username+'(~)'+password + s = comb.encode() + s1 = pybase64.b64encode(s) + api=s1.decode('utf-8') + #print(s1) + #r=pybase64.b64decode(s) + #print(r.decode('utf-8')) + + hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) + cursor.execute('INSERT INTO users VALUES (NULL, %s, %s, %s, %s, %s, %s, %s, %s)', (username, hashed_password, email, full_name, address, blood, age, api)) + msg = 'You have successfully registered!' + elif request.method == 'POST': + # Form is empty... (no POST data) + msg = 'Please fill out the form!' + # Show registration form with message (if any) return render_template('patientlogin.html', msg=msg) #Doctor Register @app.route('/docregister', methods=['GET', 'POST']) def docregister(): - if 'loggedin' not in session: # Output message if something goes wrong... - msg = '' - # Check if "username", "password" and "email" POST requests exist (user submitted form) - if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form: - # Create variables for easy access - username = request.form['username'] - password = request.form['password'] - email = request.form['email'] - full_name = request.form['full_name'] - registration_number = request.form['registration_number'] - contact_number = request.form['contact_number'] - spec = request.form['specialization'] - address = request.form['address'] - if(username and password and email and full_name and registration_number and contact_number and spec and address): - # Check if account exists using MySQL - cursor = mysql.get_db().cursor() - cursor.execute('SELECT * FROM doctors WHERE Username = %s', (username)) - account = cursor.fetchone() - # If account exists show error and validation checks - if account: - msg = 'Account already exists!' - flash(msg) - elif not re.match(r'[^@]+@[^@]+\.[^@]+', email): - msg = 'Invalid email address!' - flash(msg) - elif not re.match(r'[A-Za-z0-9]+', username): - msg = 'Username must contain only characters and numbers!' - flash(msg) - else: - # Account doesnt exists and the form data is valid, now insert new account into users table - hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) - cursor.execute('INSERT INTO doctors VALUES (NULL, %s, %s, %s, %s, %s, %s, %s, %s, %s)', ( username, hashed_password, email, full_name, registration_number, contact_number, "Default Hospital" , spec, address )) - msg = 'You have successfully registered!' - cursor.execute('SELECT * FROM doctors WHERE Username = %s', (username)) - # Fetch one record and return result - account = cursor.fetchone() - session['loggedin'] = True - session['id'] = account[0] - session['username'] = account[1] - session['isdoctor'] = 1 - return home() - else: - msg = 'Please fill out the form!' - flash(msg) - elif request.method == 'POST': - # Form is empty... (no POST data) + msg = '' + # Check if "username", "password" and "email" POST requests exist (user submitted form) + if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form: + # Create variables for easy access + username = request.form['username'] + password = request.form['password'] + email = request.form['email'] + full_name = request.form['full_name'] + registration_number = request.form['registration_number'] + contact_number = request.form['contact_number'] + spec = request.form['specialization'] + address = request.form['address'] + + # Check if account exists using MySQL + cursor = mysql.get_db().cursor() + cursor.execute('SELECT * FROM doctors WHERE Username = %s', (username)) + account = cursor.fetchone() + # If account exists show error and validation checks + if account: + msg = 'Account already exists!' + elif not re.match(r'[^@]+@[^@]+\.[^@]+', email): + msg = 'Invalid email address!' + elif not re.match(r'[A-Za-z0-9]+', username): + msg = 'Username must contain only characters and numbers!' + elif not username or not password or not email: msg = 'Please fill out the form!' - else: - return home() + else: + # Account doesnt exists and the form data is valid, now insert new account into users table + hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) + print(username + "\n" + str(hashed_password)+ "\n" + email+ "\n" +full_name+ "\n" +registration_number+ "\n" +contact_number+ "\n" +spec+ "\n" +address) + cursor.execute('INSERT INTO doctors VALUES (NULL, %s, %s, %s, %s, %s, %s ,%s, %s, %s)', ( username, hashed_password, email, full_name, registration_number, contact_number, "" , spec, address )) + msg = 'You have successfully registered!' + elif request.method == 'POST': + # Form is empty... (no POST data) + msg = 'Please fill out the form!' # Show registration form with message (if any) return render_template('doctorlogin.html', msg=msg) #Doctor Login @app.route('/doclogin', methods=['GET', 'POST']) def doclogin(): - if 'loggedin' not in session: # Output message if something goes wrong... - msg = '' - # Check if "username" and "password" POST requests exist (user submitted form) - if request.method == 'POST' and 'username' in request.form and 'password' in request.form: - # Create variables for easy access - username = request.form['username'] - password = request.form['password'] - if(username and password): - - # Check if account exists using MySQL - cursor = mysql.get_db().cursor() - cursor.execute('SELECT * FROM doctors WHERE Username = %s', (username)) - # Fetch one record and return result - account = cursor.fetchone() - # If account exists in accounts table in out database - if account: - if bcrypt.checkpw(password.encode('utf-8'), account[2].encode('utf-8')): - # Create session data, we can access this data in other routes - session['loggedin'] = True - session['id'] = account[0] - session['username'] = account[1] - session['isdoctor'] = 1 - # Redirect to home page - return home() - else: - # Account doesnt exist or username/password incorrect - msg = 'Incorrect username/password!' - flash(msg) - else: - # Account doesnt exist or username/password incorrect - msg = 'Incorrect username/password!' - flash(msg) - else: - msg = 'Please provide both username and password!' - flash(msg) - else: - return home() + msg = '' + # Check if "username" and "password" POST requests exist (user submitted form) + if request.method == 'POST' and 'username' in request.form and 'password' in request.form: + # Create variables for easy access + username = request.form['username'] + password = request.form['password'] + # Check if account exists using MySQL + cursor = mysql.get_db().cursor() + cursor.execute('SELECT * FROM doctors WHERE Username = %s', (username)) + # Fetch one record and return result + account = cursor.fetchone() + # If account exists in accounts table in out database + # if account: + if bcrypt.checkpw(password.encode('utf-8'), account[2].encode('utf-8')): + # Create session data, we can access this data in other routes + session['loggedin'] = True + session['id'] = account[0] + session['username'] = account[1] + session['isdoctor'] = 1 + # Redirect to home page + return home() + else: + # Account doesnt exist or username/password incorrect + msg = 'Incorrect username/password!' # Show the login form with message (if any) return render_template('doctorlogin.html', msg=msg) @@ -477,24 +422,15 @@ def bmi(): if 'loggedin' in session: result=0 cursor = mysql.get_db().cursor() - if session["isdoctor"]: - cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) - else: - cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) + cursor.execute('SELECT * FROM users WHERE Username = %s', [session['username']]) account = cursor.fetchone() if request.method=='POST': h=request.form["height"] + h=float(h) w=request.form["weight"] - if h and w: - h=float(h) - h = h/100 - w=float(w) - result=w/(h*h) - result=round(result,2) - return render_template('bmi.html',ans=result,account=account, height=h, weight=w) - else: - msg = 'Please provide height and weight' - flash(msg) + w=float(w) + result=w/(h*h) + result=round(result,2) return render_template('bmi.html',ans=result,account=account) return redirect(url_for('login')) @@ -504,10 +440,7 @@ def diagnose(): # Check if user is loggedin if 'loggedin' in session: cursor = mysql.get_db().cursor() - if session["isdoctor"]: - cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) - else: - cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) + cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) account = cursor.fetchone() return render_template('diagnose.html', account=account) # User is not loggedin redirect to login page @@ -518,11 +451,9 @@ def diagnose(): def diagnoseproceed(): # Check if user is loggedin if 'loggedin' in session: + cursor = mysql.get_db().cursor() - if session["isdoctor"]: - cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) - else: - cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) + cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) account = cursor.fetchone() cursor.execute('SELECT * FROM symptoms ORDER BY Symptom_Name ASC') sym = cursor.fetchall() @@ -556,11 +487,10 @@ def diagnosefinal(): if 'loggedin' in session: cursor = mysql.get_db().cursor() - if session["isdoctor"]: - cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) - else: - cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) + cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) account = cursor.fetchone() + + if(request.method == 'POST'): n = int(request.form['n']) l=[] @@ -575,33 +505,49 @@ def diagnosefinal(): features = cols feature_dict = {} - filename = 'finalized_model.sav' + filename = 'pickle_model.pkl' for i,f in enumerate(features): feature_dict[f] = i for i in range(0,n): l.append(request.form['sym'+str(i)]) - + + X = [0]*132 for i in l: s=i m=feature_dict[s] if (m!=0): + print("\n\n") + print(m) + print("\n\n") sample_x = [i/m if i ==m else i*0 for i in range(len(features))] + X[m] = 1 loaded_model = pickle.load(open(filename, 'rb')) + print("\n\n") + print(sample_x) + print("\n\n") + print(len(sample_x)) + print("\n\n") + print(X) + print("\n\n") sample_x = np.array(sample_x).reshape(1,len(sample_x)) + X = np.array(X).reshape(1,len(X)) p_disease=loaded_model.predict(sample_x) + p_disease2=loaded_model.predict(X) answer = p_disease[0] + answer2 = p_disease2[0] + print(answer2) cursor1 = mysql.get_db().cursor() - cursor1.execute('SELECT * FROM medicine WHERE Disease = %s', [answer]) + cursor1.execute('SELECT * FROM medicine WHERE Disease = %s', [answer2]) medicine = cursor1.fetchone() cursor2 = mysql.get_db().cursor() - cursor2.execute('SELECT * FROM doctor_fields WHERE Disease = %s', [answer]) + cursor2.execute('SELECT * FROM doctor_fields WHERE Disease = %s', [answer2]) special = cursor2.fetchone() - return render_template('diagnosefinal.html', account=account,n=n,symptoms=l,answer=answer,medicine=medicine[2],special=special[2]) + return render_template('diagnosefinal.html', account=account,n=n,symptoms=l,answer=answer2,medicine=medicine[2],special=special[2]) # User is not loggedin redirect to login page return redirect(url_for('login')) @@ -613,44 +559,24 @@ def diagnosedetails(): if 'loggedin' in session: cursor = mysql.get_db().cursor() - if session["isdoctor"]: - cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) - else: - cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) + cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) account = cursor.fetchone() + + if(request.method == 'POST'): filename = 'disease_predict.sav' feel = request.form['feel'] - if feel: - data = [feel] - cv = pickle.load(open("vectorizer.pickle", 'rb')) #Load vectorizer - loaded_model = pickle.load(open(filename, 'rb')) - vect=cv.transform(data).toarray() - p=loaded_model.predict(vect) - return render_template('diagnoseanswerNLP.html',account=account,ans=p[0]) - else: - msg = 'Please provide an input' - flash(msg) - return render_template('diagnoseNLP.html',account=account) + data = [feel] + cv = pickle.load(open("vectorizer.pickle", 'rb')) #Load vectorizer + loaded_model = pickle.load(open(filename, 'rb')) + vect=cv.transform(data).toarray() + p=loaded_model.predict(vect) + return render_template('diagnoseanswer.html',account=account,ans=p[0]) else: - return render_template('diagnoseNLP.html',account=account) + return render_template('diagnosedetails.html',account=account) # User is not loggedin redirect to login page return redirect(url_for('login')) -# Account information visible inside dashboard -@app.route('/myaccount') -def myaccount(): - if 'loggedin' in session: - cursor = mysql.get_db().cursor() - if session["isdoctor"]: - cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) - else: - cursor.execute('SELECT * FROM users WHERE ID = %s', [session['id']]) - account = cursor.fetchone() - return render_template('myaccount.html', account=account, isDoctor = session["isdoctor"]) - else: - return redirect(url_for('login')) - #Hospitals near to the Address using GeoCoding @app.route('/hospitals') @@ -669,7 +595,7 @@ def hospitals(): else: address = account[5] # enter your api key here - API_KEY = 'your google api key' + API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' str1 = str(address).split(",") l="" for i in range(0,len(str1)): @@ -711,7 +637,7 @@ def hospitalset(): cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) account = cursor.fetchone() # enter your api key here - API_KEY = 'your google api key' + API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' str1 = str(account[9]).split(",") l="" for i in range(0,len(str1)): @@ -762,7 +688,7 @@ def book(): else: address = account[5] # enter your api key here - API_KEY = 'your google api key' + API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' str1 = str(address).split(",") l="" for i in range(0,len(str1)): @@ -797,6 +723,8 @@ def book(): cursor.execute('SELECT * FROM doctors WHERE Hospital_Name= %s', [hname]) doc = cursor.fetchone() cursor1 = mysql.get_db().cursor() + print("\n\n\n " + str(doc[0]) + "\n" + str(session['id'])+ "\n\n\n") + doctor = "Dr. Gupta" cursor1.execute('INSERT INTO booking VALUES (NULL, %s, %s, %s, %s)', ( doc[0], session['id'], time, 0)) cursor2 = mysql.get_db().cursor() cursor2.execute('SELECT * FROM booking WHERE Patient_ID= %s', [session['id']]) @@ -871,7 +799,7 @@ def logout(): session.pop('id', None) session.pop('username', None) # Redirect to login page - return redirect(url_for('index')) + return redirect(url_for('login')) #run the Flask Server if __name__ == '__main__': From 474df5a2b0864a4aa87fc8acda6e672982b4e214 Mon Sep 17 00:00:00 2001 From: Raj Sangani <57042606+rajlm10@users.noreply.github.com> Date: Tue, 8 Jun 2021 19:32:59 +0530 Subject: [PATCH 5/5] Add files via upload --- Web/main.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Web/main.py b/Web/main.py index f5b6540..6b9473a 100644 --- a/Web/main.py +++ b/Web/main.py @@ -109,7 +109,7 @@ def hospital(token): cursor = mysql.get_db().cursor() cursor.execute('SELECT * FROM users WHERE Username = %s', [username]) account = cursor.fetchone() - API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' + API_KEY = 'Enter your key' str1 = str(account[5]).split(",") l="" for i in range(0,len(str1)): @@ -595,7 +595,7 @@ def hospitals(): else: address = account[5] # enter your api key here - API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' + API_KEY = 'Enter your key' str1 = str(address).split(",") l="" for i in range(0,len(str1)): @@ -637,7 +637,7 @@ def hospitalset(): cursor.execute('SELECT * FROM doctors WHERE ID = %s', [session['id']]) account = cursor.fetchone() # enter your api key here - API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' + API_KEY = 'Enter your key' str1 = str(account[9]).split(",") l="" for i in range(0,len(str1)): @@ -688,7 +688,7 @@ def book(): else: address = account[5] # enter your api key here - API_KEY = 'AIzaSyCXkJwj_YIMQhJjUd-aF7LKjvcOd_5AzcU' + API_KEY = 'Enter your key' str1 = str(address).split(",") l="" for i in range(0,len(str1)):