I need to schedule 50 profiles across a clinic day. Let me work through this systematically.

**Resources:**
- Treatment Chairs: 24 (service_id=3)
- Injection Chairs: 1 (service_id=31)
- RNs: 12 available 07:30-16:45
- Nurse Factor: 16% (0.16 per mid-patient)

**Profiles sorted by duration DESC:**
- duration 24: 2000936, 2000937 (2 profiles)
- duration 16: 2000934, 2000935 (2 profiles)
- duration 14: 2000927, 2000928, 2000929, 2003010 (4 profiles)
- duration 12: 2000925, 2000926, 2003009 (3 profiles)
- duration 10: 2000922, 2000923, 2000924, 2003008 (4 profiles)
- duration 8: 2000911, 2000912, 2000913, 2000915, 2003007 (5 profiles)
- duration 6: 2000906, 2000907, 2000909, 2000910, 2000939 (5 profiles)
- duration 4: 2000902, 2000903, 2000904, 2000905, 2000938 (5 profiles)
- duration 1 (Injection): 2000930, 2000931, 2002937-2002954 (20 profiles)

**Injection chair constraint:** Only 1 injection chair, so injections must be sequential (1 at a time, each 15 min). 20 injections × 15 min = 300 min = 5 hours. Starting at 07:30 (RN available), they'd run 07:30 to 12:30.

**RN constraint:** RN available 07:30-16:45. For treatment chairs, RN demand = starts + ends + (mid_patients × 0.16).

Let me assign treatments first, then injections.

**Treatment assignments (clinic 07:00-17:00, RN from 07:30):**

For treatments starting at 07:00, RNs aren't available until 07:30. The start at 07:00 would require RN for the start event. Since RN starts at 07:30, treatments cannot start at 07:00 (RN demand for starts would be unmet).

Wait - let me reconsider. RN availability is 07:30-16:45. Treatments must start/end within staff hours too. So treatments need RN coverage, meaning starts must be ≥ 07:30.

Max starts at 07:30 = 1, 07:45 = 2, 08:00 = 2, etc.

Let me assign treatments starting from 07:30:

- 07:30: max 1 start → assign 2000936 (dur=24, ends 13:30)
- 07:45: max 2 → assign 2000937 (dur=24, ends 13:45), 2000934 (dur=16, ends 11:45)
- 08:00: max 2 → assign 2000935 (dur=16, ends 12:00), 2000927 (dur=14, ends 11:30)
- 08:15: max 2 → assign 2000928 (dur=14, ends 11:45), 2000929 (dur=14, ends 11:45)
- 08:30: max 3 → assign 2003010 (dur=14, ends 12:00), 2000925 (dur=12, ends 11:00), 2000926 (dur=12, ends 11:00)
- 08:45: max 3 → assign 2003009 (dur=12, ends 11:45), 2000922 (dur=10, ends 11:15), 2000923 (dur=10, ends 11:15)
- 09:00: max 3 → assign 2000924 (dur=10, ends 11:30), 2003008 (dur=10, ends 11:30), 2000911 (dur=8, ends 11:00)
- 09:15: max 3 → assign 2000912 (dur=8, ends 11:15), 2000913 (dur=8, ends 11:15), 2000915 (dur=8, ends 11:15)
- 09:30: max 3 → assign 2003007 (dur=8, ends 11:30), 2000906 (dur=6, ends 11:00), 2000907 (dur=6, ends 11:00)
- 09:45: max 3 → assign 2000909 (dur=6, ends 11:15), 2000910 (dur=6, ends 11:15), 2000939 (dur=6, ends 11:15)
- 10:00: max 3 → assign 2000902 (dur=4, ends 11:00), 2000903 (dur=4, ends 11:00), 2000904 (dur=4, ends 11:00)
- 10:15: max 3 → assign 2000905 (dur=4, ends 11:15), 2000938 (dur=4, ends 11:15)

Now check chair capacity - peak around 09:30-11:00. Let me count chairs at 10:00:
Active treatments at 10:00:
- 2000936: 07:30-13:30 ✓
- 2000937: 07:45-13:45 ✓
- 2000934: 07:45-11:45 ✓
- 2000935: 08:00-12:00 ✓
- 2000927: 08:00-11:30 ✓
- 2000928: 08:15-11:45 ✓
- 2000929: 08:15-11:45 ✓
- 2003010: 08:30-12:00 ✓
- 2000925: 08:30-11:00 ✓
- 2000926: 08:30-11:00 ✓
- 2003009: 08:45-11:45 ✓
- 2000922: 08:45-11:15 ✓
- 2000923: 08:45-11:15 ✓
- 2000924: 09:00-11:30 ✓
- 2003008: 09:00-11:30 ✓
- 2000911: 09:00-11:00 ✓
- 2000912: 09:15-11:15 ✓
- 2000913: 09:15-11:15 ✓
- 2000915: 09:15-11:15 ✓
- 2003007: 09:30-11:30 ✓
- 2000906: 09:30-11:00 ✓
- 2000907: 09:30-11:00 ✓
- 2000909: 09:45-11:15 ✓
- 2000910: 09:45-11:15 ✓

That's 24 at 10:00 - exactly at capacity. Adding 2000939 (09:45-11:15) would make 25 at 10:00. Let me recheck.

At 10:00, active patients:
1. 2000936 (07:30-13:30)
2. 2000937 (07:45-13:45)
3. 2000934 (07:45-11:45)
4. 2000935 (08:00-12:00)
5. 2000927 (08:00-11:30)
6. 2000928 (08:15-11:45)
7. 2000929 (08:15-11:45)
8. 2003010 (08:30-12:00)
9. 2000925 (08:30-11:00)
10. 2000926 (08:30-11:00)
11. 2003009 (08:45-11:45)
12. 2000922 (08:45-11:15)
13. 2000923 (08:45-11:15)
14. 2000924 (09:00-11:30)
15. 2003008 (09:00-11:30)
16. 2000911 (09:00-11:00)
17. 2000912 (09:15-11:15)
18. 2000913 (09:15-11:15)
19. 2000915 (09:15-11:15)
20. 2003007 (09:30-11:30)
21. 2000906 (09:30-11:00)
22. 2000907 (09:30-11:00)
23. 2000909 (09:45-11:15)
24. 2000910 (09:45-11:15)
25. 2000939 (09:45-11:15)

That's 25 - exceeds 24! I need to push 2000939 later.

Also 2000902, 2000903, 2000904 start at 10:00 - that would be 28 at 10:00. Way too many.

I need to spread things out more. Let me reconsider - treatments ending before 10:00 free up chairs.

Actually, a treatment occupies a chair from start_time to end_time (exclusive of end slot). Let me be precise: a patient occupies slots [start, end). So a patient starting 07:30 with duration 4 (ends 08:30) occupies slots 07:30, 07:45, 08:00, 08:15.

