Spaces:
Running
Running
feat: enhance triage assessment handling and update last assessment for display
Browse files
src/core/simplified_medical_app.py
CHANGED
|
@@ -134,6 +134,8 @@ class SimplifiedMedicalApp:
|
|
| 134 |
if self.spiritual_state.is_in_triage():
|
| 135 |
# Currently in YELLOW state - continue triage
|
| 136 |
response = self._handle_triage_response(message, conversation_context)
|
|
|
|
|
|
|
| 137 |
else:
|
| 138 |
# Classify message with Spiritual Monitor (Requirement 2.1)
|
| 139 |
assessment = self.spiritual_monitor.classify(message, conversation_context)
|
|
@@ -274,7 +276,7 @@ class SimplifiedMedicalApp:
|
|
| 274 |
self.spiritual_state.triage_session.patient_responses.append(response)
|
| 275 |
self.spiritual_state.triage_session.question_count += 1
|
| 276 |
|
| 277 |
-
# Evaluate response
|
| 278 |
outcome, reasoning = self.soft_triage_manager.evaluate_response(
|
| 279 |
response=response,
|
| 280 |
triage_session=self.spiritual_state.triage_session,
|
|
@@ -297,6 +299,14 @@ class SimplifiedMedicalApp:
|
|
| 297 |
# Max questions reached - force decision (Requirement 3.6)
|
| 298 |
return self._escalate_to_red("Max triage questions reached - conservative escalation")
|
| 299 |
else:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 300 |
return self._generate_next_triage_question()
|
| 301 |
|
| 302 |
def _handle_red_flag(
|
|
@@ -343,6 +353,17 @@ class SimplifiedMedicalApp:
|
|
| 343 |
last_response = self.spiritual_state.triage_session.patient_responses[-1]
|
| 344 |
patient_language = self._detect_language(last_response)
|
| 345 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 346 |
# Transition back to GREEN (this clears triage session)
|
| 347 |
self.spiritual_state.transition_to(SpiritualState.GREEN, reasoning)
|
| 348 |
|
|
@@ -379,6 +400,9 @@ class SimplifiedMedicalApp:
|
|
| 379 |
reasoning=reasoning
|
| 380 |
)
|
| 381 |
|
|
|
|
|
|
|
|
|
|
| 382 |
# Generate crisis response
|
| 383 |
crisis_response = self._generate_crisis_response(patient_language, assessment)
|
| 384 |
|
|
|
|
| 134 |
if self.spiritual_state.is_in_triage():
|
| 135 |
# Currently in YELLOW state - continue triage
|
| 136 |
response = self._handle_triage_response(message, conversation_context)
|
| 137 |
+
# Note: _handle_triage_response methods (_resolve_to_green, _escalate_to_red)
|
| 138 |
+
# will update last_assessment appropriately
|
| 139 |
else:
|
| 140 |
# Classify message with Spiritual Monitor (Requirement 2.1)
|
| 141 |
assessment = self.spiritual_monitor.classify(message, conversation_context)
|
|
|
|
| 276 |
self.spiritual_state.triage_session.patient_responses.append(response)
|
| 277 |
self.spiritual_state.triage_session.question_count += 1
|
| 278 |
|
| 279 |
+
# Evaluate response using triage logic
|
| 280 |
outcome, reasoning = self.soft_triage_manager.evaluate_response(
|
| 281 |
response=response,
|
| 282 |
triage_session=self.spiritual_state.triage_session,
|
|
|
|
| 299 |
# Max questions reached - force decision (Requirement 3.6)
|
| 300 |
return self._escalate_to_red("Max triage questions reached - conservative escalation")
|
| 301 |
else:
|
| 302 |
+
# Update assessment for continuing triage
|
| 303 |
+
continue_assessment = SpiritualAssessment(
|
| 304 |
+
state=SpiritualState.YELLOW,
|
| 305 |
+
indicators=["ongoing_triage"],
|
| 306 |
+
confidence=0.7,
|
| 307 |
+
reasoning=f"Continuing triage assessment - {reasoning}"
|
| 308 |
+
)
|
| 309 |
+
self.spiritual_state.last_assessment = continue_assessment
|
| 310 |
return self._generate_next_triage_question()
|
| 311 |
|
| 312 |
def _handle_red_flag(
|
|
|
|
| 353 |
last_response = self.spiritual_state.triage_session.patient_responses[-1]
|
| 354 |
patient_language = self._detect_language(last_response)
|
| 355 |
|
| 356 |
+
# Create GREEN assessment for display
|
| 357 |
+
green_assessment = SpiritualAssessment(
|
| 358 |
+
state=SpiritualState.GREEN,
|
| 359 |
+
indicators=[],
|
| 360 |
+
confidence=0.9,
|
| 361 |
+
reasoning=reasoning
|
| 362 |
+
)
|
| 363 |
+
|
| 364 |
+
# Update last assessment for display
|
| 365 |
+
self.spiritual_state.last_assessment = green_assessment
|
| 366 |
+
|
| 367 |
# Transition back to GREEN (this clears triage session)
|
| 368 |
self.spiritual_state.transition_to(SpiritualState.GREEN, reasoning)
|
| 369 |
|
|
|
|
| 400 |
reasoning=reasoning
|
| 401 |
)
|
| 402 |
|
| 403 |
+
# Update last assessment for display
|
| 404 |
+
self.spiritual_state.last_assessment = assessment
|
| 405 |
+
|
| 406 |
# Generate crisis response
|
| 407 |
crisis_response = self._generate_crisis_response(patient_language, assessment)
|
| 408 |
|