# 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('/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('/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//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*