130 lines
8.8 KiB
Python
130 lines
8.8 KiB
Python
"""
|
|
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('<int:pk>/requests/create/', views.AppointmentRequestCreateView.as_view(), name='appointment_create'),
|
|
path('requests/<int:pk>/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("<int:pk>/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/<int:pk>/', views.TelemedicineSessionDetailView.as_view(), name='telemedicine_session_detail'),
|
|
path('telemedicine/<int:pk>/update/', views.TelemedicineSessionUpdateView.as_view(), name='telemedicine_session_update'),
|
|
path('telemedicine/<int:pk>/start/', views.start_telemedicine_session, name='start_telemedicine_session'),
|
|
path('telemedicine/<int:pk>/end/', views.end_telemedicine_session, name='stop_telemedicine_session'),
|
|
path('telemedicine/<int:pk>/cancel/', views.cancel_telemedicine_session, name='cancel_telemedicine_session'),
|
|
|
|
# Actions
|
|
path('check-in/<int:appointment_id>/', views.check_in_patient, name='check_in_patient'),
|
|
path('complete/<int:pk>/', views.complete_appointment, name='complete_appointment'),
|
|
path('reschedule/<int:pk>/', views.reschedule_appointment, name='reschedule_appointment'),
|
|
path('cancel/<int:pk>/', views.cancel_appointment, name='cancel_appointment'),
|
|
path('search/', views.appointment_search, name='appointment_search'),
|
|
path('<int:pk>/no-show/', views.no_show_appointment, name='no_show_appointment'),
|
|
path('<int:pk>/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/<int:pk>/', views.WaitingQueueDetailView.as_view(), name='waiting_queue_detail'),
|
|
path('queue/<int:pk>/update/', views.WaitingQueueUpdateView.as_view(), name='waiting_queue_update'),
|
|
path('queue/<int:pk>/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/<int:pk>/', views.QueueEntryDetailView.as_view(), name='queue_entry_detail'),
|
|
path('queue/entry/<int:pk>/update/', views.QueueEntryUpdateView.as_view(), name='queue_entry_update'),
|
|
path('queue/entry/<int:pk>/delete/', views.QueueEntryDeleteView.as_view(), name='queue_entry_delete'),
|
|
path('queue/<int:queue_id>/call-next/', views.next_in_queue, name='call_next_patient'),
|
|
path('queue/<int:queue_id>/status/', views.queue_status, name='queue_status'),
|
|
path('queue/<int:pk>/display/', views.queue_display_view, name='queue_display'),
|
|
path('queue/<int:pk>/monitor/', views.queue_monitor_view, name='queue_monitor'),
|
|
|
|
# Slots
|
|
path('slots/',views.SlotAvailabilityListView.as_view(), name='slot_list'),
|
|
path('slots/<int:pk>/',views.SlotAvailabilityDetailView.as_view(), name='slot_detail'),
|
|
path('slots/create/',views.SlotAvailabilityCreateView.as_view(), name='slot_create'),
|
|
path('slots/<int:pk>/update/',views.SlotAvailabilityUpdateView.as_view(), name='slot_update'),
|
|
path('slots/<int:pk>/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/<int:pk>/', views.AppointmentTemplateDetailView.as_view(), name='appointment_template_detail'),
|
|
path('templates/create/', views.AppointmentTemplateCreateView.as_view(), name='appointment_template_create'),
|
|
path('templates/<int:pk>/update/', views.AppointmentTemplateUpdateView.as_view(), name='appointment_template_update'),
|
|
path('templates/<int:pk>/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/<int:pk>/', views.WaitingListDetailView.as_view(), name='waiting_list_detail'),
|
|
path('waiting-list/<int:pk>/edit/', views.WaitingListUpdateView.as_view(), name='waiting_list_edit'),
|
|
path('waiting-list/<int:pk>/delete/', views.WaitingListDeleteView.as_view(), name='waiting_list_delete'),
|
|
path('waiting-list/<int:pk>/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/<int:patient_id>/update-preferences/', views.update_patient_preferences_view, name='update_patient_preferences'),
|
|
|
|
# Advanced Queue Management
|
|
path('queue/<int:pk>/advanced/', views.AdvancedQueueManagementView.as_view(), name='advanced_queue_management'),
|
|
path('queue/<int:queue_id>/htmx/status/', views.queue_status_htmx_view, name='queue_status_htmx'),
|
|
path('queue/<int:queue_id>/htmx/add-patient/', views.add_to_queue_htmx_view, name='add_to_queue_htmx'),
|
|
path('queue/<int:queue_id>/htmx/call-next/', views.call_next_patient_htmx_view, name='call_next_patient_htmx'),
|
|
path('queue/<int:queue_id>/analytics/', views.queue_analytics_view, name='queue_analytics'),
|
|
path('queue/<int:queue_id>/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/<int:pk>/', views.PatientAppointmentDetailView.as_view(), name='patient_appointment_detail'),
|
|
path('patient/appointments/<int:pk>/cancel/', views.PatientAppointmentCancelView.as_view(), name='patient_appointment_cancel'),
|
|
path('patient/appointments/<int:pk>/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'),
|
|
]
|