import { InlineLoading, InlineNotification } from '@carbon/react'; import { useEmrConfiguration, usePatient, useSession } from '@openmrs/esm-framework'; import dayjs from 'dayjs'; import React, { type FC, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useEncounterDetails } from '../hooks/useIpdDischargeEncounter'; import { useProvider } from '../ward-workspace/admit-patient-form-workspace/patient-admission.resources'; import { DATE_FORMART, getTreatmentDisplayText, usePatientDiagnosis, usePatientOrders, } from './discharge-printout.resource'; import styles from './discharge-printouts.scss'; import FieldInput from './field-input'; import LabResults from './lab-results'; type DischargeSummaryProps = { dischargeEncounterUuid: string; patient: { uuid: string; openmrsId: string; name: string; }; }; const DischargeSummary: FC = ({ dischargeEncounterUuid, patient: _patient }) => { const { t } = useTranslation(); const { encounter, error, isLoading } = useEncounterDetails(dischargeEncounterUuid); const { isLoading: isLoadingPatient, patient, error: patientError } = usePatient(_patient.uuid); const { isLoading: isLoadingDiagnosis, error: diagnosisError, display: diagnoses, } = usePatientDiagnosis(dischargeEncounterUuid); const session = useSession(); const { error: errorProvider, isLoading: isLoadingProvider, provider } = useProvider(session.currentProvider.uuid); const { emrConfiguration, isLoadingEmrConfiguration, errorFetchingEmrConfiguration } = useEmrConfiguration(); const { isLoading: isLoadingOders, error: orderserror, drugOrders, testOrders, complaints, drugReactions, orderEncounters, dischargeinstructions, physicalExaminations, } = usePatientOrders(dischargeEncounterUuid); const admissionDate = useMemo(() => { const admisionEncounter = encounter?.visit?.encounters?.find( (e) => e.encounterType.uuid === emrConfiguration?.admissionEncounterType?.uuid, ); if (!admisionEncounter || !admisionEncounter.encounterDatetime) return null; return admisionEncounter.encounterDatetime; }, [encounter, emrConfiguration]); if ( isLoading || isLoadingPatient || isLoadingEmrConfiguration || isLoadingDiagnosis || isLoadingProvider || isLoadingOders ) return ; if (error || patientError || errorFetchingEmrConfiguration || diagnosisError || errorProvider || orderserror) return ( ); return (
{session.sessionLocation.display}
{t('dischargeSummary', 'Discharge Summary')}
{t('diagnosis', 'Diagnosis')}

{diagnoses ?? t('noDiagnoses', 'No Diagnoses')}

{t('history', 'History')}

{`${complaints ? 'Presented with ' + complaints + '.' : ''}${ drugReactions ? t('knownDrugAllergies', 'Known drug allergies') + ': ' + drugReactions : t('noKnownDrugAllergies', 'No known drug allergies') }`}

{t('physicalExamination', 'Physical Examination')} {physicalExaminations?.length ? ( physicalExaminations?.map((examination, i) => (

{examination}

)) ) : (

{t('noExaminations', 'No Examinations')}

)}
{t('investigation', 'Investigation')}

{testOrders.map((order) => ( e.uuid === order.encounter.uuid)} /> ))}

{t('treatment', 'Treatment')}
{drugOrders.map((order) => (

{getTreatmentDisplayText(order)}

))}
{t('dischargeInstructions', 'Discharge Instructions')}

{dischargeinstructions ?? t('noInstructions', 'No instructions')}

); }; export default DischargeSummary;