app.infrastructure.urls

 1from rest_framework.routers import DefaultRouter
 2from rest_framework_nested import routers
 3from django.urls import path, include
 4from .views import (
 5    HospitalViewSet, PasswordChangeViewSet, RoleViewSet, HospitalUserViewSet,
 6    ShiftViewSet, BlockViewSet, WardViewSet, ApproverHierarchyViewSet,
 7    SwitchBlock, SwitchWard
 8)
 9
10# Main router for hospitals
11router = DefaultRouter()
12router.register(r'hospitals', HospitalViewSet, basename='hospital')
13
14# Nested routers for hospital resources
15hospitals_router = routers.NestedDefaultRouter(router, r'hospitals', lookup='hospital')
16hospitals_router.register(r'roles', RoleViewSet, basename='hospital-roles')
17hospitals_router.register(r'users', HospitalUserViewSet, basename='hospital-users')
18hospitals_router.register(r'shifts', ShiftViewSet, basename='hospital-shifts')
19hospitals_router.register(r'blocks', BlockViewSet, basename='hospital-blocks')
20hospitals_router.register(r'hierarchies', ApproverHierarchyViewSet, basename='hospital-hierarchies')
21hospitals_router.register(r'wards', WardViewSet, basename='hospital-wards')
22
23urlpatterns = [
24    # Hospital CRUD and nested resources
25    path('api/', include(router.urls)),
26    path('api/', include(hospitals_router.urls)),
27
28    # Custom endpoints
29    path('api/set-password/', PasswordChangeViewSet.as_view(), name='set_password'),
30    path('api/switch-block/', SwitchBlock.as_view(), name='switch_block'),
31    path('api/switch-ward/', SwitchWard.as_view(), name='switch_ward'),
32]
33
34"""
35Infrastructure API endpoints:
36
37- /api/hospitals/                      : Hospital CRUD
38- /api/hospitals/{hospital_pk}/roles/  : Role CRUD for a hospital
39- /api/hospitals/{hospital_pk}/users/  : Hospital user CRUD
40- /api/hospitals/{hospital_pk}/shifts/ : Shift CRUD for a hospital
41- /api/hospitals/{hospital_pk}/blocks/ : Block CRUD for a hospital
42- /api/hospitals/{hospital_pk}/hierarchies/ : Approver hierarchy CRUD
43- /api/hospitals/{hospital_pk}/wards/  : Ward CRUD for a hospital
44- /api/set-password/                   : Change user password
45- /api/switch-block/                   : Switch user's current block
46- /api/switch-ward/                    : Switch user's current ward
47
48All endpoints are documented for OpenAPI generation via drf-yasg.
49"""
router = <rest_framework.routers.DefaultRouter object>
hospitals_router = <rest_framework_nested.routers.NestedDefaultRouter object>
urlpatterns = [<URLResolver <URLPattern list> (None:None) 'api/'>, <URLResolver <URLPattern list> (None:None) 'api/'>, <URLPattern 'api/set-password/' [name='set_password']>, <URLPattern 'api/switch-block/' [name='switch_block']>, <URLPattern 'api/switch-ward/' [name='switch_ward']>]

Infrastructure API endpoints:

  • /api/hospitals/ : Hospital CRUD
  • /api/hospitals/{hospital_pk}/roles/ : Role CRUD for a hospital
  • /api/hospitals/{hospital_pk}/users/ : Hospital user CRUD
  • /api/hospitals/{hospital_pk}/shifts/ : Shift CRUD for a hospital
  • /api/hospitals/{hospital_pk}/blocks/ : Block CRUD for a hospital
  • /api/hospitals/{hospital_pk}/hierarchies/ : Approver hierarchy CRUD
  • /api/hospitals/{hospital_pk}/wards/ : Ward CRUD for a hospital
  • /api/set-password/ : Change user password
  • /api/switch-block/ : Switch user's current block
  • /api/switch-ward/ : Switch user's current ward

All endpoints are documented for OpenAPI generation via drf-yasg.