blackshadow1 commited on
Commit
c9365e2
·
verified ·
1 Parent(s): 6096865

updated UI code ✅✅

Browse files
Files changed (1) hide show
  1. mediSync/app.py +59 -30
mediSync/app.py CHANGED
@@ -698,7 +698,7 @@ def create_interface():
698
 
699
  with gr.Blocks(
700
  title="MediSync: Multi-Modal Medical Analysis System",
701
- theme=gr.themes.Default(), # Use Default for HuggingFace dark/light support
702
  css="""
703
  /* Modern neumorphic card style for all result containers */
704
  .medisync-card {
@@ -730,7 +730,10 @@ def create_interface():
730
  .gr-button, .end-consultation-btn {
731
  border-radius: 8px !important;
732
  font-weight: 600 !important;
733
- font-size: 1.08rem !important;
 
 
 
734
  transition: background 0.2s, color 0.2s;
735
  }
736
  .end-consultation-btn {
@@ -738,6 +741,10 @@ def create_interface():
738
  border: none !important;
739
  color: #fff !important;
740
  box-shadow: 0 2px 8px 0 rgba(220,53,69,0.10);
 
 
 
 
741
  }
742
  .end-consultation-btn:hover {
743
  background: linear-gradient(90deg, #c82333 60%, #ff7675 100%) !important;
@@ -779,6 +786,29 @@ def create_interface():
779
  html[data-theme="dark"] #end_consultation_status, html[data-theme="dark"] #end_consultation_status * {
780
  color: #f8fafc !important;
781
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
782
  """
783
  ) as interface:
784
  gr.Markdown(
@@ -829,7 +859,7 @@ def create_interface():
829
  with gr.Row():
830
  with gr.Column():
831
  multi_img_input = gr.Image(label="Upload X-ray Image", type="pil", elem_id="multi_img_input")
832
- multi_img_enhance = gr.Button("Enhance Image", icon="✨")
833
  multi_text_input = gr.Textbox(
834
  label="Enter Medical Report Text",
835
  placeholder="Enter the radiologist's report text here...",
@@ -837,7 +867,7 @@ def create_interface():
837
  value=example_report if sample_image_path is None else None,
838
  elem_id="multi_text_input"
839
  )
840
- multi_analyze_btn = gr.Button("Analyze Image & Text", variant="primary", icon="🔎")
841
  with gr.Column():
842
  multi_results = gr.HTML(label="Analysis Results", elem_id="multi_results")
843
  multi_plot = gr.HTML(label="Visualization", elem_id="multi_plot")
@@ -852,8 +882,8 @@ def create_interface():
852
  with gr.Row():
853
  with gr.Column():
854
  img_input = gr.Image(label="Upload X-ray Image", type="pil", elem_id="img_input")
855
- img_enhance = gr.Button("Enhance Image", icon="✨")
856
- img_analyze_btn = gr.Button("Analyze Image", variant="primary", icon="🔎")
857
  with gr.Column():
858
  img_output = gr.Image(label="Processed Image", elem_id="img_output")
859
  img_results = gr.HTML(label="Analysis Results", elem_id="img_results")
@@ -875,7 +905,7 @@ def create_interface():
875
  value=example_report,
876
  elem_id="text_input"
877
  )
878
- text_analyze_btn = gr.Button("Analyze Text", variant="primary", icon="🔎")
879
  with gr.Column():
880
  text_output = gr.Textbox(label="Processed Text", elem_id="text_output")
881
  text_results = gr.HTML(label="Analysis Results", elem_id="text_results")
@@ -892,8 +922,7 @@ def create_interface():
892
  "End Consultation",
893
  variant="stop",
894
  size="lg",
895
- elem_classes=["end-consultation-btn"],
896
- icon="🛑"
897
  )
898
  end_consultation_status = gr.HTML(label="Status", elem_id="end_consultation_status")
899
 
@@ -952,16 +981,16 @@ def create_interface():
952
  if result["status"] == "success":
953
  doctors_urls = get_doctors_page_urls()
954
  html_response = f"""
955
- <div class='medisync-force-text' style='color: #28a745; padding: 15px; background-color: #e6ffe6; border-radius: 5px; margin: 10px 0;'>
956
- <h3>✅ Consultation Completed Successfully!</h3>
957
- <p>{result['message']}</p>
958
- <p>Your appointment has been marked as completed.</p>
959
  <button onclick="window.open('{doctors_urls['local']}', '_blank')"
960
- style="background-color: #00bfae; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; margin-top: 10px;">
961
  Return to Doctors Page (Local)
962
  </button>
963
  <button onclick="window.open('{doctors_urls['production']}', '_blank')"
964
- style="background-color: #6c63ff; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; margin-top: 10px; margin-left: 10px;">
965
  Return to Doctors Page (Production)
966
  </button>
967
  </div>
@@ -969,27 +998,27 @@ def create_interface():
969
  else:
970
  if "Cannot connect to Flask app" in result['message']:
971
  html_response = f"""