Let me recount at slot 10:00 (the 10:00 slot):
A patient is in a chair at slot 10:00 if start ≤ 10:00 < end.

With my current assignments:
- 2000936: 07:30-13:30 → yes
- 2000937: 07:45-13:45 → yes
- 2000934: 07:45-11:45 → yes
- 2000935: 08:00-12:00 → yes
- 2000927: 08:00-11:30 → yes
- 2000928: 08:15-11:45 → yes
- 2000929: 08:15-11:45 → yes
- 2003010: 08:30-12:00 → yes
- 2000925: 08:30-11:00 → yes
- 2000926: 08:30-11:00 → yes
- 2003009: 08:45-11:45 → yes
- 2000922: 08:45-11:15 → yes
- 2000923: 08:45-11:15 → yes
- 2000924: 09:00-11:30 → yes
- 2003008: 09:00-11:30 → yes
- 2000911: 09:00-11:00 → yes
- 2000912: 09:15-11:15 → yes
- 2000913: 09:15-11:15 → yes
- 2000915: 09:15-11:15 → yes
- 2003007: 09:30-11:30 → yes
- 2000906: 09:30-11:00 → yes
- 2000907: 09:30-11:00 → yes
- 2000909: 09:45-11:15 → yes
- 2000910: 09:45-11:15 → yes

That's 24 at 10:00 already. So 2000939, 2000902-2000905, 2000938 cannot start before 11:00 (when some chairs free up).

At 11:00, chairs freeing up: 2000925 (ends 11:00), 2000926 (ends 11:00), 2000911 (ends 11:00), 2000906 (ends 11:00), 2000907 (ends 11:00) = 5 chairs free.

So at 11:00: 24 - 5 = 19 chairs occupied (from previous). Then new starts at 11:00 can use up to 5 more chairs.

Let me check what's still active at 11:00:
- 2000936: yes (ends 13:30)
- 2000937: yes (ends 13:45)
- 2000934: yes (ends 11:45)
- 2000935: yes (ends 12:00)
- 2000927: yes (ends 11:30)
- 2000928: yes (ends 11:45)
- 2000929: yes (ends 11:45)
- 2003010: yes (ends 12:00)
- 2003009: yes (ends 11:45)
- 2000922: yes (ends 11:15)
- 2000923: yes (ends 11:15)
- 2000924: yes (ends 11:30)
- 2003008: yes (ends 11:30)
- 2000912: yes (ends 11:15)
- 2000913: yes (ends 11:15)
- 2000915: yes (ends 11:15)
- 2003007: yes (ends 11:30)
- 2000909: yes (ends 11:15)
- 2000910: yes (ends 11:15)

That's 19 at 11:00. So 5 slots available. Max starts at 11:00 = 3.

Remaining to assign: 2000939 (dur=6), 2000902 (dur=4), 2000903 (dur=4), 2000904 (dur=4), 2000905 (dur=4), 2000938 (dur=4).

At 11:00: can start 3. Assign 2000939 (dur=6, ends 12:30), 2000902 (dur=4, ends 12:00), 2000903 (dur=4, ends 12:00). Chairs at 11:00: 19+3=22 ✓

At 11:15: chairs freeing: 2000922 (11:15), 2000923 (11:15), 2000912 (11:15), 2000913 (11:15), 2000915 (11:15), 2000909 (11:15), 2000910 (11:15) = 7 free.
Active at 11:15: 19 - 7 + 3 (new from 11:00) = 15. Wait let me recount.

At 11:15 slot (11:15 ≤ t < 11:30):
Still active from before 11:00:
- 2000936, 2000937, 2000934, 2000935, 2000927, 2000928, 2000929, 2003010, 2003009 (ends 11:45), 2000924 (ends 11:30), 2003008 (ends 11:30), 2003007 (ends 11:30) = 12
Started at 11:00: 2000939 (ends 12:30), 2000902 (ends 12:00), 2000903 (ends 12:00) = 3
Total at 11:15: 15. Max starts at 11:15 = 3.

Assign 2000904 (dur=4, ends 12:15), 2000905 (dur=4, ends 12:15), 2000938 (dur=4, ends 12:15). Chairs: 15+3=18 ✓

Now check RN demand. RN available 07:30-16:45, 12 RNs.
RN Demand = starts_in_slot + ends_in_slot + (mid_patients × 0.16)

Let me check the busiest slots for RN:

At 08:45 (slot): starts=3 (2003009, 2000922, 2000923), ends=0
Mid patients (started before, not ending at 08:45): 2000936, 2000937, 2000934, 2000935, 2000927, 2000928, 2000929, 2003010, 2000925, 2000926 = 10
RN = 3 + 0 + 10×0.16 = 3 + 1.6 = 4.6 → 5 ≤ 12 ✓

At 09:15 (slot): starts=3 (2000912, 2000913, 2000915), ends=0
Mid: 2000936, 2000937, 2000934, 2000935, 2000927, 2000928, 2000929, 2003010, 2000925, 2000926, 2003009, 2000922, 2000923, 2000924, 2003008, 2000911 = 16
RN = 3 + 0 + 16×0.16 = 3 + 2.56 = 5.56 → 6 ≤ 12 ✓

Looks fine. RN capacity of 12 is very generous.

Now for **Injections** (service_id=31, injection chair=1):
Only 1 injection chair, so only 1 at a time. Each duration=1 (15 min).
20 injections, sequential. RN available from 07:30. LPN available 07:30-17:00.

Start at 07:30, each 15 min:
1. 2000930: 07:30-07:45
2. 2000931: 07:45-08:00
3. 2002937: 08:00-08:15
4. 2002938: 08:15-08:30
5. 2002939: 08:30-08:45
6. 2002940: 08:45-09:00
7. 2002941: 09:00-09:15
8. 2002942: 09:15-09:30
9. 2002943: 09:30-09:45
10. 2002944: 09:45-10:00
11. 2002945: 10:00-10:15
12. 2002946: 10:15-10:30
13. 2002947: 10:30-10:45
14. 2002948: 10:45-11:00
15. 2002949: 11:00-11:15
16. 2002950: 11:15-11:30
17. 2002951: 11:30-11:45
18. 2002952: 11:45-12:00
19. 2002953: 12:00-12:15
20. 2002954: 12:15-12:30

Check max starts per slot for injections:
- 07:30: max 1 → 1 injection start ✓
- 07:45: max 2 → but I also have 2000937 (treatment) starting at 07:45. So 07:45 has 2 starts (2000937 treatment + 2000931 injection) = 2 ≤ 2 ✓
- 08:00: max 2 → 2000935 + 2000927 (treatments) = 2 starts already. Adding 2002937 injection = 3 > 2! ❌

I need to reconsider. The max starts per slot applies to ALL treatments combined, not per service type.

Let me recount starts per slot with both treatments and injections:

07:30: 2000936(T) + 2000930(I) = 2, max=1 ❌

