96 lines
6.3 KiB
Python
96 lines
6.3 KiB
Python
"""
|
|
Quality app URLs with comprehensive CRUD operations.
|
|
"""
|
|
|
|
from django.urls import path, include
|
|
from . import views
|
|
|
|
app_name = 'quality'
|
|
|
|
urlpatterns = [
|
|
# ============================================================================
|
|
# DASHBOARD AND OVERVIEW
|
|
# ============================================================================
|
|
path('', views.QualityDashboardView.as_view(), name='dashboard'),
|
|
|
|
# ============================================================================
|
|
# QUALITY INDICATOR URLS (FULL CRUD - Master Data)
|
|
# ============================================================================
|
|
path('indicators/', views.QualityIndicatorListView.as_view(), name='quality_indicator_list'),
|
|
path('indicators/create/', views.QualityIndicatorCreateView.as_view(), name='quality_indicator_create'),
|
|
path('indicators/<int:pk>/', views.QualityIndicatorDetailView.as_view(), name='quality_indicator_detail'),
|
|
path('indicators/<int:pk>/update/', views.QualityIndicatorUpdateView.as_view(), name='quality_indicator_update'),
|
|
path('indicators/<int:pk>/delete/', views.QualityIndicatorDeleteView.as_view(), name='quality_indicator_delete'),
|
|
|
|
# ============================================================================
|
|
# IMPROVEMENT PROJECT URLS (FULL CRUD - Operational Data)
|
|
# ============================================================================
|
|
path('projects/', views.ImprovementProjectListView.as_view(), name='improvement_project_list'),
|
|
path('projects/create/', views.ImprovementProjectCreateView.as_view(), name='improvement_project_create'),
|
|
path('projects/<int:pk>/', views.ImprovementProjectDetailView.as_view(), name='improvement_project_detail'),
|
|
path('projects/<int:pk>/update/', views.ImprovementProjectUpdateView.as_view(), name='improvement_project_update'),
|
|
path('projects/<int:pk>/delete/', views.ImprovementProjectDeleteView.as_view(), name='improvement_project_delete'),
|
|
|
|
# ============================================================================
|
|
# AUDIT PLAN URLS (LIMITED CRUD - Operational Data)
|
|
# ============================================================================
|
|
path('audits/', views.AuditPlanListView.as_view(), name='audit_plan_list'),
|
|
path('audits/create/', views.AuditPlanCreateView.as_view(), name='audit_plan_create'),
|
|
path('audits/<int:pk>/', views.AuditPlanDetailView.as_view(), name='audit_plan_detail'),
|
|
path('audits/<int:pk>/update/', views.AuditPlanUpdateView.as_view(), name='audit_plan_update'),
|
|
# Note: No delete view for audit plans - use status updates instead
|
|
|
|
# ============================================================================
|
|
# QUALITY MEASUREMENT URLS (LIMITED CRUD - Operational Data)
|
|
# ============================================================================
|
|
path('measurements/', views.QualityMeasurementListView.as_view(), name='measurement_list'),
|
|
path('measurements/create/', views.QualityMeasurementCreateView.as_view(), name='measurement_create'),
|
|
path('measurements/<int:pk>/', views.QualityMeasurementDetailView.as_view(), name='measurement_detail'),
|
|
path('measurements/<int:pk>/update/', views.QualityMeasurementUpdateView.as_view(), name='measurement_update'),
|
|
# Note: No delete view for measurements - operational tracking data
|
|
|
|
# ============================================================================
|
|
# RISK ASSESSMENT URLS (RESTRICTED CRUD - Clinical/Operational Data)
|
|
# ============================================================================
|
|
path('risks/', views.RiskAssessmentListView.as_view(), name='risk_assessment_list'),
|
|
path('risks/create/', views.RiskAssessmentCreateView.as_view(), name='risk_assessment_create'),
|
|
path('risks/<int:pk>/', views.RiskAssessmentDetailView.as_view(), name='risk_assessment_detail'),
|
|
path('risks/<int:pk>/update/', views.RiskAssessmentUpdateView.as_view(), name='risk_assessment_update'),
|
|
# Note: No delete view for risk assessments - limited updates after approval
|
|
|
|
# ============================================================================
|
|
# INCIDENT REPORT URLS (APPEND-ONLY - Clinical Records)
|
|
# ============================================================================
|
|
path('incidents/', views.IncidentReportListView.as_view(), name='incident_report_list'),
|
|
path('incidents/create/', views.IncidentReportCreateView.as_view(), name='incident_report_create'),
|
|
path('incidents/<int:pk>/', views.IncidentReportDetailView.as_view(), name='incident_report_detail'),
|
|
# Note: No update/delete views for incident reports - append-only for patient safety
|
|
|
|
# ============================================================================
|
|
# AUDIT FINDING URLS (APPEND-ONLY - Audit Records)
|
|
# ============================================================================
|
|
path('findings/', views.AuditFindingListView.as_view(), name='audit_finding_list'),
|
|
path('findings/create/', views.AuditFindingCreateView.as_view(), name='audit_finding_create'),
|
|
path('findings/<int:pk>/', views.AuditFindingDetailView.as_view(), name='audit_finding_detail'),
|
|
# Note: No update/delete views for audit findings - append-only for compliance
|
|
|
|
# ============================================================================
|
|
# HTMX ENDPOINTS FOR REAL-TIME UPDATES
|
|
# ============================================================================
|
|
path('htmx/stats/', views.quality_stats, name='quality_stats'),
|
|
path('htmx/incident-search/', views.incident_search, name='incident_search'),
|
|
|
|
# ============================================================================
|
|
# ACTION URLS FOR WORKFLOW OPERATIONS
|
|
# ============================================================================
|
|
path('risks/<int:assessment_id>/approve/', views.approve_risk_assessment, name='approve_risk_assessment'),
|
|
path('measurements/<int:measurement_id>/verify/', views.verify_measurement, name='verify_measurement'),
|
|
path('incidents/<int:incident_id>/close/', views.close_incident, name='close_incident'),
|
|
|
|
# ============================================================================
|
|
# API ENDPOINTS
|
|
# ============================================================================
|
|
path('api/', include('quality.api.urls')),
|
|
]
|
|
|