972
- <div class='medisync-force-text' style='color: #ff9800; padding: 15px; background-color: #fff3cd; border-radius: 5px; margin: 10px 0;'>
973
- <h3>⚠️ Consultation Ready to Complete</h3>
974
- <p>Your consultation analysis is complete! However, we cannot automatically mark your appointment as completed because the Flask app is not accessible from this environment.</p>
975
- <p><strong>Appointment ID:</strong> {appointment_id.strip()}</p>
976
- <p><strong>Next Steps:</strong></p>
977
  <ol>
978
- <li>Copy your appointment ID: <code>{appointment_id.strip()}</code></li>
979
- <li>Return to your Flask app (doctors page)</li>
980
- <li>Manually complete the appointment using the appointment ID</li>
981
  </ol>
982
  <div style="margin-top: 15px;">
983
  <button onclick="window.open('http://127.0.0.1:600/complete_appointment_manual?appointment_id={appointment_id.strip()}', '_blank')"
984
- style="background-color: #00bfae; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; margin-right: 10px;">
985
  Complete Appointment
986
  </button>
987
  <button onclick="window.open('http://127.0.0.1:600/doctors', '_blank')"
988
- style="background-color: #6c63ff; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; margin-right: 10px;">
989
  Return to Doctors Page
990
  </button>
991
  <button onclick="navigator.clipboard.writeText('{appointment_id.strip()}')"
992
- style="background-color: #23272f; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer;">
993
  Copy Appointment ID
994
  </button>
995
  </div>
@@ -997,10 +1026,10 @@ def create_interface():
997
  """
998
  else:
999
  html_response = f"""
1000
- <div class='medisync-force-text' style='color: #dc3545; padding: 15px; background-color: #ffe6e6; border-radius: 5px; margin: 10px 0;'>
1001
- <h3>❌ Error Completing Consultation</h3>
1002
- <p>{result['message']}</p>
1003
- <p>Please try again or contact support if the problem persists.</p>
1004
  </div>
1005
  """
1006
  return html_response
 
698
 
699
  with gr.Blocks(
700
  title="MediSync: Multi-Modal Medical Analysis System",
701
+ theme=gr.themes.Default(),
702
  css="""
703
  /* Modern neumorphic card style for all result containers */
704
  .medisync-card {
 
730
  .gr-button, .end-consultation-btn {
731
  border-radius: 8px !important;
732
  font-weight: 600 !important;
733
+ font-size: 1rem !important;
734
+ padding: 8px 18px !important;
735
+ min-width: 120px !important;
736
+ min-height: 38px !important;
737
  transition: background 0.2s, color 0.2s;
738
  }
739
  .end-consultation-btn {
 
741
  border: none !important;
742
  color: #fff !important;
743
  box-shadow: 0 2px 8px 0 rgba(220,53,69,0.10);
744
+ font-size: 1.05rem !important;
745
+ padding: 10px 24px !important;
746
+ min-width: 160px !important;
747
+ min-height: 40px !important;
748
  }
749
  .end-consultation-btn:hover {
750
  background: linear-gradient(90deg, #c82333 60%, #ff7675 100%) !important;
 
786
  html[data-theme="dark"] #end_consultation_status, html[data-theme="dark"] #end_consultation_status * {
787
  color: #f8fafc !important;
788
  }
789
+ /* Style for the popup/status after end consultation for visibility */
790
+ #end_consultation_status, #end_consultation_status * {
791
+ font-size: 1.08rem !important;
792
+ font-weight: 500 !important;
793
+ }
794
+ html[data-theme="dark"] #end_consultation_status, html[data-theme="dark"] #end_consultation_status * {
795
+ color: #f8fafc !important;
796
+ }
797
+ /* Style the buttons inside the end consultation status popup */
798
+ #end_consultation_status button {
799
+ font-size: 1rem !important;
800
+ font-weight: 600 !important;
801
+ border-radius: 6px !important;
802
+ padding: 8px 18px !important;
803
+ margin-top: 8px !important;
804
+ margin-bottom: 4px !important;
805
+ min-width: 120px !important;
806
+ min-height: 36px !important;
807
+ box-shadow: 0 1.5px 4px 0 rgba(0,191,174,0.08);
808
+ }
809
+ #end_consultation_status button:active, #end_consultation_status button:focus {
810
+ outline: 2px solid #00bfae !important;
811
+ }
812
  """
813
  ) as interface:
814
  gr.Markdown(
 
859
  with gr.Row():
860
  with gr.Column():
861
  multi_img_input = gr.Image(label="Upload X-ray Image", type="pil", elem_id="multi_img_input")
862
+ multi_img_enhance = gr.Button("Enhance Image")
863
  multi_text_input = gr.Textbox(
864
  label="Enter Medical Report Text",
865
  placeholder="Enter the radiologist's report text here...",
 
867
  value=example_report if sample_image_path is None else None,
868
  elem_id="multi_text_input"
869
  )
870
+ multi_analyze_btn = gr.Button("Analyze Image & Text", variant="primary")
871
  with gr.Column():
872
  multi_results = gr.HTML(label="Analysis Results", elem_id="multi_results")
873
  multi_plot = gr.HTML(label="Visualization", elem_id="multi_plot")
 
882
  with gr.Row():
883
  with gr.Column():
884
  img_input = gr.Image(label="Upload X-ray Image", type="pil", elem_id="img_input")
885
+ img_enhance = gr.Button("Enhance Image")
886
+ img_analyze_btn = gr.Button("Analyze Image", variant="primary")
887
  with gr.Column():
888
  img_output = gr.Image(label="Processed Image", elem_id="img_output")
889
  img_results = gr.HTML(label="Analysis Results", elem_id="img_results")
 
905
  value=example_report,
906
  elem_id="text_input"
907
  )
908
+ text_analyze_btn = gr.Button("Analyze Text", variant="primary")
909
  with gr.Column():
910
  text_output = gr.Textbox(label="Processed Text", elem_id="text_output")
911
  text_results = gr.HTML(label="Analysis Results", elem_id="text_results")
 
922
  "End Consultation",
923
  variant="stop",
924
  size="lg",
925
+ elem_classes=["end-consultation-btn"]
 
926
  )
927
  end_consultation_status = gr.HTML(label="Status", elem_id="end_consultation_status")
928
 
 
981
  if result["status"] == "success":
982
  doctors_urls = get_doctors_page_urls()
983
  html_response = f"""
