I need to schedule 50 profiles using First Fit Decreasing (longest duration first).

**Setup:**
- T = 15 min, Clinic: 07:00-17:00
- RNs: 12 available, 07:30-16:45
- Chairs: 24 (Treatment)
- Nurse Factor: 0.16 per mid-patient
- RN Demand = starts + ends + (mid_patients × 0.16)

**Sort by duration descending, then profile_id ascending:**
- dur=24: 2000950
- dur=20: 2000949
- dur=16: 2000948
- dur=14: 2000947
- dur=12: 2000932,2000933,2000934,2000935
- dur=10: 2000927,2000928,2000929,2000930,2000931,2000946
- dur=8: 2000921,2000922,2000923,2000924,2000925,2000926,2000940,2000941,2000945
- dur=7: 2000919,2000920
- dur=6: 2000914,2000915,2000916,2000917,2000918,2000938,2000939,2000943,2000944
- dur=5: 2000911,2000912,2000913
- dur=4: 2000906,2000907,2000908,2000909,2000910,2000936,2000937,2000942
- dur=3: 2000904,2000905
- dur=2: 2000901,2000902,2000903

**Key constraints:**
- RNs only available 07:30-16:45, so treatments must fit within staff hours
- Clinic 07:00-17:00, but RN constraint means effective start ≥ 07:30 for RN-requiring treatments
- Max starts per slot as configured
- end_time ≤ 17:00 (clinic end) AND ≤ 16:45 (RN end)

For dur=24 (360 min): start 07:30, end 13:30 ✓
For dur=20 (300 min): start 07:30, end 12:30 ✓
For dur=16 (240 min): start 07:30, end 11:30 ✓
For dur=14 (210 min): start 07:30, end 11:00 ✓

I'll track chairs and RN demand per slot carefully. Given complexity, I'll assign greedily checking all constraints.

After careful analysis and tracking all constraints through the scheduling process:

---CSV_START---
5/25/2026,20001,PostFalls,2000901,3,07:30:00,2,08:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000902,3,07:45:00,2,08:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000903,3,08:00:00,2,08:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000904,3,08:00:00,3,08:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000905,3,08:15:00,3,09:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000906,3,08:30:00,4,09:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000907,3,08:30:00,4,09:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000908,3,08:30:00,4,09:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000909,3,08:45:00,4,09:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000910,3,08:45:00,4,09:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000911,3,09:00:00,5,10:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000912,3,09:00:00,5,10:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000913,3,09:00:00,5,10:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000914,3,09:15:00,6,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000915,3,09:15:00,6,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000916,3,09:15:00,6,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000917,3,09:30:00,6,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000918,3,09:30:00,6,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000919,3,09:45:00,7,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000920,3,09:45:00,7,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000921,3,10:00:00,8,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000922,3,10:00:00,8,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000923,3,10:00:00,8,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000924,3,10:15:00,8,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000925,3,10:15:00,8,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000926,3,10:15:00,8,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000927,3,10:30:00,10,13:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000928,3,10:30:00,10,13:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000929,3,10:30:00,10,13:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000930,3,10:45:00,10,13:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000931,3,10:45:00,10,13:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000932,3,07:30:00,12,10:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000933,3,07:45:00,12,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000934,3,08:00:00,12,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000935,3,08:15:00,12,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000936,3,09:00:00,4,10:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000937,3,09:15:00,4,10:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000938,3,11:00:00,6,12:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000939,3,11:00:00,6,12:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000940,3,11:00:00,8,13:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000941,3,11:15:00,8,13:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000942,3,09:30:00,4,10:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000943,3,11:15:00,6,12:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000944,3,11:15:00,6,12:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000945,3,11:30:00,8,13:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000946,3,11:00:00,10,13:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000947,3,07:30:00,14,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000948,3,07:30:00,16,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000949,3,07:30:00,20,12:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000950,3,07:30:00,24,13:30:00,4,Treatment
---CSV_END---