""" Operating Theatre app URLs with comprehensive CRUD operations. """ from django.urls import path, include from . import views app_name = 'operating_theatre' urlpatterns = [ # ============================================================================ # DASHBOARD AND OVERVIEW # ============================================================================ path('', views.OperatingTheatreDashboardView.as_view(), name='dashboard'), # ============================================================================ # OPERATING ROOM URLS (FULL CRUD - Master Data) # ============================================================================ path('rooms/', views.OperatingRoomListView.as_view(), name='operating_room_list'), path('rooms/create/', views.OperatingRoomCreateView.as_view(), name='operating_room_create'), path('rooms//', views.OperatingRoomDetailView.as_view(), name='operating_room_detail'), path('rooms//update/', views.OperatingRoomUpdateView.as_view(), name='operating_room_update'), path('rooms//delete/', views.OperatingRoomDeleteView.as_view(), name='operating_room_delete'), path("availability/check/", views.check_room_availability, name="check_room_availability"), # ============================================================================ # SURGICAL NOTE TEMPLATE URLS (FULL CRUD - Master Data) # ============================================================================ path('templates/', views.SurgicalNoteTemplateListView.as_view(), name='surgical_note_template_list'), path('templates/create/', views.SurgicalNoteTemplateCreateView.as_view(), name='surgical_note_template_create'), path('templates//', views.SurgicalNoteTemplateDetailView.as_view(), name='surgical_note_template_detail'), path('templates//update/', views.SurgicalNoteTemplateUpdateView.as_view(), name='surgical_note_template_update'), path('templates//delete/', views.SurgicalNoteTemplateDeleteView.as_view(), name='surgical_note_template_delete'), # ============================================================================ # OR BLOCK URLS (LIMITED CRUD - Operational Data) # ============================================================================ path('blocks/', views.ORBlockListView.as_view(), name='or_block_list'), path('blocks/create/', views.ORBlockCreateView.as_view(), name='or_block_create'), path('blocks//', views.ORBlockDetailView.as_view(), name='or_block_detail'), path('blocks//update/', views.ORBlockUpdateView.as_view(), name='or_block_update'), # Note: No delete view for OR blocks - use status updates instead # ============================================================================ # SURGICAL CASE URLS (RESTRICTED CRUD - Clinical Data) # ============================================================================ path('cases/', views.SurgicalCaseListView.as_view(), name='surgical_case_list'), path('cases/create/', views.SurgicalCaseCreateView.as_view(), name='surgical_case_create'), path('cases//', views.SurgicalCaseDetailView.as_view(), name='surgical_case_detail'), path('cases//update/', views.SurgicalCaseUpdateView.as_view(), name='surgical_case_update'), # Note: No delete view for surgical cases - use status updates instead # ============================================================================ # SURGICAL NOTE URLS (APPEND-ONLY - Clinical Records) # ============================================================================ path('notes/', views.SurgicalNoteListView.as_view(), name='surgical_note_list'), path('notes/create/', views.SurgicalNoteCreateView.as_view(), name='surgical_note_create'), path('notes//', views.SurgicalNoteDetailView.as_view(), name='surgical_note_detail'), path('notes//preview/', views.surgical_note_preview, name='surgical_note_preview'), # Note: No update/delete views for surgical notes - append-only for clinical records # ============================================================================ # EQUIPMENT USAGE URLS (LIMITED CRUD - Operational Data) # ============================================================================ path('equipment/', views.EquipmentUsageListView.as_view(), name='equipment_list'), path('equipment/create/', views.EquipmentUsageCreateView.as_view(), name='equipment_create'), path('equipment//', views.EquipmentUsageDetailView.as_view(), name='equipment_detail'), path('equipment//update/', views.EquipmentUsageUpdateView.as_view(), name='equipment_update'), # Note: No delete view for equipment usage - operational tracking data # ============================================================================ # HTMX ENDPOINTS FOR REAL-TIME UPDATES # ============================================================================ path('htmx/stats/', views.operating_theatre_stats, name='operating_theatre_stats'), path('htmx/case-search/', views.case_search, name='case_search'), # ============================================================================ # ACTION URLS FOR WORKFLOW OPERATIONS # ============================================================================ # path('cases//start/', views.start_case, name='start_case'), # path('cases//complete/', views.complete_case, name='complete_case'), path('cases//start/', views.StartCaseView.as_view(), name='start_case'), path('cases//complete/', views.CompleteCaseView.as_view(), name='complete_case'), path('notes//sign/', views.sign_note, name='sign_note'), path('rooms//update-status/', views.update_room_status, name='update_room_status'), # ============================================================================ # API ENDPOINTS # ============================================================================ path('api/', include('operating_theatre.api.urls')), ]