Spaces:
Sleeping
Sleeping
File size: 8,075 Bytes
be1b5d2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
#!/usr/bin/env python3
"""
Integration Demo for UI Classification Improvements.
Demonstrates the complete workflow from classification to display to verification.
This shows how all components work together in the enhanced system.
"""
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
from interface.enhanced_results_display_manager import EnhancedResultsDisplayManager
from core.provider_summary_generator import ProviderSummary, ProviderSummaryGenerator
from core.improved_classification_prompt_manager import ImprovedClassificationPromptManager
from core.conversation_logger import ConversationLogger
from core.spiritual_state import SpiritualState, SpiritualAssessment
def main():
"""Run integration demo."""
print("π UI Classification Improvements Integration Demo")
print("=" * 60)
# Initialize components
print("\n1. Initializing enhanced components...")
display_manager = EnhancedResultsDisplayManager()
summary_generator = ProviderSummaryGenerator()
classification_manager = ImprovedClassificationPromptManager()
print(" β
Enhanced Results Display Manager")
print(" β
Provider Summary Generator")
print(" β
Improved Classification Prompt Manager")
# Demonstrate enhanced classification
print("\n2. Testing enhanced classification criteria...")
# Test explicit red indicators
red_indicators = classification_manager.get_explicit_red_indicators()
print(f" π Explicit RED indicators ({len(red_indicators)}):")
for indicator in red_indicators:
print(f" β’ {indicator}")
# Test updated red flag definition
red_definition = classification_manager.get_updated_red_flag_definition()
print(f"\n π΄ Updated RED flag definition:")
print(f" {red_definition}")
# Demonstrate classification validation
print("\n3. Testing classification validation...")
# Valid classification
valid_result = classification_manager.create_classification_result(
classification="red",
confidence=0.85,
indicators=["doubt about meaning of suffering"],
reasoning="Patient questioning meaning of suffering - explicit red indicator",
red_flag_indicators=["doubt about meaning of suffering"]
)
print(f" β
Valid classification: {valid_result.classification} (valid: {valid_result.is_valid})")
# Invalid classification that gets corrected
invalid_result = classification_manager.create_classification_result(
classification="invalid",
confidence=2.0,
indicators=[],
reasoning=""
)
print(f" π§ Corrected classification: {invalid_result.classification} (valid: {invalid_result.is_valid})")
# Demonstrate enhanced display formatting
print("\n4. Testing enhanced display formatting...")
# Create test provider summary
test_summary = ProviderSummary(
patient_name="Demo Patient",
patient_phone="555-0123",
classification="RED",
confidence=0.85,
indicators=["loss of meaning", "spiritual distress", "questioning faith"],
reasoning="Patient expressing significant spiritual concerns and loss of meaning",
severity_level="HIGH",
urgency_level="IMMEDIATE",
situation_description="Patient experiencing existential crisis following medical diagnosis",
recommended_actions=[
"Contact patient within 2-4 hours",
"Assess immediate safety and support needs",
"Provide spiritual care resources"
],
medical_context={
"age": 45,
"gender": "individual",
"conditions": ["chronic illness", "recent diagnosis"]
}
)
# Format AI analysis section
ai_analysis_html = display_manager.format_ai_analysis_section(
classification="RED",
indicators=test_summary.indicators,
reasoning=test_summary.reasoning,
confidence=test_summary.confidence
)
print(" β
AI Analysis section formatted")
print(f" Length: {len(ai_analysis_html)} characters")
# Format patient message section
patient_message_html = display_manager.format_patient_message_section(
"I just don't see the point in anything anymore. My life feels meaningless since my diagnosis."
)
print(" β
Patient Message section formatted")
print(f" Length: {len(patient_message_html)} characters")
# Format provider summary section
provider_summary_html = display_manager.format_provider_summary_section(test_summary)
print(" β
Provider Summary section formatted")
print(f" Length: {len(provider_summary_html)} characters")
# Test coherent paragraph formatting
print("\n5. Testing coherent paragraph formatting...")
coherent_paragraph = summary_generator.format_coherent_paragraph(test_summary)
print(" β
Coherent paragraph generated")
print(f" Length: {len(coherent_paragraph)} characters")
print(f" Preview: {coherent_paragraph[:100]}...")
# Test combined results
print("\n6. Testing combined results formatting...")
combined_html = display_manager.format_combined_results(
ai_analysis={
'classification': 'RED',
'indicators': test_summary.indicators,
'reasoning': test_summary.reasoning,
'confidence': test_summary.confidence
},
patient_message="I just don't see the point in anything anymore. My life feels meaningless since my diagnosis.",
provider_summary=test_summary
)
print(" β
Combined results formatted")
print(f" Length: {len(combined_html)} characters")
# Test conversation logging integration
print("\n7. Testing conversation logging integration...")
logger = ConversationLogger(patient_name="Demo Patient")
# Log test conversation
assessment = SpiritualAssessment(
state=SpiritualState.RED,
confidence=0.85,
indicators=["loss of meaning", "spiritual distress"],
reasoning="Patient expressing significant spiritual concerns"
)
logger.log_exchange(
"I just don't see the point in anything anymore",
"I understand this is a very difficult time for you",
assessment
)
print(f" β
Conversation logged: {len(logger.entries)} entries")
# Test error handling
print("\n8. Testing error handling and recovery...")
# Create problematic summary
problematic_summary = ProviderSummary(
patient_name="[Patient Name]", # Placeholder
patient_phone="[Phone Number]", # Placeholder
classification="RED",
confidence=1.5, # Invalid confidence
reasoning="", # Empty reasoning
indicators=[] # No indicators
)
# Display manager should handle this gracefully
error_display = display_manager.format_provider_summary_section(problematic_summary)
print(" β
Error handling works - graceful degradation")
print(f" Error display length: {len(error_display)} characters")
# Summary
print("\n" + "=" * 60)
print("π INTEGRATION DEMO COMPLETED SUCCESSFULLY!")
print("\nπ Demonstrated Features:")
print(" β
Enhanced classification with explicit red indicators")
print(" β
Updated red flag definition and validation")
print(" β
Enhanced display formatting with visual separation")
print(" β
Coherent paragraph formatting for Medical Brain compatibility")
print(" β
Combined results with proper section separation")
print(" β
Conversation logging integration")
print(" β
Error handling and graceful degradation")
print("\nπ All UI Classification Improvements are working correctly!")
print(" Ready for production use in the medical assistant system.")
if __name__ == "__main__":
main() |