Tonic commited on
Commit
393338e
·
verified ·
1 Parent(s): f10ca6a

Update callbackmanager.py

Browse files
Files changed (1) hide show
  1. callbackmanager.py +31 -20
callbackmanager.py CHANGED
@@ -875,7 +875,7 @@ cyberpunk_theme = gr.themes.Monochrome(
875
  with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
876
  gr.Markdown("<h1 style='color:#00FFFF; text-shadow: 0 0 5px #00FFFF;'>Discharge Guard <span style='color:#FF00FF; text-shadow: 0 0 5px #FF00FF;'>Cyber</span></h1>") # Cyberpunk Title
877
 
878
- with gr.Tab("Authenticate with MeldRx", elem_classes="cyberpunk-tab"): # Optional: Class for tab styling
879
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>SMART on FHIR Authentication</h2>") # Neon Tab Header
880
  auth_url_output = gr.Textbox(label="Authorization URL", value=CALLBACK_MANAGER.get_auth_url(), interactive=False)
881
  gr.Markdown("<p style='color:#A9A9A9;'>Copy the URL above, open it in a browser, log in, and paste the <span style='color:#00FFFF;'>entire redirected URL</span> from your browser's address bar below.</p>") # Subdued instructions with neon highlight
@@ -891,7 +891,7 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
891
  patient_data_output = gr.Textbox(label="Patient Data", lines=10)
892
 
893
  # Add button to generate PDF from MeldRx data (No AI)
894
- meldrx_pdf_button = gr.Button("Generate PDF from MeldRx Data (No AI)", elem_classes="cyberpunk-button") # Renamed button
895
  meldrx_pdf_status = gr.Textbox(label="PDF Generation Status (No AI)") # Renamed status
896
  meldrx_pdf_download = gr.File(label="Download Generated PDF (No AI)") # Renamed download
897
 
@@ -907,13 +907,15 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
907
  extract_code_button.click(
908
  fn=process_redirected_url,
909
  inputs=redirected_url_input,
910
- outputs=[extracted_code_output, auth_result] # Reusing auth_result for extraction status
 
911
  )
912
 
913
  auth_submit.click(
914
  fn=CALLBACK_MANAGER.set_auth_code,
915
  inputs=extracted_code_output, # Using extracted code as input for authentication
916
  outputs=auth_result,
 
917
  )
918
 
919
  with gr.Tab("Patient Dashboard", elem_classes="cyberpunk-tab"): # Optional: Class for tab styling
@@ -973,38 +975,38 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
973
  return f"<p style='color:#FF6347;'>Error fetching patient data: {str(e)}</p>" # Tomato Error
974
 
975
 
976
- with gr.Tab("Discharge Form", elem_classes="cyberpunk-tab"): # Optional: Class for tab styling
977
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Patient Details</h2>") # Neon Tab Header
978
- with gr.Row():
979
  first_name = gr.Textbox(label="First Name")
980
  last_name = gr.Textbox(label="Last Name")
981
  middle_initial = gr.Textbox(label="Middle Initial")
982
- with gr.Row():
983
  dob = gr.Textbox(label="Date of Birth")
984
  age = gr.Textbox(label="Age")
985
  sex = gr.Textbox(label="Sex")
986
  address = gr.Textbox(label="Address")
987
- with gr.Row():
988
  city = gr.Textbox(label="City")
989
  state = gr.Textbox(label="State")
990
  zip_code = gr.Textbox(label="Zip Code")
991
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Primary Healthcare Professional Details</h2>") # Neon Sub-header
992
- with gr.Row():
993
  doctor_first_name = gr.Textbox(label="Doctor's First Name")
994
  doctor_last_name = gr.Textbox(label="Doctor's Last Name")
995
  doctor_middle_initial = gr.Textbox(label="Doctor's Middle Initial")
996
  hospital_name = gr.Textbox(label="Hospital/Clinic Name")
997
  doctor_address = gr.Textbox(label="Address")
998
- with gr.Row():
999
  doctor_city = gr.Textbox(label="City")
1000
  doctor_state = gr.Textbox(label="State")
1001
  doctor_zip = gr.Textbox(label="Zip Code")
1002
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Admission and Discharge Details</h2>") # Neon Sub-header
1003
- with gr.Row():
1004
  admission_date = gr.Textbox(label="Date of Admission")
1005
  referral_source = gr.Textbox(label="Source of Referral")
1006
  admission_method = gr.Textbox(label="Method of Admission")
1007
- with gr.Row():
1008
  discharge_date = gr.Textbox(label="Date of Discharge")
1009
  discharge_reason = gr.Radio(
1010
  ["Treated", "Transferred", "Discharge Against Advice", "Patient Died"],
@@ -1017,12 +1019,12 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
1017
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Medication Details</h2>") # Neon Sub-header
1018
  medications = gr.Textbox(label="Medication on Discharge")
1019
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Prepared By</h2>") # Neon Sub-header
1020
- with gr.Row():
1021
  preparer_name = gr.Textbox(label="Name")
1022
  preparer_job_title = gr.Textbox(label="Job Title")
1023
 
1024
  # Add buttons for both display form and generate PDF
1025
- with gr.Row():
1026
  submit_display = gr.Button("Display Form", elem_classes="cyberpunk-button") # Cyberpunk button style
1027
  submit_pdf = gr.Button("Generate PDF (No AI)", elem_classes="cyberpunk-button") # Renamed button to clarify no AI and styled
1028
 
@@ -1065,6 +1067,7 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
1065
  preparer_job_title,
1066
  ],
1067
  outputs=form_output,
 
1068
  )
