An AI-powered clinical decision support system that helps healthcare providers make better decisions by providing real-time clinical insights and recommendations.
Features • Architecture • Quick Start • Development • Contributing
Category | Features |
---|---|
🏥 Clinical Support | • Real-time clinical decision support • Rule-based alerting system • Patient risk assessment • Medication safety checks |
🔄 Integration | • FHIR integration for healthcare data • IRIS for Healthcare integration • Multi-system interoperability • Real-time data synchronization |
💻 User Interface | • Modern, responsive web interface • Intuitive clinical dashboard • Real-time alerts and notifications • Customizable views |
🛠️ Technical | • Docker-based deployment • Scalable microservices architecture • High-performance data processing • Secure data handling |
The system consists of the following components:
graph TD
A[User<br>External Actor] --> B[Web Frontend]
B --> C[Copilot Backend<br>Python/FastAPI]
B --> D[Django Admin & API<br>Python/Django]
B -- "Requests data from" --> C
D -- "Requests data from" --> E[Database APIs<br>PostgreSQL, Redis, etc.]
D -- "Uses ORM for" --> E
B -- "Initializes" --> F[UI Entry Point<br>TypeScript/React]
F -- "Initializes" --> G[App Shell<br>TypeScript/React]
G -- "Manages" --> H[UI Pages<br>TSX/React Directory]
H -- "Uses" --> I[UI Components<br>TSX/React Directory]
H -- "Calls" --> J[Frontend API Client<br>TypeScript]
J -- "Requests data from" --> C
C -- "Uses" --> K[Rules Engine<br>Python Code]
C -- "Accesses" --> L[FHIR Client<br>Python Code]
L -- "Communicates with" --> M[External Systems<br>FHIR APIs, InterSystems IRIS, etc.]
C -- "Invokes" --> N[Monitoring Services<br>Python Code Directory]
C -- "Reads config from" --> O[Configuration Management<br>Python Code Directory]
O -- "Manages Uses" --> O
C -- "Invokes" --> P[LLM Service<br>Python Code]
P -- "Communicates with" --> Q[External Systems<br>OpenAI, Ollama, etc.]
D -- "Handles commands &<br>delegates HTTP to" --> R[URL Configuration<br>Python/Django]
R -- "Routes to" --> S[Core Business Logic<br>Python/Django Directory]
D -- "Loads" --> T[Application Settings<br>Python/Django]
- Frontend: React-based web interface with Material-UI
- Backend: FastAPI-based API server with Python
- FHIR Server: HAPI FHIR server for healthcare data
- IRIS: InterSystems IRIS for Healthcare integration
- Database: PostgreSQL for data persistence
- Rule Engine: Custom rule processing system
- Monitoring: System health and performance tracking
- Docker and Docker Compose
- Git
- Node.js (for local development)
- Python 3.9+ (for local development)
- PostgreSQL (for production)
- Redis (for caching and session management)
-
Clone the repository:
git clone https://github.com/kunal0297/SmartClinicalCopilot.git cd SmartClinicalCopilot
-
Create a
.env
file in the backend directory with the following content:# Environment ENVIRONMENT=development # API Settings HOST=0.0.0.0 PORT=8000 # Database DATABASE_URL=postgresql://postgres:postgres@db:5432/clinical_copilot # FHIR Server FHIR_SERVER_URL=http://hapi.fhir.org/baseR4 # LLM Settings LLM_API_KEY=your-api-key-here LLM_MODEL=mistral # Redis Settings REDIS_URL=redis://redis:6379/0 # Security SECRET_KEY=your-secret-key-here ACCESS_TOKEN_EXPIRE_MINUTES=11520 # 8 days # Monitoring ENABLE_METRICS=true METRICS_PORT=9090 # Logging LOG_LEVEL=INFO
-
Build and start the Docker containers:
docker-compose build docker-compose up
-
Access the services:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- FHIR Server: http://localhost:8080
- IRIS Management Portal: http://localhost:52773
-
Set up the environment:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
-
Install dependencies:
cd backend pip install -r requirements.txt
-
Run the development server:
cd backend uvicorn main:app --reload
-
Install dependencies:
cd frontend npm install
-
Run the development server:
npm run dev
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Follow PEP 8 for Python code
- Use TypeScript best practices for frontend code
- Write meaningful commit messages
- Include tests for new features
- Update documentation as needed
- All data is encrypted in transit and at rest
- Role-based access control
- Regular security audits
- HIPAA compliance measures
This project is licensed under the MIT License - see the LICENSE file for details.
Team Kunal0297
- Email: [email protected]
- GitHub: @kunal0297
After cloning the repository, you must set up the frontend dependencies to avoid common TypeScript and module errors:
-
Install Frontend Dependencies
cd frontend npm install
-
Ensure TypeScript Type Definitions If you encounter errors about missing type definitions for
node
orvite/client
, run:npm install --save-dev @types/node vite
-
Check for utils.ts Make sure the file
frontend/src/lib/utils.ts
exists. If not, create it with the following content:import { type ClassValue, clsx } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } export function formatDate(date: Date): string { return new Intl.DateTimeFormat("en-US", { year: "numeric", month: "long", day: "numeric", }).format(date); } export function debounce<T extends (...args: any[]) => any>( func: T, wait: number ): (...args: Parameters<T>) => void { let timeout: NodeJS.Timeout; return function executedFunction(...args: Parameters<T>) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; } export function generateId(): string { return Math.random().toString(36).substring(2) + Date.now().toString(36); }
-
Troubleshooting
- If you see errors like
Cannot find module '@/lib/utils'
, check that the file above exists and is committed. - If you see TypeScript errors about missing types, repeat step 2.
- If you see errors like
-
Build the Frontend
npm run build
Made with ❤️ by Team Kunal0297