""" Laboratory app URLs with comprehensive CRUD operations. """ from django.urls import path, include from . import views app_name = 'laboratory' urlpatterns = [ # ============================================================================ # DASHBOARD AND OVERVIEW # ============================================================================ path('', views.LaboratoryDashboardView.as_view(), name='dashboard'), # ============================================================================ # LAB TEST URLS (FULL CRUD - Master Data) # ============================================================================ path('tests/', views.LabTestListView.as_view(), name='lab_test_list'), path('tests/create/', views.LabTestCreateView.as_view(), name='lab_test_create'), path('tests//', views.LabTestDetailView.as_view(), name='lab_test_detail'), path('tests//update/', views.LabTestUpdateView.as_view(), name='lab_test_update'), path('tests//delete/', views.LabTestDeleteView.as_view(), name='lab_test_delete'), # ============================================================================ # REFERENCE RANGE URLS (FULL CRUD - Reference Data) # ============================================================================ path('reference-ranges/', views.ReferenceRangeListView.as_view(), name='reference_range_list'), path('reference-ranges/create/', views.ReferenceRangeCreateView.as_view(), name='reference_range_create'), path('reference-ranges//', views.ReferenceRangeDetailView.as_view(), name='reference_range_detail'), path('reference-ranges//update/', views.ReferenceRangeUpdateView.as_view(), name='reference_range_update'), path('reference-ranges//delete/', views.ReferenceRangeDeleteView.as_view(), name='reference_range_delete'), # ============================================================================ # LAB ORDER URLS (RESTRICTED CRUD - Clinical Orders) # ============================================================================ path('orders/', views.LabOrderListView.as_view(), name='lab_order_list'), path('orders/create/', views.LabOrderCreateView.as_view(), name='lab_order_create'), path('orders//', views.LabOrderDetailView.as_view(), name='lab_order_detail'), path('orders//update/', views.LabOrderUpdateView.as_view(), name='lab_order_update'), # Note: No delete view for clinical orders - use status updates instead # ============================================================================ # SPECIMEN URLS (RESTRICTED CRUD - Clinical Data) # ============================================================================ path('specimens/', views.SpecimenListView.as_view(), name='specimen_list'), path('specimens/create/', views.SpecimenCreateView.as_view(), name='specimen_create'), path('specimens//', views.SpecimenDetailView.as_view(), name='specimen_detail'), path('specimens//update/', views.SpecimenUpdateView.as_view(), name='specimen_update'), # Note: No delete view for specimens - use status updates instead # ============================================================================ # LAB RESULT URLS (APPEND-ONLY - Clinical Records) # ============================================================================ path('results/', views.LabResultListView.as_view(), name='lab_result_list'), path('results/create/', views.LabResultCreateView.as_view(), name='lab_result_create'), path('results//', views.LabResultDetailView.as_view(), name='lab_result_detail'), # Note: No update/delete views for results - append-only for clinical records # ============================================================================ # QUALITY CONTROL URLS (LIMITED CRUD - Operational Data) # ============================================================================ path('quality-control/', views.QualityControlListView.as_view(), name='quality_control_list'), path('quality-control/create/', views.QualityControlCreateView.as_view(), name='quality_control_create'), path('quality-control//', views.QualityControlDetailView.as_view(), name='quality_control_detail'), path('quality-control//update/', views.QualityControlUpdateView.as_view(), name='quality_control_update'), # Note: No delete view for QC records - operational data should be preserved # ============================================================================ # HTMX ENDPOINTS FOR REAL-TIME UPDATES # ============================================================================ path('htmx/stats/', views.laboratory_stats, name='laboratory_stats'), path('htmx/order-search/', views.order_search, name='order_search'), # ============================================================================ # ACTION URLS FOR WORKFLOW OPERATIONS # ============================================================================ path('orders//receive-specimen/', views.receive_specimen, name='receive_specimen'), path('orders//start-processing/', views.start_processing, name='start_processing'), path('orders//schedule-collection/', views.schedule_collection, name='schedule_collection'), path('orders//mark-collected/', views.mark_collected, name='mark_collected'), path('specimens//reject/', views.reject_specimen, name='reject_specimen'), # ============================================================================ # API ENDPOINTS # ============================================================================ path('api/', include('laboratory.api.urls')), ]