import { Button, DataTable, DataTableSkeleton, Pagination, Table, TableBody, TableCell, TableContainer, TableHead, TableHeader, TableRow, TableSelectAll, TableSelectRow, } from '@carbon/react'; import { Add, ArrowRight } from '@carbon/react/icons'; import { ConfigurableLink, ErrorState, showModal, showNotification, usePagination } from '@openmrs/esm-framework'; import { CardHeader, EmptyState, usePaginationInfo } from '@openmrs/esm-patient-common-lib'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import useActiveRequests from '../hooks/useActiveRequests'; import styles from './lab-manifest-table.scss'; import PatientCCCNumbercell from './patient-ccc-no-cell.component'; interface LabManifestActiveRequestsProps { manifestUuid: string; } const LabManifestActiveRequests: React.FC = ({ manifestUuid }) => { const { error, isLoading, request: request } = useActiveRequests(manifestUuid); const { t } = useTranslation(); const [pageSize, setPageSize] = useState(10); const headerTitle = t('activeRequests', 'Active Requests'); const { results, totalPages, currentPage, goTo } = usePagination(request?.Orders ?? [], pageSize); const { pageSizes } = usePaginationInfo(pageSize, totalPages, currentPage, results.length); const headers = [ { header: t('patientName', 'Patient name'), key: 'patientName', }, { header: t('cccKDODNumber', 'CCC/KDOD Number'), key: 'cccKdod', }, { header: t('dateRequested', 'Date Requested'), key: 'dateRequested', isSortable: true, }, { header: t('actions', 'Actions'), key: 'actions', }, ]; const handleAddSelectedToManifest = ( selected: Array<{ labManifest: { uuid: string; }; order: { uuid: string; }; payload: string; }>, ) => { if (selected.length > 0) { const orders = request.Orders.filter((order) => selected.some((o) => o.order.uuid === order.orderUuid)); const dispose = showModal('lab-manifest-order-modal-form', { onClose: () => dispose(), props: { title: selected.length > 1 ? 'Add Multiple Orders To Manifest' : undefined, selectedOrders: selected, orders, }, }); } }; const tableRows = results?.map((activeRequest) => { const patientChartUrl = '${openmrsSpaBase}/patient/${patientUuid}/chart/Patient Summary'; return { id: `${activeRequest.orderUuid}`, patientName: activeRequest.patientName ? ( {activeRequest.patientName} ) : ( '--' ), cccKdod: activeRequest.cccKdod?.trim()?.replaceAll(' ', '') ? ( activeRequest.cccKdod ) : activeRequest?.patientUuid ? ( ) : ( '--' ), dateRequested: activeRequest.dateRequested, actions: ( ), }; }) ?? []; if (isLoading) { return ; } if (error) { return ; } if ((request?.Orders ?? []).length === 0) { return ( ); } return (
( <> {headers.map((header, i) => ( {header.header} ))} {rows.map((row, i) => ( {}}> {row.cells.map((cell) => ( {cell.value} ))} ))}
)} /> { goTo(page); setPageSize(pageSize); }} />
); }; export default LabManifestActiveRequests;