Skip to content

Commit 61dffc6

Browse files
committed
WEB-4460 add MenuBar PatientLastReviewed
1 parent cf759bb commit 61dffc6

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import React, { useEffect, useState } from 'react';
2+
import PropTypes from 'prop-types';
3+
import { useSelector } from 'react-redux';
4+
import moment from 'moment-timezone';
5+
import noop from 'lodash/noop';
6+
7+
import ReviewPatientToggle, {
8+
useMarkPatientReviewedMutation,
9+
useUndoPatientReviewedMutation,
10+
} from '../../../pages/clinicworkspace/components/ReviewPatientToggle';
11+
12+
import * as ErrorMessages from '../../../redux/constants/errorMessages';
13+
import { useToasts } from '../../../providers/ToastProvider';
14+
15+
const PatientLastReviewed = ({ patient, onReview = noop }) => {
16+
const { set: setToast } = useToasts();
17+
const selectedClinicId = useSelector((state) => state.blip.selectedClinicId);
18+
const patientId = patient?.id;
19+
20+
const recentlyReviewedThresholdDate = moment().startOf('isoWeek').toISOString();
21+
22+
const [reviews, setReviews] = useState(patient?.reviews || []);
23+
24+
useEffect(() => { // Sync up if prop updates
25+
setReviews(patient?.reviews || []);
26+
}, [patientId, patient?.reviews]);
27+
28+
const [markPatientReviewed, { isLoading: isMarking }] = useMarkPatientReviewedMutation();
29+
const [undoPatientReviewed, { isLoading: isUndoing }] = useUndoPatientReviewedMutation();
30+
31+
const handleReview = () => {
32+
markPatientReviewed({ clinicId: selectedClinicId, patientId })
33+
.unwrap()
34+
.then(updatedReviews => {
35+
setReviews(updatedReviews || []);
36+
onReview();
37+
})
38+
.catch(() => setToast({ message: ErrorMessages.ERR_SETTING_CLINIC_PATIENT_LAST_REVIEWED, variant: 'danger' }));
39+
};
40+
41+
const handleUndo = () => {
42+
undoPatientReviewed({ clinicId: selectedClinicId, patientId })
43+
.unwrap()
44+
.then(updatedReviews => setReviews(updatedReviews || []))
45+
.catch(() => setToast({ message: ErrorMessages.ERR_REVERTING_CLINIC_PATIENT_LAST_REVIEWED, variant: 'danger' }));
46+
};
47+
48+
return (
49+
<ReviewPatientToggle
50+
patientId={patientId}
51+
reviews={reviews}
52+
onReview={handleReview}
53+
onUndo={handleUndo}
54+
processing={isMarking || isUndoing}
55+
recentlyReviewedThresholdDate={recentlyReviewedThresholdDate}
56+
/>
57+
);
58+
};
59+
60+
PatientLastReviewed.propTypes = {
61+
patient: PropTypes.object,
62+
onReview: PropTypes.func,
63+
};
64+
65+
export default PatientLastReviewed;

app/components/clinic/PatientLastReviewed.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ export const PatientLastReviewed = ({ api, patientId }) => {
1717
const clinic = useSelector(state => state.blip.clinics?.[selectedClinicId]);
1818
const patient = clinic?.patients?.[patientId];
1919

20+
const recentlyReviewedThresholdDate = moment().startOf('day').toISOString();
21+
2022
const {
2123
settingClinicPatientLastReviewed,
2224
revertingClinicPatientLastReviewed,

0 commit comments

Comments
 (0)