Spaces:
Running
Running
metadata
title: Lung Cancer Clinical Decision Support System
emoji: π«
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
app_port: 7860
Lung Cancer Clinical Decision Support System
A specialized AI-powered clinical decision support system for thoracic oncologists, pulmonologists, and healthcare professionals managing lung cancer patients. Built with Retrieval-Augmented Generation (RAG) and agentic AI capabilities.
π― Features
Core Capabilities
- Specialized Knowledge: Focused on NSCLC and SCLC management
- Evidence-Based Guidance: Retrieves information from authoritative medical guidelines (NCCN, ASCO, ESMO, NICE)
- Molecular Testing: EGFR, ALK, ROS1, BRAF, MET, RET, KRAS, PD-L1, TMB
- Treatment Modalities: Targeted therapy, immunotherapy, chemotherapy, radiation, surgery
- Comprehensive Citations: Inline citations with page references for every answer
Technical Features
- Hybrid Search: Vector search (FAISS) + BM25 for optimal retrieval
- Context Enrichment: Automatically includes surrounding pages for complete clinical context
- Streaming Responses: Real-time answer generation
- Session Management: Conversation history tracking
- Export Functionality: Export conversations as PDF or DOCX
- Authentication: Secure session-based authentication
- Rate Limiting: Built-in API rate limiting
π Deployment
Live API
The API is deployed at: https://moazx-lung-cancer-ai-advisor.hf.space
Quick Start
- Access the API:
π API Endpoints
Health & Status
GET /- API informationGET /health- Health checkGET /health/initialization- Initialization status
Authentication
POST /auth/login- User loginPOST /auth/logout- User logoutGET /auth/status- Check authentication status up
Medical Queries
POST /ask- Ask a question (complete response){ "query": "What are the early symptoms of lung cancer?", "session_id": "user_123_session_1699612345" }POST /ask/stream- Ask a question (streaming response){ "query": "What are the treatment options?", "session_id": "user_123_session_1699612345" }
Export
GET /export/{format}?session_id={id}- Export conversation (format: pdf, docx, txt)
π» Local Development
Prerequisites
- Python 3.11+
- OpenAI API key
- GitHub Personal Access Token (for side effects storage)
Setup
- Clone the repository:
git clone https://github.com/your-repo/lung-cancer-advisor.git
cd lung-cancer-advisor
- Install dependencies:
pip install -r requirements.txt
- Configure environment variables:
cp .env.example .env
# Edit .env with your API keys
- Run the application:
python app.py
- Access the application:
- API: http://localhost:7860
- Docs: http://localhost:7860/docs
- Frontend: Open
frontend/index.html
π§ Configuration
Environment Variables
See .env.example for all configuration options:
OPENAI_API_KEY: Your OpenAI API key (required)GITHUB_TOKEN: GitHub token for side effects storage (optional)PORT: Server port (default: 7860)ALLOWED_ORIGINS: CORS allowed origins
ποΈ Architecture
Components
- FastAPI Backend: RESTful API with async support
- LangChain Agent: Orchestrates tools and generates responses
- Vector Store: FAISS for semantic search
- BM25 Search: Keyword-based retrieval
- Context Enrichment: Adds surrounding pages for complete context
- Frontend: Vanilla JavaScript with Markdown rendering
Agent Tools
- medical_guidelines_knowledge_tool: Retrieves information from guidelines
- compare_providers_tool: Compares guidance between providers
- side_effect_recording_tool: Records adverse drug reactions
- get_current_datetime_tool: Gets current date/time
π Response Format
The agent provides:
- Concise, evidence-based answers for busy clinicians
- Inline citations after each statement
- Comprehensive reference list at the end
- Structured markdown formatting for easy scanning
- Real-time streaming for immediate feedback
Example:
### First-Line Treatment for EGFR-Mutated NSCLC
**Recommended Options:**
- Osimertinib 80mg daily (Source: NCCN.pdf, Page: 45, Provider: NCCN)
- Alternative: Erlotinib or Gefitinib for exon 19 deletions (Page: 46)
**References:**
(Source: NCCN.pdf, Pages: 45, 46, Provider: NCCN, Location: NSCLC Treatment Algorithm)