A scalable, production-grade pharmacy claims processing system built with Node.js, TypeScript, PostgreSQL, and Redis. This system demonstrates modern software engineering practices and is designed to run on Kubernetes.
- Claim Processing: Accept and process pharmacy claims with patient, prescription, and insurance information
- Queue Management: Asynchronous processing using Redis queues with Bull
- Business Rules Engine: Configurable rules using json-rules-engine for claim validation and processing
- Error Handling: Comprehensive error handling with retry mechanisms and exponential backoff
- Database Storage: Relational database storage with PostgreSQL
- Audit Logging: Complete audit trail for all claim operations
- Daily Reports: Automated daily reports showing claims statistics
- Invoice Reports: Pharmacy invoice generation with processing fees
- Health Monitoring: Comprehensive health checks and system status monitoring
- API Documentation: RESTful API with comprehensive endpoints
- Backend: Node.js with TypeScript
- Database: PostgreSQL with connection pooling
- Queue System: Redis with Bull for job processing
- Business Rules: json-rules-engine for configurable business logic
- API: Express.js with comprehensive middleware
- Containerization: Docker with multi-stage builds
- Orchestration: Docker Compose for local development
- Claim Processing Service: Core business logic for claim validation and processing
- Queue Service: Manages asynchronous job processing with retry logic
- Rules Engine Service: Applies configurable business rules to claims
- Report Service: Generates daily and invoice reports
- Database Layer: PostgreSQL with optimized schema and indexes
- API Layer: RESTful endpoints with validation and error handling
- Node.js 18+
- Docker and Docker Compose
- PostgreSQL 15+
- Redis 7+
-
Clone the repository
git clone <repository-url> cd pharmacy-claims-processor
-
Install dependencies
npm install
-
Set up environment variables
cp env.example .env # Edit .env with your configuration -
Start services with Docker Compose
npm run docker:run
-
Run database migrations
npm run migrate
-
Start the application
npm run dev
The application will be available at http://localhost:3000
-
Build the Docker image
npm run docker:build
-
Deploy to Kubernetes
kubectl apply -f k8s/
http://localhost:3000/api/v1
POST /claims
Content-Type: application/json
{
"patientId": "uuid",
"pharmacyId": "uuid",
"insurancePolicyId": "uuid",
"prescriptionDetails": {
"drugName": "Lisinopril",
"ndc": "00071015523",
"quantity": 30,
"daysSupply": 30,
"prescriberNpi": "1234567890",
"prescriptionDate": "2024-01-15",
"refillNumber": 0,
"isGeneric": true,
"strength": "10mg",
"dosageForm": "tablet"
},
"claimAmount": 25.50
}GET /claims/{claimId}GET /claims/status/{status}?limit=100POST /claims/{claimId}/retryGET /claims/queue/statsPOST /reports/daily
Content-Type: application/json
{
"date": "2024-01-15"
}GET /reports/daily/{date}POST /reports/invoice
Content-Type: application/json
{
"date": "2024-01-15"
}GET /reports/invoice/{date}GET /healthGET /health/detailedGET /health/status- patients: Patient information and demographics
- pharmacies: Pharmacy details and NPI numbers
- insurance_policies: Insurance coverage information
- claims: Main claims table with processing status
- error_claims: Failed claims with error details
- business_rules: Configurable business rules
- daily_reports: Daily processing statistics
- invoice_reports: Pharmacy invoice data
- audit_logs: Complete audit trail
- UUID primary keys for scalability
- Comprehensive indexing for performance
- Audit triggers for data integrity
- JSONB fields for flexible data storage
The system includes a configurable business rules engine that can:
- Validate Claims: Check for invalid data, missing information
- Apply Coverage Rules: Calculate copays, deductibles, coverage percentages
- Flag Suspicious Claims: Identify potential fraud or errors
- Route Claims: Direct claims to different processing paths
- Apply Modifications: Adjust claim amounts based on rules
- Generic drug preference
- High-cost drug review
- Invalid NPI rejection
- Quantity limit checks
- Database connectivity
- Redis queue status
- Application health
- System resources
- Structured logging with Winston
- Request/response logging
- Error tracking with stack traces
- Performance metrics
- Claims processed per minute
- Processing time statistics
- Error rates and types
- Queue depths and throughput
- Input Validation: Comprehensive request validation
- SQL Injection Protection: Parameterized queries
- CORS Configuration: Configurable cross-origin requests
- Helmet Security: Security headers
- Rate Limiting: API rate limiting (configurable)
- Audit Logging: Complete audit trail
- TypeScript with strict mode
- ESLint configuration
- Prettier formatting
- Conventional commits
-
Service-oriented architecture
-
Dependency injection
-
Repository pattern
-
Factory pattern for business rules
-
Database Connection Pooling: Optimized PostgreSQL connections
-
Queue Processing: Asynchronous job processing
-
Caching: Redis-based caching (configurable)
-
Indexing: Optimized database indexes
-
Compression: Response compression
-
Load Balancing: Ready for horizontal scaling
This project is licensed under the MIT License - see the LICENSE file for details.