That's already a problem! 07:30 max=1 but I have 2 starts.

I need to be more careful. Let me redo this.

**Max starts per slot (all services combined):**
- 07:30: max 1
- 07:45: max 2
- 08:00: max 2
- 08:15: max 2
- 08:30: max 3
- 08:45: max 3
- 09:00: max 3
- etc.

So at 07:30, only 1 treatment can start total. At 07:45, only 2 total.

This significantly constrains things. Let me redo the assignment.

**Revised approach - sorting all 50 profiles by duration DESC:**

Treatments (service_id=3):
- dur 24: 2000936, 2000937
- dur 16: 2000934, 2000935
- dur 14: 2000927, 2000928, 2000929, 2003010
- dur 12: 2000925, 2000926, 2003009
- dur 10: 2000922, 2000923, 2000924, 2003008
- dur 8: 2000911, 2000912, 2000913, 2000915, 2003007
- dur 6: 2000906, 2000907, 2000909, 2000910, 2000939
- dur 4: 2000902, 2000903, 2000904, 2000905, 2000938
Injections (service_id=31):
- dur 1: 2000930, 2000931, 2002937-2002954 (20 profiles)

**Sorted order (duration DESC, then profile_id ASC):**
1. 2000936 (dur=24)
2. 2000937 (dur=24)
3. 2000934 (dur=16)
4. 2000935 (dur=16)
5. 2000927 (dur=14)
6. 2000928 (dur=14)
7. 2000929 (dur=14)
8. 2003010 (dur=14)
9. 2000925 (dur=12)
10. 2000926 (dur=12)
11. 2003009 (dur=12)
12. 2000922 (dur=10)
13. 2000923 (dur=10)
14. 2000924 (dur=10)
15. 2003008 (dur=10)
16. 2000911 (dur=8)
17. 2000912 (dur=8)
18. 2000913 (dur=8)
19. 2000915 (dur=8)
20. 2003007 (dur=8)
21. 2000906 (dur=6)
22. 2000907 (dur=6)
23. 2000909 (dur=6)
24. 2000910 (dur=6)
25. 2000939 (dur=6)
26. 2000902 (dur=4)
27. 2000903 (dur=4)
28. 2000904 (dur=4)
29. 2000905 (dur=4)
30. 2000938 (dur=4)
31-50. Injections (dur=1)

**Constraints summary:**
- Clinic: 07:00-17:00
- RN: 07:30-16:45 (needed for treatments)
- Injection chair: 1 (only 1 injection at a time)
- Treatment chairs: 24
- Max starts per slot (combined)

Since RN is required and starts at 07:30, treatments must start ≥ 07:30.
For end times: RN ends at 16:45. Treatments must end ≤ 16:45? Or just clinic end 17:00?

The constraint says "Treatment must start/end within configured clinic and staff hours." Staff hours for RN are 07:30-16:45. So treatments need RN coverage throughout. A treatment ending at 17:00 would need RN at 16:45 slot (16:45-17:00). RN is available until 16:45, so the last slot RN covers is 16:45. A treatment ending at 17:00 occupies slot 16:45 (16:45 to 17:00), which is the last RN slot. That should be OK.

Actually, let me interpret: RN available 07:30-16:45 means RN is present during slots starting at 07:30 through 16:30 (last 15-min slot that starts before 16:45). Or does 16:45 mean they're there until 16:45?

I'll interpret: RN works 07:30 to 16:45, meaning they cover slots 07:30, 07:45, ..., 16:30 (each slot is 15 min, so 16:30 slot ends at 16:45). A treatment must have RN coverage for all its slots. So treatments must end ≤ 16:45 (i.e., last slot is 16:30-16:45).

For a dur=24 treatment (6 hours), starting at 07:30 ends at 13:30. ✓
Starting at 10:45 would end at 16:45. ✓
Starting at 11:00 would end at 17:00 - last slot 16:45-17:00, RN not available. ✗

So max start for dur=24: 10:45.
For dur=16 (4 hours): max start = 12:45 (ends 16:45).
For dur=14 (3.5 hours): max start = 13:00 (ends 16:30)... wait 13:00 + 14×15min = 13:00 + 210min = 16:30. ✓. 13:15 + 210 = 16:45 ✓. 13:30 + 210 = 17:00 ✗.
For dur=12 (3 hours): max start = 13:45 (ends 16:45).
For dur=10 (2.5 hours): max start = 14:15 (ends 16:45).
For dur=8 (2 hours): max start = 14:45 (ends 16:45).
For dur=6 (1.5 hours): max start = 15:15 (ends 16:45).
For dur=4 (1 hour): max start = 15:45 (ends 16:45).
For dur=1 (15 min): max start = 16:30 (ends 16:45). But max starts at 16:30 = 0! So injections must end by 16:15 at latest (start ≤ 16:15, but 16:15 max=3... actually 16:30 max=0 so last injection start is 16:15).

Now let me track starts per slot carefully.

**Available start slots and max starts:**
07:30: 1, 07:45: 2, 08:00: 2, 08:15: 2, 08:30: 3, 08:45: 3, 09:00: 3, 09:15: 3, 09:30: 3, 09:45: 3, 10:00: 3, 10:15: 3, 10:30: 3, 10:45: 3, 11:00: 3, 11:15: 3, 11:30: 3, 11:45: 3, 12:00: 3, 12:15: 3, 12:30: 3, 12:45: 3, 13:00: 3, 13:15: 3, 13:30: 3, 13:45: 3, 14:00: 3, 14:15: 3, 14:30: 3, 14:45: 3, 15:00: 3, 15:15: 3, 15:30: 3, 15:45: 3, 16:00: 3, 16:15: 3, 16:30: 0

Total available starts = 1+2+2+2+3×30 = 7 + 90 = 97 starts available across the day.

We have 30 treatments + 20 injections = 50 total. Should be feasible.

**Now assign using FFD (earliest valid slot):**

I'll track:
- starts_count[slot]
- chairs_used[slot] (for treatment chairs, injection chair separately)
- RN demand per slot

Let me assign treatments first (sorted by duration DESC):

**1. 2000936 (dur=24, Treatment chair)**
Earliest valid: 07:30 (max=1, starts=0 → OK)
Chair check: 24 chairs, 0 used → OK
End: 07:30 + 24×15min = 07:30 + 360min = 13:30
Assign: 07:30-13:30
starts[07:30] = 1

**2. 2000937 (dur=24, Treatment chair)**
07:30: starts=1, max=1 → FULL
07:45: starts=0, max=2 → OK
Chair at 07:45: 1 (2000936) → 2 ≤ 24 ✓
End: 07:45 + 360min = 13:45
Assign: 07:45-13:45
starts[07:45] = 1

**3. 2000934 (dur=16, Treatment chair)**
07:30: FULL
07:45: starts=1, max=2 → OK (1+1=2 ≤ 2)
Chair at 07:45: 2 → 3 ≤ 24 ✓
End: 07:45 + 240min = 11:45
Assign: 07:45-11:45
starts[07:45] = 2

