75 lines
2.1 KiB
JavaScript
75 lines
2.1 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { utils, user } from '@ohif/core';
|
|
//
|
|
import ConnectedViewerRetrieveStudyData from '../connectedComponents/ConnectedViewerRetrieveStudyData';
|
|
import useServer from '../customHooks/useServer';
|
|
import useQuery from '../customHooks/useQuery';
|
|
const { urlUtil: UrlUtil } = utils;
|
|
|
|
/**
|
|
* Get array of seriesUIDs from param or from queryString
|
|
* @param {*} seriesInstanceUIDs
|
|
* @param {*} location
|
|
*/
|
|
const getSeriesInstanceUIDs = (seriesInstanceUIDs, routeLocation) => {
|
|
const queryFilters = UrlUtil.queryString.getQueryFilters(routeLocation);
|
|
const querySeriesUIDs = queryFilters && queryFilters['seriesInstanceUID'];
|
|
const _seriesInstanceUIDs = seriesInstanceUIDs || querySeriesUIDs;
|
|
|
|
return UrlUtil.paramString.parseParam(_seriesInstanceUIDs);
|
|
};
|
|
|
|
function ViewerRouting({ match: routeMatch, location: routeLocation }) {
|
|
const {
|
|
project,
|
|
location,
|
|
dataset,
|
|
dicomStore,
|
|
studyInstanceUIDs,
|
|
seriesInstanceUIDs,
|
|
} = routeMatch.params;
|
|
|
|
// Set the user's default authToken for outbound DICOMWeb requests.
|
|
// Is only applied if target server does not set `requestOptions` property.
|
|
//
|
|
// See: `getAuthorizationHeaders.js`
|
|
let query = useQuery();
|
|
const authToken = query.get('token');
|
|
|
|
if (authToken) {
|
|
user.getAccessToken = () => authToken;
|
|
}
|
|
|
|
const server = useServer({ project, location, dataset, dicomStore });
|
|
const studyUIDs = UrlUtil.paramString.parseParam(studyInstanceUIDs);
|
|
const seriesUIDs = getSeriesInstanceUIDs(seriesInstanceUIDs, routeLocation);
|
|
|
|
if (server && studyUIDs) {
|
|
return (
|
|
<ConnectedViewerRetrieveStudyData
|
|
studyInstanceUIDs={studyUIDs}
|
|
seriesInstanceUIDs={seriesUIDs}
|
|
/>
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
ViewerRouting.propTypes = {
|
|
match: PropTypes.shape({
|
|
params: PropTypes.shape({
|
|
studyInstanceUIDs: PropTypes.string.isRequired,
|
|
seriesInstanceUIDs: PropTypes.string,
|
|
dataset: PropTypes.string,
|
|
dicomStore: PropTypes.string,
|
|
location: PropTypes.string,
|
|
project: PropTypes.string,
|
|
}),
|
|
}),
|
|
location: PropTypes.any,
|
|
};
|
|
|
|
export default ViewerRouting;
|