1069
 
1070
  # Connect the generate PDF button (No AI version)
@@ -1102,11 +1105,12 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
1102
  preparer_job_title,
1103
  ],
1104
  outputs=pdf_output,
 
1105
  )
1106
 
1107
  with gr.Tab("Medical File Analysis", elem_classes="cyberpunk-tab"): # Optional: Class for tab styling
1108
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Analyze Medical Files with Discharge Guard AI</h2>") # Neon Tab Header
1109
- with gr.Column():
1110
  dicom_file = gr.File(
1111
  file_types=[".dcm"], label="Upload DICOM File (.dcm)"
1112
  )
@@ -1156,36 +1160,41 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
1156
  analyze_dicom_file_with_ai, # Call REAL AI function
1157
  inputs=dicom_file,
1158
  outputs=dicom_ai_output,
 
1159
  )
1160
  analyze_hl7_button.click(
1161
  analyze_hl7_file_with_ai, # Call REAL AI function
1162
  inputs=hl7_file,
1163
  outputs=hl7_ai_output,
 
1164
  )
1165
  analyze_xml_button.click(
1166
  analyze_cda_xml_file_with_ai, # Call REAL AI function
1167
  inputs=xml_file,
1168
  outputs=xml_ai_output,
 
1169
  )
1170
  analyze_ccda_button.click(
1171
  analyze_cda_xml_file_with_ai, # Call REAL AI function
1172
  inputs=ccda_file,
1173
  outputs=ccda_ai_output,
 
1174
  )
1175
  analyze_ccd_button.click( # Redundant button, but kept for UI if needed
1176
  analyze_cda_xml_file_with_ai, # Call REAL AI function
1177
  inputs=ccd_file,
1178
  outputs=ccd_ai_output,
 
1179
  )
1180
  analyze_pdf_button.click(
1181
- analyze_pdf_file_with_ai, inputs=pdf_file, outputs=pdf_ai_output
1182
  )
1183
  analyze_csv_button.click(
1184
- analyze_csv_file_with_ai, inputs=csv_file, outputs=csv_ai_output
1185
  )
1186
 
1187
  with gr.Tab(
1188
- "One-Click Discharge Paper (AI)", elem_classes="cyberpunk-tab"
1189
  ): # New Tab for One-Click Discharge Paper with AI, styled
1190
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>One-Click Medical Discharge Paper Generation with AI Content</h2>") # Neon Tab Header
1191
  one_click_ai_pdf_button = gr.Button(
@@ -1209,11 +1218,12 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
1209
  fn=CALLBACK_MANAGER.get_patient_data,
1210
  inputs=None,
1211
  outputs=patient_data_output,
 
1212
  )
1213
 
1214
  # Connect refresh button to update dashboard
1215
  refresh_btn.click(
1216
- fn=update_dashboard, inputs=None, outputs=dashboard_output
1217
  )
1218
 
1219
  # Corrected the button click function name here to `generate_pdf_from_meldrx` (No AI PDF)
@@ -1221,12 +1231,13 @@ with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
1221
  fn=generate_pdf_from_meldrx,
1222
  inputs=patient_data_output,
1223
  outputs=[meldrx_pdf_download, meldrx_pdf_status],
 
1224
  )
1225
 
1226
  # Connect patient data updates to dashboard
1227
  patient_data_button.click(
1228
- fn=update_dashboard, inputs=None, outputs=dashboard_output
1229
  )
1230
 
1231
  # Launch with sharing enabled for public access