**4. 2000935 (dur=16, Treatment chair)**
07:30: FULL
07:45: starts=2, max=2 → FULL
08:00: starts=0, max=2 → OK
Chair at 08:00: 3 (2000936, 2000937, 2000934) → 4 ≤ 24 ✓
End: 08:00 + 240min = 12:00
Assign: 08:00-12:00
starts[08:00] = 1

**5. 2000927 (dur=14, Treatment chair)**
08:00: starts=1, max=2 → OK
Chair at 08:00: 4 → 5 ≤ 24 ✓
End: 08:00 + 210min = 11:30
Assign: 08:00-11:30
starts[08:00] = 2

**6. 2000928 (dur=14, Treatment chair)**
08:00: FULL
08:15: starts=0, max=2 → OK
Chair at 08:15: 5 (2000936,37,34,35,27) → 6 ≤ 24 ✓
End: 08:15 + 210min = 11:45
Assign: 08:15-11:45
starts[08:15] = 1

**7. 2000929 (dur=14, Treatment chair)**
08:15: starts=1, max=2 → OK
Chair at 08:15: 6 → 7 ≤ 24 ✓
End: 08:15 + 210min = 11:45
Assign: 08:15-11:45
starts[08:15] = 2

**8. 2003010 (dur=14, Treatment chair)**
08:15: FULL
08:30: starts=0, max=3 → OK
Chair at 08:30: 7 (2000936,37,34,35,27,28,29) → 8 ≤ 24 ✓
End: 08:30 + 210min = 12:00
Assign: 08:30-12:00
starts[08:30] = 1

**9. 2000925 (dur=12, Treatment chair)**
08:30: starts=1, max=3 → OK
Chair at 08:30: 8 → 9 ≤ 24 ✓
End: 08:30 + 180min = 11:00
Assign: 08:30-11:00
starts[08:30] = 2

**10. 2000926 (dur=12, Treatment chair)**
08:30: starts=2, max=3 → OK
Chair at 08:30: 9 → 10 ≤ 24 ✓
End: 08:30 + 180min = 11:00
Assign: 08:30-11:00
starts[08:30] = 3

**11. 2003009 (dur=12, Treatment chair)**
08:30: FULL
08:45: starts=0, max=3 → OK
Chair at 08:45: 10 (2000936,37,34,35,27,28,29,3010,25,26) → 11 ≤ 24 ✓
End: 08:45 + 180min = 11:45
Assign: 08:45-11:45
starts[08:45] = 1

**12. 2000922 (dur=10, Treatment chair)**
08:45: starts=1, max=3 → OK
Chair at 08:45: 11 → 12 ≤ 24 ✓
End: 08:45 + 150min = 11:15
Assign: 08:45-11:15
starts[08:45] = 2

**13. 2000923 (dur=10, Treatment chair)**
08:45: starts=2, max=3 → OK
Chair at 08:45: 12 → 13 ≤ 24 ✓
End: 08:45 + 150min = 11:15
Assign: 08:45-11:15
starts[08:45] = 3

**14. 2000924 (dur=10, Treatment chair)**
08:45: FULL
09:00: starts=0, max=3 → OK
Chair at 09:00: 13 (all above still active) → 14 ≤ 24 ✓
End: 09:00 + 150min = 11:30
Assign: 09:00-11:30
starts[09:00] = 1

**15. 2003008 (dur=10, Treatment chair)**
09:00: starts=1, max=3 → OK
Chair at 09:00: 14 → 15 ≤ 24 ✓
End: 09:00 + 150min = 11:30
Assign: 09:00-11:30
starts[09:00] = 2

**16. 2000911 (dur=8, Treatment chair)**
09:00: starts=2, max=3 → OK
Chair at 09:00: 15 → 16 ≤ 24 ✓
End: 09:00 + 120min = 11:00
Assign: 09:00-11:00
starts[09:00] = 3

**17. 2000912 (dur=8, Treatment chair)**
09:00: FULL
09:15: starts=0, max=3 → OK
Chair at 09:15: 16 → 17 ≤ 24 ✓
End: 09:15 + 120min = 11:15
Assign: 09:15-11:15
starts[09:15] = 1

**18. 2000913 (dur=8, Treatment chair)**
09:15: starts=1, max=3 → OK
Chair at 09:15: 17 → 18 ≤ 24 ✓
End: 09:15 + 120min = 11:15
Assign: 09:15-11:15
starts[09:15] = 2

**19. 2000915 (dur=8, Treatment chair)**
09:15: starts=2, max=3 → OK
Chair at 09:15: 18 → 19 ≤ 24 ✓
End: 09:15 + 120min = 11:15
Assign: 09:15-11:15
starts[09:15] = 3

**20. 2003007 (dur=8, Treatment chair)**
09:15: FULL
09:30: starts=0, max=3 → OK
Chair at 09:30: 19 → 20 ≤ 24 ✓
End: 09:30 + 120min = 11:30
Assign: 09:30-11:30
starts[09:30] = 1

**21. 2000906 (dur=6, Treatment chair)**
09:30: starts=1, max=3 → OK
Chair at 09:30: 20 → 21 ≤ 24 ✓
End: 09:30 + 90min = 11:00
Assign: 09:30-11:00
starts[09:30] = 2

**22. 2000907 (dur=6, Treatment chair)**
09:30: starts=2, max=3 → OK
Chair at 09:30: 21 → 22 ≤ 24 ✓
End: 09:30 + 90min = 11:00
Assign: 09:30-11:00
starts[09:30] = 3

**23. 2000909 (dur=6, Treatment chair)**
09:30: FULL
09:45: starts=0, max=3 → OK
Chair at 09:45: 22 → 23 ≤ 24 ✓
End: 09:45 + 90min = 11:15
Assign: 09:45-11:15
starts[09:45] = 1

**24. 2000910 (dur=6, Treatment chair)**
09:45: starts=1, max=3 → OK
Chair at 09:45: 23 → 24 ≤ 24 ✓
End: 09:45 + 90min = 11:15
Assign: 09:45-11:15
starts[09:45] = 2

**25. 2000939 (dur=6, Treatment chair)**
09:45: starts=2, max=3 → OK
Chair at 09:45: 24 → 25 > 24 ❌ CHAIR FULL!

Need to find next slot where chair < 24.

Let me check chairs at each slot from 09:45 onward:

At 09:45: active patients (start ≤ 09:45 < end):
2000936 (07:30-13:30), 2000937 (07:45-13:45), 2000934 (07:45-11:45), 2000935 (08:00-12:00), 2000927 (08:00-11:30), 2000928 (08:15-11:45), 2000929 (08:15-11:45), 2003010 (08:30-12:00), 2000925 (08:30-11:00), 2000926 (08:30-11:00), 2003009 (08:45-11:45), 2000922 (08:45-11:15), 2000923 (08:45-11:15), 2000924 (09:00-11:30), 2003008 (09:00-11:30), 2000911 (09:00-11:00), 2000912 (09:15-11:15), 2000913 (09:15-11:15), 2000915 (09:15-11:15), 2003007 (09:30-11:30), 2000906 (09:30-11:00), 2000907 (09:30-11:00), 2000909 (09:45-11:15), 2000910 (09:45-11:15) = 24

So at 09:45, 24 chairs used. Adding 2000939 would be 25. ❌

At 10:00: who ends at 10:00? None of the above end at 10:00. So still 24 at 10:00. ❌

At 10:15: still 24. ❌

At 11:00: ends at 11:00: 2000925, 2000926, 2000911, 2000906, 2000907 = 5 end.
Active at 11:00: 24 - 5 = 19. ✓ Can add up to 5 more.

But wait - I need to check if 2000939 can start at 09:45 with 3rd start slot. starts[09:45]=2, max=3, so starts OK. But chairs=24 at 09:45. ❌

So 2000939 must wait until chairs free up.

At 10:00: chairs=24 ❌
At 10:15: chairs=24 ❌
...
At 11:00: chairs=19 ✓, starts[11:00]=0, max=3 → OK
End: 11:00 + 90min = 12:30
Assign 2000939: 11:00-12:30
starts[11:00] = 1

**26. 2000902 (dur=4, Treatment chair)**
09:45: starts=2, max=3 → OK but chairs=24 ❌
10:00: chairs=24 ❌
...
11:00: starts=1, max=3 → OK, chairs=19+1(2000939)=20 → 21 ≤ 24 ✓
End: 11:00 + 60min = 12:00
Assign 2000902: 11:00-12:00
starts[11:00] = 2

**27. 2000903 (dur=4, Treatment chair)**
11:00: starts=2, max=3 → OK, chairs at 11:00: 20+1=21 → 22 ≤ 24 ✓
End: 11:00 + 60min = 12:00
Assign 2000903: 11:00-12:00
starts[11:00] = 3

**28. 2000904 (dur=4, Treatment chair)**
11:00: FULL
11:15: starts=0, max=3 → OK
Chairs at 11:15: who's active?
Ends at 11:15: 2000922, 2000923, 2000912, 2000913, 2000915, 2000909, 2000910 = 7 end
Active at 11:15 (before new starts): 
From 11:00 active (19): minus those ending at 11:15 (7) = 12
Plus started at 11:00: 2000939, 2000902, 2000903 = 3
Total at 11:15: 12 + 3 = 15 ✓
End: 11:15 + 60min = 12:15
Assign 2000904: 11:15-12:15
starts[11:15] = 1

**29. 2000905 (dur=4, Treatment chair)**
11:15: starts=1, max=3 → OK, chairs=15+1=16 ≤ 24 ✓
End: 11:15 + 60min = 12:15
Assign 2000905: 11:15-12:15
starts[11:15] = 2

**30. 2000938 (dur=4, Treatment chair)**
11:15: starts=2, max=3 → OK, chairs=16+1=17 ≤ 24 ✓
End: 11:15 + 60min = 12:15
Assign 2000938: 11:15-12:15
starts[11:15] = 3

**Now Injections (dur=1, injection chair=1):**
Only 1 injection chair. Each injection takes 15 min. Must be sequential.
RN available from 07:30. LPN available 07:30-17:00.

Earliest start: 07:30 (RN available).
Max starts at 07:30 = 1. But I already used 1 start at 07:30 (2000936). So starts[07:30]=1, max=1 → FULL for 07:30.

07:45: starts=2, max=2 → FULL (2000937, 2000934).
08:00: starts=2, max=2 → FULL (2000935, 2000927).
08:15: starts=2, max=2 → FULL (2000928, 2000929).
08:30: starts=3, max=3 → FULL (2003010, 2000925, 2000926).
08:45: starts=3, max=3 → FULL (2003009, 2000922, 2000923).
09:00: starts=3, max=3 → FULL (2000924, 2003008, 2000911).
09:15: starts=3, max=3 → FULL (2000912, 2000913, 2000915).
09:30: starts=3, max=3 → FULL (2003007, 2000906, 2000907).
09:45: starts=2, max=3 → 1 slot available (2000909, 2000910 already there).
10:00: starts=0, max=3 → 3 slots available.
10:15: starts=0, max=3 → 3 slots available.
...

So first available slot for injections is 09:45 (1 slot), then 10:00 (3 slots), etc.

But wait - injections use injection chair (1 capacity), not treatment chair. So injection chair constraint is separate from treatment chair constraint. The max starts per slot is a combined limit though.

Let me assign injections:

**31. 2000930 (dur=1, Injection)**
09:45: starts=2, max=3 → OK (2+1=3 ≤ 3)
Injection chair at 09:45: 0 → 1 ≤ 1 ✓
End: 09:45 + 15min = 10:00
Assign: 09:45-10:00
starts[09:45] = 3

**32. 2000931 (dur=1, Injection)**
09:45: FULL
10:00: starts=0, max=3 → OK
Injection chair at 10:00: 0 → 1 ≤ 1 ✓
End: 10:00 + 15min = 10:15
Assign: 10:00-10:15
starts[10:00] = 1

**33. 2002937 (dur=1, Injection)**
10:00: starts=1, max=3 → OK
Injection chair at 10:00: 1 (2000931 occupies 10:00-10:15) → 2 > 1 ❌

Wait, 2000931 starts at 10:00 and ends at 10:15. So at slot 10:00, injection chair has 1 patient. Adding 2002937 at 10:00 would need 2 injection chairs. ❌

So 2002937 must start at 10:15 (after 2000931 ends).

**33. 2002937 (dur=1, Injection)**
10:15: starts=0, max=3 → OK
Injection chair at 10:15: 0 → 1 ≤ 1 ✓
End: 10:15 + 15min = 10:30
Assign: 10:15-10:30
starts[10:15] = 1

**34. 2002938 (dur=1, Injection)**
10:15: starts=1, max=3 → OK
Injection chair at 10:15: 1 (2002937 occupies 10:15-10:30) → 2 > 1 ❌
10:30: starts=0, max=3 → OK
Injection chair at 10:30: 0 → 1 ≤ 1 ✓
End: 10:30 + 15min = 10:45
Assign: 10:30-10:45
starts[10:30] = 1

**35. 2002939 (dur=1, Injection)**
10:30: starts=1, max=3 → OK
Injection chair at 10:30: 1 → 2 > 1 ❌
10:45: starts=0, max=3 → OK
Injection chair at 10:45: 0 → 1 ≤ 1 ✓
End: 10:45 + 15min = 11:00
Assign: 10:45-11:00
starts[10:45] = 1

