from django.urls import include, path from rest_framework.routers import DefaultRouter from .views import ( DepartmentViewSet, HospitalViewSet, LegacyLocationViewSet, LegacyMainSectionViewSet, LegacySubSectionViewSet, OrgSubSectionViewSet, OrganizationViewSet, PatientViewSet, StaffViewSet, api_areas_by_hospital, api_department_contacts, api_department_staff, api_departments_by_category, api_main_section_list, api_sections_by_department, api_subsections_by_section, api_staff_hierarchy, api_staff_hierarchy_children, api_staff_by_department, api_subsection_list, ajax_departments, ) from . import ui_views from .ui_views import ( department_create, department_update, department_delete, section_list, section_create, section_update, section_delete, subsection_list, subsection_create, subsection_update, subsection_delete, orgsection_list, orgsection_create, orgsection_detail, orgsection_update, orgsection_delete, orgsubsection_list, orgsubsection_create, orgsubsection_update, orgsubsection_delete, ) app_name = "organizations" router = DefaultRouter() router.register(r"organizations", OrganizationViewSet, basename="organization-api") router.register(r"hospitals", HospitalViewSet, basename="hospital-api") router.register(r"departments", DepartmentViewSet, basename="department-api") router.register(r"staff", StaffViewSet, basename="staff-api") router.register(r"patients", PatientViewSet, basename="patient-api") router.register(r"locations", LegacyLocationViewSet, basename="location-api") router.register(r"main-sections", LegacyMainSectionViewSet, basename="main-section-api") router.register(r"subsections", LegacySubSectionViewSet, basename="subsection-api") router.register(r"org-sections", OrgSubSectionViewSet, basename="org-section-api") urlpatterns = [ # UI Views (come first - more specific routes) path("organizations/create/", ui_views.organization_create, name="organization_create"), path("organizations//", ui_views.organization_detail, name="organization_detail"), path("organizations/", ui_views.organization_list, name="organization_list"), path("hospitals/", ui_views.hospital_list, name="hospital_list"), path("departments/", ui_views.department_list, name="department_list"), path("departments//", ui_views.department_detail, name="department_detail"), path("departments//analytics/", ui_views.department_analytics_api, name="department_analytics_api"), path("departments//complaints/", ui_views.department_complaints_list, name="department_complaints_list"), path("departments//complaints//", ui_views.department_complaint_detail, name="department_complaint_detail"), path("departments//manager-review//", ui_views.department_manager_review, name="department_manager_review"), path("manager-review-questions/", ui_views.manager_review_questions, name="manager_review_questions"), path("manager-review-questions/create/", ui_views.manager_review_question_create, name="manager_review_question_create"), path("manager-review-questions//edit/", ui_views.manager_review_question_update, name="manager_review_question_update"), path("manager-review-questions//delete/", ui_views.manager_review_question_delete, name="manager_review_question_delete"), path("departments//inquiries/", ui_views.department_inquiries_list, name="department_inquiries_list"), path("departments//inquiries//", ui_views.department_inquiry_detail, name="department_inquiry_detail"), path("departments//observations/", ui_views.department_observations_list, name="department_observations_list"), path("departments//observations//", ui_views.department_observation_detail, name="department_observation_detail"), path("departments//staff//edit/", ui_views.department_staff_update, name="department_staff_update"), path("departments//staff//", ui_views.department_staff_detail, name="department_staff_detail"), path("api/dept-complaint//", ui_views.department_record_complaint, name="department_record_complaint"), path("api/dept-inquiry//", ui_views.department_record_inquiry, name="department_record_inquiry"), path("api/dept-observation//", ui_views.department_record_observation, name="department_record_observation"), path("api/dept-suggestion//", ui_views.department_record_suggestion, name="department_record_suggestion"), path("api/dept-appreciation//", ui_views.department_record_appreciation, name="department_record_appreciation"), path("api/dept-project//", ui_views.department_record_project, name="department_record_project"), path("departments//set-role/", ui_views.set_department_role, name="set_department_role"), path("staff/create/", ui_views.staff_create, name="staff_create"), path("staff/import/", ui_views.staff_import, name="staff_import"), path("staff/import/sample-csv/", ui_views.staff_import_sample_csv, name="staff_import_sample_csv"), path("staff//edit/", ui_views.staff_update, name="staff_update"), path("staff//complaints/export/", ui_views.staff_complaints_export, name="staff_complaints_export"), path("staff//", ui_views.staff_detail, name="staff_detail"), path("staff/hierarchy/d3/", ui_views.staff_hierarchy_d3, name="staff_hierarchy_d3"), path("staff/hierarchy/", ui_views.staff_hierarchy, name="staff_hierarchy"), path("staff/", ui_views.staff_list, name="staff_list"), path("patients/", ui_views.patient_list, name="patient_list"), path("patients/search-his/", ui_views.search_his_patient, name="search_his_patient"), path("patients/save-his/", ui_views.save_his_patient, name="save_his_patient"), path("patients/create/", ui_views.patient_create, name="patient_create"), path("patients//", ui_views.patient_detail, name="patient_detail"), path( "patients//visits//", ui_views.patient_visit_journey, name="patient_visit_journey", ), path("patients//send-complaint-link/", ui_views.send_complaint_link, name="send_complaint_link"), path("patients//edit/", ui_views.patient_update, name="patient_update"), path("patients//delete/", ui_views.patient_delete, name="patient_delete"), # Department CRUD path("departments/create/", department_create, name="department_create"), path("departments//edit/", department_update, name="department_update"), path("departments//delete/", department_delete, name="department_delete"), # Section CRUD path("sections/", section_list, name="section_list"), path("sections/create/", section_create, name="section_create"), path("sections//edit/", section_update, name="section_update"), path("sections//delete/", section_delete, name="section_delete"), # Subsection CRUD path("subsections/", subsection_list, name="subsection_list"), path("subsections/create/", subsection_create, name="subsection_create"), path("subsections//edit/", subsection_update, name="subsection_update"), path("subsections//delete/", subsection_delete, name="subsection_delete"), # Org Section CRUD path("org-sections/", orgsection_list, name="orgsection_list"), path("org-sections/create/", orgsection_create, name="orgsection_create"), path("org-sections//", orgsection_detail, name="orgsection_detail"), path("org-sections//edit/", orgsection_update, name="orgsection_update"), path("org-sections//delete/", orgsection_delete, name="orgsection_delete"), # Org Sub-Section CRUD path("org-sub-sections/", orgsubsection_list, name="orgsubsection_list"), path("org-sub-sections/create/", orgsubsection_create, name="orgsubsection_create"), path("org-sub-sections//edit/", orgsubsection_update, name="orgsubsection_update"), path("org-sub-sections//delete/", orgsubsection_delete, name="orgsubsection_delete"), # API Routes for complaint form dropdowns (public access) path("dropdowns/main-sections/", api_main_section_list, name="api_main_section_list"), path("dropdowns/subsections/", api_subsection_list, name="api_subsection_list"), # AJAX Routes for cascading dropdowns in complaint form path("ajax/departments/", ajax_departments, name="ajax_departments"), # New hierarchy API endpoints path("dropdowns/departments-by-category/", api_departments_by_category, name="api_departments_by_category"), path("dropdowns/sections//", api_sections_by_department, name="api_sections_by_department"), path("dropdowns/subsections//", api_subsections_by_section, name="api_subsections_by_section"), path("dropdowns/areas/", api_areas_by_hospital, name="api_areas_by_hospital"), path("dropdowns/staff-by-department//", api_staff_by_department, name="api_staff_by_department"), path("dropdowns/department-contacts//", api_department_contacts, name="api_department_contacts"), path("dropdowns/department-staff//", api_department_staff, name="api_department_staff"), # Staff Hierarchy API (for D3 visualization) path("api/staff/hierarchy/", api_staff_hierarchy, name="api_staff_hierarchy"), path( "api/staff/hierarchy//children/", api_staff_hierarchy_children, name="api_staff_hierarchy_children", ), # API Routes (must come last - catches anything not matched above) path("api/", include(router.urls)), ]