import { useState, useEffect } from 'react'; import { utils } from '@ohif/core'; const { formatPN, formatDate } = utils; function usePatientInfo(servicesManager: AppTypes.ServicesManager) { const { displaySetService } = servicesManager.services; const [patientInfo, setPatientInfo] = useState({ PatientName: '', PatientID: '', PatientSex: '', PatientDOB: '', }); const [isMixedPatients, setIsMixedPatients] = useState(false); const displaySets = displaySetService.getActiveDisplaySets(); const checkMixedPatients = PatientID => { const displaySets = displaySetService.getActiveDisplaySets(); let isMixedPatients = false; displaySets.forEach(displaySet => { const instance = displaySet?.instances?.[0] || displaySet?.instance; if (!instance) { return; } if (instance.PatientID !== PatientID) { isMixedPatients = true; } }); setIsMixedPatients(isMixedPatients); }; const updatePatientInfo = () => { const displaySet = displaySets[0]; const instance = displaySet?.instances?.[0] || displaySet?.instance; if (!instance) { return; } setPatientInfo({ PatientID: instance.PatientID || null, PatientName: instance.PatientName ? formatPN(instance.PatientName.Alphabetic) : null, PatientSex: instance.PatientSex || null, PatientDOB: formatDate(instance.PatientBirthDate) || null, }); checkMixedPatients(instance.PatientID || null); }; useEffect(() => { const subscription = displaySetService.subscribe( displaySetService.EVENTS.DISPLAY_SETS_ADDED, () => updatePatientInfo() ); return () => subscription.unsubscribe(); }, []); useEffect(() => { updatePatientInfo(); }, [displaySets]); return { patientInfo, isMixedPatients }; } export default usePatientInfo;