984
+ <div class='medisync-force-text' style='color: #28a745; padding: 15px; background-color: #e6ffe6; border-radius: 5px; margin: 10px 0;">
985
+ <h3 style="color: #28a745;">✅ Consultation Completed Successfully!</h3>
986
+ <p style="color: var(--body-text-color, #222);">{result['message']}</p>
987
+ <p style="color: var(--body-text-color, #222);">Your appointment has been marked as completed.</p>
988
  <button onclick="window.open('{doctors_urls['local']}', '_blank')"
989
+ style="background-color: #00bfae; color: white; padding: 8px 18px; border: none; border-radius: 6px; cursor: pointer; margin-top: 10px;">
990
  Return to Doctors Page (Local)
991
  </button>
992
  <button onclick="window.open('{doctors_urls['production']}', '_blank')"
993
+ style="background-color: #6c63ff; color: white; padding: 8px 18px; border: none; border-radius: 6px; cursor: pointer; margin-top: 10px; margin-left: 10px;">
994
  Return to Doctors Page (Production)
995
  </button>
996
  </div>
 
998
  else:
999
  if "Cannot connect to Flask app" in result['message']:
1000
  html_response = f"""
1001
+ <div class='medisync-force-text' style='color: #ff9800; padding: 15px; background-color: #fff3cd; border-radius: 5px; margin: 10px 0;">
1002
+ <h3 style="color: #ff9800;">⚠️ Consultation Ready to Complete</h3>
1003
+ <p style="color: var(--body-text-color, #222);">Your consultation analysis is complete! However, we cannot automatically mark your appointment as completed because the Flask app is not accessible from this environment.</p>
1004
+ <p style="color: var(--body-text-color, #222);"><strong>Appointment ID:</strong> {appointment_id.strip()}</p>
1005
+ <p style="color: var(--body-text-color, #222);"><strong>Next Steps:</strong></p>
1006
  <ol>
1007
+ <li style="color: var(--body-text-color, #222);">Copy your appointment ID: <code>{appointment_id.strip()}</code></li>
1008
+ <li style="color: var(--body-text-color, #222);">Return to your Flask app (doctors page)</li>
1009
+ <li style="color: var(--body-text-color, #222);">Manually complete the appointment using the appointment ID</li>
1010
  </ol>
1011
  <div style="margin-top: 15px;">
1012
  <button onclick="window.open('http://127.0.0.1:600/complete_appointment_manual?appointment_id={appointment_id.strip()}', '_blank')"
1013
+ style="background-color: #00bfae; color: white; padding: 8px 18px; border: none; border-radius: 6px; cursor: pointer; margin-right: 10px;">
1014
  Complete Appointment
1015
  </button>
1016
  <button onclick="window.open('http://127.0.0.1:600/doctors', '_blank')"
1017
+ style="background-color: #6c63ff; color: white; padding: 8px 18px; border: none; border-radius: 6px; cursor: pointer; margin-right: 10px;">
1018
  Return to Doctors Page
1019
  </button>
1020
  <button onclick="navigator.clipboard.writeText('{appointment_id.strip()}')"
1021
+ style="background-color: #23272f; color: white; padding: 8px 18px; border: none; border-radius: 6px; cursor: pointer;">
1022
  Copy Appointment ID
1023
  </button>
1024
  </div>
 
1026
  """
1027
  else:
1028
  html_response = f"""
1029
+ <div class='medisync-force-text' style='color: #dc3545; padding: 15px; background-color: #ffe6e6; border-radius: 5px; margin: 10px 0;">
1030
+ <h3 style="color: #dc3545;">❌ Error Completing Consultation</h3>
1031
+ <p style="color: var(--body-text-color, #222);">{result['message']}</p>
1032
+ <p style="color: var(--body-text-color, #222);">Please try again or contact support if the problem persists.</p>
1033
  </div>
1034
  """
1035
  return html_response