""" Radiology app URLs with comprehensive CRUD operations. """ from django.urls import path, include from . import views app_name = 'radiology' urlpatterns = [ # ============================================================================ # DASHBOARD AND OVERVIEW # ============================================================================ path('', views.RadiologyDashboardView.as_view(), name='dashboard'), # ============================================================================ # REPORT TEMPLATE URLS (FULL CRUD - Master Data) # ============================================================================ path('templates/', views.ReportTemplateListView.as_view(), name='report_template_list'), path('templates/create/', views.ReportTemplateCreateView.as_view(), name='report_template_create'), path('templates//', views.ReportTemplateDetailView.as_view(), name='report_template_detail'), path('templates//update/', views.ReportTemplateUpdateView.as_view(), name='report_template_update'), path('templates//delete/', views.ReportTemplateDeleteView.as_view(), name='report_template_delete'), # ============================================================================ # IMAGING ORDER URLS (RESTRICTED CRUD - Clinical Orders) # ============================================================================ path('orders/', views.ImagingOrderListView.as_view(), name='imaging_order_list'), path('orders/create/', views.ImagingOrderCreateView.as_view(), name='imaging_order_create'), path('orders//', views.ImagingOrderDetailView.as_view(), name='imaging_order_detail'), path('orders//update/', views.ImagingOrderUpdateView.as_view(), name='imaging_order_update'), # Note: No delete view for clinical orders - use status updates instead # ============================================================================ # IMAGING STUDY URLS (RESTRICTED CRUD - Clinical Data) # ============================================================================ path('studies/', views.ImagingStudyListView.as_view(), name='imaging_study_list'), path('studies/create/', views.ImagingStudyCreateView.as_view(), name='imaging_study_create'), path('studies//', views.ImagingStudyDetailView.as_view(), name='imaging_study_detail'), path('studies//update/', views.ImagingStudyUpdateView.as_view(), name='imaging_study_update'), # Note: No delete view for studies - use status updates instead # ============================================================================ # IMAGING SERIES URLS (RESTRICTED CRUD - Clinical Data) # ============================================================================ # urls.py path('studies//series/', views.ImagingSeriesListView.as_view(), name='imaging_series_list'), path('series//', views.ImagingSeriesDetailView.as_view(), name='imaging_series_detail'), path('series/create/', views.ImagingSeriesCreateView.as_view(), name='imaging_series_create'), # path('series//edit/', views.ImagingSeriesUpdateView.as_view(), name='imaging_series_edit'), # path('series//delete/', views.ImagingSeriesDeleteView.as_view(), name='imaging_series_delete'), # Note: Limited update capabilities for series data # ============================================================================ # DICOM IMAGE URLS (READ-ONLY - System Generated) # ============================================================================ path('images/', views.DICOMImageListView.as_view(), name='dicom_image_list'), path('images//', views.DICOMImageDetailView.as_view(), name='dicom_image_detail'), # Note: No create/update/delete views for DICOM images - system generated # ============================================================================ # DICOM VIEWER URLS # ============================================================================ path('viewer/image//', views.DICOMImageViewerView.as_view(), name='dicom_image_viewer'), path('viewer/series//', views.DICOMSeriesViewerView.as_view(), name='dicom_series_viewer'), # ============================================================================ # DICOM FILE SERVING URLS # ============================================================================ path('files/image//', views.dicom_image_file, name='dicom_image_file'), path('files/thumbnail//', views.dicom_image_thumbnail, name='dicom_image_thumbnail'), path('files/preview//', views.dicom_image_preview, name='dicom_image_preview'), # ============================================================================ # DICOM METADATA AND NAVIGATION URLS # ============================================================================ path('metadata//', views.dicom_metadata_json, name='dicom_metadata_json'), path('series//images/', views.series_images_json, name='series_images_json'), path('study//series/', views.study_series_json, name='study_series_json'), # ============================================================================ # RADIOLOGY REPORT URLS (APPEND-ONLY - Clinical Records) # ============================================================================ path('reports/', views.RadiologyReportListView.as_view(), name='radiology_report_list'), path('reports/create/', views.RadiologyReportCreateView.as_view(), name='radiology_report_create'), path('reports//', views.RadiologyReportDetailView.as_view(), name='radiology_report_detail'), # Note: No update/delete views for reports - append-only for clinical records # ============================================================================ # HTMX ENDPOINTS FOR REAL-TIME UPDATES # ============================================================================ path('htmx/stats/', views.radiology_stats, name='radiology_stats'), path('htmx/order-search/', views.order_search, name='order_search'), # ============================================================================ # ACTION URLS FOR WORKFLOW OPERATIONS # ============================================================================ path('orders//schedule-study/', views.schedule_study, name='schedule_study'), path('studies//start/', views.start_study, name='start_study'), path('studies//complete/', views.complete_study, name='complete_study'), path('studies//dictate-report/', views.dictate_report, name='dictate_report'), path('reports//sign/', views.sign_report, name='sign_report'), # ============================================================================ # API ENDPOINTS # ============================================================================ path('api/', include('radiology.api.urls')), ]