An open API service indexing awesome lists of open source software.

https://github.com/geobatpo07/deduplication-app


https://github.com/geobatpo07/deduplication-app

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

          

# Deduplication Application

A comprehensive patient record deduplication system with advanced machine learning capabilities, validation workflow, and REST API.

## ๐Ÿš€ Features

### Multi-Layer Deduplication
- **Rule-Based**: Exact matching for high-confidence duplicates
- **Fuzzy Matching**: Similarity-based matching using Levenshtein distance
- **Machine Learning**: Advanced ML using the dedupe library with active learning
- **Hybrid Approach**: Combines all methods for optimal results

### Validation System
- Manual validation interface for reviewing duplicates
- Confidence scoring for each match
- Batch validation for efficient processing
- Audit trail for all validation decisions

### Performance Scalability
- Blocking strategies for efficient large-scale processing
- Parallel processing with configurable workers
- Incremental learning for ML models
- Caching for frequently accessed data

### Production Ready
- Comprehensive REST API with FastAPI
- Modern React frontend with Material-UI
- Docker containerization
- Monitoring and metrics (Prometheus/Grafana)
- Structured logging
- CI/CD pipeline support

### Frontend Features
- **Modern React UI**: Built with React 18 and TypeScript
- **Material-UI Components**: Professional and responsive design
- **Real-time Dashboard**: Live statistics and monitoring
- **Data Tables**: Sortable, filterable, and paginated record views
- **Validation Interface**: Interactive duplicate review and validation
- **Responsive Design**: Works on desktop, tablet, and mobile
- **Authentication**: Secure login with session management

## ๐Ÿ—๏ธ Architecture

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Web Interface โ”‚ โ”‚ REST API โ”‚ โ”‚ ML Engine โ”‚
โ”‚ (Frontend) โ”‚โ—„โ”€โ”€โ–บโ”‚ (FastAPI) โ”‚โ—„โ”€โ”€โ–บโ”‚ (Strategies) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ โ”‚
โ–ผ โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Database โ”‚ โ”‚ File Storage โ”‚
โ”‚ (DuckDB/SQLSvr) โ”‚ โ”‚ (Models/Data) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

## ๐Ÿ“Ž Installation

### Prerequisites
- Python 3.11+
- Node.js 18+
- Docker Docker Compose
- SQL Server with ODBC Driver 17

### Quick Start

1. **Clone the repository**
```bash
git clone
cd deduplication-app
```

2. **Set up environment**
```bash
cp .env.example .env
# Edit .env with your configuration
```

3. **Run with Docker (Full Stack)**
```bash
python start.py --docker
```

4. **Access the Application**
- **Frontend Application**: http://localhost:3000
- **API Documentation**: http://localhost:8000/docs
- **Monitoring (Grafana)**: http://localhost:3000
- **Metrics (Prometheus)**: http://localhost:9090

### Development Setup

#### Backend (API)
1. **Create virtual environment**
```bash
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
```

2. **Install dependencies**
```bash
pip install -r requirements.txt
```

3. **Initialize database**
```bash
python -c "from src.database.connection import db_manager; db_manager.initialize_tables()"
```

4. **Run the API server**
```bash
python start.py
```

#### Frontend (React)
1. **Install dependencies**
```bash
cd frontend
npm install
```

2. **Run the development server**
```bash
python start.py --frontend
```

#### Full Development Mode
```bash
# Terminal 1: Start API
python start.py

# Terminal 2: Start Frontend
python start.py --frontend
```

## ๐Ÿ“– Usage

### API Endpoints

#### Authentication
All endpoints require HTTP Basic Authentication:
- Username: `admin` (configurable)
- Password: `supersecret` (configurable)

#### Main Endpoints

**Get Duplicates**
```bash
GET /api/duplicates?page=1per_page=20status=pending
```

**Get Duplicate Clusters**
```bash
GET /api/duplicates/clusters?status=pending
```

**Run Deduplication**
```bash
POST /api/duplicates/run
{
"config": {
"method": "hybrid",
"confidence_threshold": 0.8,
"max_cluster_size": 50
},
"async_mode": true
}
```

