diff --git a/src/studylist/StudyListRouting.js b/src/studylist/StudyListRouting.js
index 357d1eb0f..e156592fc 100644
--- a/src/studylist/StudyListRouting.js
+++ b/src/studylist/StudyListRouting.js
@@ -1,22 +1,36 @@
import React from 'react';
import PropTypes from 'prop-types';
+import { withRouter } from 'react-router-dom';
+import queryString from 'query-string';
import ConnectedStudyList from './ConnectedStudyList';
// TODO: Move to react-viewerbase
-function StudyListRouting({ match }) {
- // TODO: Figure out which filters we want to pass in via a URL
- //const { patientId } = match.params;
+function toLowerCaseFirstLetter(word) {
+ return word[0].toLowerCase() + word.slice(1);
+}
- return ;
+function getFilters({ search }) {
+ const searchParameters = queryString.parse(search);
+ const filters = {};
+
+ Object.entries(searchParameters).forEach(([key, value]) => {
+ filters[toLowerCaseFirstLetter(key)] = value;
+ });
+
+ return filters;
+}
+
+function StudyListRouting({ location }) {
+ const filters = location ? getFilters(location) : undefined;
+
+ return ;
}
StudyListRouting.propTypes = {
- match: PropTypes.shape({
- params: PropTypes.shape({
- patientIds: PropTypes.string,
- }),
- }),
+ location: PropTypes.shape({
+ search: PropTypes.string,
+ }).isRequired,
};
-export default StudyListRouting;
+export default withRouter(StudyListRouting);
diff --git a/src/studylist/StudyListWithData.js b/src/studylist/StudyListWithData.js
index c9b005296..38c630eb6 100644
--- a/src/studylist/StudyListWithData.js
+++ b/src/studylist/StudyListWithData.js
@@ -8,12 +8,12 @@ import moment from 'moment';
class StudyListWithData extends Component {
state = {
- searchData: {},
studies: null,
error: null,
};
static propTypes = {
+ filters: PropTypes.object,
patientId: PropTypes.string,
server: PropTypes.object,
user: PropTypes.object,
@@ -28,23 +28,25 @@ class StudyListWithData extends Component {
.subtract(StudyListWithData.studyListDateFilterNumDays, 'days')
.toDate();
static defaultStudyDateTo = new Date();
+ static defaultSearchData = {
+ currentPage: 0,
+ rowsPerPage: StudyListWithData.rowsPerPage,
+ studyDateFrom: StudyListWithData.defaultStudyDateFrom,
+ studyDateTo: StudyListWithData.defaultStudyDateTo,
+ sortData: StudyListWithData.defaultSort,
+ };
componentDidMount() {
// TODO: Avoid using timepoints here
//const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };
- this.searchForStudies();
+ this.searchForStudies({
+ ...StudyListWithData.defaultSearchData,
+ ...(this.props.filters || {}),
+ });
}
- searchForStudies = (
- searchData = {
- currentPage: 0,
- rowsPerPage: StudyListWithData.rowsPerPage,
- studyDateFrom: StudyListWithData.defaultStudyDateFrom,
- studyDateTo: StudyListWithData.defaultStudyDateTo,
- sortData: StudyListWithData.defaultSort,
- }
- ) => {
+ searchForStudies = (searchData = StudyListWithData.defaultSearchData) => {
const { server } = this.props;
const filter = {
patientId: searchData.patientId,