import { showNotification, useAppContext, useFeatureFlag } from '@openmrs/esm-framework'; import React, { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { WardMetricType, type WardViewContext } from '../types'; import { getWardMetricNameTranslation, getWardMetrics } from '../ward-view/ward-view.resource'; import WardMetric from './ward-metric.component'; import styles from './ward-metrics.scss'; interface WardMetricsProps { metrics?: WardMetricType[]; } const WardMetrics: React.FC = ({ metrics = [WardMetricType.PATIENTS, WardMetricType.FREE_BEDS, WardMetricType.TOTAL_BEDS, WardMetricType.PENDING_OUT], }) => { const { t } = useTranslation(); const isBedManagementModuleInstalled = useFeatureFlag('bedmanagement-module'); const { wardPatientGroupDetails } = useAppContext('ward-view-context') ?? {}; const { admissionLocationResponse, inpatientAdmissionResponse, inpatientRequestResponse } = wardPatientGroupDetails || {}; const { isLoading, error } = admissionLocationResponse ?? {}; const isDataLoading = admissionLocationResponse?.isLoading || inpatientAdmissionResponse?.isLoading || inpatientRequestResponse?.isLoading; const wardMetricValues = useMemo( () => (!wardPatientGroupDetails ? {} : getWardMetrics(wardPatientGroupDetails)), [wardPatientGroupDetails], ); if (!wardPatientGroupDetails) return <>; if (error) { showNotification({ kind: 'error', title: t('errorLoadingBedDetails', 'Error loading bed details'), description: error.message, }); } return (
{metrics.includes(WardMetricType.PATIENTS) && ( )} {metrics.includes(WardMetricType.FEMALES_OF_REPRODUCTIVE_AGE) && wardMetricValues['femalesOfReproductiveAge'] && wardMetricValues['femalesOfReproductiveAge'] !== '0' && ( )} {metrics.includes(WardMetricType.NEWBORNS) && wardMetricValues['newborns'] && wardMetricValues['newborns'] !== '0' && ( )} {isBedManagementModuleInstalled && ( <> {metrics.includes(WardMetricType.FREE_BEDS) && ( )} {metrics.includes(WardMetricType.TOTAL_BEDS) && ( )} {metrics.includes(WardMetricType.PENDING_OUT) && ( )} )}
); }; export default WardMetrics;