Spaces:
Sleeping
Sleeping
| # config.py | |
| # CareLoop Configuration Management | |
| import os | |
| from dataclasses import dataclass | |
| from typing import Dict, List, Optional | |
| class DatabaseConfig: | |
| """Database configuration settings""" | |
| url: str = "sqlite:///careloop_demo.db" | |
| echo: bool = False | |
| pool_size: int = 10 | |
| max_overflow: int = 20 | |
| class AIConfig: | |
| """AI and LLM configuration""" | |
| openai_api_key: str = "demo-key-not-required" | |
| model_name: str = "gpt-4" | |
| temperature: float = 0.1 | |
| max_tokens: int = 2000 | |
| # For hackathon demo, we mock AI responses | |
| use_mock_responses: bool = True | |
| class NotificationConfig: | |
| """Notification service configuration""" | |
| twilio_account_sid: str = "demo-account" | |
| twilio_auth_token: str = "demo-token" | |
| twilio_phone_number: str = "+1-555-CARELOOP" | |
| email_service: str = "sendgrid" | |
| email_api_key: str = "demo-email-key" | |
| class HealthIntegrationConfig: | |
| """Health device and service integrations""" | |
| apple_health_enabled: bool = True | |
| fitbit_enabled: bool = True | |
| omron_enabled: bool = True # Blood pressure monitors | |
| dexcom_enabled: bool = False # Continuous glucose monitoring | |
| epic_fhir_enabled: bool = False # Electronic health records | |
| class SecurityConfig: | |
| """Security and privacy settings""" | |
| encryption_key: str = "demo-encryption-key-32-chars-long" | |
| jwt_secret: str = "demo-jwt-secret-key" | |
| session_timeout_hours: int = 24 | |
| max_login_attempts: int = 5 | |
| require_2fa: bool = False # For demo | |
| class CareLoopConfig: | |
| """Main application configuration""" | |
| # Subsystem configs - non-default parameters must come first | |
| database: DatabaseConfig | |
| ai: AIConfig | |
| notifications: NotificationConfig | |
| health_integrations: HealthIntegrationConfig | |
| security: SecurityConfig | |
| # Environment | |
| environment: str = "development" | |
| debug: bool = True | |
| # Web server | |
| host: str = "0.0.0.0" | |
| port: int = 8000 | |
| workers: int = 1 | |
| # Feature flags | |
| enable_web_interface: bool = True | |
| enable_api: bool = True | |
| enable_websockets: bool = True | |
| enable_background_tasks: bool = True | |
| # Monitoring intervals | |
| health_check_interval_hours: int = 4 | |
| medication_check_interval_hours: int = 2 | |
| emergency_check_interval_minutes: int = 15 | |
| def __init__(self): | |
| self.database = DatabaseConfig() | |
| self.ai = AIConfig() | |
| self.notifications = NotificationConfig() | |
| self.health_integrations = HealthIntegrationConfig() | |
| self.security = SecurityConfig() | |
| def load_config() -> CareLoopConfig: | |
| """Load configuration from environment variables""" | |
| config = CareLoopConfig() | |
| # Override with environment variables if present | |
| config.environment = os.getenv("CARELOOP_ENV", "development") | |
| config.debug = os.getenv("CARELOOP_DEBUG", "true").lower() == "true" | |
| config.host = os.getenv("CARELOOP_HOST", "0.0.0.0") | |
| config.port = int(os.getenv("CARELOOP_PORT", "8000")) | |
| # Database | |
| config.database.url = os.getenv("DATABASE_URL", "sqlite:///careloop_demo.db") | |
| # AI Configuration | |
| config.ai.openai_api_key = os.getenv("OPENAI_API_KEY", "demo-key") | |
| config.ai.use_mock_responses = os.getenv("USE_MOCK_AI", "true").lower() == "true" | |
| # Notifications | |
| config.notifications.twilio_account_sid = os.getenv("TWILIO_ACCOUNT_SID", "demo") | |
| config.notifications.twilio_auth_token = os.getenv("TWILIO_AUTH_TOKEN", "demo") | |
| config.notifications.email_api_key = os.getenv("EMAIL_API_KEY", "demo") | |
| # Security | |
| config.security.encryption_key = os.getenv("ENCRYPTION_KEY", "demo-key-32-chars-very-secure!!") | |
| config.security.jwt_secret = os.getenv("JWT_SECRET", "demo-jwt-secret") | |
| return config | |
| # Global config instance | |
| CONFIG = load_config() | |
| # Environment-specific configurations | |
| ENVIRONMENT_CONFIGS = { | |
| "development": { | |
| "debug": True, | |
| "log_level": "DEBUG", | |
| "database_echo": True, | |
| "use_mock_integrations": True, | |
| "enable_hot_reload": True | |
| }, | |
| "staging": { | |
| "debug": False, | |
| "log_level": "INFO", | |
| "database_echo": False, | |
| "use_mock_integrations": True, | |
| "enable_hot_reload": False | |
| }, | |
| "production": { | |
| "debug": False, | |
| "log_level": "WARNING", | |
| "database_echo": False, | |
| "use_mock_integrations": False, | |
| "enable_hot_reload": False, | |
| "require_https": True, | |
| "enable_rate_limiting": True | |
| } | |
| } | |
| def get_environment_config(env: str) -> Dict: | |
| """Get configuration for specific environment""" | |
| return ENVIRONMENT_CONFIGS.get(env, ENVIRONMENT_CONFIGS["development"]) | |
| if __name__ == "__main__": | |
| print("CareLoop Configuration") | |
| print("=" * 30) | |
| print(f"Environment: {CONFIG.environment}") | |
| print(f"Debug mode: {CONFIG.debug}") | |
| print(f"Database: {CONFIG.database.url}") | |
| print(f"AI Mock mode: {CONFIG.ai.use_mock_responses}") | |
| print(f"Web interface: {CONFIG.enable_web_interface}") | |
| print(f"Host: {CONFIG.host}:{CONFIG.port}") | |