Pranay25 commited on
Commit
1d95e91
Β·
verified Β·
1 Parent(s): c46b6fe

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -64
app.py CHANGED
@@ -5,12 +5,13 @@ import gradio as gr
5
  import re
6
  from simple_salesforce import Salesforce
7
  import pandas as pd
 
8
  # Attribute mappings: readable names to Salesforce API names
9
  ATTRIBUTE_MAPPING = {
10
  "Name": "Name__c",
11
  "Age": "Age__c",
12
  "Gender": "Gender__c",
13
- "Phone Number": "Phone__c"
14
  }
15
 
16
  # Salesforce credentials
@@ -38,7 +39,7 @@ def extract_attributes(extracted_text):
38
  "Name": r"Name[:\-]?\s*([A-Za-z\s]+)",
39
  "Age": r"Age[:\-]?\s*(\d{1,3})",
40
  "Gender": r"Gender[:\-]?\s*(Male|Female|Other)",
41
- "Phone Number": r"Phone[:\-]?\s*(\+?\d{10,12})"
42
  }
43
 
44
  for readable_attr, pattern in patterns.items():
@@ -57,17 +58,21 @@ def interact_with_salesforce(attributes):
57
  try:
58
  sf = Salesforce(
59
  username=SALESFORCE_USERNAME,
60
- password=SALESFORCE_PASSWORD,
61
  security_token=SALESFORCE_SECURITY_TOKEN
62
  )
63
 
64
- object_name = "Patient_Registration__c" # Using custom Patient Registration object
65
  sf_object = sf.__getattr__(object_name)
66
  schema = sf_object.describe()
67
  valid_fields = {field["name"] for field in schema["fields"]}
68
 
69
  filtered_attributes = filter_valid_attributes(attributes, valid_fields)
70
 
 
 
 
 
71
  # Create a new record in Salesforce
72
  result = sf_object.create(filtered_attributes)
73
  return f"βœ… Successfully created Patient Registration record with ID: {result['id']}."
@@ -105,55 +110,6 @@ def export_to_salesforce(edited_df):
105
  except Exception as e:
106
  return f"❌ Error exporting to Salesforce: {str(e)}"
107
 
108
- # Function to pull structured data from Salesforce and display as a table
109
- def pull_data_from_salesforce():
110
- try:
111
- sf = Salesforce(
112
- username=SALESFORCE_USERNAME,
113
- password=SALESFORCE_PASSWORD,
114
- security_token=SALESFORCE_SECURITY_TOKEN
115
- )
116
-
117
- query = "SELECT Name__c, Age__c, Gender__c, Phone__c FROM Patient_Registration__c WHERE Age__c != NULL LIMIT 100"
118
- response = sf.query_all(query)
119
- records = response.get("records", [])
120
-
121
- if not records:
122
- return "No data found in Salesforce.", None, None, None
123
-
124
- df = pd.DataFrame(records)
125
- df = df.drop(columns=['attributes'], errors='ignore')
126
-
127
- # Rename columns for better readability
128
- df.rename(columns={
129
- "Name__c": "Name",
130
- "Age__c": "Age",
131
- "Gender__c": "Gender",
132
- "Phone__c": "Phone Number"
133
- }, inplace=True)
134
-
135
- excel_path = "salesforce_patient_registration.xlsx"
136
- df.to_excel(excel_path, index=False)
137
-
138
- # Generate a bar graph for age distribution
139
- fig, ax = plt.subplots(figsize=(12, 8))
140
- df['Age'] = pd.to_numeric(df['Age'], errors='coerce')
141
- df.groupby('Age').size().plot(kind='bar', ax=ax)
142
- ax.set_title("Age Distribution of Patient Registrations")
143
- ax.set_xlabel("Age")
144
- ax.set_ylabel("Number of Patients")
145
- plt.xticks(rotation=45, ha="right", fontsize=10)
146
- plt.tight_layout()
147
- buffer = BytesIO()
148
- plt.savefig(buffer, format="png")
149
- buffer.seek(0)
150
- img = Image.open(buffer)
151
-
152
- return df, excel_path, img
153
-
154
- except Exception as e:
155
- return f"Error fetching data: {str(e)}", None, None, None
156
-
157
  # Gradio Interface
158
  def app():
159
  with gr.Blocks() as demo:
@@ -166,12 +122,6 @@ def app():
166
  ok_button = gr.Button("OK")
167
  result_output = gr.Text(label="πŸš€ Result")
168
 
169
- with gr.Tab("πŸ“Š Salesforce Data"):
170
- pull_button = gr.Button("Pull Data from Salesforce")
171
- salesforce_data_output = gr.Dataframe(label="πŸ“Š Salesforce Data")
172
- excel_download_output = gr.File(label="πŸ“₯ Download Excel")
173
- graph_output = gr.Image(label="πŸ“ˆ Age Distribution Graph")
174
-
175
  # Define button actions
176
  extract_button.click(
177
  fn=process_image,
@@ -183,11 +133,6 @@ def app():
183
  inputs=[editable_df_output],
184
  outputs=[result_output]
185
  )
186
- pull_button.click(
187
- fn=pull_data_from_salesforce,
188
- inputs=[],
189
- outputs=[salesforce_data_output, excel_download_output, graph_output]
190
- )
191
 
192
  return demo
193
 
 
5
  import re
6
  from simple_salesforce import Salesforce
7
  import pandas as pd
8
+
9
  # Attribute mappings: readable names to Salesforce API names
10
  ATTRIBUTE_MAPPING = {
11
  "Name": "Name__c",
12
  "Age": "Age__c",
13
  "Gender": "Gender__c",
14
+ "Phone Number": "Phone_Number__c"
15
  }
16
 
17
  # Salesforce credentials
 
39
  "Name": r"Name[:\-]?\s*([A-Za-z\s]+)",
40
  "Age": r"Age[:\-]?\s*(\d{1,3})",
41
  "Gender": r"Gender[:\-]?\s*(Male|Female|Other)",
42
+ "Phone Number": r"(?:Phone|Mobile)[:\-]?\s*(\+?\d{10,12})"
43
  }
44
 
45
  for readable_attr, pattern in patterns.items():
 
58
  try:
59
  sf = Salesforce(
60
  username=SALESFORCE_USERNAME,
61
+ password=S=SALESFORCE_PASSWORD,
62
  security_token=SALESFORCE_SECURITY_TOKEN
63
  )
64
 
65
+ object_name = "Patient_Registration__c"
66
  sf_object = sf.__getattr__(object_name)
67
  schema = sf_object.describe()
68
  valid_fields = {field["name"] for field in schema["fields"]}
69
 
70
  filtered_attributes = filter_valid_attributes(attributes, valid_fields)
71
 
72
+ # Ensure Age__c is a number
73
+ if "Age__c" in filtered_attributes:
74
+ filtered_attributes["Age__c"] = int(filtered_attributes["Age__c"])
75
+
76
  # Create a new record in Salesforce
77
  result = sf_object.create(filtered_attributes)
78
  return f"βœ… Successfully created Patient Registration record with ID: {result['id']}."
 
110
  except Exception as e:
111
  return f"❌ Error exporting to Salesforce: {str(e)}"
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  # Gradio Interface
114
  def app():
115
  with gr.Blocks() as demo:
 
122
  ok_button = gr.Button("OK")
123
  result_output = gr.Text(label="πŸš€ Result")
124
 
 
 
 
 
 
 
125
  # Define button actions
126
  extract_button.click(
127
  fn=process_image,
 
133
  inputs=[editable_df_output],
134
  outputs=[result_output]
135
  )
 
 
 
 
 
136
 
137
  return demo
138