74 lines
4.3 KiB
Python
74 lines
4.3 KiB
Python
"""
|
|
Appointments app URL configuration.
|
|
"""
|
|
|
|
from django.urls import path
|
|
from . import views
|
|
from .package_api_views import AvailablePackagesAPIView
|
|
|
|
app_name = 'appointments'
|
|
|
|
urlpatterns = [
|
|
# Appointment List & Calendar
|
|
path('', views.AppointmentListView.as_view(), name='appointment_list'),
|
|
path('calendar/', views.AppointmentCalendarView.as_view(), name='appointment_calendar'),
|
|
|
|
# Appointment CRUD
|
|
path('create/', views.AppointmentCreateView.as_view(), name='appointment_create'),
|
|
path('<uuid:pk>/', views.AppointmentDetailView.as_view(), name='appointment_detail'),
|
|
path('<uuid:pk>/quick-view/', views.AppointmentQuickViewView.as_view(), name='appointment_quick_view'),
|
|
path('<uuid:pk>/update/', views.AppointmentUpdateView.as_view(), name='appointment_update'),
|
|
path('<uuid:pk>/pdf/', views.AppointmentPDFView.as_view(), name='appointment_pdf'),
|
|
path('<uuid:pk>/email-pdf/', views.AppointmentEmailPDFView.as_view(), name='appointment_email_pdf'),
|
|
|
|
# State Machine Transitions
|
|
path('<uuid:pk>/confirm/', views.AppointmentConfirmView.as_view(), name='appointment_confirm'),
|
|
path('<uuid:pk>/reschedule/', views.AppointmentRescheduleView.as_view(), name='appointment_reschedule'),
|
|
path('<uuid:pk>/cancel/', views.AppointmentCancelView.as_view(), name='appointment_cancel'),
|
|
path('<uuid:pk>/arrive/', views.AppointmentArriveView.as_view(), name='appointment_arrive'),
|
|
path('<uuid:pk>/start/', views.AppointmentStartView.as_view(), name='appointment_start'),
|
|
path('<uuid:pk>/complete/', views.AppointmentCompleteView.as_view(), name='appointment_complete'),
|
|
path('<uuid:pk>/no-show/', views.AppointmentNoShowView.as_view(), name='appointment_no_show'),
|
|
|
|
# Patient Confirmation (Phase 5) - Public URLs (no login required)
|
|
path('confirm/<str:token>/', views.ConfirmAppointmentView.as_view(), name='patient_confirm'),
|
|
path('decline/<str:token>/', views.DeclineAppointmentView.as_view(), name='patient_decline'),
|
|
|
|
# Availability API
|
|
path('api/available-slots/', views.AvailableSlotsView.as_view(), name='available_slots'),
|
|
path('api/available-rooms/', views.AvailableRoomsView.as_view(), name='available_rooms'),
|
|
path('api/check-consent/', views.CheckConsentStatusView.as_view(), name='check_consent_status'),
|
|
path('api/available-packages/', AvailablePackagesAPIView.as_view(), name='available_packages'),
|
|
|
|
# Package Selection API
|
|
path('api/packages-for-patient/', views.GetPackagesForPatientView.as_view(), name='packages_for_patient'),
|
|
path('api/assign-package/', views.AssignPackageToPatientView.as_view(), name='assign_package'),
|
|
path('api/package-clinics/', views.GetClinicsForPackageView.as_view(), name='package_clinics'),
|
|
|
|
# Calendar Events API
|
|
path('events/', views.AppointmentEventsView.as_view(), name='appointment-events'),
|
|
|
|
# ============================================================================
|
|
# Session URLs (Group Session Support)
|
|
# ============================================================================
|
|
|
|
# Session List & Management
|
|
path('sessions/', views.SessionListView.as_view(), name='session_list'),
|
|
path('sessions/available/', views.AvailableGroupSessionsView.as_view(), name='available_group_sessions'),
|
|
path('sessions/create/', views.GroupSessionCreateView.as_view(), name='group_session_create'),
|
|
path('sessions/<uuid:pk>/', views.SessionDetailView.as_view(), name='session_detail'),
|
|
|
|
# Session Actions
|
|
path('sessions/<uuid:pk>/add-patient/', views.AddPatientToSessionView.as_view(), name='session_add_patient'),
|
|
path('sessions/<uuid:pk>/start/', views.SessionStartView.as_view(), name='session_start'),
|
|
path('sessions/<uuid:pk>/complete/', views.SessionCompleteView.as_view(), name='session_complete'),
|
|
path('sessions/<uuid:pk>/cancel/', views.SessionCancelView.as_view(), name='session_cancel'),
|
|
|
|
# Participant Actions
|
|
path('participants/<uuid:pk>/check-in/', views.SessionParticipantCheckInView.as_view(), name='participant_check_in'),
|
|
path('participants/<uuid:pk>/update-status/', views.SessionParticipantStatusUpdateView.as_view(), name='participant_update_status'),
|
|
|
|
# Package Auto-Scheduling
|
|
path('packages/<uuid:package_purchase_id>/schedule/', views.schedule_package_view, name='schedule_package'),
|
|
]
|