手术室调度系统

一个基于多智能体系统的实时手术室调度系统,支持通信协议和事件管理。

  • by ErickG09
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ErickG09/AgentesInteligentes_ProtocolosComunicacion

使用说明

Backend del proyecto multi-agente para programar quirófanos con protocolos de comunicación y eventos en tiempo real.


Stack

  • FastAPI (API · ACP) · SQLAlchemy + SQLite (KB)
  • SSE (AG-UI) · SPADE (A2A opcional) · Gemini (AI Adapter)
  • Python 3.11+

Protocolos (rúbrica)

Protocolo Uso en el backend Ubicación
ACP API REST (consultas y reservas) routers/*.py, app/main.py
AG-UI Eventos en tiempo real (SSE) app/events.py, routers/events.py
A2A Mensajería entre agentes (SPADE) agents/*.py
AGORA Subasta/ofertas de sala/slot agents/or_executor.py, selección en planner.py / reserve.py
ANP Negociación de horarios/personal agents/anesthesia_exec.py
MCP/LMOS Esquemas de mensajes JSON app/schemas.py

Endpoints (ACP)

  • Disponibilidad
    GET /availability/rooms · GET /availability/staff?role=surgeon|anesthetist|nurse
  • Casos
    POST /cases · GET /cases · GET /cases/{id}
  • Programación
    POST /reserve/auto_schedule/{case_id} ➊ AGORA/IA → ➋ validación → ➌ reserva → ➍ CEYE → 🟢 eventos
  • IA (sugerencias)
    GET /ai/suggest/{case_id}
  • Eventos (AG-UI)
    GET /events (SSE · tipos: scheduled, supply_ok, supply_alert, conflict, error)

KB (modelo)

  • ORRoom: id, name, has_laparoscopy, has_c_arm
  • Staff: id, name, role(surgeon|anesthetist|nurse), active
  • Procedure: code, name, est_minutes, needs_*
  • Kit / ProcedureKit: disponibilidad y requerimientos
  • Case: procedure_code, priority(urgent|elective), asa, status
  • Reservation: case_id, room_id, surgeon_id?, anesthetist_id?, start_ts, end_ts
    ↳ Regla: UNIQUE(room_id, start_ts, end_ts) (no solapes por sala)

Tres flujos (rúbrica)

  1. Sala con subasta/propuesta (AGORA) → BIDs / PlanCandidate → mejor opción.
  2. Personal (ANP) → negociación simple ante conflicto.
  3. Material (ACP + AG-UI) → verificación CEYE → supply_ok/supply_alert.

Correr local

pip install -r requirements.txt
# .env
# DATABASE_URL=sqlite:///./app.db
# CORS_ORIGINS=http://localhost:5173
# GEMINI_API_KEY=   # opcional
uvicorn app.main:app --reload
# Swagger: http://localhost:8000/docs