2018-12-14 15:23:48 +01:00
|
|
|
import React, {Component} from "react";
|
|
|
|
|
import PropTypes from "prop-types";
|
|
|
|
|
import Viewer from "./viewer/viewer.js";
|
2018-12-17 17:23:03 +01:00
|
|
|
import OHIF from 'ohif-core';
|
|
|
|
|
import { sortingManager } from './lib/sortingManager.js';
|
|
|
|
|
import { updateMetaDataManager } from './lib/updateMetaDataManager.js';
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
// TODO: Move to react-viewerbase
|
|
|
|
|
function createDisplaySets(studies) {
|
|
|
|
|
// Define the OHIF.viewer.data global object
|
|
|
|
|
// TODO: Save all data that is currently in OHIF.viewer in redux instead
|
2018-12-17 17:23:03 +01:00
|
|
|
//OHIF.viewer.data = OHIF.viewer.data || {};
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
// @TypeSafeStudies
|
|
|
|
|
// Clears OHIF.viewer.Studies collection
|
2018-12-17 17:23:03 +01:00
|
|
|
//OHIF.viewer.Studies.removeAll();
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
// @TypeSafeStudies
|
|
|
|
|
// Clears OHIF.viewer.StudyMetadataList collection
|
2018-12-17 17:23:03 +01:00
|
|
|
//OHIF.viewer.StudyMetadataList.removeAll();
|
2018-12-14 15:23:48 +01:00
|
|
|
|
2018-12-17 17:23:03 +01:00
|
|
|
//OHIF.viewer.data.studyInstanceUids = [];
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
const updatedStudies = studies.map(study => {
|
|
|
|
|
const studyMetadata = new OHIF.metadata.OHIFStudyMetadata(study, study.studyInstanceUid);
|
|
|
|
|
let displaySets = study.displaySets;
|
|
|
|
|
|
|
|
|
|
if (!study.displaySets) {
|
2018-12-17 17:23:03 +01:00
|
|
|
displaySets = sortingManager.getDisplaySets(studyMetadata);
|
2018-12-14 15:23:48 +01:00
|
|
|
study.displaySets = displaySets;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
studyMetadata.setDisplaySets(displaySets);
|
|
|
|
|
|
|
|
|
|
study.selected = true;
|
2018-12-17 17:23:03 +01:00
|
|
|
//OHIF.viewer.Studies.insert(study);
|
|
|
|
|
//OHIF.viewer.StudyMetadataList.insert(studyMetadata);
|
|
|
|
|
//OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
// Updates WADO-RS metaDataManager
|
2018-12-17 17:23:03 +01:00
|
|
|
updateMetaDataManager(study);
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
return study;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return updatedStudies;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class ViewerFromStudyData extends Component {
|
|
|
|
|
constructor(props) {
|
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
|
|
this.state = {
|
|
|
|
|
studies: null,
|
|
|
|
|
error: null
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
|
// TODO: Avoid using timepoints here
|
|
|
|
|
//const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };
|
2018-12-17 17:23:03 +01:00
|
|
|
const { studyInstanceUids, seriesInstanceUids, server } = this.props;
|
|
|
|
|
const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)
|
2018-12-14 15:23:48 +01:00
|
|
|
|
|
|
|
|
// Render the viewer when the data is ready
|
2018-12-17 17:23:03 +01:00
|
|
|
promise.then(studies => {
|
2018-12-14 15:23:48 +01:00
|
|
|
const updatedStudies = createDisplaySets(studies);
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
studies: updatedStudies,
|
|
|
|
|
});
|
|
|
|
|
}).catch(error => {
|
|
|
|
|
this.setState({
|
2018-12-17 17:23:03 +01:00
|
|
|
error: true,
|
2018-12-14 15:23:48 +01:00
|
|
|
});
|
2018-12-17 17:23:03 +01:00
|
|
|
|
|
|
|
|
console.error(error);
|
2018-12-14 15:23:48 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
render() {
|
|
|
|
|
if (this.state.error) {
|
|
|
|
|
return (<div>Error: {JSON.stringify(this.state.error)}</div>);
|
|
|
|
|
} else if (!this.state.studies) {
|
|
|
|
|
return (<div>Loading...</div>);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Viewer studies={this.state.studies}/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ViewerFromStudyData.propTypes = {
|
|
|
|
|
studyInstanceUids: PropTypes.array.isRequired,
|
2018-12-17 17:23:03 +01:00
|
|
|
seriesInstanceUids: PropTypes.array,
|
|
|
|
|
server: PropTypes.object
|
2018-12-14 15:23:48 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default ViewerFromStudyData;
|