1232
- demo.launch(share=True)
 
875
  with gr.Blocks(theme=cyberpunk_theme) as demo: # Apply the theme here
876
  gr.Markdown("<h1 style='color:#00FFFF; text-shadow: 0 0 5px #00FFFF;'>Discharge Guard <span style='color:#FF00FF; text-shadow: 0 0 5px #FF00FF;'>Cyber</span></h1>") # Cyberpunk Title
877
 
878
+ with gr.Tab("Authenticate with MeldRx", elem_classes="cyberpunk-tab", js=True): # Optional: Class for tab styling
879
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>SMART on FHIR Authentication</h2>") # Neon Tab Header
880
  auth_url_output = gr.Textbox(label="Authorization URL", value=CALLBACK_MANAGER.get_auth_url(), interactive=False)
881
  gr.Markdown("<p style='color:#A9A9A9;'>Copy the URL above, open it in a browser, log in, and paste the <span style='color:#00FFFF;'>entire redirected URL</span> from your browser's address bar below.</p>") # Subdued instructions with neon highlight
 
891
  patient_data_output = gr.Textbox(label="Patient Data", lines=10)
892
 
893
  # Add button to generate PDF from MeldRx data (No AI)
894
+ meldrx_pdf_button = gr.Button("Generate PDF from MeldRx Data (No AI)", elem_classes="cyberpunk-button", js=True) # Renamed button
895
  meldrx_pdf_status = gr.Textbox(label="PDF Generation Status (No AI)") # Renamed status
896
  meldrx_pdf_download = gr.File(label="Download Generated PDF (No AI)") # Renamed download
897
 
 
907
  extract_code_button.click(
908
  fn=process_redirected_url,
909
  inputs=redirected_url_input,
910
+ outputs=[extracted_code_output, auth_result],
911
+ js=True# Reusing auth_result for extraction status
912
  )
913
 
914
  auth_submit.click(
915
  fn=CALLBACK_MANAGER.set_auth_code,
916
  inputs=extracted_code_output, # Using extracted code as input for authentication
917
  outputs=auth_result,
918
+ js=True
919
  )
920
 
921
  with gr.Tab("Patient Dashboard", elem_classes="cyberpunk-tab"): # Optional: Class for tab styling
 
975
  return f"<p style='color:#FF6347;'>Error fetching patient data: {str(e)}</p>" # Tomato Error
976
 
977
 
978
+ with gr.Tab("Discharge Form", elem_classes="cyberpunk-tab", js=True): # Optional: Class for tab styling
979
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Patient Details</h2>") # Neon Tab Header
980
+ with gr.Row(js=True):
981
  first_name = gr.Textbox(label="First Name")
982
  last_name = gr.Textbox(label="Last Name")
983
  middle_initial = gr.Textbox(label="Middle Initial")
984
+ with gr.Row(js=True):
985
  dob = gr.Textbox(label="Date of Birth")
986
  age = gr.Textbox(label="Age")
987
  sex = gr.Textbox(label="Sex")
988
  address = gr.Textbox(label="Address")
989
+ with gr.Row(js=True):
990
  city = gr.Textbox(label="City")
991
  state = gr.Textbox(label="State")
992
  zip_code = gr.Textbox(label="Zip Code")
993
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Primary Healthcare Professional Details</h2>") # Neon Sub-header
994
+ with gr.Row(js=True):
995
  doctor_first_name = gr.Textbox(label="Doctor's First Name")
996
  doctor_last_name = gr.Textbox(label="Doctor's Last Name")
997
  doctor_middle_initial = gr.Textbox(label="Doctor's Middle Initial")
998
  hospital_name = gr.Textbox(label="Hospital/Clinic Name")
999
  doctor_address = gr.Textbox(label="Address")
1000
+ with gr.Row(js=True):
1001
  doctor_city = gr.Textbox(label="City")
1002
  doctor_state = gr.Textbox(label="State")
1003
  doctor_zip = gr.Textbox(label="Zip Code")
1004
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Admission and Discharge Details</h2>") # Neon Sub-header
1005
+ with gr.Row(js=True):
1006
  admission_date = gr.Textbox(label="Date of Admission")
1007
  referral_source = gr.Textbox(label="Source of Referral")
1008
  admission_method = gr.Textbox(label="Method of Admission")
1009
+ with gr.Row(js=True):
1010
  discharge_date = gr.Textbox(label="Date of Discharge")
