You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/examples/simulations/agent_map/v0/simple_hospital_demo.py

223 lines
7.0 KiB

#!/usr/bin/env python3
"""
Simple Hospital Agent Simulation Demo
A streamlined demo showing medical agents collaborating to treat a headache patient.
This uses the built-in task-based simulation features for easy setup and execution.
Medical Team:
🩺 Dr. Sarah (Emergency Doctor) - Initial assessment and triage
🧠 Dr. Michael (Neurologist) - Headache specialist evaluation
👩‍⚕️ Jennifer (RN) - Patient care coordination
🔬 Dr. Lisa (Radiologist) - Medical imaging interpretation
💊 Robert (PharmD) - Medication management
📋 Dr. Amanda (Coordinator) - Case management
CASE: 34-year-old female with sudden severe headache
"""
from typing import List
from swarms import Agent
from simulations.agent_map_simulation import AgentMapSimulation
def create_medical_agent(
name: str, role: str, specialization: str
) -> Agent:
"""
Create a medical agent with specialized knowledge.
Args:
name: Agent's name
role: Medical role/title
specialization: Area of medical expertise
Returns:
Configured medical Agent instance
"""
system_prompt = f"""You are {name}, a {role} with expertise in {specialization}.
You are treating a 34-year-old female patient with:
- Chief complaint: Sudden severe headache ("worst headache of my life")
- Onset: 6 hours ago
- Associated symptoms: Nausea, light sensitivity
- Vital signs: BP 145/92, HR 88, Normal temperature
- History: No trauma, takes oral contraceptives
When discussing with colleagues:
- Share your clinical insights relevant to your specialty
- Ask pertinent questions about the case
- Suggest appropriate next steps for diagnosis/treatment
- Keep responses professional but conversational (1-2 sentences)
- Consider differential diagnoses and treatment options
Focus on collaborative patient care and safety."""
return Agent(
agent_name=name,
agent_description=f"{role} - {specialization}",
system_prompt=system_prompt,
model_name="gpt-4o-mini",
dynamic_temperature_enabled=True,
output_type="str",
streaming_on=False,
max_loops=1,
)
def create_hospital_team() -> List[Agent]:
"""Create the medical team for the headache case."""
team = [
create_medical_agent(
"Dr.Sarah_ER",
"Emergency Physician",
"rapid assessment, triage, emergency headache protocols",
),
create_medical_agent(
"Dr.Michael_Neuro",
"Neurologist",
"headache disorders, migraine diagnosis, neurological evaluation",
),
create_medical_agent(
"Jennifer_RN",
"Registered Nurse",
"patient monitoring, pain assessment, care coordination",
),
create_medical_agent(
"Dr.Lisa_Rad",
"Radiologist",
"head CT/MRI interpretation, neuroimaging for headaches",
),
create_medical_agent(
"Robert_PharmD",
"Clinical Pharmacist",
"headache medications, drug interactions, dosing optimization",
),
create_medical_agent(
"Dr.Amanda_Coord",
"Medical Coordinator",
"care planning, team coordination, discharge planning",
),
]
return team
def main():
"""Run the hospital simulation."""
print("🏥 Hospital Agent Simulation - Headache Case")
print("=" * 50)
# Create simulation environment
print("🏗️ Setting up hospital environment...")
hospital = AgentMapSimulation(
map_width=50.0,
map_height=50.0,
proximity_threshold=10.0, # Medical consultation distance
update_interval=2.0,
)
# Create and add medical team
print("👩‍⚕️ Assembling medical team...")
medical_team = create_hospital_team()
for agent in medical_team:
hospital.add_agent(
agent=agent, movement_speed=2.0, conversation_radius=10.0
)
print(f"✅ Medical team ready: {len(medical_team)} specialists")
# Define the medical case/task
headache_case = """
URGENT CASE CONSULTATION:
Patient: 34-year-old female presenting with sudden severe headache
Key Details:
- "Worst headache of my life" - onset 6 hours ago
- Associated nausea and photophobia
- BP elevated at 145/92, otherwise stable vitals
- No trauma history, currently on oral contraceptives
- No fever or neck stiffness noted
MEDICAL TEAM OBJECTIVES:
1. Rule out emergent causes (SAH, stroke, meningitis)
2. Determine appropriate diagnostic workup
3. Develop treatment plan for symptom relief
4. Plan for disposition and follow-up care
Collaborate to provide comprehensive patient care.
"""
print("\n🚨 CASE DETAILS:")
print("📋 34-year-old female with sudden severe headache")
print(
"⚠️ 'Worst headache of my life' - requires immediate evaluation"
)
print("🔍 Team will collaborate on diagnosis and treatment")
try:
# Run the hospital simulation
print("\n🏥 Starting medical consultation simulation...")
results = hospital.run(
task=headache_case,
duration=180, # 3 minutes of medical consultations
with_visualization=True,
update_interval=3.0,
)
# Display results
print("\n📊 SIMULATION RESULTS:")
print(
f"👥 Medical Team: {results['total_agents']} specialists"
)
print(
f"🗣️ Consultations: {results['total_conversations']} conversations"
)
print(
f"✅ Completed: {results['completed_conversations']} consultations"
)
print(
f"⏱️ Duration: {results['duration_seconds']:.1f} seconds"
)
print(f"📄 Documentation: {results['summary_file']}")
# Agent participation summary
print("\n🩺 TEAM PARTICIPATION:")
for agent_name, stats in results["agent_statistics"].items():
consultations = stats["total_conversations"]
partners = len(stats["partners_met"])
print(
f" {agent_name}: {consultations} consultations with {partners} colleagues"
)
print("\n🎯 CASE OUTCOME:")
if results["completed_conversations"] >= 3:
print(
"✅ Excellent team collaboration - multiple specialists consulted"
)
print("🤝 Comprehensive patient evaluation achieved")
elif results["completed_conversations"] >= 1:
print("✅ Good initial consultation completed")
print("📋 Additional specialist input may be beneficial")
else:
print(
"⚠️ Limited consultations - consider extending simulation time"
)
print("\n🏥 Hospital simulation completed successfully!")
except Exception as e:
print(f"\n❌ Simulation error: {str(e)}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()