import React, { useState } from 'react'; import classNames from 'classnames'; import { useTranslation } from 'react-i18next'; import { StructuredListSkeleton, Tab, Tabs } from '@carbon/react'; import { formatDate, type OpenmrsResource, parseDate, useLayoutType } from '@openmrs/esm-framework'; import { type Observation } from '../types'; import { usePastVisits } from './past-visit.resource'; import EncounterList from './encounter-list.component'; import styles from './past-visit.scss'; interface PastVisitProps { patientUuid: string; } export interface FormattedEncounter { id: string; datetime: string; encounterType: string; form: OpenmrsResource; obs: Array; provider: string; visitType: string; visitUuid: string; } const PastVisit: React.FC = ({ patientUuid }) => { const { t } = useTranslation(); const { data: pastVisits, error, isLoading } = usePastVisits(patientUuid); const [selectedTabIndex, setSelectedTabIndex] = useState(0); const isTablet = useLayoutType() === 'tablet'; if (isLoading) { return ; } if (pastVisits?.length) { const encounters = mapEncounters(pastVisits[0]); const tabsClasses = classNames(styles.verticalTabs, { [styles.tabletTabs]: isTablet, [styles.desktopTabs]: !isTablet, }); const tabClass = (index) => classNames(styles.tab, styles.bodyLong01, { [styles.selectedTab]: selectedTabIndex === index, }); return (
{pastVisits?.length ? pastVisits[0]?.visitType.display : '--'}

{pastVisits?.length ? formatDate(parseDate(pastVisits[0]?.startDatetime)) : '--'}

setSelectedTabIndex(0)} label={t('vitals', 'Vitals')} > setSelectedTabIndex(1)} label={t('notes', 'Notes')} > setSelectedTabIndex(2)} label={t('medications', 'Medications')} > setSelectedTabIndex(3)} label={t('encounters', 'Encounters')} >
); } return

{t('noPreviousVisitFound', 'No previous visit found')}

; }; export function mapEncounters(visit) { return visit?.encounters?.map((encounter) => ({ id: encounter?.uuid, datetime: encounter?.encounterDatetime, encounterType: encounter?.encounterType?.display, form: encounter?.form, obs: encounter?.obs, provider: encounter?.encounterProviders?.length > 0 ? encounter.encounterProviders[0].provider?.person?.display : '--', visitUuid: visit?.visitType.uuid, visitType: visit?.visitType?.name, })); } export default PastVisit;