3-ai-native-e2e-sample/backend/routers/trials.py (30 lines of code) (raw):

from fastapi import APIRouter, HTTPException, Query from datetime import datetime import logging from opentelemetry import trace from agents.trials.event_producer.producer import simulate_trial_data # Configure logging and tracing logger = logging.getLogger(__name__) tracer = trace.get_tracer(__name__) router = APIRouter() @router.post("/simulate") async def simulate_trial_events(num_events: int = Query(default=1, ge=1, le=100)): """ Simulate clinical trial events. This endpoint triggers the simulation of trial events, publishes them via Event Hubs, and they are subsequently processed by the multi-agent system. Args: num_events: Number of events to generate (1-100) Returns: List of generated trial events and simulation status. """ with tracer.start_as_current_span("simulate_trial_events") as span: try: logger.info("🔄 Starting trial event simulation for %d events", num_events) span.set_attribute("trial.num_events", num_events) # Generate and publish trial events which will be consumed and processed by agents. events = await simulate_trial_data(num_events) logger.info("✅ Trial event simulation completed") span.set_attribute("trial.events_generated", len(events)) return { "status": "success", "message": f"Generated and published {len(events)} trial events", "events": events } except Exception as e: logger.error("❌ Error in trial event simulation: %s", str(e), exc_info=True) span.set_status(trace.Status(trace.StatusCode.ERROR)) span.record_exception(e) raise HTTPException( status_code=500, detail=str(e) )