import React, { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, DataTableSkeleton, InlineNotification, Stack } from '@carbon/react'; import { ArrowLeftIcon, ErrorState, ExtensionSlot, getPatientName, PatientBannerContactDetails, PatientBannerPatientInfo, PatientBannerToggleContactDetailsButton, PatientPhoto, usePatient, useVisit, Workspace2, type Workspace2DefinitionProps, } from '@openmrs/esm-framework'; import { AddPatientToQueueContextProvider } from './add-patient-to-queue-context'; import ExistingVisitFormComponent from './existing-visit-form/existing-visit-form.component'; import styles from './create-queue-entry.scss'; interface CreateQueueEntryWorkspaceProps { selectedPatientUuid: string; currentServiceQueueUuid?: string; } /** * * This is the component that appears when clicking on a search result in the "Add patient to queue" workspace, */ const CreateQueueEntryWorkspace: React.FC< Workspace2DefinitionProps< CreateQueueEntryWorkspaceProps, { startVisitWorkspaceName: string; }, {} > > = ({ closeWorkspace, workspaceProps: { selectedPatientUuid, currentServiceQueueUuid }, windowProps: { startVisitWorkspaceName }, launchChildWorkspace, }) => { const { t } = useTranslation(); const { patient } = usePatient(selectedPatientUuid); const { activeVisit, isLoading, error } = useVisit(selectedPatientUuid); const [showContactDetails, setShowContactDetails] = useState(false); const handleToggleContactDetails = useCallback(() => { setShowContactDetails((value) => !value); }, []); const patientName = patient && getPatientName(patient); if (!patient) { return null; } return (
{showContactDetails ? ( ) : null}
{isLoading ? ( ) : error ? ( ) : activeVisit ? ( ) : ( )}
); }; export default CreateQueueEntryWorkspace;