UNPKG

@medplum/dosespot-react

Version:

Medplum DoseSpot React SDK

3 lines (2 loc) 3.4 kB
var MEDPLUM_BOT_SYSTEM="https://www.medplum.com/bots",DOSESPOT_PATIENT_ID_SYSTEM="https://dosespot.com/patient-id",DOSESPOT_PATIENT_SYNC_BOT={system:MEDPLUM_BOT_SYSTEM,value:"dosespot-patient-sync-bot"},DOSESPOT_IFRAME_BOT={system:MEDPLUM_BOT_SYSTEM,value:"dosespot-iframe-bot"},DOSESPOT_MEDICATION_HISTORY_BOT={system:MEDPLUM_BOT_SYSTEM,value:"dosespot-medication-history-bot"},DOSESPOT_PRESCRIPTIONS_SYNC_BOT={system:MEDPLUM_BOT_SYSTEM,value:"dosespot-prescriptions-sync-bot"},DOSESPOT_NOTIFICATION_COUNTS_BOT={system:MEDPLUM_BOT_SYSTEM,value:"dosespot-notification-counts-bot"};import{useMedplum}from"@medplum/react-hooks";import{useCallback,useEffect,useRef,useState}from"react";function useDoseSpotIFrame(options){let medplum=useMedplum(),{patientId,onPatientSyncSuccess,onIframeSuccess,onError}=options,initializingRef=useRef(!1),[iframeUrl,setIframeUrl]=useState(void 0),onPatientSyncSuccessRef=useRef(onPatientSyncSuccess);onPatientSyncSuccessRef.current=onPatientSyncSuccess;let onIframeSuccessRef=useRef(onIframeSuccess);onIframeSuccessRef.current=onIframeSuccess;let onErrorRef=useRef(onError);onErrorRef.current=onError;let initPage=useCallback(async()=>{if(!initializingRef.current){initializingRef.current=!0;try{patientId&&(await medplum.executeBot(DOSESPOT_PATIENT_SYNC_BOT,{patientId}),onPatientSyncSuccessRef.current?.());let result=await medplum.executeBot(DOSESPOT_IFRAME_BOT,{patientId});result.url&&(setIframeUrl(result.url),onIframeSuccessRef.current?.(result.url))}catch(err){onErrorRef.current?.(err)}}},[medplum,patientId]);return useEffect(()=>{initPage().catch(console.error)},[initPage]),iframeUrl}import{useMedplum as useMedplum2}from"@medplum/react-hooks";import{useCallback as useCallback2,useEffect as useEffect2,useRef as useRef2,useState as useState2}from"react";var DEFAULT_REFRESH_INTERVAL_MILLISECONDS=1e4;function useDoseSpotNotifications(options){let medplum=useMedplum2(),{onChange,onError}=options??{},hasDoseSpot=medplum.getProjectMembership()?.identifier?.some(i=>i.system?.includes("dosespot")),refreshInterval=options?.refreshIntervalMilliseconds??DEFAULT_REFRESH_INTERVAL_MILLISECONDS,timerRef=useRef2(void 0),[unreadCount,setUnreadCount]=useState2(void 0),stopTimer=useCallback2(()=>{let timerId=timerRef.current;timerId&&clearInterval(timerId)},[]),updateCount=useCallback2(async()=>{try{let result=await medplum.executeBot(DOSESPOT_NOTIFICATION_COUNTS_BOT,{}),newCount=0;result.PendingPrescriptionsCount&&(newCount+=result.PendingPrescriptionsCount),result.PendingRxChangeCount&&(newCount+=result.PendingRxChangeCount),result.RefillRequestsCount&&(newCount+=result.RefillRequestsCount),result.TransactionErrorsCount&&(newCount+=result.TransactionErrorsCount),newCount!==unreadCount&&(setUnreadCount(newCount),onChange?.(newCount))}catch(err){onError?.(err),stopTimer()}},[medplum,unreadCount,onChange,onError,stopTimer]),startTimer=useCallback2(()=>{timerRef.current=setInterval(()=>{updateCount().catch(console.error)},refreshInterval)},[updateCount,refreshInterval]);return useEffect2(()=>(hasDoseSpot&&startTimer(),stopTimer),[hasDoseSpot,startTimer,stopTimer]),unreadCount}export{DOSESPOT_IFRAME_BOT,DOSESPOT_MEDICATION_HISTORY_BOT,DOSESPOT_NOTIFICATION_COUNTS_BOT,DOSESPOT_PATIENT_ID_SYSTEM,DOSESPOT_PATIENT_SYNC_BOT,DOSESPOT_PRESCRIPTIONS_SYNC_BOT,MEDPLUM_BOT_SYSTEM,useDoseSpotIFrame,useDoseSpotNotifications}; //# sourceMappingURL=index.mjs.map