/* eslint-disable spaced-comment */
import React, { Fragment, PureComponent } from 'react';
import _ from 'lodash';
import { Grid } from '@material-ui/core';
import { connect } from 'react-redux';
import { BasicGrid, CustomPagination } from 'pegasus/core';
import moment from 'moment';
import i18next from '../../../../common/i18next';
import { questionnarieActions } from '../../../../redux/questionnarie';
import { ColumnObj } from './baseline/QuestionnarieColumn';
//import NoResultFound from '../../../../assets/svg/No_result_found.svg';
import NoResultFound from '../../../../components/ErrorLayout/NoResultFound';
import { REGISTRY_UNIT_NAME } from '../../../../helper/constants';
import Loader from '../../../../components/Loader';
import {getNoOfDaysRemaining } from '../../../../common/commonFunctions';
require('pegasus/build-creation/registry.css');
const config = {
minColumns: 12,
parentTableClass: ['basic-grid patient-grid'],
dataErrorMessage: 'please provide data property.',
schemaErrorMessge: 'please provide columnDefs property.'
};
class QuestionnaireList extends PureComponent {
constructor(props) {
super(props);
this.state = {
pageNumber: 1,
pageSize: 5,
patientUid: ''
};
}
componentWillReceiveProps(nextProps) {
if (nextProps.selectedAssignPro !== this.props.selectedAssignPro) {
this.loadQuestionnarieData(nextProps.selectedAssignPro.data.patientuid);
this.setState({ patientUid: nextProps.selectedAssignPro.data.patientuid })
}
}
onPageChangeHandler = (page) => {
// const{selectedAssignPro:data}= this.props;
const { patientUid } = this.state;
this.setState({
pageNumber: page
}, () => {
this.loadQuestionnarieData(this.props.selectedAssignPro.data.patientuid);
});
};
loadQuestionnarieData = (PatientUid) => {
const { fetchQuestionnarie, questionnarieList, selectedAssignPro } = this.props;
const {
pageNumber,
pageSize
} = this.state;
const requestJson = {
input: {
patientuid: PatientUid,
unit: REGISTRY_UNIT_NAME,
page_size: parseInt(pageSize),
page_number: parseInt(pageNumber)
}
};
fetchQuestionnarie(requestJson);
}
calculateExpiryInDate = (expiryDate) => {
const currentDate = moment(new Date(), 'YYYY-MM-DD');
const expirationDate = moment(expiryDate, 'YYYY-MM-DD');
const diffBetweenCurrentDateAndvisitDate = Math.round(moment.duration(expirationDate.diff(currentDate)).asDays());
return (`${diffBetweenCurrentDateAndvisitDate} days`);
}
getColumnNameObjBasedOnRegistry = registryUnitName => {
let columnNameObj;
switch (registryUnitName) {
case 'AAO':
columnNameObj = ColumnObj;
break;
default:
columnNameObj = ColumnObj;
break;
}
return columnNameObj;
};
GetQuestionnarieData = (questionnarieList) => {
if (questionnarieList && questionnarieList.getOutreachScheduledJobs) {
return questionnarieList.getOutreachScheduledJobs.map(data => {
const metaData = _.isEmpty(data.questionnaire_instance_meta_information)?'':JSON.parse(data.questionnaire_instance_meta_information);
const eye = (metaData && metaData.cataractdxeye) ? (metaData.cataractdxeye === 1 ? 'Left'
: metaData.cataractdxeye === 2 ? 'Right'
: metaData.cataractdxeye === 3 ? 'Bilateral'
: metaData.cataractdxeye === 4 ? 'Unspecified' : '') : '';
const newData = {};
newData.questionnaireType = data.questionnaire_display_name ? data.questionnaire_display_name : '';
newData.clinicianName = data.provider_fullname ? data.provider_fullname : '';
newData.id = data.questionnaire_instance_id ? data.questionnaire_instance_id : '';
newData.visitDate = data.visitdate ? moment(data.visitdate).format('MM/DD/YYYY h:mm:ss') : '';
newData.surgeryDate = !data.questionnaire_definition_id ? '' : data.questionnaire_definition_id === "5cb704065fb389824a875292" ? '' : data.visitdate ? moment(data.visitdate).format('MM/DD/YYYY h:mm:ss') : '';
newData.practice = data.practice ? data.practice : '';
newData.expiryIn = data.expires_at ? getNoOfDaysRemaining(data.expires_at)+' days' : '';
// newData.diagnosis = metaData ? metaData.diagnosis ? metaData.diagnosis : '' : '';
newData.eye = eye;
newData.progressStatus = data.questionnaire_status ? data.questionnaire_status : '';
return (newData);
});
}
return [{}];
};
// showNoDataFound = () => (
// <Grid container className='no--result_wrapper'>
// <Grid item className='no--result_grid'>
// <Grid item className='no--result_content'>
// <h2 className='no--result_heading'>No Results Found</h2>
// </Grid>
// <Grid item className='no--result_img-grid'>
// <img src={NoResultFound} alt='No Result Found' className='page-not-found_img' />
// </Grid>
// </Grid>
// </Grid>
// );
render() {
const {
questionnarieList
} = this.props;
const {
pageSize,
pageNumber
} = this.state;
let patientDetails = null;
let totalData = null
const noResultFoundMessage = i18next.t('patientProfile.errorMsg.noResultFoundMessage');
if (questionnarieList && questionnarieList.data &&
questionnarieList.data.getOutreachScheduledJobs &&
questionnarieList.data.getOutreachScheduledJobs.length) {
patientDetails = this.GetQuestionnarieData(questionnarieList.data);
totalData = questionnarieList.data.getOutreachScheduledJobs[0].totalcount
}
return (
<Fragment>
{patientDetails ? (
<Grid container spacing={50} className='pro--patient-details__wrapper'>
<Grid item className='pro-visit-list-grid'>
<BasicGrid
columnDefs={this.getColumnNameObjBasedOnRegistry('AAO')}
config={config}
data={patientDetails}
totalRecords={totalData}
/>
<CustomPagination
TOTALRECORD={totalData}
// PAGESIZEARRAY={pageSizeArray}
PAGESIZE={pageSize}
PAGEINDEX={pageNumber}
goEnabled={false}
rowPerPageSelecter={false}
onClick={this.onPageChangeHandler}
/>
</Grid>
</Grid>
) : questionnarieList.loading ? <Loader /> :
(<NoResultFound
noResultText={noResultFoundMessage}
// message={noResultFoundMessage}
/>
)}
</Fragment>
);
}
}
const mapStateToProps = ({ questionnarieReducer, assignProList }) => {
return {
questionnarieList: questionnarieReducer.questionnarieList,
selectedAssignPro: assignProList.selectedAssignPro
};
};
const mapDispatchToProps = {
fetchQuestionnarie: questionnarieActions.questionnarieData
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(QuestionnaireList);
|