diff --git a/src/views/Patient/MedReqDropDown/MedReqDropDown.css b/src/views/Patient/MedReqDropDown/MedReqDropDown.css index e69de29..15cc7cc 100644 --- a/src/views/Patient/MedReqDropDown/MedReqDropDown.css +++ b/src/views/Patient/MedReqDropDown/MedReqDropDown.css @@ -0,0 +1,25 @@ +.etasuButtonText { + margin-bottom: 0px; + font-weight: bold; + font-size: 14px; +} + +.etasuButton { + width: 50%; +} + +.etasuIcon { + font-size: 24px; +} + +.etasuButtonTimestamp { + max-width: 50%; + margin: 0 auto; + font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + font-size: 0.8rem; +} + +.timestampString { + font-size: 0.7rem; + opacity: 0.8; +} \ No newline at end of file diff --git a/src/views/Patient/MedReqDropDown/MedReqDropDown.tsx b/src/views/Patient/MedReqDropDown/MedReqDropDown.tsx index 8552768..1983f4e 100644 --- a/src/views/Patient/MedReqDropDown/MedReqDropDown.tsx +++ b/src/views/Patient/MedReqDropDown/MedReqDropDown.tsx @@ -14,6 +14,8 @@ import { } from '@mui/material'; import RefreshIcon from '@mui/icons-material/Refresh'; import Box from '@mui/material/Box'; +import ListIcon from '@mui/icons-material/List'; +import LocalPharmacyIcon from '@mui/icons-material/LocalPharmacy'; import { BundleEntry, Patient, MedicationRequest, Practitioner, Resource } from 'fhir/r4'; import Client from 'fhirclient/lib/Client'; import { ReactElement, useEffect, useState } from 'react'; @@ -21,7 +23,10 @@ import example from '../../../cds-hooks/prefetch/exampleHookService.json'; // TO import { hydrate } from '../../../cds-hooks/prefetch/PrefetchHydrator'; import { Hook, Card as HooksCard, OrderSelectHook } from '../../../cds-hooks/resources/HookTypes'; import OrderSelect from '../../../cds-hooks/resources/OrderSelect'; -import { getDrugCodeFromMedicationRequest } from '../../Questionnaire/questionnaireUtil'; +import { + getDrugCodeFromMedicationRequest, + getDrugCodeableConceptFromMedicationRequest +} from '../../Questionnaire/questionnaireUtil'; import './MedReqDropDown.css'; import * as env from 'env-var'; import { MedicationBundle, submitToREMS } from '../PatientView'; @@ -35,6 +40,10 @@ import EtasuStatus from './etasuStatus/EtasuStatus'; // Adding in Pharmacy import PharmacyStatus from './pharmacyStatus/PharmacyStatus'; import sendRx from './rxSend/rxSend'; +import axios from 'axios'; +import MetRequirements from './etasuStatus/MetRequirements'; +import RemsMetEtasuResponse from './etasuStatus/RemsMetEtasuResponse'; +import DoctorOrder from './pharmacyStatus/DoctorOrder'; interface MedReqDropDownProps { client: Client; @@ -71,10 +80,12 @@ function MedReqDropDown({ //ETASU const [showEtasu, setShowEtasu] = useState(false); - + const [remsAdminResponse, setRemsAdminResponse] = useState(null); + const [checkedEtasuTime, setCheckedEtasuTime] = useState(0); // Pharmacy const [showPharmacy, setShowPharmacy] = useState(false); - + const [pimsResponse, setPimsResponse] = useState(null); + const [checkedPharmacyTime, setCheckedPharmacyTime] = useState(0); const [sendRxEnabled, setSendRxEnabled] = useState(false); useEffect(() => { @@ -169,7 +180,143 @@ function MedReqDropDown({ setSendRxEnabled(false); } }, [patient, practitioner, selectedMedicationCardBundle]); + useEffect(() => { + refreshEtasuBundle(); + refreshPharmacyBundle(); + }, [selectedMedicationCard]); + + const convertTimeDifference = (start: number) => { + const end = Date.now(); + const difference = end - start; + const diffMin = difference / 60000; + let prefix = 'a long time'; + if (diffMin < 1) { + prefix = 'a few seconds'; + } else if (diffMin > 1 && diffMin < 2) { + prefix = 'a minute'; + } else if (diffMin > 2 && diffMin < 60) { + prefix = `${Math.round(diffMin)} minutes`; + } else if (diffMin > 60 && diffMin < 120) { + prefix = 'an hour'; + } else if (diffMin > 120 && diffMin < 1440) { + prefix = `${Math.round(diffMin / 60)} hours`; + } else if (diffMin > 1440 && diffMin < 2880) { + prefix = 'a day'; + } else if (diffMin > 2880) { + prefix = `${Math.round(diffMin / 1440)} days`; + } + return `Last checked ${prefix} ago`; + }; + const refreshPharmacyBundle = () => { + // setSpin(true); + const patientFirstName = patient?.name?.at(0)?.given?.at(0); + const patientLastName = patient?.name?.at(0)?.family; + const patientDOB = patient?.birthDate; + const rxDate = selectedMedicationCard?.authoredOn; + setCheckedPharmacyTime(Date.now()); + let drugCodeableConcept = undefined; + if (selectedMedicationCard) { + drugCodeableConcept = getDrugCodeableConceptFromMedicationRequest(selectedMedicationCard); + } + const drugNames = drugCodeableConcept?.coding?.at(0)?.display; + console.log( + 'refreshPharmacyBundle: ' + + patientFirstName + + ' ' + + patientLastName + + ' - ' + + patientDOB + + ' - ' + + rxDate + + ' - ' + + drugNames + ); + const ndcDrugCoding = drugCodeableConcept?.coding?.find( + ({ system }) => system === 'http://hl7.org/fhir/sid/ndc' + ); + let queryString: string = + 'rxDate=' + rxDate + '&drugNames=' + encodeURIComponent(drugNames || ''); + if (ndcDrugCoding != undefined) { + queryString = queryString + '&drugNdcCode=' + ndcDrugCoding?.code; + } + const pharmacyUrl = `${env + .get('REACT_APP_PHARMACY_SERVER_BASE') + .asString()}/doctorOrders/api/getRx/${patientFirstName}/${patientLastName}/${patientDOB}?${queryString}`; + console.log(pharmacyUrl); + axios({ + method: 'get', + url: pharmacyUrl + }).then( + response => { + setPimsResponse(response.data); + }, + error => { + console.log(error); + } + ); + }; + const refreshEtasuBundle = () => { + // setSpin(true); + const patientFirstName = patient?.name?.at(0)?.given?.at(0); + const patientLastName = patient?.name?.at(0)?.family; + const patientDOB = patient?.birthDate; + let drugCode = undefined; + setCheckedEtasuTime(Date.now()); + if (selectedMedicationCard) { + drugCode = getDrugCodeFromMedicationRequest(selectedMedicationCard)?.code; + } + console.log( + 'refreshEtasuBundle: ' + + patientFirstName + + ' ' + + patientLastName + + ' - ' + + patientDOB + + ' - ' + + drugCode + ); + const etasuUrl = `${env + .get('REACT_APP_REMS_ADMIN_SERVER_BASE') + .asString()}/etasu/met/patient/${patientFirstName}/${patientLastName}/${patientDOB}/drugCode/${drugCode}`; + + axios({ + method: 'get', + url: etasuUrl + }).then( + response => { + // Sorting an array mutates the data in place. + const remsMetRes = response.data as RemsMetEtasuResponse; + if (remsMetRes.metRequirements) { + remsMetRes.metRequirements.sort((first: MetRequirements, second: MetRequirements) => { + // Keep the other forms unsorted. + if (second.requirementName.includes('Patient Status Update')) { + // Sort the Patient Status Update forms in descending order of timestamp. + return second.requirementName.localeCompare(first.requirementName); + } + return 0; + }); + } + console.log(response.data); + setRemsAdminResponse(response.data); + }, + error => { + console.log(error); + } + ); + }; + const renderTimestamp = (checkedTime: number) => { + return ( +
+
+

