299 lines
7.9 KiB
Markdown
299 lines
7.9 KiB
Markdown
# APPOINTMENTS APP - TEMPLATE REVIEW DECISIONS
|
|
|
|
**Review Date:** January 8, 2025
|
|
**Reviewer:** Cline AI Assistant
|
|
**Purpose:** Determine fate of potentially unused templates
|
|
|
|
---
|
|
|
|
## EXECUTIVE SUMMARY
|
|
|
|
Reviewed 11 templates to determine if they should be:
|
|
- **KEEP & CREATE VIEW** - Template is comprehensive and useful
|
|
- **KEEP & LINK** - Template exists, view exists, just needs URL connection
|
|
- **DELETE** - Functionality duplicated elsewhere
|
|
|
|
---
|
|
|
|
## DETAILED DECISIONS
|
|
|
|
### 1. appointments/no_show_appointment.html ✅ KEEP & CREATE VIEW
|
|
|
|
**Status:** Comprehensive template, NO view exists
|
|
|
|
**Template Quality:** EXCELLENT
|
|
- 300+ lines of well-structured HTML
|
|
- Complete no-show documentation form
|
|
- Policy guidelines included
|
|
- Contact attempt tracking
|
|
- No-show fee calculation
|
|
- Patient impact documentation
|
|
|
|
**Decision:** **CREATE VIEW**
|
|
|
|
**Recommended View:**
|
|
```python
|
|
@login_required
|
|
@permission_required('appointments.change_appointmentrequest')
|
|
def no_show_appointment(request, pk):
|
|
"""Mark appointment as no-show with documentation."""
|
|
tenant = request.user.tenant
|
|
appointment = get_object_or_404(
|
|
AppointmentRequest,
|
|
pk=pk,
|
|
tenant=tenant
|
|
)
|
|
|
|
if request.method == 'POST':
|
|
# Process no-show form
|
|
appointment.status = 'NO_SHOW'
|
|
appointment.no_show_time = timezone.now()
|
|
appointment.no_show_documented_by = request.user
|
|
appointment.no_show_notes = request.POST.get('no_show_notes', '')
|
|
appointment.no_show_fee = request.POST.get('no_show_fee', 25.00)
|
|
appointment.save()
|
|
|
|
messages.success(request, 'Appointment marked as no-show.')
|
|
return redirect('appointments:appointment_detail', pk=pk)
|
|
|
|
return render(request, 'appointments/no_show_appointment.html', {
|
|
'appointment': appointment
|
|
})
|
|
```
|
|
|
|
**URL Pattern:**
|
|
```python
|
|
path('<int:pk>/no-show/', views.no_show_appointment, name='no_show_appointment'),
|
|
```
|
|
|
|
---
|
|
|
|
### 2. appointments/check_in_patient.html ✅ KEEP & LINK
|
|
|
|
**Status:** Template exists, Views exist (`check_in_patient` and `check_in_appointment`)
|
|
|
|
**Template Quality:** EXCELLENT
|
|
- Comprehensive check-in form
|
|
- Verification checklist
|
|
- Insurance validation
|
|
- Special needs tracking
|
|
- Patient alerts display
|
|
|
|
**Decision:** **LINK EXISTING VIEW TO TEMPLATE**
|
|
|
|
**Action Required:**
|
|
1. Verify which view (`check_in_patient` or `check_in_appointment`) should use this template
|
|
2. Update the view to render `'appointments/check_in_patient.html'`
|
|
3. Ensure URL pattern exists
|
|
|
|
**Recommended URL:**
|
|
```python
|
|
path('<int:pk>/check-in/', views.check_in_appointment, name='check_in_appointment'),
|
|
```
|
|
|
|
---
|
|
|
|
### 3. appointments/confirm_appointment.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Need to read template first
|
|
|
|
**Action:** Read template to determine if:
|
|
- Functionality duplicated by status change
|
|
- Or needs dedicated confirmation workflow
|
|
|
|
**Next Step:** Read template content
|
|
|
|
---
|
|
|
|
### 4. appointments/partials/provider_schedule.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Partial template - check if functionality exists elsewhere
|
|
|
|
**Likely Decision:** DELETE if `partials/provider_availability.html` covers this
|
|
|
|
**Action:** Compare with existing provider-related partials
|
|
|
|
---
|
|
|
|
### 5. appointments/slots/slot_availability.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Slot management template
|
|
|
|
**Context:**
|
|
- `SlotAvailabilityListView` exists
|
|
- Uses `appointments/slots/slot_list.html`
|
|
|
|
**Likely Decision:** DELETE - functionality covered by slot_list.html
|
|
|
|
---
|
|
|
|
### 6. appointments/slots/slot_booking.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Slot booking template
|
|
|
|
**Context:**
|
|
- Booking likely handled through appointment creation
|
|
- May be redundant
|
|
|
|
**Likely Decision:** DELETE - booking done via AppointmentRequestForm
|
|
|
|
---
|
|
|
|
### 7. appointments/slots/slot_calendar.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Calendar view for slots
|
|
|
|
**Context:**
|
|
- `scheduling_calendar.html` exists
|
|
- May be duplicate functionality
|
|
|
|
**Likely Decision:** DELETE if scheduling_calendar covers this
|
|
|
|
---
|
|
|
|
### 8. appointments/slots/slot_management.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Slot management interface
|
|
|
|
**Context:**
|
|
- Slot CRUD operations exist via standard views
|
|
- May be administrative dashboard
|
|
|
|
**Decision:** Need to read template to determine purpose
|
|
|
|
---
|
|
|
|
### 9. appointments/appointment_stats.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Full-page stats view
|
|
|
|
**Context:**
|
|
- `partials/appointment_stats.html` exists for HTMX
|
|
- May be for standalone stats page
|
|
|
|
**Likely Decision:** KEEP if provides comprehensive dashboard, DELETE if redundant
|
|
|
|
---
|
|
|
|
### 10. appointments/scheduling/conflicts.html ⚠️ NEEDS REVIEW
|
|
|
|
**Status:** Conflicts display
|
|
|
|
**Context:**
|
|
- `partials/conflicts.html` exists
|
|
- May be for full-page conflict resolution
|
|
|
|
**Likely Decision:** DELETE - partial version sufficient
|
|
|
|
---
|
|
|
|
### 11. appointments/queue/queue_entry_confirm_delete.html ✅ CREATE VIEW
|
|
|
|
**Status:** Delete confirmation template exists, NO delete view
|
|
|
|
**Template Quality:** Standard Django delete confirmation
|
|
|
|
**Decision:** **CREATE DELETE VIEW**
|
|
|
|
**Recommended View:**
|
|
```python
|
|
class QueueEntryDeleteView(LoginRequiredMixin, PermissionRequiredMixin, DeleteView):
|
|
model = QueueEntry
|
|
template_name = 'appointments/queue/queue_entry_confirm_delete.html'
|
|
permission_required = 'appointments.delete_queueentry'
|
|
success_url = reverse_lazy('appointments:queue_entry_list')
|
|
|
|
def get_queryset(self):
|
|
return QueueEntry.objects.filter(queue__tenant=self.request.user.tenant)
|
|
```
|
|
|
|
**URL Pattern:**
|
|
```python
|
|
path('queue/entry/<int:pk>/delete/', views.QueueEntryDeleteView.as_view(), name='queue_entry_delete'),
|
|
```
|
|
|
|
---
|
|
|
|
## SUMMARY OF DECISIONS
|
|
|
|
| Template | Decision | Priority | Effort |
|
|
|----------|----------|----------|--------|
|
|
| no_show_appointment.html | CREATE VIEW | HIGH | 2 hours |
|
|
| check_in_patient.html | LINK VIEW | HIGH | 30 min |
|
|
| confirm_appointment.html | REVIEW | MEDIUM | 1 hour |
|
|
| partials/provider_schedule.html | LIKELY DELETE | LOW | 15 min |
|
|
| slots/slot_availability.html | LIKELY DELETE | LOW | 15 min |
|
|
| slots/slot_booking.html | LIKELY DELETE | LOW | 15 min |
|
|
| slots/slot_calendar.html | LIKELY DELETE | LOW | 15 min |
|
|
| slots/slot_management.html | REVIEW | MEDIUM | 1 hour |
|
|
| appointment_stats.html | REVIEW | MEDIUM | 1 hour |
|
|
| scheduling/conflicts.html | LIKELY DELETE | LOW | 15 min |
|
|
| queue_entry_confirm_delete.html | CREATE VIEW | HIGH | 1 hour |
|
|
|
|
---
|
|
|
|
## IMMEDIATE ACTIONS (HIGH PRIORITY)
|
|
|
|
### 1. Create No-Show View (2 hours)
|
|
- Implement `no_show_appointment` function
|
|
- Add URL pattern
|
|
- Test workflow
|
|
- Add to appointment detail page as action button
|
|
|
|
### 2. Link Check-In Template (30 minutes)
|
|
- Update `check_in_appointment` view to use template
|
|
- Verify URL pattern exists
|
|
- Test check-in workflow
|
|
|
|
### 3. Create Queue Entry Delete View (1 hour)
|
|
- Implement `QueueEntryDeleteView` class
|
|
- Add URL pattern
|
|
- Test deletion workflow
|
|
|
|
**Total Immediate Work:** 3.5 hours
|
|
|
|
---
|
|
|
|
## NEXT STEPS
|
|
|
|
1. **Read remaining templates** (confirm_appointment, slot_management, appointment_stats)
|
|
2. **Make final DELETE decisions** for slot templates and conflicts
|
|
3. **Implement HIGH priority views**
|
|
4. **Test all new functionality**
|
|
5. **Update documentation**
|
|
|
|
---
|
|
|
|
## TEMPLATES TO DELETE (Pending Final Review)
|
|
|
|
Likely candidates for deletion:
|
|
- `partials/provider_schedule.html` - Covered by provider_availability
|
|
- `slots/slot_availability.html` - Covered by slot_list
|
|
- `slots/slot_booking.html` - Covered by appointment creation
|
|
- `slots/slot_calendar.html` - Covered by scheduling_calendar
|
|
- `scheduling/conflicts.html` - Partial version sufficient
|
|
|
|
**Estimated cleanup:** 5 templates, saves ~500 lines of unused code
|
|
|
|
---
|
|
|
|
## IMPLEMENTATION PRIORITY
|
|
|
|
**Week 1:**
|
|
1. Create no-show view and URL
|
|
2. Link check-in template
|
|
3. Create queue entry delete view
|
|
|
|
**Week 2:**
|
|
4. Review and decide on remaining 3 templates
|
|
5. Delete confirmed unused templates
|
|
6. Update documentation
|
|
|
|
**Total Effort:** ~8 hours
|
|
|
|
---
|
|
|
|
**End of Review**
|
|
|
|
*Next Action: Toggle to Act Mode to implement HIGH priority items*
|