Views
No views yet
Product: Trelegy Ellipta (GSK) — Fluticasone furoate / Umeclidinium / Vilanterol
Method: Hybrid Rules + Isolation Forest + SHAP Explainability
Use Case: Detecting copay card fraud in pharmaceutical patient assistance programs
| # | Fraud Type | Description | Detection Method |
|---|---|---|---|
| 1 | Early Refill Abuse | Refilling before 30-day supply runs out (< 23 days) | Rules + IF |
| 2 | Pharmacy Hopping | Filling at multiple pharmacies to stack copay cards | IF (behavioral) |
| 3 | Ghost Fills | Pharmacy bills but doesn't dispense the inhaler | IF (pharmacy patterns) |
| 4 | Prescriber Collusion | Single prescriber generating abnormal volume; wrong specialty | Rules + IF |
| 5 | Strength-Switch | Alternating between NDCs (100/62.5/25 ↔ 200/62.5/25) without clinical reason | Rules + IF |
| 6 | Government Insurance Abuse | Medicare/Medicaid patient using copay card (violates program terms) | Rules |
Raw Copay Claims
│
▼
┌─────────────────┐
│ Phase 1: Rules │ ← 10 Trelegy-specific hard rules
│ (Hard Flags) │ (early refill, impossible qty, govt insurance, etc.)
└────────┬────────┘
▼
┌─────────────────┐
│ Phase 2: IF │ ← Isolation Forest trained on rule-clean data
│ (Anomaly Detect)│ (catches unknown/novel fraud patterns)
└────────┬────────┘
▼
┌─────────────────┐
│ Phase 3: Score │ ← Combined priority = 50% IF + 30% rule severity + 20% rule flag
│ (Priority Rank) │ Risk tiers: Low / Medium / High / Critical
└────────┬────────┘
▼
┌─────────────────┐
│ Phase 4: SHAP │ ← TreeExplainer → "Why was this claim flagged?"
│ (Explainability)│ Top features driving each anomaly score
└────────┬────────┘
▼
┌─────────────────┐
│ Phase 5: Eval │ ← AUPRC, AUROC, F1, Precision@K, detection by fraud type
│ (Reporting) │ + 5 publication-quality visualizations
└─────────────────┘trelegy_copay_fraud/
├── README.md # This file
├── run_all.py # 🚀 Master script — run this
├── generate_synthetic_data.py # Synthetic Trelegy copay claims generator
├── feature_engineering.py # Feature engineering pipeline (48 features)
├── fraud_detection_pipeline.py # Full detection pipeline (rules + IF + SHAP + eval)
├── requirements.txt # Python dependencies
├── data/ # Generated synthetic data
│ ├── trelegy_copay_claims.csv # Main claims dataset
│ ├── patient_master.csv # Patient demographics
│ ├── pharmacy_master.csv # Pharmacy reference
│ └── prescriber_master.csv # Prescriber reference
└── results/ # Pipeline outputs
├── investigation_queue_top500.csv # Top 500 flagged claims for review
├── scored_claims_full.csv # All claims with scores & risk tiers
├── feature_importance_shap.csv # SHAP feature importance ranking
├── metrics.json # Evaluation metrics
├── 01_evaluation_metrics.png # ROC, PR curve, confusion matrix
├── 02_shap_summary.png # SHAP beeswarm plot
├── 03_shap_bar_importance.png # SHAP bar chart
├── 04_detection_by_fraud_type.png # Detection rates by fraud type
├── 05_risk_tier_distribution.png # Risk tier analysis
└── model/
├── isolation_forest_model.pkl # Trained IF model
├── scaler.pkl # StandardScaler
├── encoder.pkl # OrdinalEncoder
└── feature_names.pkl # Feature name list1# 1. Install dependencies
2pip install -r requirements.txt
3
4# 2. Run the full pipeline
5python run_all.pydays_between_fills — Days since last fill (normal: 28-33 for Trelegy)early_refill_flag — Binary: fill before day 23days_since_first_fill — Patient tenure in programclaim_month, claim_dow — Seasonalitypatient_fill_count_{7,30,90}d — Fill velocity per patientpatient_copay_spend_{7,30,90}d — Copay card spend per patientpatient_total_claim_{7,30,90}d — Total claim amount per patientpharmacy_claim_count_{30,90}d — Volume per pharmacyprescriber_claim_count_{30,90}d — Volume per prescriberunique_pharmacies_overall — Number of distinct pharmacies usedunique_programs_per_patient — Card stacking indicatortotal_fills_per_patient — Lifetime fill countavg_days_between_fills — Average refill gapstd_days_between_fills — Refill pattern consistencymax_fills_any_30d — Peak fill velocitypharmacy_claims_per_patient_ratio — Ghost fill indicatorprescriber_specialty_valid — Specialty match flagprescriber_total_claims — Volume anomalyndc_switch_flag — Strength switching (0173-0893 ↔ 0173-0887)govt_insurance_flag — Medicare/Medicaid with copay cardcross_state_fill — Patient state ≠ pharmacy statenew_patient_burst — >1 fill in first 7 days of enrollment| Attribute | Value |
|---|---|
| Brand | Trelegy Ellipta |
| Manufacturer | GSK (GlaxoSmithKline) |
| Active Ingredients | Fluticasone furoate / Umeclidinium / Vilanterol |
| Indications | COPD (maintenance), Asthma (adults ≥18) |
| NDC (COPD/Asthma) | 0173-0893-14 (100/62.5/25 mcg) |
| NDC (Asthma) | 0173-0887-14 (200/62.5/25 mcg) |
| Days Supply | 30 days (30 blisters, 1 inhalation/day) |
| Retail Price | ~$600-700/month |