2019-05-29 08:39:54 -04:00
|
|
|
import React from 'react';
|
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
|
import ConnectedViewerRetrieveStudyData from '../connectedComponents/ConnectedViewerRetrieveStudyData';
|
2019-10-11 04:59:38 -03:00
|
|
|
import useServer from '../customHooks/useServer';
|
|
|
|
|
import OHIF from '@ohif/core';
|
|
|
|
|
const { urlUtil: UrlUtil } = OHIF.utils;
|
2018-12-14 15:23:48 +01:00
|
|
|
|
2019-10-11 04:59:38 -03:00
|
|
|
/**
|
|
|
|
|
* Get array of seriesUIDs from param or from queryString
|
2019-11-05 18:48:44 -03:00
|
|
|
* @param {*} seriesInstanceUids
|
2019-10-11 04:59:38 -03:00
|
|
|
* @param {*} location
|
|
|
|
|
*/
|
2019-11-05 18:48:44 -03:00
|
|
|
const getSeriesInstanceUIDs = (seriesInstanceUids, routeLocation) => {
|
2019-10-11 04:59:38 -03:00
|
|
|
const queryFilters = UrlUtil.queryString.getQueryFilters(routeLocation);
|
2019-11-05 18:48:44 -03:00
|
|
|
const querySeriesUIDs = queryFilters && queryFilters['seriesInstanceUID'];
|
|
|
|
|
const _seriesInstanceUids = seriesInstanceUids || querySeriesUIDs;
|
2018-12-14 15:23:48 +01:00
|
|
|
|
2019-11-05 18:48:44 -03:00
|
|
|
return UrlUtil.paramString.parseParam(_seriesInstanceUids);
|
2019-10-11 04:59:38 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function ViewerRouting({ match: routeMatch, location: routeLocation }) {
|
|
|
|
|
const {
|
|
|
|
|
project,
|
|
|
|
|
location,
|
|
|
|
|
dataset,
|
|
|
|
|
dicomStore,
|
|
|
|
|
studyInstanceUids,
|
|
|
|
|
seriesInstanceUids,
|
|
|
|
|
} = routeMatch.params;
|
|
|
|
|
const server = useServer({ project, location, dataset, dicomStore });
|
|
|
|
|
|
2019-11-05 18:48:44 -03:00
|
|
|
const studyUids = UrlUtil.paramString.parseParam(studyInstanceUids);
|
|
|
|
|
const seriesUids = getSeriesInstanceUIDs(seriesInstanceUids, routeLocation);
|
2018-12-14 15:23:48 +01:00
|
|
|
|
2019-11-05 18:48:44 -03:00
|
|
|
if (server && studyUids) {
|
2019-10-11 04:59:38 -03:00
|
|
|
return (
|
|
|
|
|
<ConnectedViewerRetrieveStudyData
|
2019-11-05 18:48:44 -03:00
|
|
|
studyInstanceUids={studyUids}
|
|
|
|
|
seriesInstanceUids={seriesUids}
|
2019-10-11 04:59:38 -03:00
|
|
|
/>
|
|
|
|
|
);
|
2019-05-29 08:39:54 -04:00
|
|
|
}
|
2018-12-14 15:23:48 +01:00
|
|
|
|
2019-10-11 04:59:38 -03:00
|
|
|
return null;
|
2018-12-14 15:23:48 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ViewerRouting.propTypes = {
|
2019-05-29 08:39:54 -04:00
|
|
|
match: PropTypes.shape({
|
|
|
|
|
params: PropTypes.shape({
|
|
|
|
|
studyInstanceUids: PropTypes.string.isRequired,
|
|
|
|
|
seriesInstanceUids: PropTypes.string,
|
2019-10-11 04:59:38 -03:00
|
|
|
dataset: PropTypes.string,
|
|
|
|
|
dicomStore: PropTypes.string,
|
|
|
|
|
location: PropTypes.string,
|
|
|
|
|
project: PropTypes.string,
|
2019-05-29 08:39:54 -04:00
|
|
|
}),
|
|
|
|
|
}),
|
2018-12-14 15:23:48 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default ViewerRouting;
|