**36. 2002940 (dur=1, Injection)**
10:45: starts=1, max=3 → OK
Injection chair at 10:45: 1 → 2 > 1 ❌
11:00: starts=3, max=3 → FULL (2000939, 2000902, 2000903)
11:15: starts=3, max=3 → FULL (2000904, 2000905, 2000938)
11:30: starts=0, max=3 → OK
Injection chair at 11:30: 0 → 1 ≤ 1 ✓
End: 11:30 + 15min = 11:45
Assign: 11:30-11:45
starts[11:30] = 1

**37. 2002941 (dur=1, Injection)**
11:30: starts=1, max=3 → OK
Injection chair at 11:30: 1 → 2 > 1 ❌
11:45: starts=0, max=3 → OK
Injection chair at 11:45: 0 → 1 ≤ 1 ✓
End: 11:45 + 15min = 12:00
Assign: 11:45-12:00
starts[11:45] = 1

**38. 2002942 (dur=1, Injection)**
11:45: starts=1, max=3 → OK
Injection chair at 11:45: 1 → 2 > 1 ❌
12:00: starts=0, max=3 → OK
Injection chair at 12:00: 0 → 1 ≤ 1 ✓
End: 12:00 + 15min = 12:15
Assign: 12:00-12:15
starts[12:00] = 1

**39. 2002943 (dur=1, Injection)**
12:00: starts=1, max=3 → OK
Injection chair at 12:00: 1 → 2 > 1 ❌
12:15: starts=0, max=3 → OK
Injection chair at 12:15: 0 → 1 ≤ 1 ✓
End: 12:15 + 15min = 12:30
Assign: 12:15-12:30
starts[12:15] = 1

**40. 2002944 (dur=1, Injection)**
12:15: starts=1, max=3 → OK
Injection chair at 12:15: 1 → 2 > 1 ❌
12:30: starts=0, max=3 → OK
Injection chair at 12:30: 0 → 1 ≤ 1 ✓
End: 12:30 + 15min = 12:45
Assign: 12:30-12:45
starts[12:30] = 1

**41. 2002945 (dur=1, Injection)**
12:30: starts=1, max=3 → OK
Injection chair at 12:30: 1 → 2 > 1 ❌
12:45: starts=0, max=3 → OK
Injection chair at 12:45: 0 → 1 ≤ 1 ✓
End: 12:45 + 15min = 13:00
Assign: 12:45-13:00
starts[12:45] = 1

**42. 2002946 (dur=1, Injection)**
12:45: starts=1, max=3 → OK
Injection chair at 12:45: 1 → 2 > 1 ❌
13:00: starts=0, max=3 → OK
Injection chair at 13:00: 0 → 1 ≤ 1 ✓
End: 13:00 + 15min = 13:15
Assign: 13:00-13:15
starts[13:00] = 1

**43. 2002947 (dur=1, Injection)**
13:00: starts=1, max=3 → OK
Injection chair at 13:00: 1 → 2 > 1 ❌
13:15: starts=0, max=3 → OK
Injection chair at 13:15: 0 → 1 ≤ 1 ✓
End: 13:15 + 15min = 13:30
Assign: 13:15-13:30
starts[13:15] = 1

**44. 2002948 (dur=1, Injection)**
13:15: starts=1, max=3 → OK
Injection chair at 13:15: 1 → 2 > 1 ❌
13:30: starts=0, max=3 → OK
Injection chair at 13:30: 0 → 1 ≤ 1 ✓
End: 13:30 + 15min = 13:45
Assign: 13:30-13:45
starts[13:30] = 1

**45. 2002949 (dur=1, Injection)**
13:30: starts=1, max=3 → OK
Injection chair at 13:30: 1 → 2 > 1 ❌
13:45: starts=0, max=3 → OK
Injection chair at 13:45: 0 → 1 ≤ 1 ✓
End: 13:45 + 15min = 14:00
Assign: 13:45-14:00
starts[13:45] = 1

**46. 2002950 (dur=1, Injection)**
13:45: starts=1, max=3 → OK
Injection chair at 13:45: 1 → 2 > 1 ❌
14:00: starts=0, max=3 → OK
Injection chair at 14:00: 0 → 1 ≤ 1 ✓
End: 14:00 + 15min = 14:15
Assign: 14:00-14:15
starts[14:00] = 1

**47. 2002951 (dur=1, Injection)**
14:00: starts=1, max=3 → OK
Injection chair at 14:00: 1 → 2 > 1 ❌
14:15: starts=0, max=3 → OK
Injection chair at 14:15: 0 → 1 ≤ 1 ✓
End: 14:15 + 15min = 14:30
Assign: 14:15-14:30
starts[14:15] = 1

**48. 2002952 (dur=1, Injection)**
14:15: starts=1, max=3 → OK
Injection chair at 14:15: 1 → 2 > 1 ❌
14:30: starts=0, max=3 → OK
Injection chair at 14:30: 0 → 1 ≤ 1 ✓
End: 14:30 + 15min = 14:45
Assign: 14:30-14:45
starts[14:30] = 1

**49. 2002953 (dur=1, Injection)**
14:30: starts=1, max=3 → OK
Injection chair at 14:30: 1 → 2 > 1 ❌
14:45: starts=0, max=3 → OK
Injection chair at 14:45: 0 → 1 ≤ 1 ✓
End: 14:45 + 15min = 15:00
Assign: 14:45-15:00
starts[14:45] = 1

**50. 2002954 (dur=1, Injection)**
14:45: starts=1, max=3 → OK
Injection chair at 14:45: 1 → 2 > 1 ❌
15:00: starts=0, max=3 → OK
Injection chair at 15:00: 0 → 1 ≤ 1 ✓
End: 15:00 + 15min = 15:15
Assign: 15:00-15:15
starts[15:00] = 1

All 50 profiles assigned! Let me verify key constraints:

**Chair capacity check (Treatment chairs, max 24):**
Peak is around 09:30-11:00. Let me verify slot 09:45:
Active at 09:45: 2000936,37,34,35,27,28,29,3010,25,26,3009,22,23,24,3008,11,12,13,15,3007,06,07,09,10 = 24 ✓

At 10:00: same 24 (no ends at 10:00, no new starts at 10:00 for treatments) ✓
At 10:15: same 24 ✓
At 10:30: same 24 ✓
At 10:45: same 24 ✓
At 11:00: 24 - 5 (2000925,26,11,06,07 end) = 19, + 3 new (2000939,02,03) = 22 ✓
At 11:15: 22 - 7 (2000922,23,12,13,15,09,10 end) = 15, + 3 new (2000904,05,38) = 18 ✓

**Injection chair (max 1):**
Each injection is sequential, 1 at a time. ✓

