2020-03-05 22:11:25 +01:00
|
|
|
import React from 'react';
|
2020-03-13 03:27:48 +01:00
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
|
import classnames from 'classnames';
|
|
|
|
|
|
2020-03-05 22:11:25 +01:00
|
|
|
import Header from './components/Header';
|
|
|
|
|
import StudyListFilter from './components/StudyListFilter';
|
|
|
|
|
import StudyListTable from './components/StudyListTable';
|
|
|
|
|
import StudyListPagination from './components/StudyListPagination';
|
|
|
|
|
|
2020-03-13 16:02:04 +01:00
|
|
|
const filtersMeta = [
|
|
|
|
|
{
|
|
|
|
|
name: 'patientName',
|
|
|
|
|
displayName: 'Patient Name',
|
|
|
|
|
inputType: 'text',
|
|
|
|
|
isSortable: true,
|
|
|
|
|
gridCol: 4,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'mrn',
|
|
|
|
|
displayName: 'MRN',
|
|
|
|
|
inputType: 'text',
|
|
|
|
|
isSortable: true,
|
|
|
|
|
gridCol: 2,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'studyDate',
|
|
|
|
|
displayName: 'Study date',
|
2020-03-19 23:58:13 +01:00
|
|
|
inputType: 'date-range',
|
2020-03-13 16:02:04 +01:00
|
|
|
isSortable: true,
|
2020-03-19 23:58:13 +01:00
|
|
|
gridCol: 5,
|
2020-03-13 16:02:04 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'description',
|
|
|
|
|
displayName: 'Description',
|
|
|
|
|
inputType: 'text',
|
|
|
|
|
isSortable: true,
|
2020-03-19 23:58:13 +01:00
|
|
|
gridCol: 4,
|
2020-03-13 16:02:04 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'modality',
|
|
|
|
|
displayName: 'Modality',
|
2020-03-20 18:03:42 +01:00
|
|
|
inputType: 'select',
|
|
|
|
|
selectOptions: [
|
|
|
|
|
{ value: 'seg', label: 'seg' },
|
|
|
|
|
{ value: 'ct', label: 'ct' },
|
|
|
|
|
{ value: 'mr', label: 'mr' },
|
|
|
|
|
{ value: 'sr', label: 'sr' },
|
|
|
|
|
],
|
2020-03-13 16:02:04 +01:00
|
|
|
isSortable: true,
|
|
|
|
|
gridCol: 3,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'accession',
|
|
|
|
|
displayName: 'Accession',
|
|
|
|
|
inputType: 'text',
|
|
|
|
|
isSortable: true,
|
|
|
|
|
gridCol: 4,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'instances',
|
|
|
|
|
displayName: 'Instances',
|
|
|
|
|
inputType: 'none',
|
|
|
|
|
isSortable: false,
|
2020-03-19 23:58:13 +01:00
|
|
|
gridCol: 2,
|
2020-03-13 16:02:04 +01:00
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
2020-03-13 03:27:48 +01:00
|
|
|
const StudyList = ({ studies, perPage }) => {
|
|
|
|
|
const studiesData = studies.slice(0, perPage);
|
|
|
|
|
const numOfStudies = studies.length;
|
|
|
|
|
const isEmptyStudies = numOfStudies === 0;
|
2020-03-05 22:11:25 +01:00
|
|
|
return (
|
2020-03-13 03:27:48 +01:00
|
|
|
<div
|
|
|
|
|
className={classnames('bg-black h-full', {
|
|
|
|
|
'h-screen': isEmptyStudies,
|
|
|
|
|
})}
|
|
|
|
|
>
|
2020-03-16 16:34:01 +01:00
|
|
|
<Header />
|
|
|
|
|
<StudyListFilter numOfStudies={numOfStudies} filtersMeta={filtersMeta} />
|
2020-03-13 16:02:04 +01:00
|
|
|
<StudyListTable
|
|
|
|
|
studies={studiesData}
|
|
|
|
|
numOfStudies={numOfStudies}
|
|
|
|
|
filtersMeta={filtersMeta}
|
|
|
|
|
/>
|
2020-03-13 03:27:48 +01:00
|
|
|
{!isEmptyStudies && <StudyListPagination />}
|
2020-03-05 22:11:25 +01:00
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
2020-03-13 03:27:48 +01:00
|
|
|
StudyList.defaultProps = {
|
|
|
|
|
studies: [],
|
|
|
|
|
perPage: 25,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
StudyList.propTypes = {
|
|
|
|
|
studies: PropTypes.array,
|
|
|
|
|
perPage: PropTypes.number,
|
|
|
|
|
};
|
|
|
|
|
|
2020-03-05 22:11:25 +01:00
|
|
|
export default StudyList;
|