Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/Dashboard/Dashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ const Dashboard = props => {
case Section.MEDICATIONS:
return <MedicationsSection client={props.client} />;
case Section.NOTIFICATIONS:
return <NotificationsSection />
return <NotificationsSection />;
default:
return <EmptySection />;
}
Expand Down
131 changes: 70 additions & 61 deletions src/components/Dashboard/ListSelections/NotificationsSection.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,76 +7,85 @@ import { createMedicationFromMedicationRequest } from '../../../util/fhir';
import { standardsBasedGetEtasu } from '../../../util/util';

const NotificationsSection = () => {
const [globalState, _] = useContext(SettingsContext);
const classes = useStyles();
const [etasu, setEtasu] = useState([]);
const [medications, setMedications] = useState([]);
useEffect(() => {
setEtasu([]);
getMedicationRequest();
}, []);
const [globalState, _] = useContext(SettingsContext);
const classes = useStyles();
const [etasu, setEtasu] = useState([]);
const [medications, setMedications] = useState([]);
useEffect(() => {
setEtasu([]);
getMedicationRequest();
}, []);

useEffect(() => {
getAllEtasu();
}, [medications]);
useEffect(() => {
getAllEtasu();
}, [medications]);

const getMedicationRequest = () => {
const patientsMedications = [];
axios({
method: 'get',
url: `${globalState.baseUrl}/MedicationRequest?subject=Patient/${globalState.patient.id}`
}).then((result) => {
result?.data.entry.forEach((m) => {
const medication = createMedicationFromMedicationRequest(m.resource);
patientsMedications.push(medication);
})
setMedications(patientsMedications);
}, (error) =>{
console.error(error);
const getMedicationRequest = () => {
const patientsMedications = [];
axios({
method: 'get',
url: `${globalState.baseUrl}/MedicationRequest?subject=Patient/${globalState.patient.id}`
}).then(
result => {
result?.data.entry.forEach(m => {
const medication = createMedicationFromMedicationRequest(m.resource);
patientsMedications.push(medication);
});
};
setMedications(patientsMedications);
},
error => {
console.error(error);
}
);
};

const compileResponses = (newRequest, body) => {
if (newRequest.contained) {
newRequest.body = body;
setEtasu(prevState => [ ...prevState, newRequest]);
}
const compileResponses = (newRequest, body) => {
if (newRequest.contained) {
newRequest.body = body;
setEtasu(prevState => [...prevState, newRequest]);
}
};

const getAllEtasu = () => {
medications.forEach((medication) => {
const body = makeBody(medication);
const standardEtasuUrl = `${globalState.remsAdminServer}/4_0_0/GuidanceResponse/$rems-etasu`;
standardsBasedGetEtasu(standardEtasuUrl, body, compileResponses);
});

}
const getAllEtasu = () => {
medications.forEach(medication => {
const body = makeBody(medication);
const standardEtasuUrl = `${globalState.remsAdminServer}/4_0_0/GuidanceResponse/$rems-etasu`;
standardsBasedGetEtasu(standardEtasuUrl, body, compileResponses);
});
};

const makeBody = (medication) => {
return {
resourceType: "Parameters",
parameter: [
{
name: 'patient',
resource: globalState.patient
},
{
name: 'medication',
resource: medication
}
]
const makeBody = medication => {
return {
resourceType: 'Parameters',
parameter: [
{
name: 'patient',
resource: globalState.patient
},
{
name: 'medication',
resource: medication
}
}
]
};
};

return (
<div className={classes.dashboardArea}>
<h2 className={classes.elementHeader}>Notifications</h2>
{etasu.map((remsCase) => {
const display = remsCase.body.parameter[1]?.resource.code.coding[0].display;
return <EtasuStatusComponent key={display} display={display} remsAdminResponseInit={remsCase} data={remsCase.body} />
})}
</div>
);
return (
<div className={classes.dashboardArea}>
<h2 className={classes.elementHeader}>Notifications</h2>
{etasu.map(remsCase => {
const display = remsCase.body.parameter[1]?.resource.code.coding[0].display;
return (
<EtasuStatusComponent
key={display}
display={display}
remsAdminResponseInit={remsCase}
data={remsCase.body}
/>
);
})}
</div>
);
};

export default memo(NotificationsSection);
25 changes: 15 additions & 10 deletions src/components/EtasuStatus/EtasuStatus.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,24 @@ export const EtasuStatus = props => {
const [etasuData, setEtasuData] = useState({});
const [display, setDisplay] = useState('');

useEffect(() => {
useEffect(() => {
const medication = createMedicationFromMedicationRequest(request);
getEtasuStatus(medication);
}, [code]);

const getEtasuStatus = (medication) => {
const getEtasuStatus = medication => {
const body = makeBody(medication);
setEtasuData(body);
const display = body.parameter[1]?.resource.code.coding[0].display;
setDisplay(display);
const standardEtasuUrl = `${globalState.remsAdminServer}/4_0_0/GuidanceResponse/$rems-etasu`;
standardsBasedGetEtasu(standardEtasuUrl, body, setRemsAdminResponse);

};


const makeBody = (medication) => {
const makeBody = medication => {
console.log('patient -- > ', globalState.patient);
return {
resourceType: "Parameters",
resourceType: 'Parameters',
parameter: [
{
name: 'patient',
Expand All @@ -44,13 +42,20 @@ export const EtasuStatus = props => {
resource: medication
}
]
}
}
};
};

return (
<>
{remsAdminResponse.contained ? <EtasuStatusComponent remsAdminResponseInit={remsAdminResponse} data={etasuData} display={display} /> : ""}
{remsAdminResponse.contained ? (
<EtasuStatusComponent
remsAdminResponseInit={remsAdminResponse}
data={etasuData}
display={display}
/>
) : (
''
)}
</>
);
};

5 changes: 2 additions & 3 deletions src/components/EtasuStatus/EtasuStatusButton.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import ListIcon from '@mui/icons-material/List';
import './EtasuStatusButton.css';

export const EtasuStatusButton = props => {
const { baseColor, remsAdminResponse, handleOpenEtasuStatus, lastCheckedEtasuTime } =
props;
const { baseColor, remsAdminResponse, handleOpenEtasuStatus, lastCheckedEtasuTime } = props;
return (
<Grid item container flexDirection="column" alignItems="center">
<Button sx={buttonSx(baseColor)} variant="contained" onClick={handleOpenEtasuStatus}>
Expand Down Expand Up @@ -71,4 +70,4 @@ export const convertStatus = status => {
} else {
return 'Not Started';
}
}
};
19 changes: 9 additions & 10 deletions src/components/EtasuStatus/EtasuStatusComponent.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ import { standardsBasedGetEtasu } from '../../util/util.js';
export const EtasuStatusComponent = props => {
const [globalState, _] = useContext(SettingsContext);

const { remsAdminResponseInit, data, display } =
props;
const { remsAdminResponseInit, data, display } = props;

const [remsAdminResponse, setRemsAdminResponse] = useState(remsAdminResponseInit);
const [lastCheckedEtasuTime, setLastCheckedEtasuTime] = useState(0);
Expand All @@ -18,7 +17,7 @@ export const EtasuStatusComponent = props => {

useEffect(() => {
setLastCheckedEtasuTime(Date.now());
}, []);
}, []);
const handleCloseEtasuStatus = () => {
setShowEtasuStatus(false);
};
Expand All @@ -28,12 +27,12 @@ export const EtasuStatusComponent = props => {
};

const refreshEtasu = () => {
if(remsAdminResponse) {
const standardEtasuUrl = `${globalState.remsAdminServer}/4_0_0/GuidanceResponse/$rems-etasu`;
standardsBasedGetEtasu(standardEtasuUrl, data, setRemsAdminResponse);
setLastCheckedEtasuTime(Date.now());
if (remsAdminResponse) {
const standardEtasuUrl = `${globalState.remsAdminServer}/4_0_0/GuidanceResponse/$rems-etasu`;
standardsBasedGetEtasu(standardEtasuUrl, data, setRemsAdminResponse);
setLastCheckedEtasuTime(Date.now());
}
}
};
return (
<Card variant="outlined" sx={{ padding: 2 }}>
<Typography variant="h6" align="center" mb={2}>
Expand All @@ -58,9 +57,9 @@ export const EtasuStatusComponent = props => {
export const getStatusColor = status => {
switch (status) {
case 'success':
return 'green';
return 'green';
case 'data-required':
return '#f0ad4e';
return '#f0ad4e';
default:
return '#0c0c0c';
}
Expand Down
Loading