Tonic's picture
fix generation parameters
c37ed45 unverified
raw
history blame
9.01 kB
# app.py
from flask import Flask, render_template, request, send_file, redirect, url_for
import os
import logging
from utils.meldrx import MeldRxAPI
from utils.oneclick import generate_discharge_paper_one_click
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
app = Flask(__name__)
CLIENT_ID = os.getenv("MELDRX_CLIENT_ID", "04bdc9f9a23d488a868b93d594ee5a4a")
CLIENT_SECRET = os.getenv("MELDRX_CLIENT_SECRET", None)
WORKSPACE_ID = os.getenv("MELDRX_WORKSPACE_ID", "09ed4f76-b5ac-42bf-92d5-496933203dbe")
SPACE_URL = os.getenv("SPACE_URL", "https://multitransformer-tonic-discharge-guard.hf.space")
REDIRECT_URI = f"{SPACE_URL}/auth/callback"
meldrx_api = MeldRxAPI(
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
workspace_id=WORKSPACE_ID,
redirect_uri=REDIRECT_URI
)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/auth', methods=['GET', 'POST'])
def auth():
if request.method == 'POST':
auth_code = request.form.get('auth_code')
if auth_code and meldrx_api.authenticate_with_code(auth_code):
return redirect(url_for('dashboard'))
return render_template('auth.html', auth_url=meldrx_api.get_authorization_url(), auth_result="Authentication failed")
return render_template('auth.html', auth_url=meldrx_api.get_authorization_url())
@app.route('/auth/callback', methods=['GET'])
def auth_callback():
auth_code = request.args.get('code')
if auth_code and meldrx_api.authenticate_with_code(auth_code):
return redirect(url_for('dashboard'))
return render_template('auth.html', auth_url=meldrx_api.get_authorization_url(), auth_result="Callback failed")
@app.route('/dashboard', methods=['GET'])
def dashboard():
if not meldrx_api.access_token:
return redirect(url_for('auth'))
patients_data = meldrx_api.get_patients()
if not patients_data or "entry" not in patients_data:
return render_template('dashboard.html', error="Failed to fetch patient data")
patients = [entry['resource'] for entry in patients_data.get('entry', [])]
return render_template('dashboard.html', patients=patients, authenticated=True)
@app.route('/oneclick', methods=['GET', 'POST'])
def one_click():
if not meldrx_api.access_token:
return redirect(url_for('auth'))
if request.method == 'POST':
patient_id = request.form.get('patient_id', '').strip()
first_name = request.form.get('first_name', '').strip()
last_name = request.form.get('last_name', '').strip()
action = request.form.get('action', '')
logger.info(f"One-click request - ID: {patient_id}, First: {first_name}, Last: {last_name}, Action: {action}")
pdf_path, status, basic_summary, ai_summary = generate_discharge_paper_one_click(
meldrx_api, grok_client, patient_id, first_name, last_name
)
if action == "Display Summary":
return render_template('oneclick.html',
status=status,
basic_summary=basic_summary.replace('\n', '<br>') if basic_summary else None,
ai_summary=ai_summary.replace('\n', '<br>') if ai_summary else None,
patient_id=patient_id,
first_name=first_name,
last_name=last_name)
elif action == "Generate PDF" and pdf_path:
return send_file(pdf_path,
as_attachment=True,
download_name=f"discharge_summary_{patient_id or 'patient'}.pdf")
return render_template('oneclick.html',
status=status,
basic_summary=basic_summary.replace('\n', '<br>') if basic_summary else None,
ai_summary=ai_summary.replace('\n', '<br>') if ai_summary else None,
patient_id=patient_id,
first_name=first_name,
last_name=last_name)
return render_template('oneclick.html')
if __name__ == '__main__':
port = int(os.getenv("PORT", 7860))
app.run(debug=False, host='0.0.0.0', port=port)
# # app.py
# from flask import Flask, render_template, request, send_file, redirect, url_for
# import os
# import logging
# from utils.meldrx import MeldRxAPI
# from utils.oneclick import generate_discharge_paper_one_click
# from xai import Grok # Adjust import based on actual xAI SDK
# logging.basicConfig(level=logging.DEBUG) # Changed to DEBUG for more detailed logs
# logger = logging.getLogger(__name__)
# app = Flask(__name__)
# CLIENT_ID = os.getenv("MELDRX_CLIENT_ID", "04bdc9f9a23d488a868b93d594ee5a4a")
# CLIENT_SECRET = os.getenv("MELDRX_CLIENT_SECRET", None)
# WORKSPACE_ID = os.getenv("MELDRX_WORKSPACE_ID", "09ed4f76-b5ac-42bf-92d5-496933203dbe")
# SPACE_URL = os.getenv("SPACE_URL", "https://multitransformer-tonic-discharge-guard.hf.space")
# REDIRECT_URI = f"{SPACE_URL}/auth/callback"
# meldrx_api = MeldRxAPI(
# client_id=CLIENT_ID,
# client_secret=CLIENT_SECRET,
# workspace_id=WORKSPACE_ID,
# redirect_uri=REDIRECT_URI
# )
# # Initialize xAI client
# grok_client = Grok() # Adjust initialization as needed
# @app.route('/')
# def index():
# return render_template('index.html')
# @app.route('/auth', methods=['GET', 'POST'])
# def auth():
# if request.method == 'POST':
# auth_code = request.form.get('auth_code')
# if auth_code and meldrx_api.authenticate_with_code(auth_code):
# return redirect(url_for('dashboard'))
# return render_template('auth.html', auth_url=meldrx_api.get_authorization_url(), auth_result="Authentication failed")
# return render_template('auth.html', auth_url=meldrx_api.get_authorization_url())
# @app.route('/auth/callback', methods=['GET'])
# def auth_callback():
# auth_code = request.args.get('code')
# if auth_code and meldrx_api.authenticate_with_code(auth_code):
# return redirect(url_for('dashboard'))
# return render_template('auth.html', auth_url=meldrx_api.get_authorization_url(), auth_result="Callback failed")
# @app.route('/dashboard', methods=['GET'])
# def dashboard():
# if not meldrx_api.access_token:
# return redirect(url_for('auth'))
# patients_data = meldrx_api.get_patients()
# if not patients_data or "entry" not in patients_data:
# logger.error("Failed to fetch patient data for dashboard")
# return render_template('dashboard.html', error="Failed to fetch patient data")
# patients = [entry['resource'] for entry in patients_data.get('entry', [])]
# logger.debug(f"Patients for dashboard: {patients}")
# return render_template('dashboard.html', patients=patients, authenticated=True)
# @app.route('/oneclick', methods=['GET', 'POST'])
# def one_click():
# if not meldrx_api.access_token:
# return redirect(url_for('auth'))
# if request.method == 'POST':
# patient_id = request.form.get('patient_id', '').strip()
# first_name = request.form.get('first_name', '').strip()
# last_name = request.form.get('last_name', '').strip()
# action = request.form.get('action', '')
# logger.info(f"One-click request - ID: {patient_id}, First: {first_name}, Last: {last_name}, Action: {action}")
# pdf_path, status, basic_summary, ai_summary = generate_discharge_paper_one_click(
# meldrx_api, grok_client, patient_id, first_name, last_name
# )
# if action == "Display Summary":
# return render_template('oneclick.html',
# status=status,
# basic_summary=basic_summary.replace('\n', '<br>') if basic_summary else None,
# ai_summary=ai_summary.replace('\n', '<br>') if ai_summary else None,
# patient_id=patient_id,
# first_name=first_name,
# last_name=last_name)
# elif action == "Generate PDF" and pdf_path:
# return send_file(pdf_path,
# as_attachment=True,
# download_name=f"discharge_summary_{patient_id or 'patient'}.pdf")
# return render_template('oneclick.html',
# status=status,
# basic_summary=basic_summary.replace('\n', '<br>') if basic_summary else None,
# ai_summary=ai_summary.replace('\n', '<br>') if ai_summary else None,
# patient_id=patient_id,
# first_name=first_name,
# last_name=last_name)
# return render_template('oneclick.html')
# if __name__ == '__main__':
# port = int(os.getenv("PORT", 7860))
# app.run(debug=False, host='0.0.0.0', port=port)