""" URL configuration for appointments app. """ from django.urls import path, include from . import views app_name = 'appointments' urlpatterns = [ # Main views path('', views.AppointmentDashboardView.as_view(), name='dashboard'), path('requests/', views.AppointmentRequestListView.as_view(), name='appointment_list'), path('/requests/create/', views.AppointmentRequestCreateView.as_view(), name='appointment_create'), path('requests//detail/', views.AppointmentRequestDetailView.as_view(), name='appointment_detail'), path('stats/', views.appointment_stats, name='appointment_stats'), # Calendar path("calendar/", views.calendar_view, name="calendar"), path("calendar/events/", views.calendar_events, name="calendar_events"), path("/detail-card/", views.appointment_detail_card, name="appointment_detail_card"), # path('calendar/appointments/', views.calendar_appointments, name='calendar_appointments'), # path('get_doctor_schedule/', views.get_provider_schedule, name='get_doctor_schedule') # Telemedicine path('telemedicine/', views.TelemedicineView.as_view(), name='telemedicine_list'), path('telemedicine/create/', views.TelemedicineSessionCreateView.as_view(), name='telemedicine_session_create'), path('telemedicine//', views.TelemedicineSessionDetailView.as_view(), name='telemedicine_session_detail'), path('telemedicine//update/', views.TelemedicineSessionUpdateView.as_view(), name='telemedicine_session_update'), path('telemedicine//start/', views.start_telemedicine_session, name='start_telemedicine_session'), path('telemedicine//end/', views.end_telemedicine_session, name='stop_telemedicine_session'), path('telemedicine//cancel/', views.cancel_telemedicine_session, name='cancel_telemedicine_session'), # Actions path('check-in//', views.check_in_patient, name='check_in_patient'), path('complete//', views.complete_appointment, name='complete_appointment'), path('reschedule//', views.reschedule_appointment, name='reschedule_appointment'), path('cancel//', views.cancel_appointment, name='cancel_appointment'), path('search/', views.appointment_search, name='appointment_search'), path('/no-show/', views.no_show_appointment, name='no_show_appointment'), path('/check-in/', views.check_in_appointment, name='check_in_appointment'), # Queue management path('queue/', views.WaitingQueueListView.as_view(), name='waiting_queue_list'), path('queue/create/', views.WaitingQueueCreateView.as_view(), name='waiting_queue_create'), path('queue//', views.WaitingQueueDetailView.as_view(), name='waiting_queue_detail'), path('queue//update/', views.WaitingQueueUpdateView.as_view(), name='waiting_queue_update'), path('queue//delete/', views.WaitingQueueDeleteView.as_view(), name='waiting_queue_delete'), path('queue/entry/create/', views.QueueEntryCreateView.as_view(), name='queue_entry_create'), path('queue/entry/list/', views.QueueEntryListView.as_view(), name='queue_entry_list'), path('queue/entry//', views.QueueEntryDetailView.as_view(), name='queue_entry_detail'), path('queue/entry//update/', views.QueueEntryUpdateView.as_view(), name='queue_entry_update'), path('queue/entry//delete/', views.QueueEntryDeleteView.as_view(), name='queue_entry_delete'), path('queue//call-next/', views.next_in_queue, name='call_next_patient'), path('queue//status/', views.queue_status, name='queue_status'), path('queue//display/', views.queue_display_view, name='queue_display'), path('queue//monitor/', views.queue_monitor_view, name='queue_monitor'), # Slots path('slots/',views.SlotAvailabilityListView.as_view(), name='slot_list'), path('slots//',views.SlotAvailabilityDetailView.as_view(), name='slot_detail'), path('slots/create/',views.SlotAvailabilityCreateView.as_view(), name='slot_create'), path('slots//update/',views.SlotAvailabilityUpdateView.as_view(), name='slot_update'), path('slots//delete/',views.SlotAvailabilityDeleteView.as_view(), name='slot_delete'), path('slots/available/', views.available_slots, name='available_slots'), # Templates path('templates/', views.AppointmentTemplateListView.as_view(), name='appointment_template_list'), path('templates//', views.AppointmentTemplateDetailView.as_view(), name='appointment_template_detail'), path('templates/create/', views.AppointmentTemplateCreateView.as_view(), name='appointment_template_create'), path('templates//update/', views.AppointmentTemplateUpdateView.as_view(), name='appointment_template_update'), path('templates//delete/', views.AppointmentTemplateDeleteView.as_view(), name='appointment_template_delete'), # Waiting list management path('waiting-list/', views.WaitingListView.as_view(), name='waiting_list'), path('waiting-list/create/', views.WaitingListCreateView.as_view(), name='waiting_list_create'), path('waiting-list//', views.WaitingListDetailView.as_view(), name='waiting_list_detail'), path('waiting-list//edit/', views.WaitingListUpdateView.as_view(), name='waiting_list_edit'), path('waiting-list//delete/', views.WaitingListDeleteView.as_view(), name='waiting_list_delete'), path('waiting-list//contact/', views.add_contact_log, name='add_contact_log'), path('waiting-list/bulk-action/', views.waiting_list_bulk_action, name='waiting_list_bulk_action'), path('waiting-list/stats/', views.waiting_list_stats, name='waiting_list_stats'), # Smart Scheduling path('scheduling/', views.SmartSchedulingView.as_view(), name='smart_scheduling'), path('scheduling/find-optimal-slots/', views.find_optimal_slots_view, name='find_optimal_slots'), path('scheduling/check-conflicts/', views.check_scheduling_conflicts_view, name='check_scheduling_conflicts'), path('scheduling/analytics/', views.scheduling_analytics_view, name='scheduling_analytics'), path('scheduling/metrics/', views.scheduling_metrics_dashboard, name='scheduling_metrics_dashboard'), path('scheduling/patient//update-preferences/', views.update_patient_preferences_view, name='update_patient_preferences'), # Advanced Queue Management path('queue//advanced/', views.AdvancedQueueManagementView.as_view(), name='advanced_queue_management'), path('queue//htmx/status/', views.queue_status_htmx_view, name='queue_status_htmx'), path('queue//htmx/add-patient/', views.add_to_queue_htmx_view, name='add_to_queue_htmx'), path('queue//htmx/call-next/', views.call_next_patient_htmx_view, name='call_next_patient_htmx'), path('queue//analytics/', views.queue_analytics_view, name='queue_analytics'), path('queue//config/', views.queue_config_view, name='queue_config'), path('queue/metrics/dashboard/', views.queue_metrics_dashboard_view, name='queue_metrics_dashboard'), # API endpoints path('api/', include('appointments.api.urls')), # ======================================================================== # PATIENT-FACING URLS # ======================================================================== # Patient appointment management path('patient/request/', views.PatientAppointmentRequestView.as_view(), name='patient_appointment_request'), path('patient/appointments/', views.PatientAppointmentListView.as_view(), name='patient_appointment_list'), path('patient/appointments//', views.PatientAppointmentDetailView.as_view(), name='patient_appointment_detail'), path('patient/appointments//cancel/', views.PatientAppointmentCancelView.as_view(), name='patient_appointment_cancel'), path('patient/appointments//success/', views.PatientAppointmentSuccessView.as_view(), name='patient_appointment_success'), # Patient queue status path('patient/queue/status/', views.PatientQueueStatusView.as_view(), name='patient_queue_status'), # ======================================================================== # PROVIDER-FACING URLS # ======================================================================== # Provider schedule views path('provider/schedule/daily/', views.ProviderDailyScheduleView.as_view(), name='provider_daily_schedule'), path('provider/schedule/weekly/', views.ProviderWeeklyScheduleView.as_view(), name='provider_weekly_schedule'), # Provider workflow path('provider/check-in/', views.QuickCheckInView.as_view(), name='quick_check_in'), path('provider/queue/', views.ProviderQueueDashboardView.as_view(), name='provider_queue_dashboard'), ]