import React from 'react'; import { useTranslation } from 'react-i18next'; import { ErrorState, formatDate, parseDate } from '@openmrs/esm-framework'; import { useClinicalMetrics, useAllAppointmentsByDate, useScheduledAppointments } from '../hooks/useClinicalMetrics'; import { useAppointmentList } from '../hooks/useAppointmentList'; import { useSelectedDateContext } from '../hooks/selected-date-context'; import MetricsCard from './metrics-card.component'; import MetricsHeader from './metrics-header.component'; import styles from './appointments-metrics.scss'; interface AppointmentMetricsProps { appointmentServiceTypes: Array; } const AppointmentsMetrics: React.FC = ({ appointmentServiceTypes }) => { const { t } = useTranslation(); const { highestServiceLoad, error } = useClinicalMetrics(); const { totalProviders } = useAllAppointmentsByDate(); const { totalScheduledAppointments, mutate: mutateScheduledAppointments } = useScheduledAppointments(appointmentServiceTypes); const { selectedDate } = useSelectedDateContext(); const formattedStartDate = formatDate(parseDate(selectedDate), { mode: 'standard', time: false, }); // TODO we will need rework these after we discuss the logic we want to use const { appointmentList: arrivedAppointments } = useAppointmentList('CheckedIn'); const { appointmentList: pendingAppointments } = useAppointmentList('Scheduled'); const filteredArrivedAppointments = appointmentServiceTypes ? arrivedAppointments.filter(({ service }) => service && appointmentServiceTypes.includes(service.uuid)) : arrivedAppointments; const filteredPendingAppointments = appointmentServiceTypes ? pendingAppointments.filter(({ service }) => service && appointmentServiceTypes.includes(service.uuid)) : pendingAppointments; if (error) { return (
); } return ( <>
); }; export default AppointmentsMetrics;