import React, { Suspense, lazy } from 'react'; import { TabPanels, TabList, Tabs, Tab, TabPanel } from '@carbon/react'; import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import { useOrdersWorkList } from '../hooks/useOrdersWorklist'; import { useImagingOrderStats } from '../shared/imaging.resource'; import styles from './imaging-tabs.scss'; // Lazy-load tab content to reduce initial bundle size const ImagingOrderSearch = lazy(() => import('./search/imaging-order-search.component')); const TestsOrdered = lazy(() => import('./test-ordered/tests-ordered.component').then((m) => ({ default: m.TestsOrdered })), ); const WorkList = lazy(() => import('./work-list/work-list.component')); const ReferredTests = lazy(() => import('./referred-test/referred-ordered.component').then((m) => ({ default: m.ReferredTests })), ); const Review = lazy(() => import('./review-ordered/review-ordered.component').then((m) => ({ default: m.Review })), ); const ApprovedOrders = lazy(() => import('./approved/approved-orders.component').then((m) => ({ default: m.ApprovedOrders })), ); const OrdersNotDone = lazy(() => import('./orders-not-done/orders-not-done.component')); export const ImagingTabs: React.FC = () => { const { t } = useTranslation(); const params = useParams<{ patientUuid: string }>(); const { activeOrdersCount, workListCount, referredTestsCount, ordersNotDoneCount } = useOrderCounts(); const { pendingReviewCount, approvedOrdersCount } = useCompletedOrders(); const searchTab = [ { label: 'search', text: t('search', 'Search'), count: 0, LazyComponent: ImagingOrderSearch, componentProps: {} }, ]; const tabsData = [ ...(params.patientUuid ? searchTab : []), { label: 'pendingOrders', text: t('activeOrders', 'Active Orders'), count: activeOrdersCount, LazyComponent: TestsOrdered, componentProps: {}, }, { label: 'workList', text: t('workList', 'WorkList'), count: workListCount, LazyComponent: WorkList, componentProps: { fulfillerStatus: 'IN_PROGRESS' as const }, }, { label: 'referredProcedures', text: t('referredOut', 'Referred Out'), count: referredTestsCount, LazyComponent: ReferredTests, componentProps: {}, }, { label: 'review', text: t('pendingReview', 'Pending Review'), count: pendingReviewCount, LazyComponent: Review, componentProps: {}, }, { label: 'approved', text: t('approved', 'Approved'), count: approvedOrdersCount, LazyComponent: ApprovedOrders, componentProps: {}, }, { label: 'notDone', text: t('notDone', 'Not Done'), count: ordersNotDoneCount, LazyComponent: OrdersNotDone, componentProps: { fulfillerStatus: 'DECLINED' as const }, }, ]; return (