{convertTimeDifference(checkedTime)}

+
+
+

{new Date(checkedTime).toLocaleString()}

+
+
+ ); + }; const modal_style = { position: 'absolute', top: '50%', @@ -190,6 +337,30 @@ function MedReqDropDown({ : false; const label = 'Select Medication Request'; + let color = '#0c0c0c'; // gray + if (remsAdminResponse?.status === 'Approved') { + color = '#5cb85c'; // green + } else if (remsAdminResponse?.status === 'Pending') { + color = '#f0ad4e'; // orange + } + const pStatus = pimsResponse?.dispenseStatus; + let pColor = '#0c0c0c'; // white + if (pStatus === 'Approved') { + pColor = '#5cb85c'; // green + } else if (pStatus === 'Pending') { + pColor = '#f0ad4e'; // orange + } else if (pStatus === 'Picked Up') { + pColor = '#0275d8'; // blue + } + + const etasuSx = { + backgroundColor: color, + ':hover': { filter: 'brightness(110%)', backgroundColor: color } + }; + const pharmSx = { + backgroundColor: pColor, + ':hover': { filter: 'brightness(110%)', backgroundColor: pColor } + }; return ( <> @@ -224,7 +395,8 @@ function MedReqDropDown({ - Code: {getDrugCodeFromMedicationRequest(selectedMedicationCard)?.code} + Medication Code:{' '} + {getDrugCodeFromMedicationRequest(selectedMedicationCard)?.code} - + {etasu_status_enabled && ( - - + {renderTimestamp(checkedEtasuTime)} )} {pharmacy_status_enabled && ( - - + {renderTimestamp(checkedPharmacyTime)} )} {sendRxEnabled && ( @@ -301,14 +493,18 @@ function MedReqDropDown({ - + diff --git a/src/views/Patient/MedReqDropDown/etasuStatus/EtasuStatus.tsx b/src/views/Patient/MedReqDropDown/etasuStatus/EtasuStatus.tsx index 1d19d83..eb80c80 100644 --- a/src/views/Patient/MedReqDropDown/etasuStatus/EtasuStatus.tsx +++ b/src/views/Patient/MedReqDropDown/etasuStatus/EtasuStatus.tsx @@ -22,70 +22,26 @@ import './EtasuStatus.css'; import { getDrugCodeFromMedicationRequest } from '../../../Questionnaire/questionnaireUtil'; interface EtasuStatusProps { - patient: Patient | null; - medication: MedicationRequest | undefined; + callback: () => void; + remsAdminResponse: RemsMetEtasuResponse | null; update: boolean; } const EtasuStatus = (props: EtasuStatusProps) => { const [spin, setSpin] = useState(false); - const [remsAdminResponse, setRemsAdminResponse] = useState(null); + + const updateEtasu = () => { + setSpin(true); + props.callback(); + }; useEffect(() => { if (props.update) { - refreshEtasuBundle(); + updateEtasu(); } }, [props.update]); - const refreshEtasuBundle = () => { - setSpin(true); - const patientFirstName = props.patient?.name?.at(0)?.given?.at(0); - const patientLastName = props.patient?.name?.at(0)?.family; - const patientDOB = props.patient?.birthDate; - let drugCode = undefined; - if (props.medication) { - drugCode = getDrugCodeFromMedicationRequest(props.medication)?.code; - } - console.log( - 'refreshEtasuBundle: ' + - patientFirstName + - ' ' + - patientLastName + - ' - ' + - patientDOB + - ' - ' + - drugCode - ); - const etasuUrl = `${env - .get('REACT_APP_REMS_ADMIN_SERVER_BASE') - .asString()}/etasu/met/patient/${patientFirstName}/${patientLastName}/${patientDOB}/drugCode/${drugCode}`; - - axios({ - method: 'get', - url: etasuUrl - }).then( - response => { - // Sorting an array mutates the data in place. - (response.data as RemsMetEtasuResponse).metRequirements.sort( - (first: MetRequirements, second: MetRequirements) => { - // Keep the other forms unsorted. - if (second.requirementName.includes('Patient Status Update')) { - // Sort the Patient Status Update forms in descending order of timestamp. - return second.requirementName.localeCompare(first.requirementName); - } - return 0; - } - ); - console.log(response.data); - setRemsAdminResponse(response.data); - }, - error => { - console.log(error); - } - ); - }; - - const status = remsAdminResponse?.status; + const status = props.remsAdminResponse?.status; let color = '#f7f7f7'; // off-white if (status === 'Approved') { color = '#5cb85c'; // green @@ -99,13 +55,15 @@ const EtasuStatus = (props: EtasuStatusProps) => {
-
Case Number: {remsAdminResponse?.case_number || 'N/A'}
-
Status: {remsAdminResponse?.status || 'N/A'}
+
+ Case Number: {props.remsAdminResponse?.case_number || 'N/A'} +
+
Status: {props.remsAdminResponse?.status || 'N/A'}
- + {

ETASU

- {remsAdminResponse ? ( + {props.remsAdminResponse ? ( - {remsAdminResponse?.metRequirements.map((metRequirements: MetRequirements) => ( + {props.remsAdminResponse?.metRequirements.map((metRequirements: MetRequirements) => ( { const patientEnrollmentForm: MetRequirements = { completed: true, @@ -93,9 +92,7 @@ describe('Test the EtasuStatus Component', () => { const update = false; // render the module - render( - - ); + render( {}} update={update} remsAdminResponse={null} />); // test the status fields and headings are present expectContains('REMS Status'); @@ -112,96 +109,49 @@ describe('Test the EtasuStatus Component', () => { test('Loads data on start', async () => { const update = true; - const mockRequest = nock(rems_admin_server_base); - - // setup the mocks to handle the axios calls - const patientFirstName = testPatient.name?.at(0)?.given?.at(0); - const patientLastName = testPatient?.name?.at(0)?.family; - const patientDOB = testPatient.birthDate; - const drugCode = testMedicationRequest.medicationCodeableConcept?.coding?.at(0)?.code; - const url = `/etasu/met/patient/${patientFirstName}/${patientLastName}/${patientDOB}/drugCode/${drugCode}`; const etasuStatus = generateEtasuStatus(); - - mockRequest - .defaultReplyHeaders({ - 'access-control-allow-origin': '*', - 'access-control-allow-credentials': 'true' - }) - .get(url) - .reply(200, etasuStatus); + let called = false; + const callback = () => { + called = true; + }; // render the module - render( - - ); + render(); + // just need to call callback + expect(called).toBeTruthy(); + }); + test('Renders passed data', async () => { + // render the module + const etasu = generateEtasuStatus(); + render( {}} update={false} remsAdminResponse={etasu} />); // verify that the values are updated from the call to get the ETASU - expect(await screen.findByText('Case Number: ' + etasuStatus.case_number)).toBeInTheDocument(); - expect(await screen.findByText('Status: ' + etasuStatus.status)).toBeInTheDocument(); + expect(await screen.findByText('Case Number: ' + etasu.case_number)).toBeInTheDocument(); + expect(await screen.findByText('Status: ' + etasu.status)).toBeInTheDocument(); expect(await screen.findAllByTestId('etasu-item')).toHaveLength(3); }); - test('Update retrieves data', async () => { const update = false; - - const mockRequest = nock(rems_admin_server_base); + let called = false; + const callback = () => { + called = true; + }; // render the module - render( - - ); - - // setup the mocks to handle the axios calls - const patientFirstName = testPatient.name?.at(0)?.given?.at(0); - const patientLastName = testPatient?.name?.at(0)?.family; - const patientDOB = testPatient.birthDate; - const drugCode = testMedicationRequest.medicationCodeableConcept?.coding?.at(0)?.code; - const url = `/etasu/met/patient/${patientFirstName}/${patientLastName}/${patientDOB}/drugCode/${drugCode}`; - const etasuStatus = generateEtasuStatus(); - - mockRequest - .defaultReplyHeaders({ - 'access-control-allow-origin': '*', - 'access-control-allow-credentials': 'true' - }) - .get(url) - .reply(200, etasuStatus); - + render(); + expect(called).toBeFalsy(); // click the refresh button const refreshButton = screen.getByTestId('refresh'); fireEvent.click(refreshButton); - // verify that the values are updated from the call to get the ETASU - expect(await screen.findByText('Case Number: ' + etasuStatus.case_number)).toBeInTheDocument(); - expect(await screen.findByText('Status: ' + etasuStatus.status)).toBeInTheDocument(); - expect(await screen.findAllByTestId('etasu-item')).toHaveLength(3); + expect(called).toBeTruthy(); }); test('Failed to load status', async () => { const update = false; - const mockRequest = nock(rems_admin_server_base); - // render the module - render( - - ); - - // setup the mocks to handle the axios calls - const patientFirstName = testPatient.name?.at(0)?.given?.at(0); - const patientLastName = testPatient?.name?.at(0)?.family; - const patientDOB = testPatient.birthDate; - const drugCode = testMedicationRequest.medicationCodeableConcept?.coding?.at(0)?.code; - const url = `/etasu/met/patient/${patientFirstName}/${patientLastName}/${patientDOB}/drugCode/${drugCode}`; - - // return an empty response like if there is no match - mockRequest - .defaultReplyHeaders({ - 'access-control-allow-origin': '*', - 'access-control-allow-credentials': 'true' - }) - .get(url) - .reply(200, ''); + render( {}} update={update} remsAdminResponse={null} />); // click the refresh button const refreshButton = screen.getByTestId('refresh'); diff --git a/src/views/Patient/MedReqDropDown/pharmacyStatus/PharmacyStatus.tsx b/src/views/Patient/MedReqDropDown/pharmacyStatus/PharmacyStatus.tsx index 03eb469..f015b8f 100644 --- a/src/views/Patient/MedReqDropDown/pharmacyStatus/PharmacyStatus.tsx +++ b/src/views/Patient/MedReqDropDown/pharmacyStatus/PharmacyStatus.tsx @@ -12,70 +12,21 @@ import { getDrugCodeableConceptFromMedicationRequest } from '../../../Questionna import * as env from 'env-var'; interface PharmacyStatusProps { - patient: Patient | null; - medication: MedicationRequest | undefined; + callback: () => void; + pimsResponse: DoctorOrder | null; update: boolean; } const PharmacyStatus = (props: PharmacyStatusProps) => { const [spin, setSpin] = useState(false); - const [pimsResponse, setPimsResponse] = useState(null); - useEffect(() => { if (props.update) { - refreshPharmacyBundle(); + setSpin(true); + props.callback(); } }, [props.update]); - const refreshPharmacyBundle = () => { - setSpin(true); - const patientFirstName = props.patient?.name?.at(0)?.given?.at(0); - const patientLastName = props.patient?.name?.at(0)?.family; - const patientDOB = props.patient?.birthDate; - const rxDate = props.medication?.authoredOn; - let drugCodeableConcept = undefined; - if (props.medication) { - drugCodeableConcept = getDrugCodeableConceptFromMedicationRequest(props.medication); - } - const drugNames = drugCodeableConcept?.coding?.at(0)?.display; - console.log( - 'refreshPharmacyBundle: ' + - patientFirstName + - ' ' + - patientLastName + - ' - ' + - patientDOB + - ' - ' + - rxDate + - ' - ' + - drugNames - ); - const ndcDrugCoding = drugCodeableConcept?.coding?.find( - ({ system }) => system === 'http://hl7.org/fhir/sid/ndc' - ); - let queryString: string = - 'rxDate=' + rxDate + '&drugNames=' + encodeURIComponent(drugNames || ''); - if (ndcDrugCoding != undefined) { - queryString = queryString + '&drugNdcCode=' + ndcDrugCoding?.code; - } - const pharmacyUrl = `${env - .get('REACT_APP_PHARMACY_SERVER_BASE') - .asString()}/doctorOrders/api/getRx/${patientFirstName}/${patientLastName}/${patientDOB}?${queryString}`; - console.log(pharmacyUrl); - axios({ - method: 'get', - url: pharmacyUrl - }).then( - response => { - setPimsResponse(response.data); - }, - error => { - console.log(error); - } - ); - }; - - const status = pimsResponse?.dispenseStatus; + const status = props.pimsResponse?.dispenseStatus; let color = '#f7f7f7'; // white if (status === 'Approved') { color = '#5cb85c'; // green @@ -91,13 +42,13 @@ const PharmacyStatus = (props: PharmacyStatusProps) => {
-
ID: {pimsResponse?._id || 'N/A'}
-
Status: {pimsResponse?.dispenseStatus || 'N/A'}
+
ID: {props.pimsResponse?._id || 'N/A'}
+
Status: {props.pimsResponse?.dispenseStatus || 'N/A'}
- + setSpin(false)} diff --git a/src/views/Patient/MedReqDropDown/pharmacyStatus/__test__/PharmacyStatus.test.tsx b/src/views/Patient/MedReqDropDown/pharmacyStatus/__test__/PharmacyStatus.test.tsx index b79e519..ec9159f 100644 --- a/src/views/Patient/MedReqDropDown/pharmacyStatus/__test__/PharmacyStatus.test.tsx +++ b/src/views/Patient/MedReqDropDown/pharmacyStatus/__test__/PharmacyStatus.test.tsx @@ -98,7 +98,6 @@ const generateDoctorOrder = () => { }; return doctorOrder; }; - describe('Test the PharmacyStatus Component', () => { function expectContains(value: string) { const element = screen.getByText(value); @@ -109,9 +108,7 @@ describe('Test the PharmacyStatus Component', () => { const update = false; // render the module - render( - - ); + render( {}} pimsResponse={null} />); // test the status fields and headings are present expectContains('Pharmacy Status'); @@ -122,129 +119,47 @@ describe('Test the PharmacyStatus Component', () => { const refreshButton = screen.getByTestId('refresh'); expect(refreshButton).toBeInTheDocument(); }); - - test('Loads data on start', async () => { - const update = true; - - const mockRequest = nock(pharmacy_server_base); - - // setup the mocks to handle the axios calls - const patientFirstName = testPatient.name?.at(0)?.given?.at(0); - const patientLastName = testPatient?.name?.at(0)?.family; - const patientDOB = testPatient.birthDate; - const rxDate = testMedicationRequest.authoredOn; - const drugNames = testMedicationRequest.medicationCodeableConcept?.coding?.at(0)?.display; - const ndcDrugCoding = testMedicationRequest.medicationCodeableConcept?.coding?.find( - ({ system }) => system === 'http://hl7.org/fhir/sid/ndc' - ); - - let queryString: string = - 'rxDate=' + rxDate + '&drugNames=' + encodeURIComponent(drugNames || ''); - if (ndcDrugCoding != undefined) { - queryString = queryString + '&drugNdcCode=' + ndcDrugCoding?.code; - } - const url = `/doctorOrders/api/getRx/${patientFirstName}/${patientLastName}/${patientDOB}?${queryString}`; + test('Renders order', async () => { const doctorOrder = generateDoctorOrder(); + render( {}} pimsResponse={doctorOrder} />); - mockRequest - .defaultReplyHeaders({ - 'access-control-allow-origin': '*', - 'access-control-allow-credentials': 'true' - }) - .get(url) - .reply(200, doctorOrder); + expect(await screen.findByText(`ID: ${doctorOrder._id}`)).toBeInTheDocument(); + expect(await screen.findByText(`Status: ${doctorOrder.dispenseStatus}`)).toBeInTheDocument(); + }); + test('Loads data on start', () => { + const update = true; + let pimsResponse = false; + const callback = () => { + pimsResponse = true; + }; // render the module - render( - - ); - + render(); // verify that the values are updated from the call to get the Pharmacy Status - expect(await screen.findByText('ID: ' + doctorOrder._id)).toBeInTheDocument(); - expect(await screen.findByText('Status: ' + doctorOrder.dispenseStatus)).toBeInTheDocument(); + expect(pimsResponse).toBeTruthy(); }); - test('Update retrieves data', async () => { + test('Update retrieves data', () => { const update = false; - - const mockRequest = nock(pharmacy_server_base); - + let called = false; + const callback = () => { + called = true; + }; // render the module - render( - - ); - - // setup the mocks to handle the axios calls - const patientFirstName = testPatient.name?.at(0)?.given?.at(0); - const patientLastName = testPatient?.name?.at(0)?.family; - const patientDOB = testPatient.birthDate; - const rxDate = testMedicationRequest.authoredOn; - const drugNames = testMedicationRequest.medicationCodeableConcept?.coding?.at(0)?.display; - const ndcDrugCoding = testMedicationRequest.medicationCodeableConcept?.coding?.find( - ({ system }) => system === 'http://hl7.org/fhir/sid/ndc' - ); - - let queryString: string = - 'rxDate=' + rxDate + '&drugNames=' + encodeURIComponent(drugNames || ''); - if (ndcDrugCoding != undefined) { - queryString = queryString + '&drugNdcCode=' + ndcDrugCoding?.code; - } - const url = `/doctorOrders/api/getRx/${patientFirstName}/${patientLastName}/${patientDOB}?${queryString}`; - const doctorOrder = generateDoctorOrder(); - - mockRequest - .defaultReplyHeaders({ - 'access-control-allow-origin': '*', - 'access-control-allow-credentials': 'true' - }) - .get(url) - .reply(200, doctorOrder); + render(); // click the refresh button const refreshButton = screen.getByTestId('refresh'); fireEvent.click(refreshButton); // verify that the values are updated from the call to get the Pharmacy Status - expect(await screen.findByText('ID: ' + doctorOrder._id)).toBeInTheDocument(); - expect(await screen.findByText('Status: ' + doctorOrder.dispenseStatus)).toBeInTheDocument(); + expect(called).toBe(true); }); test('Failed to load status', async () => { const update = true; - - const mockRequest = nock(pharmacy_server_base); - // render the module - render( - - ); - - // setup the mocks to handle the axios calls - const patientFirstName = testPatient.name?.at(0)?.given?.at(0); - const patientLastName = testPatient?.name?.at(0)?.family; - const patientDOB = testPatient.birthDate; - const rxDate = testMedicationRequest.authoredOn; - const drugNames = testMedicationRequest.medicationCodeableConcept?.coding?.at(0)?.display; - const ndcDrugCoding = testMedicationRequest.medicationCodeableConcept?.coding?.find( - ({ system }) => system === 'http://hl7.org/fhir/sid/ndc' - ); - - let queryString: string = - 'rxDate=' + rxDate + '&drugNames=' + encodeURIComponent(drugNames || ''); - if (ndcDrugCoding != undefined) { - queryString = queryString + '&drugNdcCode=' + ndcDrugCoding?.code; - } - - const url = `/doctorOrders/api/getRx/${patientFirstName}/${patientLastName}/${patientDOB}?${queryString}`; - - // return an empty response like if there is no match - mockRequest - .defaultReplyHeaders({ - 'access-control-allow-origin': '*', - 'access-control-allow-credentials': 'true' - }) - .get(url) - .reply(200, ''); + render( {}} pimsResponse={null} />); // click the refresh button const refreshButton = screen.getByTestId('refresh');