Spaces:
Sleeping
Sleeping
Upload engine.py
Browse files
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 |
-
|
| 184 |
-
|
|
|
|
|
|
|
| 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"
|
| 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,
|