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
27 changes: 17 additions & 10 deletions src/components/RequestBox/RequestBox.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ import { Button, ButtonGroup } from '@mui/material';
import _ from 'lodash';
import React, { Component } from 'react';
import buildNewRxRequest from '../../util/buildScript.2017071.js';
import PersonIcon from '@mui/icons-material/Person';
import MuiAlert from '@mui/material/Alert';
import Snackbar from '@mui/material/Snackbar';
import { defaultValues, shortNameMap } from '../../util/data';
import { getAge } from '../../util/fhir';
import { shortNameMap } from '../../util/data';
import { getAge, createMedicationDispenseFromMedicationRequest } from '../../util/fhir';
import { retrieveLaunchContext } from '../../util/util';
import InProgressFormBox from './InProgressFormBox/InProgressFormBox.js';
import './request.css';

export default class RequestBox extends Component {
Expand All @@ -35,8 +33,6 @@ export default class RequestBox extends Component {
this.submitOrderSign(request);
}

componentDidMount() { }

prepPrefetch() {
const preppedResources = new Map();
Object.keys(this.props.prefetchedResources).forEach(resourceKey => {
Expand Down Expand Up @@ -257,9 +253,8 @@ export default class RequestBox extends Component {
/**
* Relaunch DTR using the available context
*/
relaunch = e => {
relaunch = () => {
this.buildLaunchLink().then(link => {
//e.preventDefault();
window.open(link.url, '_blank');
});
};
Expand Down Expand Up @@ -317,7 +312,7 @@ export default class RequestBox extends Component {
/**
* Send NewRx for new Medication to the Pharmacy Information System (PIMS)
*/
sendRx = e => {
sendRx = () => {
console.log('Sending NewRx to: ' + this.props.pimsUrl);

// build the NewRx Message
Expand All @@ -344,7 +339,19 @@ export default class RequestBox extends Component {
})
.then(response => {
console.log('Successfully sent NewRx to PIMS');
console.log(response);

// create the MedicationDispense
var medicationDispense = createMedicationDispenseFromMedicationRequest(this.props.request);
console.log('Create MedicationDispense:');
console.log(medicationDispense);

// store the MedicationDispense in the EHR
console.log(medicationDispense);
this.props.client.update(medicationDispense).then(result => {
console.log('Update MedicationDispense result:');
console.log(result);
});

this.handleRxResponse();
})
.catch(error => {
Expand Down
52 changes: 46 additions & 6 deletions src/components/SettingsBox/SettingsBox.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,51 @@
import React, { Component } from 'react';
import './SettingsBox.css';
import InputBox from '../Inputs/InputBox';
import Checkbox from '@mui/material/Checkbox';

import { headerDefinitions, types } from '../../util/data';
import FHIR from 'fhirclient';
import { Box, Button, FormControlLabel, Grid, TextField } from '@mui/material';
import CloseIcon from '@mui/icons-material/Close';

const clearMedicationDispenses =
({ ehrUrl, access_token }, consoleLog) =>
() => {
console.log(
'Clear MedicationDispenses from the EHR: ' + ehrUrl
);
const client = FHIR.client({
serverUrl: ehrUrl,
...(access_token ? { tokenResponse: access_token } : {})
});
client
.request('MedicationDispense', { flat: true })
.then(result => {
console.log(result);
result.forEach(resource => {
console.log(resource.id);
client
.delete('MedicationDispense/' + resource.id)
.then(result => {
consoleLog(
'Successfully deleted MedicationDispense ' + resource.id + ' from EHR',
types.info
);
console.log(result);
})
.catch(e => {
console.log('Failed to delete MedicationDispense ' + resource.id);
console.log(e);
});
});
})
.catch(e => {
console.log('Failed to retrieve list of MedicationDispense');
console.log(e);
});
};

const clearQuestionnaireResponses =
({ ehrUrl, defaultUser, access_token }, consoleLog) =>
_event => {
() => {
console.log(
'Clear QuestionnaireResponses from the EHR: ' + ehrUrl + ' for author ' + defaultUser
);
Expand Down Expand Up @@ -47,7 +82,7 @@ const clearQuestionnaireResponses =

const resetPims =
({ pimsUrl }, consoleLog) =>
_event => {
() => {
let url = new URL(pimsUrl);
const resetUrl = url.origin + '/doctorOrders/api/deleteAll';
console.log('reset pims: ' + resetUrl);
Expand All @@ -70,7 +105,7 @@ const resetPims =

const resetRemsAdmin =
({ cdsUrl }, consoleLog) =>
_event => {
() => {
let url = new URL(cdsUrl);
const resetUrl = url.origin + '/etasu/reset';

Expand All @@ -96,6 +131,11 @@ const resetHeaderDefinitions = [
key: 'clearQuestionnaireResponses',
reset: clearQuestionnaireResponses
},
{
display: 'Clear EHR MedicationDispenses',
key: 'clearMedicationDispenses',
reset: clearMedicationDispenses
},
{
display: 'Reset PIMS Database',
key: 'resetPims',
Expand Down Expand Up @@ -211,7 +251,7 @@ export default class SettingsBox extends Component {
})}
{resetHeaderDefinitions.map(({ key, display, reset }) => {
return (
<Grid item key={key} xs={4}>
<Grid item key={key} xs={3}>
<Button variant='outlined' onClick={reset(state, consoleLog)}>
{display}
</Button>
Expand Down
19 changes: 18 additions & 1 deletion src/util/fhir.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

function fhir(resource, ehrUrl, patient, auth) {
const headers = {
'Content-Type': 'application/json'
Expand Down Expand Up @@ -62,4 +63,20 @@ function getDrugCodeFromMedicationRequest(medicationRequest) {
return codeableConcept?.coding?.[0];
}

export { fhir, getAge, getDrugCodeableConceptFromMedicationRequest, getDrugCodeFromMedicationRequest };
function createMedicationDispenseFromMedicationRequest(medicationRequest) {
console.log('createMedicationDispenseFromMedicationRequest');
var medicationDispense = {};
medicationDispense.resourceType = 'MedicationDispense';
medicationDispense.id = medicationRequest?.id + '-dispense';
medicationDispense.status = 'unknown';
if (medicationRequest.medicationCodeableConcept) {
medicationDispense.medicationCodeableConcept = medicationRequest.medicationCodeableConcept;
} else if (medicationRequest.medicationReference) {
medicationDispense.medicationReference = medicationRequest.medicationReference;
}
medicationDispense.subject = medicationRequest.subject;
medicationDispense.authorizingPrescription = [ { 'reference': 'MedicationRequest/' + medicationRequest.id } ];
return medicationDispense;
}

export { fhir, getAge, getDrugCodeableConceptFromMedicationRequest, getDrugCodeFromMedicationRequest, createMedicationDispenseFromMedicationRequest };