**Validate Duplicates**
```bash
POST /api/duplicates/validate
{
"cluster_id": 1,
"record_id": 123,
"action": "approved",
"user_id": "admin",
"notes": "Confirmed duplicate"
}
```

**Get Statistics**
```bash
GET /api/statistics
```

### Python SDK Usage

```python
from src.deduplication.engine import DeduplicationEngine
from src.deduplication.base import DeduplicationConfig, DeduplicationMethod

# Configure deduplication
config = DeduplicationConfig(
method=DeduplicationMethod.HYBRID,
confidence_threshold=0.8,
max_cluster_size=50
)

# Create engine
engine = DeduplicationEngine(config)

# Train the model (if needed)
engine.train()

# Run deduplication
result = engine.predict()

print(f"Found {result.duplicates_found} duplicate clusters")
print(f"Processing time: {result.processing_time:.2f} seconds")
```

## ๐Ÿ”ง Configuration

### Environment Variables

```bash
# Database Configuration
DB_SERVER=your_sql_server_host
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password

# Security
SECRET_KEY=your-secret-key-change-this
BASIC_AUTH_USERNAME=admin
BASIC_AUTH_PASSWORD=supersecret

# Deduplication Settings
DEFAULT_CONFIDENCE_THRESHOLD=0.7
MAX_CLUSTER_SIZE=100
ENABLE_AUTOMATIC_DEDUPLICATION=true

# Performance
MAX_WORKERS=4
BATCH_SIZE=1000
CACHE_TTL=3600
```

### Deduplication Methods

1. **Rule-Based**: Fast exact matching
2. **Fuzzy Matching**: Similarity-based with configurable thresholds
3. **Machine Learning**: Active learning with dedupe library
4. **Hybrid**: Combines all methods for best results

### Similarity Weights

Configure field importance for matching:

```python
similarity_weights = {
"nom": 0.3, # Last name
"prenom": 0.3, # First name
"date_naissance": 0.2, # Date of birth
"sexe": 0.1, # Gender
"mpi_ref": 0.1 # MPI reference
}
```

## ๐Ÿงช Testing

### Run Tests
```bash
# Unit tests
pytest tests/unit/

# Integration tests
pytest tests/integration/

# All tests with coverage
pytest --cov=src tests/
```

### Test Data
```bash
# Create test data
python tests/fixtures/create_sample_data.py
```

## ๐Ÿš€ Deployment

### Docker Production
```bash
# Build and run
docker-compose -f docker-compose.prod.yml up -d

# Scale workers
docker-compose up -d --scale worker=3
```

### Kubernetes
```bash
# Deploy to Kubernetes
kubectl apply -f k8s/
```

### Environment Setup
1. Set up SQL Server connection
2. Configure environment variables
3. Set up SSL certificates
4. Configure monitoring

## ๐Ÿ“Š Monitoring

### Metrics
- Processing time and throughput
- Duplicate detection rates
- Validation accuracy
- System resource usage

### Logs
- Structured JSON logging
- Centralized log aggregation
- Error tracking and alerting

### Dashboards
- Grafana dashboards for visualization
- Real-time monitoring
- Performance alerts

## ๐Ÿ” Security

### Authentication
- HTTP Basic Authentication
- JWT tokens (configurable)
- Role-based access control

### Data Protection
- Encrypted database connections
- Secure credential management
- Audit logging

## ๐Ÿ“ˆ Performance

### Optimization Features
- Database indexing strategies
- Efficient blocking algorithms
- Parallel processing
- Memory optimization
- Caching layers

### Benchmarks
- Processes 100K records in ~5 minutes
- 95% accuracy on test datasets
- Scales to millions of records

## ๐Ÿค Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request

## ๐Ÿ“„ License

This project is licensed under the MIT License - see the `LICENSE` file for details.

## ๐Ÿ†˜ Support

### Documentation
- API Documentation: `/docs`
- OpenAPI Spec: `/openapi.json`

### Issues
- GitHub Issues for bug reports
- Feature requests welcome

### Contact
- Email: lgeobatpo98@gmail.com

---

**Status**: โœ… Production Ready | ๐Ÿšง Active Development | ๐Ÿ“ˆ Continuously Improving