bhavika24 commited on
Commit
726ac48
·
verified ·
1 Parent(s): 03bec39

Upload engine.py

Browse files
Files changed (1) hide show
  1. engine.py +19 -5
engine.py CHANGED
@@ -20,7 +20,7 @@ KNOWN_TERMS = [
20
  "patient", "patients", "condition", "conditions", "diagnosis", "encounter", "encounters",
21
  "visit", "visits", "observation", "observations", "lab", "labs", "test", "tests",
22
  "medication", "medications", "drug", "drugs", "prescription", "prescriptions",
23
- "diabetes", "hypertension", "asthma", "cancer"
24
  ]
25
 
26
 
@@ -180,8 +180,10 @@ def run_query(sql: str):
180
  # =========================
181
 
182
  def is_question_answerable(question):
183
- schema = load_ai_schema()
184
- keywords = ["patient", "encounter", "condition", "observation", "medication", "visit", "diagnosis", "lab", "vital"]
 
 
185
 
186
  q = question.lower()
187
 
@@ -205,7 +207,7 @@ def check_time_relevance(question: str):
205
  q = question.lower()
206
  if any(word in q for word in ["last", "recent", "today", "this month", "this year"]):
207
  latest = get_latest_data_date()
208
- return f"Note: Latest available data is from {latest}."
209
  return None
210
 
211
 
@@ -245,8 +247,20 @@ def process_question(question: str):
245
  # 5. Execute query
246
  columns, rows = run_query(sql)
247
 
248
- # 6. Handle empty result
249
  if len(rows) == 0:
 
 
 
 
 
 
 
 
 
 
 
 
250
  return {
251
  "status": "ok",
252
  "sql": sql,
 
20
  "patient", "patients", "condition", "conditions", "diagnosis", "encounter", "encounters",
21
  "visit", "visits", "observation", "observations", "lab", "labs", "test", "tests",
22
  "medication", "medications", "drug", "drugs", "prescription", "prescriptions",
23
+ "diabetes", "hypertension", "asthma", "cancer", "admitted", "admission"
24
  ]
25
 
26
 
 
180
  # =========================
181
 
182
  def is_question_answerable(question):
183
+ keywords = [
184
+ "patient", "encounter", "condition", "observation",
185
+ "medication", "visit", "diagnosis", "lab", "vital", "admitted"
186
+ ]
187
 
188
  q = question.lower()
189
 
 
207
  q = question.lower()
208
  if any(word in q for word in ["last", "recent", "today", "this month", "this year"]):
209
  latest = get_latest_data_date()
210
+ return f"Latest available data is from {latest}."
211
  return None
212
 
213
 
 
247
  # 5. Execute query
248
  columns, rows = run_query(sql)
249
 
250
+ # 6. Handle empty result with data coverage awareness
251
  if len(rows) == 0:
252
+ latest = get_latest_data_date()
253
+ q = question.lower()
254
+
255
+ if any(word in q for word in ["last", "recent", "this month", "this year"]):
256
+ return {
257
+ "status": "ok",
258
+ "sql": sql,
259
+ "message": f"No data available for the requested time period. Latest available data is from {latest}.",
260
+ "data": [],
261
+ "note": None
262
+ }
263
+
264
  return {
265
  "status": "ok",
266
  "sql": sql,