Ali2206 commited on
Commit
7a45ee2
·
verified ·
1 Parent(s): 72be2d6

Update endpoints.py

Browse files
Files changed (1) hide show
  1. endpoints.py +34 -0
endpoints.py CHANGED
@@ -175,6 +175,28 @@ def create_router(agent, logger, patients_collection, analysis_collection, users
175
  logger.error(f"Error fetching chats: {e}")
176
  raise HTTPException(status_code=500, detail="Failed to retrieve chats")
177
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  @router.post("/voice/transcribe")
179
  async def transcribe_voice(
180
  audio: UploadFile = File(...),
@@ -323,6 +345,18 @@ def create_router(agent, logger, patients_collection, analysis_collection, users
323
  file_content=file_content
324
  )
325
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  if "_id" in analysis and isinstance(analysis["_id"], ObjectId):
327
  analysis["_id"] = str(analysis["_id"])
328
  if "timestamp" in analysis and isinstance(analysis["timestamp"], datetime):
 
175
  logger.error(f"Error fetching chats: {e}")
176
  raise HTTPException(status_code=500, detail="Failed to retrieve chats")
177
 
178
+ @router.get("/notifications")
179
+ async def get_notifications(
180
+ current_user: dict = Depends(get_current_user)
181
+ ):
182
+ logger.info(f"Fetching notifications for {current_user['email']}")
183
+ try:
184
+ # Fetch notifications for the current user (e.g., alerts related to their patients)
185
+ notifications = await notifications_collection.find({"user_id": current_user["email"]}).sort("timestamp", -1).to_list(length=10)
186
+ return [
187
+ {
188
+ "id": str(notification["_id"]),
189
+ "message": notification.get("message", "No message"),
190
+ "timestamp": notification.get("timestamp", datetime.utcnow()).isoformat(),
191
+ "patient_id": notification.get("patient_id"),
192
+ "severity": notification.get("severity", "info")
193
+ }
194
+ for notification in notifications
195
+ ]
196
+ except Exception as e:
197
+ logger.error(f"Error fetching notifications: {e}")
198
+ raise HTTPException(status_code=500, detail="Failed to retrieve notifications")
199
+
200
  @router.post("/voice/transcribe")
201
  async def transcribe_voice(
202
  audio: UploadFile = File(...),
 
345
  file_content=file_content
346
  )
347
 
348
+ # Create a notification if suicide risk is detected
349
+ if analysis.get("suicide_risk", {}).get("level") != "none":
350
+ notification = {
351
+ "user_id": current_user["email"],
352
+ "message": f"Suicide risk alert for patient {patient_id}: {analysis['suicide_risk']['level'].upper()} (Score: {analysis['suicide_risk']['score']})",
353
+ "patient_id": patient_id,
354
+ "timestamp": datetime.utcnow(),
355
+ "severity": "high" if analysis["suicide_risk"]["level"] in ["moderate", "severe"] else "medium"
356
+ }
357
+ await notifications_collection.insert_one(notification)
358
+ logger.info(f"✅ Created notification for suicide risk alert: {notification}")
359
+
360
  if "_id" in analysis and isinstance(analysis["_id"], ObjectId):
361
  analysis["_id"] = str(analysis["_id"])
362
  if "timestamp" in analysis and isinstance(analysis["timestamp"], datetime):