A CLI tool that calculates the real financial impact of patient no-shows and estimates the ROI of automated reminder systems.
In Italy, 15-20% of medical appointments result in no-shows (AGENAS 2024). Each missed appointment costs EUR 80-150 in lost revenue plus fixed costs that the practice still has to pay.
For a practice with 100 appointments/day, that translates to:
| Metric | Conservative | Realistic |
|---|---|---|
| Daily no-shows | 15 | 20 |
| Cost per no-show | EUR 80 | EUR 150 |
| Annual loss | EUR 60,000 | EUR 150,000 |
Most practices underestimate this cost because they only count the missed fee, ignoring staff time, room costs, and the opportunity cost of slots that could have been filled.
# No installation needed — just Python 3.8+
git clone https://github.com/SynapticaSolution/noshow-cost-calculator.git
cd noshow-cost-calculator
# Run with your practice's numbers
python noshow_calculator.py --appointments 100 --rate 18 --avg-fee 85Or with pip (coming soon):
pip install noshow-calculator
noshow-calc --appointments 100 --rate 18 --avg-fee 85The calculator uses a three-layer cost model:
The fee you would have collected for the appointment.
direct_cost = no_shows × avg_fee
Staff time, room cost, equipment depreciation, utilities — costs you pay regardless of whether the patient shows up. Estimated at 30% of direct cost based on healthcare industry benchmarks.
indirect_cost = direct_cost × 0.30
The slot could have been filled by another patient. This is the hardest to quantify but often the largest component. The calculator uses a conservative fill rate of 60% for freed slots.
opportunity_cost = no_shows × avg_fee × fill_rate
total_loss = (direct_cost + indirect_cost + opportunity_cost) × working_days
$ python noshow_calculator.py --appointments 100 --rate 18 --avg-fee 85
╔══════════════════════════════════════════════════════════════╗
║ NO-SHOW COST CALCULATOR ║
║ For Medical Practices ║
╚══════════════════════════════════════════════════════════════╝
Practice Profile
─────────────────────────────────────────────
Daily appointments: 100
No-show rate: 18.0%
Average fee per visit: EUR 85.00
Working days per year: 250
Daily Impact
─────────────────────────────────────────────
Daily no-shows: 18
Direct lost revenue: EUR 1,530.00
Indirect costs (30%): EUR 459.00
Opportunity cost (60%): EUR 918.00
Total daily loss: EUR 2,907.00
Annual Impact
─────────────────────────────────────────────
Annual no-shows: 4,500
Total annual loss: EUR 726,750.00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ROI of WhatsApp Reminders (40% reduction)
─────────────────────────────────────────────
No-shows after reminders: 10.8 / day
Annual loss after: EUR 436,050.00
Annual savings: EUR 290,700.00
Reminder system cost: EUR 2,400.00 / year
Net ROI: EUR 288,300.00 / year
ROI multiplier: 121x
# Basic usage
python noshow_calculator.py --appointments 100 --rate 18 --avg-fee 85
# Custom working days (default: 250)
python noshow_calculator.py --appointments 80 --rate 15 --avg-fee 120 --working-days 230
# Short flags
python noshow_calculator.py -a 100 -r 18 -f 85 -d 250| Flag | Description | Default |
|---|---|---|
-a, --appointments |
Daily appointments | required |
-r, --rate |
No-show rate (%) | required |
-f, --avg-fee |
Average fee per visit (EUR) | required |
-d, --working-days |
Working days per year | 250 |
You can also use it as a library:
from noshow_calculator import NoShowCalculator
calc = NoShowCalculator(
daily_appointments=100,
noshow_rate=18.0,
avg_fee=85.0,
working_days=250
)
results = calc.calculate()
print(f"Annual no-shows: {results['annual_noshow_count']:,.0f}")
print(f"Total annual loss: EUR {results['total_annual_loss']:,.2f}")
print(f"ROI with WhatsApp reminders: EUR {results['net_roi']:,.2f}/year")| Strategy | No-Show Reduction | Staff Cost | Source |
|---|---|---|---|
| WhatsApp reminders | 35-45% | None (automated) | Clinical studies, ClinicFlow data |
| SMS reminders | 20-30% | None (automated) | Systematic reviews |
| Email reminders | 10-15% | None (automated) | Meta-analysis |
| Phone calls | 25-35% | High (manual) | Healthcare surveys |
Best results come from combining WhatsApp/SMS reminders with a structured follow-up protocol. Automated systems pay for themselves within the first month for most practices.
Maintained by Synaptica Solution, Italian software studio for SME automation.
| If you need… | See… |
|---|---|
| Automated no-show reduction for medical practices | ClinicFlow |
| Guide: no-show significato e come ridurlo | No-Show: Significato |
| WhatsApp reminders for medical appointments | Guida riduzione no-show |
| All open source tools | Open Source Hub |
MIT License. See LICENSE for details.
Made by Synaptica Solution — AI & Process Automation for Italian SMEs