1011
  discharge_reason = gr.Radio(
1012
  ["Treated", "Transferred", "Discharge Against Advice", "Patient Died"],
 
1019
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Medication Details</h2>") # Neon Sub-header
1020
  medications = gr.Textbox(label="Medication on Discharge")
1021
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Prepared By</h2>") # Neon Sub-header
1022
+ with gr.Row(js=True):
1023
  preparer_name = gr.Textbox(label="Name")
1024
  preparer_job_title = gr.Textbox(label="Job Title")
1025
 
1026
  # Add buttons for both display form and generate PDF
1027
+ with gr.Row(js=True):
1028
  submit_display = gr.Button("Display Form", elem_classes="cyberpunk-button") # Cyberpunk button style
1029
  submit_pdf = gr.Button("Generate PDF (No AI)", elem_classes="cyberpunk-button") # Renamed button to clarify no AI and styled
1030
 
 
1067
  preparer_job_title,
1068
  ],
1069
  outputs=form_output,
1070
+ js=True
1071
  )
1072
 
1073
  # Connect the generate PDF button (No AI version)
 
1105
  preparer_job_title,
1106
  ],
1107
  outputs=pdf_output,
1108
+ js=True
1109
  )
1110
 
1111
  with gr.Tab("Medical File Analysis", elem_classes="cyberpunk-tab"): # Optional: Class for tab styling
1112
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>Analyze Medical Files with Discharge Guard AI</h2>") # Neon Tab Header
1113
+ with gr.Column(js=True):
1114
  dicom_file = gr.File(
1115
  file_types=[".dcm"], label="Upload DICOM File (.dcm)"
1116
  )
 
1160
  analyze_dicom_file_with_ai, # Call REAL AI function
1161
  inputs=dicom_file,
1162
  outputs=dicom_ai_output,
1163
+ js=True
1164
  )
1165
  analyze_hl7_button.click(
1166
  analyze_hl7_file_with_ai, # Call REAL AI function
1167
  inputs=hl7_file,
1168
  outputs=hl7_ai_output,
1169
+ js=True
1170
  )
1171
  analyze_xml_button.click(
1172
  analyze_cda_xml_file_with_ai, # Call REAL AI function
1173
  inputs=xml_file,
1174
  outputs=xml_ai_output,
1175
+ js=True
1176
  )
1177
  analyze_ccda_button.click(
1178
  analyze_cda_xml_file_with_ai, # Call REAL AI function
1179
  inputs=ccda_file,
1180
  outputs=ccda_ai_output,
1181
+ js=True
1182
  )
1183
  analyze_ccd_button.click( # Redundant button, but kept for UI if needed
1184
  analyze_cda_xml_file_with_ai, # Call REAL AI function
1185
  inputs=ccd_file,
1186
  outputs=ccd_ai_output,
1187
+ js=True
1188
  )
1189
  analyze_pdf_button.click(
1190
+ analyze_pdf_file_with_ai, inputs=pdf_file, outputs=pdf_ai_output, js=True
1191
  )
1192
  analyze_csv_button.click(
1193
+ analyze_csv_file_with_ai, inputs=csv_file, outputs=csv_ai_output, js=True
1194
  )
1195
 
1196
  with gr.Tab(
1197
+ "One-Click Discharge Paper (AI)", elem_classes="cyberpunk-tab", js=True
1198
  ): # New Tab for One-Click Discharge Paper with AI, styled
1199
  gr.Markdown("<h2 style='color:#00FFFF; text-shadow: 0 0 3px #00FFFF;'>One-Click Medical Discharge Paper Generation with AI Content</h2>") # Neon Tab Header
1200
  one_click_ai_pdf_button = gr.Button(
 
1218
  fn=CALLBACK_MANAGER.get_patient_data,
1219
  inputs=None,
1220
  outputs=patient_data_output,
1221
+ js=True
1222
  )
1223
 
1224
  # Connect refresh button to update dashboard
1225
  refresh_btn.click(
1226
+ fn=update_dashboard, inputs=None, outputs=dashboard_output, js=True
1227
  )
1228
 
1229
  # Corrected the button click function name here to `generate_pdf_from_meldrx` (No AI PDF)
 
1231
  fn=generate_pdf_from_meldrx,
1232
  inputs=patient_data_output,
1233
  outputs=[meldrx_pdf_download, meldrx_pdf_status],
1234
+ js=True
1235
  )
1236
 
1237
  # Connect patient data updates to dashboard
1238
  patient_data_button.click(
1239
+ fn=update_dashboard, inputs=None, outputs=dashboard_output, js=True
1240
  )
1241
 
1242
  # Launch with sharing enabled for public access
1243
+ demo.launch(ssr_mode=False)