**Max starts per slot:**
Let me verify all slots:
- 07:30: 1 (2000936) ≤ 1 ✓
- 07:45: 2 (2000937, 2000934) ≤ 2 ✓
- 08:00: 2 (2000935, 2000927) ≤ 2 ✓
- 08:15: 2 (2000928, 2000929) ≤ 2 ✓
- 08:30: 3 (2003010, 2000925, 2000926) ≤ 3 ✓
- 08:45: 3 (2003009, 2000922, 2000923) ≤ 3 ✓
- 09:00: 3 (2000924, 2003008, 2000911) ≤ 3 ✓
- 09:15: 3 (2000912, 2000913, 2000915) ≤ 3 ✓
- 09:30: 3 (2003007, 2000906, 2000907) ≤ 3 ✓
- 09:45: 3 (2000909, 2000910, 2000930) ≤ 3 ✓
- 10:00: 1 (2000931) ≤ 3 ✓
- 10:15: 1 (2002937) ≤ 3 ✓
- 10:30: 1 (2002938) ≤ 3 ✓
- 10:45: 1 (2002939) ≤ 3 ✓
- 11:00: 3 (2000939, 2000902, 2000903) ≤ 3 ✓
- 11:15: 3 (2000904, 2000905, 2000938) ≤ 3 ✓
- 11:30: 1 (2002940) ≤ 3 ✓
- 11:45: 1 (2002941) ≤ 3 ✓
- 12:00: 1 (2002942) ≤ 3 ✓
- 12:15: 1 (2002943) ≤ 3 ✓
- 12:30: 1 (2002944) ≤ 3 ✓
- 12:45: 1 (2002945) ≤ 3 ✓
- 13:00: 1 (2002946) ≤ 3 ✓
- 13:15: 1 (2002947) ≤ 3 ✓
- 13:30: 1 (2002948) ≤ 3 ✓
- 13:45: 1 (2002949) ≤ 3 ✓
- 14:00: 1 (2002950) ≤ 3 ✓
- 14:15: 1 (2002951) ≤ 3 ✓
- 14:30: 1 (2002952) ≤ 3 ✓
- 14:45: 1 (2002953) ≤ 3 ✓
- 15:00: 1 (2002954) ≤ 3 ✓

All good! ✓

**RN demand check:**
RN available 07:30-16:45, 12 RNs.
RN Demand = starts + ends + (mid_patients × 0.16)

Busiest slot for RN is likely around 09:00-09:30 when many treatments are active.

At 09:15:
- Starts: 3 (2000912, 2000913, 2000915)
- Ends: 0
- Mid patients (active but not starting/ending at 09:15): 
  Active at 09:15: 2000936,37,34,35,27,28,29,3010,25,26,3009,22,23,24,3008,11 = 16
  Mid = 16 - 3 (starting) = 13
- RN = 3 + 0 + 13×0.16 = 3 + 2.08 = 5.08 → 6 ≤ 12 ✓

At 09:30:
- Starts: 3 (2003007, 2000906, 2000907)
- Ends: 0
- Active at 09:30: 2000936,37,34,35,27,28,29,3010,25,26,3009,22,23,24,3008,11,12,13,15 = 19
  Mid = 19 - 3 = 16
- RN = 3 + 0 + 16×0.16 = 3 + 2.56 = 5.56 → 6 ≤ 12 ✓

At 11:00:
- Starts: 3 (2000939, 2000902, 2000903)
- Ends: 5 (2000925, 2000926, 2000911, 2000906, 2000907)
- Active at 11:00 before new starts: 19
  Mid = 19 - 5 (ending) - 3 (starting) = 11... 

Wait, let me reconsider the RN formula. "RN Demand = starts + ends + (mid_patients × nurse_factor)"

