import React, { useCallback } from 'react'; import { Button, Toggletip, ToggletipButton, ToggletipContent } from '@carbon/react'; import { Information } from '@carbon/react/icons'; import { EmptyState } from '@openmrs/esm-patient-common-lib'; import { type OverviewPanelEntry } from './useOverviewData'; import { useTranslation } from 'react-i18next'; import { formatDatetime, navigate } from '@openmrs/esm-framework'; import CommonDataTable from './common-datatable.component'; import styles from './common-overview.scss'; const DashboardResultsCount = 5; interface CommonOverviewProps { patientUuid?: string; overviewData: Array; } const CommonOverview: React.FC = ({ patientUuid, overviewData = [] }) => { const { t } = useTranslation(); const headers = [ { key: 'name', header: t('testName', 'Test Name') }, { key: 'value', header: t('value', 'Value') }, { key: 'range', header: t('referenceRange', 'Reference range') }, ]; const handleSeeAvailableResults = useCallback(() => { navigate({ to: `\${openmrsSpaBase}/patient/${patientUuid}/chart/results` }); }, [patientUuid]); if (!overviewData.length) return ( ); return ( <> {(() => { const cards = overviewData.map(([title, type, data, effectiveDateTime, issuedDateTime, uuid]) => (
{formatDatetime(effectiveDateTime, { mode: 'wide' })}
), tableHeaders: headers, }} /> {data.length > DashboardResultsCount && ( )}
)); return cards.reduce((acc, val, i, { length }) => { acc.push(val); if (i < length - 1) { acc.push(); } return acc; }, []); })()} ); }; const Separator = ({ ...props }) =>
; const InfoTooltip = ({ effectiveDateTime, issuedDateTime }) => { const { t } = useTranslation(); return (

{t('dateCollected', 'Displaying date collected')}

{t('ordered', 'Ordered')}: {' '} {formatDatetime(effectiveDateTime, { mode: 'wide' })}

{t('resulted', 'Resulted')}: {' '} {formatDatetime(issuedDateTime, { mode: 'wide' })}

); }; export default CommonOverview;