# Examples Directory Integration examples for RagBot in different environments. ## Contents ### `test_website.html` HTML example for integrating RagBot biomarker analysis into a web application. **Features:** - Form-based biomarker input - JavaScript/fetch POST requests to RagBot API - Real-time result display - Responsive design **Usage:** ```bash 1. Start API: python -m uvicorn api.app.main:app 2. Open: examples/test_website.html in browser 3. Enter biomarkers and submit ``` **Integration Points:** - POST to `http://localhost:8000/api/v1/analyze` - Handles JSON responses - Displays analysis results --- ### `website_integration.js` JavaScript utility library for integrating RagBot into web applications. **Features:** - Biomarker validation - API request handling - Response parsing - Error handling **Usage:** ```html ``` --- ## Creating Your Own Integration ### For Web Applications ```javascript // 1. Initialize client const client = new RagBotClient('http://localhost:8000'); // 2. Get biomarkers from user form const biomarkers = { 'Glucose': parseFloat(document.getElementById('glucose').value), 'HbA1c': parseFloat(document.getElementById('hba1c').value) }; // 3. Call analysis endpoint client.analyze({ biomarkers }) .then(result => { // Display prediction console.log(`Disease: ${result.prediction.disease}`); console.log(`Confidence: ${result.prediction.confidence}`); // Show recommendations result.recommendations.immediate_actions.forEach(action => { console.log(`Action: ${action}`); }); }) .catch(error => console.error('Analysis failed:', error)); ``` ### For Mobile Apps (React Native) ```javascript import fetch from 'react-native-fetch'; const analyzeBiomarkers = async (biomarkers) => { const response = await fetch( 'http://ragbot-api.yourserver.com/api/v1/analyze', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ biomarkers }) } ); return response.json(); }; // Usage in component const [result, setResult] = useState(null); analyzeBiomarkers(userBiomarkers).then(setResult); ``` ### For Python Applications ```python import requests API_URL = 'http://localhost:8000/api/v1' biomarkers = { 'Glucose': 140, 'HbA1c': 10.0, 'LDL Cholesterol': 150 } response = requests.post( f'{API_URL}/analyze', json={'biomarkers': biomarkers} ) result = response.json() print(f"Disease: {result['prediction']['disease']}") print(f"Confidence: {result['prediction']['confidence']}") ``` ### For Server-Side (Node.js) ```javascript const axios = require('axios'); async function analyzePatient(biomarkers) { try { const response = await axios.post( 'http://localhost:8000/api/v1/analyze', { biomarkers } ); return response.data; } catch (error) { console.error('API Error:', error.response.data); } } // Usage const result = await analyzePatient({ 'Glucose': 140, 'HbA1c': 10.0 }); ``` --- ## Deployment Scenarios ### Scenario 1: Web Dashboard ``` Healthcare Portal (React/Vue) ↓ RagBot API (FastAPI) ↓ Multi-Agent Workflow ↓ FAISS Vector Store + Groq LLM ``` ### Scenario 2: Mobile App ``` Mobile App (React Native/Flutter) ↓ RagBot API (Cloud Deployment) ↓ Multi-Agent Workflow ↓ FAISS Vector Store + Groq LLM ``` ### Scenario 3: EHR Integration ``` Electronic Health Record System ↓ RagBot Embedded Library ↓ Multi-Agent Workflow (in-process) ↓ FAISS Vector Store + Groq/OpenAI LLM ``` --- ## Configuration for Production ### CORS Setup ```python # api/app/main.py from fastapi.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["https://yourdomain.com"], allow_methods=["POST", "GET"], allow_headers=["Content-Type"], ) ``` ### Authentication ```javascript // Add API key to requests const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}` }; fetch('http://api.ragbot.com/api/v1/analyze', { method: 'POST', headers, body: JSON.stringify({ biomarkers }) }); ``` ### Rate Limiting Configure in `api/app/main.py`: ```python from slowapi import Limiter from slowapi.util import get_remote_address limiter = Limiter(key_func=get_remote_address) app.state.limiter = limiter @app.post("/api/v1/analyze") @limiter.limit("100/minute") async def analyze(request: Request, ...): ... ``` --- ## Testing Your Integration ### Basic Test ```bash # 1. Start API python -m uvicorn api.app.main:app # 2. In another terminal, test endpoint curl -X POST http://localhost:8000/api/v1/analyze \ -H "Content-Type: application/json" \ -d '{ "biomarkers": { "Glucose": 140, "HbA1c": 10.0 } }' ``` ### Load Testing ```bash # Install Apache Bench ab -n 100 -c 10 -p data.json \ http://localhost:8000/api/v1/analyze ``` --- ## Troubleshooting Integration Issues ### CORS Errors **Problem:** "No 'Access-Control-Allow-Origin' header" **Solution:** Configure CORS in API settings ### Connection Timeouts **Problem:** Request hangs after 30 seconds **Solution:** - Increase timeout - Check API server logs - Verify network connectivity ### Invalid Biomarker Names **Problem:** "Invalid biomarker" error **Solution:** - Check `config/biomarker_references.json` - Normalize names properly (case-sensitive) --- For more information: - [API Documentation](../docs/API.md) - [Architecture](../docs/ARCHITECTURE.md) - [Development Guide](../docs/DEVELOPMENT.md)