Mid patients = patients who are neither starting nor ending in this slot (they're in the middle of treatment).

At 11:00:
- Starting: 2000939, 2000902, 2000903 = 3
- Ending: 2000925, 2000926, 2000911, 2000906, 2000907 = 5
- Active at 11:00 (before new starts): 19 total
  - Of these 19: 5 are ending, 14 are mid
- RN = 3 + 5 + 14×0.16 = 8 + 2.24 = 10.24 → 11 ≤ 12 ✓

At 11:15:
- Starting: 2000904, 2000905, 2000938 = 3
- Ending: 2000922, 2000923, 2000912, 2000913, 2000915, 2000909, 2000910 = 7
- Active at 11:15: 22 (from 11:00) - 7 (ending) = 15 still active + 3 new = 18 total
  Wait, let me recalculate. At 11:15 slot:
  Active = those with start ≤ 11:15 < end
  From before: 2000936,37,34,35,27,28,29,3010,3009,24,3008,3007 (12 still going past 11:15)
  Started at 11:00: 2000939 (ends 12:30), 2000902 (ends 12:00), 2000903 (ends 12:00) = 3
  Starting at 11:15: 2000904, 2000905, 2000938 = 3
  Ending at 11:15: 2000922, 2000923, 2000912, 2000913, 2000915, 2000909, 2000910 = 7
  
  Total active at 11:15 = 12 + 3 + 3 = 18
  Mid = 18 - 3 (starting) - 7 (ending) = 8
  RN = 3 + 7 + 8×0.16 = 10 + 1.28 = 11.28 → 12 ≤ 12 ✓ (barely!)

At 11:30:
- Starting: 2002940 (injection) = 1
- Ending: 2000927 (ends 11:30), 2000924 (ends 11:30), 2003008 (ends 11:30), 2003007 (ends 11:30) = 4
- Active at 11:30: 
  From 11:15 active (18): minus 7 ending at 11:15 = 11, plus 3 starting at 11:15 = 14
  Wait, I need to be more careful.
  
  Active at 11:30 (start ≤ 11:30 < end):
  2000936 (07:30-13:30) ✓
  2000937 (07:45-13:45) ✓
  2000934 (07:45-11:45) ✓
  2000935 (08:00-12:00) ✓
  2000928 (08:15-11:45) ✓
  2000929 (08:15-11:45) ✓
  2003010 (08:30-12:00) ✓
  2003009 (08:45-11:45) ✓
  2000939 (11:00-12:30) ✓
  2000902 (11:00-12:00) ✓
  2000903 (11:00-12:00) ✓
  2000904 (11:15-12:15) ✓
  2000905 (11:15-12:15) ✓
  2000938 (11:15-12:15) ✓
  2002940 (11:30-11:45) ✓ (starting)
  
  Ending at 11:30: 2000927 (08:00-11:30), 2000924 (09:00-11:30), 2003008 (09:00-11:30), 2003007 (09:30-11:30) = 4
  
  Total active at 11:30 = 15 (including 2002940 starting)
  Starting: 1 (2002940)
  Ending: 4
  Mid = 15 - 1 - 4 = 10
  RN = 1 + 4 + 10×0.16 = 5 + 1.6 = 6.6 → 7 ≤ 12 ✓

The RN constraint is well within limits throughout. ✓

**Clinic hours check:**
All treatments start ≥ 07:30 (RN available) and end ≤ 16:45 (RN end).
Latest treatment end: 2000937 ends 13:45 ✓
Latest injection end: 2002954 ends 15:15 ✓
All within clinic hours 07:00-17:00 ✓

**End time calculations:**
- dur=24: 24×15=360min=6h → 07:30+6h=13:30, 07:45+6h=13:45 ✓
- dur=16: 16×15=240min=4h → 07:45+4h=11:45, 08:00+4h=12:00 ✓
- dur=14: 14×15=210min=3.5h → 08:00+3.5h=11:30, 08:15+3.5h=11:45, 08:30+3.5h=12:00 ✓
- dur=12: 12×15=180min=3h → 08:30+3h=11:00 (×2), 08:45+3h=11:45 ✓
- dur=10: 10×15=150min=2.5h → 08:45+2.5h=11:15 (×2), 09:00+2.5h=11:30 (×2) ✓
- dur=8: 8×15=120min=2h → 09:00+2h=11:00, 09:15+2h=11:15 (×3), 09:30+2h=11:30 ✓
- dur=6: 6×15=90min=1.5h → 09:30+1.5h=11:00 (×2), 09:45+1.5h=11:15 (×2), 11:00+1.5h=12:30 ✓
- dur=4: 4×15=60min=1h → 11:00+1h=12:00 (×2), 11:15+1h=12:15 (×3) ✓
- dur=1: 1×15=15min → various ✓

All checks pass! Now let me compile the final CSV in the original input order.

**Final assignments (in input order):**
1. 2000902: 10:00... wait, I assigned 2000902 at 11:00-12:00. Let me recheck.

Actually wait - I need to double-check 2000902. In my assignment above:
- 2000902 (dur=4): assigned 11:00-12:00 ✓

Let me list all assignments:
- 2000902: 11:00-12:00
- 2000903: 11:00-12:00
- 2000904: 11:15-12:15
- 2000905: 11:15-12:15
- 2000906: 09:30-11:00
- 2000907: 09:30-11:00
- 2000909: 09:45-11:15
- 2000910: 09:45-11:15
- 2000911: 09:00-11:00
- 2000912: 09:15-11:15
- 2000913: 09:15-11:15
- 2000915: 09:15-11:15
- 2000922: 08:45-11:15
- 2000923: 08:45-11:15
- 2000924: 09:00-11:30
- 2000925: 08:30-11:00
- 2000926: 08:30-11:00
- 2000927: 08:00-11:30
- 2000928: 08:15-11:45
- 2000929: 08:15-11:45
- 2000934: 07:45-11:45
- 2000935: 08:00-12:00
- 2000936: 07:30-13:30
- 2000937: 07:45-13:45
- 2000938: 11:15-12:15
- 2000939: 11:00-12:30
- 2003007: 09:30-11:30
- 2003008: 09:00-11:30
- 2003009: 08:45-11:45
- 2003010: 08:30-12:00
- 2000930: 09:45-10:00
- 2000931: 10:00-10:15
- 2002937: 10:15-10:30
- 2002938: 10:30-10:45
- 2002939: 10:45-11:00
- 2002940: 11:30-11:45
- 2002941: 11:45-12:00
- 2002942: 12:00-12:15
- 2002943: 12:15-12:30
- 2002944: 12:30-12:45
- 2002945: 12:45-13:00
- 2002946: 13:00-13:15
- 2002947: 13:15-13:30
- 2002948: 13:30-13:45
- 2002949: 13:45-14:00
- 2002950: 14:00-14:15
- 2002951: 14:15-14:30
- 2002952: 14:30-14:45
- 2002953: 14:45-15:00
- 2002954: 15:00-15:15

Now output in original input order:

---CSV_START---
5/25/2026,20001,PostFalls,2000902,3,11:00:00,4,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000903,3,11:00:00,4,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000904,3,11:15:00,4,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000905,3,11:15:00,4,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000906,3,09:30:00,6,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000907,3,09:30:00,6,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000909,3,09:45:00,6,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000910,3,09:45:00,6,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000911,3,09:00:00,8,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000912,3,09:15:00,8,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000913,3,09:15:00,8,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000915,3,09:15:00,8,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000922,3,08:45:00,10,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000923,3,08:45:00,10,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000924,3,09:00:00,10,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000925,3,08:30:00,12,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000926,3,08:30:00,12,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000927,3,08:00:00,14,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000928,3,08:15:00,14,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000929,3,08:15:00,14,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000934,3,07:45:00,16,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000935,3,08:00:00,16,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000936,3,07:30:00,24,13:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000937,3,07:45:00,24,13:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000938,3,11:15:00,4,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000939,3,11:00:00,6,12:30:00,4,Treatment
5/25/2026,20001,PostFalls,2003007,3,09:30:00,8,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2003008,3,09:00:00,10,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2003009,3,08:45:00,12,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2003010,3,08:30:00,14,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000930,31,09:45:00,1,10:00:00,2,Injection
5/25/2026,20001,PostFalls,2000931,31,10:00:00,1,10:15:00,2,Injection
5/25/2026,20001,PostFalls,2002937,31,10:15:00,1,10:30:00,2,Injection
5/25/2026,20001,PostFalls,2002938,31,10:30:00,1,10:45:00,2,Injection
5/25/2026,20001,PostFalls,2002939,31,10:45:00,1,11:00:00,2,Injection
5/25/2026,20001,PostFalls,2002940,31,11:30:00,1,11:45:00,2,Injection
5/25/2026,20001,PostFalls,2002941,31,11:45:00,1,12:00:00,2,Injection
5/25/2026,20001,PostFalls,2002942,31,12:00:00,1,12:15:00,2,Injection
5/25/2026,20001,PostFalls,2002943,31,12:15:00,1,12:30:00,2,Injection
5/25/2026,20001,PostFalls,2002944,31,12:30:00,1,12:45:00,2,Injection
5/25/2026,20001,PostFalls,2002945,31,12:45:00,1,13:00:00,2,Injection
5/25/2026,20001,PostFalls,2002946,31,13:00:00,1,13:15:00,2,Injection
5/25/2026,20001,PostFalls,2002947,31,13:15:00,1,13:30:00,2,Injection
5/25/2026,20001,PostFalls,2002948,31,13:30:00,1,13:45:00,2,Injection
5/25/2026,20001,PostFalls,2002949,31,13:45:00,1,14:00:00,2,Injection
5/25/2026,20001,PostFalls,2002950,31,14:00:00,1,14:15:00,2,Injection
5/25/2026,20001,PostFalls,2002951,31,14:15:00,1,14:30:00,2,Injection
5/25/2026,20001,PostFalls,2002952,31,14:30:00,1,14:45:00,2,Injection
5/25/2026,20001,PostFalls,2002953,31,14:45:00,1,15:00:00,2,Injection
5/25/2026,20001,PostFalls,2002954,31,15:00:00,1,15:15:00,2,Injection
---CSV_END---