Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52c95a1209 | ||
|
|
8903adaea7 | ||
|
|
9481e2a99e | ||
|
|
f783fd7650 | ||
|
|
79afee7615 | ||
|
|
539141fe5a | ||
|
|
a046c6c901 | ||
|
|
073be065cf |
No files matched your search
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.7.2](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-rt@0.7.1...@ohif/extension-dicom-rt@0.7.2) (2021-10-06)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.7.1](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-rt@0.7.0...@ohif/extension-dicom-rt@0.7.1) (2021-09-28)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-rt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-dicom-rt",
|
||||
"version": "0.7.1",
|
||||
"version": "0.7.2",
|
||||
"description": "OHIF extension for rendering DICOM RTSTRUCTs on top of cornerstone images.",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -112,6 +112,10 @@ export default {
|
||||
['RTSTRUCT'].includes(ds.Modality)
|
||||
)
|
||||
) {
|
||||
triggerRTPanelUpdatedEvent({
|
||||
badgeNumber: referencedDisplaySets.length,
|
||||
target: 'rt-panel',
|
||||
});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.7.2](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-segmentation@0.7.1...@ohif/extension-dicom-segmentation@0.7.2) (2021-10-06)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.7.1](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-segmentation@0.7.0...@ohif/extension-dicom-segmentation@0.7.1) (2021-09-28)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-segmentation
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-dicom-segmentation",
|
||||
"version": "0.7.1",
|
||||
"version": "0.7.2",
|
||||
"description": "OHIF extension for viewing segmentations in the 2D MPR view",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -126,7 +126,7 @@ export default {
|
||||
label: 'Segmentations',
|
||||
target: 'segmentation-panel',
|
||||
stateEvent: SegmentationPanelTabUpdatedEvent,
|
||||
isDisabled: studies => {
|
||||
isDisabled: (studies, activeViewport) => {
|
||||
if (!studies) {
|
||||
return true;
|
||||
}
|
||||
@@ -139,6 +139,20 @@ export default {
|
||||
const series = study.series[j];
|
||||
|
||||
if (series.Modality === 'SEG') {
|
||||
if (activeViewport) {
|
||||
const studyMetadata = studyMetadataManager.get(
|
||||
activeViewport.StudyInstanceUID
|
||||
);
|
||||
const referencedDS = studyMetadata.getDerivedDatasets({
|
||||
referencedSeriesInstanceUID:
|
||||
activeViewport.SeriesInstanceUID,
|
||||
Modality: 'SEG',
|
||||
});
|
||||
triggerSegmentationPanelTabUpdatedEvent({
|
||||
badgeNumber: referencedDS.length,
|
||||
target: 'segmentation-panel',
|
||||
});
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.12.4](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.3...@ohif/extension-vtk@1.12.4) (2021-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-vtk
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [1.12.3](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.2...@ohif/extension-vtk@1.12.3) (2021-10-04)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-vtk
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [1.12.2](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.1...@ohif/extension-vtk@1.12.2) (2021-09-28)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-vtk
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-vtk",
|
||||
"version": "1.12.2",
|
||||
"version": "1.12.4",
|
||||
"description": "OHIF extension for VTK.js",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -53,8 +53,8 @@
|
||||
"react-vtkjs-viewport": "^0.14.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ohif/core": "^2.15.1",
|
||||
"@ohif/ui": "^1.10.2",
|
||||
"@ohif/core": "^2.16.0",
|
||||
"@ohif/ui": "^1.10.3",
|
||||
"cornerstone-tools": "^6.0.0",
|
||||
"cornerstone-wado-image-loader": "^4.0.3",
|
||||
"dicom-parser": "^1.8.9",
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [2.16.0](https://github.com/OHIF/Viewers/compare/@ohif/core@2.15.1...@ohif/core@2.16.0) (2021-10-04)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Added support for WADO servers built with static hosting (e.g. S3) ([#2566](https://github.com/OHIF/Viewers/issues/2566)) ([a046c6c](https://github.com/OHIF/Viewers/commit/a046c6c9017a84e5ead71d5113b5e892333b4130))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.15.1](https://github.com/OHIF/Viewers/compare/@ohif/core@2.15.0...@ohif/core@2.15.1) (2021-09-28)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/core",
|
||||
"version": "2.15.1",
|
||||
"version": "2.16.0",
|
||||
"description": "Generic business logic for web-based medical imaging applications",
|
||||
"author": "OHIF Core Team",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
import { api } from 'dicomweb-client';
|
||||
|
||||
/**
|
||||
* An implementation of the static wado client, that fetches data from
|
||||
* a static response rather than actually doing real queries. This allows
|
||||
* fast encoding of test data, but because it is static, anything actually
|
||||
* performing searches doesn't work. This version fixes the query issue
|
||||
* by manually implementing a query option.
|
||||
*/
|
||||
export default class StaticWadoClient extends api.DICOMwebClient {
|
||||
static filterKeys = {
|
||||
StudyInstanceUID: '0020000D',
|
||||
PatientName: '00100010',
|
||||
PatientID: '00100020',
|
||||
StudyDescription: '00081030',
|
||||
ModalitiesInStudy: '00080061',
|
||||
};
|
||||
|
||||
constructor(qidoConfig) {
|
||||
super(qidoConfig);
|
||||
this.staticWado = qidoConfig.staticWado;
|
||||
this.extendMetadataWithInstances = qidoConfig.extendMetadataWithInstances;
|
||||
}
|
||||
|
||||
async retrieveSeriesMetadata(options) {
|
||||
if (!this.extendMetadataWithInstances)
|
||||
return super.retrieveSeriesMetadata(options);
|
||||
const results = await Promise.all([
|
||||
super.retrieveSeriesMetadata(options),
|
||||
this.searchForInstances(options),
|
||||
]);
|
||||
const metadata = results[0];
|
||||
const instances = results[1];
|
||||
return metadata.map(item => {
|
||||
const sopUID = item['00080018'].Value[0];
|
||||
const instance = instances.find(
|
||||
instance => instance['00080018'].Value[0] == sopUID
|
||||
);
|
||||
Object.assign(item, instance);
|
||||
return item;
|
||||
});
|
||||
}
|
||||
|
||||
async searchForStudies(options) {
|
||||
if (!this.staticWado) return super.searchForStudies(options);
|
||||
|
||||
let searchResult = await super.searchForStudies(options);
|
||||
const { queryParams } = options;
|
||||
if (!queryParams) return searchResult;
|
||||
const filtered = searchResult.filter(study => {
|
||||
for (const key of Object.keys(StaticWadoClient.filterKeys)) {
|
||||
if (!this.filterItem(key, queryParams, study)) return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
return filtered;
|
||||
}
|
||||
|
||||
filterItem(key, queryParams, study) {
|
||||
const altKey = StaticWadoClient.filterKeys[key] || key;
|
||||
if (!queryParams) return true;
|
||||
const testValue = queryParams[key] || queryParams[altKey];
|
||||
if (!testValue) return true;
|
||||
const valueElem = study[key] || study[altKey];
|
||||
if (!valueElem) return false;
|
||||
const value = valueElem.Value;
|
||||
return this.eqItem(testValue, value);
|
||||
}
|
||||
|
||||
eqItem(testValue, value) {
|
||||
if (testValue.filter) {
|
||||
return (
|
||||
testValue.filter(testItem => this.eqItem(testItem, value)).length > 0
|
||||
);
|
||||
}
|
||||
if (value === testValue) return true;
|
||||
if (typeof value == 'string') {
|
||||
return value.indexOf(testValue) != -1;
|
||||
}
|
||||
if (value.Alphabetic) return this.eqItem(testValue, value.Alphabetic);
|
||||
if (value.filter)
|
||||
return value.filter(item => this.eqItem(testValue, item)).length > 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import { api } from 'dicomweb-client';
|
||||
import StaticWadoClient from './StaticWadoClient';
|
||||
import DICOMWeb from '../../../DICOMWeb/';
|
||||
|
||||
import errorHandler from '../../../errorHandler';
|
||||
@@ -115,14 +116,18 @@ function resultDataToStudies(resultData) {
|
||||
}
|
||||
|
||||
export default function Studies(server, filter) {
|
||||
const { staticWado } = server;
|
||||
const config = {
|
||||
...server,
|
||||
url: server.qidoRoot,
|
||||
headers: DICOMWeb.getAuthorizationHeader(server),
|
||||
errorInterceptor: errorHandler.getHTTPErrorHandler(),
|
||||
requestHooks: [getXHRRetryRequestHook()],
|
||||
};
|
||||
|
||||
const dicomWeb = new api.DICOMwebClient(config);
|
||||
const dicomWeb = staticWado
|
||||
? new StaticWadoClient(config)
|
||||
: new api.DICOMwebClient(config);
|
||||
server.qidoSupportsIncludeField =
|
||||
server.qidoSupportsIncludeField === undefined
|
||||
? true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { api } from 'dicomweb-client';
|
||||
import StaticWadoClient from '../qido/StaticWadoClient';
|
||||
import dcmjs from 'dcmjs';
|
||||
import DICOMWeb from '../../../DICOMWeb/';
|
||||
import RetrieveMetadataLoader from './retrieveMetadataLoader';
|
||||
@@ -73,7 +73,8 @@ export default class RetrieveMetadataLoaderAsync extends RetrieveMetadataLoader
|
||||
configLoad() {
|
||||
const { server } = this;
|
||||
|
||||
const client = new api.DICOMwebClient({
|
||||
const client = new StaticWadoClient({
|
||||
...server,
|
||||
url: server.qidoRoot,
|
||||
headers: DICOMWeb.getAuthorizationHeader(server),
|
||||
errorInterceptor: errorHandler.getHTTPErrorHandler(),
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.10.3](https://github.com/OHIF/Viewers/compare/@ohif/ui@1.10.2...@ohif/ui@1.10.3) (2021-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [1.10.2](https://github.com/OHIF/Viewers/compare/@ohif/ui@1.10.1...@ohif/ui@1.10.2) (2021-09-24)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/ui",
|
||||
"version": "1.10.2",
|
||||
"version": "1.10.3",
|
||||
"description": "A set of React components for Medical Imaging Viewers",
|
||||
"author": "OHIF Contributors",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -25,11 +25,12 @@ function StudyBrowser(props) {
|
||||
altImageText,
|
||||
displaySetInstanceUID,
|
||||
imageId,
|
||||
InstanceNumber,
|
||||
derivedDisplaySetsNumber,
|
||||
numImageFrames,
|
||||
SeriesDescription,
|
||||
SeriesNumber,
|
||||
hasWarnings,
|
||||
hasDerivedDisplaySets,
|
||||
} = thumb;
|
||||
|
||||
return (
|
||||
@@ -48,12 +49,13 @@ function StudyBrowser(props) {
|
||||
// Thumb
|
||||
altImageText={altImageText}
|
||||
imageId={imageId}
|
||||
InstanceNumber={InstanceNumber}
|
||||
derivedDisplaySetsNumber={derivedDisplaySetsNumber}
|
||||
displaySetInstanceUID={displaySetInstanceUID} // used by drop
|
||||
numImageFrames={numImageFrames}
|
||||
SeriesDescription={SeriesDescription}
|
||||
SeriesNumber={SeriesNumber}
|
||||
hasWarnings={hasWarnings}
|
||||
hasDerivedDisplaySets={hasDerivedDisplaySets}
|
||||
// Events
|
||||
onClick={onThumbnailClick.bind(
|
||||
undefined,
|
||||
@@ -83,7 +85,7 @@ StudyBrowser.propTypes = {
|
||||
altImageText: PropTypes.string,
|
||||
displaySetInstanceUID: PropTypes.string.isRequired,
|
||||
imageId: PropTypes.string,
|
||||
InstanceNumber: PropTypes.number,
|
||||
derivedDisplaySetsNumber: PropTypes.number,
|
||||
numImageFrames: PropTypes.number,
|
||||
SeriesDescription: PropTypes.string,
|
||||
SeriesNumber: PropTypes.number,
|
||||
|
||||
@@ -15,11 +15,12 @@ const StudyLoadingListener = classes.StudyLoadingListener;
|
||||
function ThumbnailFooter({
|
||||
SeriesDescription,
|
||||
SeriesNumber,
|
||||
InstanceNumber,
|
||||
numImageFrames,
|
||||
hasWarnings,
|
||||
hasDerivedDisplaySets,
|
||||
}) {
|
||||
const [inconsistencyWarnings, inconsistencyWarningsSet] = useState([]);
|
||||
const [derivedDisplaySetsActive, derivedDisplaySetsActiveSet] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
let unmounted = false;
|
||||
@@ -28,10 +29,15 @@ function ThumbnailFooter({
|
||||
inconsistencyWarningsSet(response);
|
||||
}
|
||||
});
|
||||
hasDerivedDisplaySets.then(response => {
|
||||
if (!unmounted) {
|
||||
derivedDisplaySetsActiveSet(response);
|
||||
}
|
||||
});
|
||||
return () => {
|
||||
unmounted = true;
|
||||
};
|
||||
}, [hasWarnings]);
|
||||
}, [hasWarnings, hasDerivedDisplaySets]);
|
||||
|
||||
const infoOnly = !SeriesDescription;
|
||||
|
||||
@@ -88,20 +94,47 @@ function ThumbnailFooter({
|
||||
</React.Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
const getDerivedInfo = derivedDisplaySetsActive => {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{derivedDisplaySetsActive ? (
|
||||
<div className="derived">
|
||||
<Icon name="link" />
|
||||
</div>
|
||||
) : (
|
||||
<React.Fragment></React.Fragment>
|
||||
)}
|
||||
</React.Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
const getSeriesInformation = (
|
||||
SeriesNumber,
|
||||
InstanceNumber,
|
||||
numImageFrames,
|
||||
inconsistencyWarnings
|
||||
inconsistencyWarnings,
|
||||
derivedDisplaySetsActive
|
||||
) => {
|
||||
if (!SeriesNumber && !InstanceNumber && !numImageFrames) {
|
||||
if (!SeriesNumber && !numImageFrames) {
|
||||
return;
|
||||
}
|
||||
const seriesInformation = (
|
||||
<div className="series-information">
|
||||
{getInfo(SeriesNumber, 'S:')}
|
||||
{getInfo(InstanceNumber, 'I:')}
|
||||
{getInfo(numImageFrames, '', 'image-frames')}
|
||||
<React.Fragment>
|
||||
{SeriesNumber !== undefined ? (
|
||||
getInfo(SeriesNumber, 'S:')
|
||||
) : (
|
||||
<React.Fragment></React.Fragment>
|
||||
)}
|
||||
</React.Fragment>
|
||||
<React.Fragment>
|
||||
{numImageFrames !== undefined ? (
|
||||
getInfo(numImageFrames, '', 'image-frames')
|
||||
) : (
|
||||
<React.Fragment></React.Fragment>
|
||||
)}
|
||||
</React.Fragment>
|
||||
{getDerivedInfo(derivedDisplaySetsActive)}
|
||||
{getWarningInfo(SeriesNumber, inconsistencyWarnings)}
|
||||
</div>
|
||||
);
|
||||
@@ -114,9 +147,9 @@ function ThumbnailFooter({
|
||||
<div className="series-description">{SeriesDescription}</div>
|
||||
{getSeriesInformation(
|
||||
SeriesNumber,
|
||||
InstanceNumber,
|
||||
numImageFrames,
|
||||
inconsistencyWarnings
|
||||
inconsistencyWarnings,
|
||||
derivedDisplaySetsActive
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
@@ -130,11 +163,11 @@ function Thumbnail(props) {
|
||||
displaySetInstanceUID,
|
||||
imageId,
|
||||
imageSrc,
|
||||
InstanceNumber,
|
||||
numImageFrames,
|
||||
SeriesDescription,
|
||||
SeriesNumber,
|
||||
hasWarnings,
|
||||
hasDerivedDisplaySets,
|
||||
StudyInstanceUID,
|
||||
onClick,
|
||||
onDoubleClick,
|
||||
@@ -232,8 +265,8 @@ Thumbnail.propTypes = {
|
||||
altImageText: PropTypes.string,
|
||||
SeriesDescription: PropTypes.string,
|
||||
SeriesNumber: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||
InstanceNumber: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||
hasWarnings: PropTypes.instanceOf(Promise),
|
||||
hasDerivedDisplaySets: PropTypes.instanceOf(Promise),
|
||||
numImageFrames: PropTypes.number,
|
||||
onDoubleClick: PropTypes.func,
|
||||
onClick: PropTypes.func,
|
||||
|
||||
@@ -3,6 +3,33 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [4.12.2](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.1...@ohif/viewer@4.12.2) (2021-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [4.12.1](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.0...@ohif/viewer@4.12.1) (2021-10-06)
|
||||
|
||||
**Note:** Version bump only for package @ohif/viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [4.12.0](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.11.2...@ohif/viewer@4.12.0) (2021-10-04)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Added support for WADO servers built with static hosting (e.g. S3) ([#2566](https://github.com/OHIF/Viewers/issues/2566)) ([a046c6c](https://github.com/OHIF/Viewers/commit/a046c6c9017a84e5ead71d5113b5e892333b4130))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [4.11.2](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.11.1...@ohif/viewer@4.11.2) (2021-09-28)
|
||||
|
||||
**Note:** Version bump only for package @ohif/viewer
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/viewer",
|
||||
"version": "4.11.2",
|
||||
"version": "4.12.2",
|
||||
"description": "OHIF Viewer",
|
||||
"author": "OHIF Contributors",
|
||||
"license": "MIT",
|
||||
@@ -47,18 +47,18 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"@ohif/core": "^2.15.1",
|
||||
"@ohif/core": "^2.16.0",
|
||||
"@ohif/extension-cornerstone": "^2.12.1",
|
||||
"@ohif/extension-debugging": "^0.3.0",
|
||||
"@ohif/extension-dicom-html": "^1.3.11",
|
||||
"@ohif/extension-dicom-microscopy": "^0.52.0",
|
||||
"@ohif/extension-dicom-pdf": "^1.1.0",
|
||||
"@ohif/extension-dicom-rt": "^0.7.1",
|
||||
"@ohif/extension-dicom-segmentation": "^0.7.1",
|
||||
"@ohif/extension-dicom-rt": "^0.7.2",
|
||||
"@ohif/extension-dicom-segmentation": "^0.7.2",
|
||||
"@ohif/extension-lesion-tracker": "^0.2.1",
|
||||
"@ohif/extension-vtk": "^1.12.2",
|
||||
"@ohif/extension-vtk": "^1.12.4",
|
||||
"@ohif/i18n": "^0.53.0",
|
||||
"@ohif/ui": "^1.10.2",
|
||||
"@ohif/ui": "^1.10.3",
|
||||
"@tanem/react-nprogress": "^1.1.25",
|
||||
"classnames": "^2.2.6",
|
||||
"core-js": "^3.2.1",
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
window.config = {
|
||||
routerBasename: '/',
|
||||
showStudyList: true,
|
||||
servers: {
|
||||
dicomWeb: [
|
||||
{
|
||||
name: 'LocalStatic',
|
||||
wadoUriRoot: 'http://localhost:5000/',
|
||||
qidoRoot: 'http://localhost:5000',
|
||||
wadoRoot: 'http://localhost:5000/',
|
||||
qidoSupportsIncludeField: false,
|
||||
imageRendering: 'wadors',
|
||||
thumbnailRendering: 'thumbnail',
|
||||
enableStudyLazyLoad: true,
|
||||
supportsFuzzyMatching: false,
|
||||
staticWado: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
@@ -23,6 +23,8 @@ import './Viewer.css';
|
||||
import StudyPrefetcher from '../components/StudyPrefetcher.js';
|
||||
import StudyLoadingMonitor from '../components/StudyLoadingMonitor';
|
||||
|
||||
const { studyMetadataManager } = OHIF.utils;
|
||||
|
||||
class Viewer extends Component {
|
||||
static propTypes = {
|
||||
studies: PropTypes.arrayOf(
|
||||
@@ -429,6 +431,31 @@ class Viewer extends Component {
|
||||
|
||||
export default withDialog(Viewer);
|
||||
|
||||
/**
|
||||
* Async function to check if the displaySet has any derived one
|
||||
*
|
||||
* @param {*object} displaySet
|
||||
* @param {*object} study
|
||||
* @returns {bool}
|
||||
*/
|
||||
const _checkForDerivedDisplaySets = async function(displaySet, study) {
|
||||
let derivedDisplaySetsNumber = 0;
|
||||
if (
|
||||
displaySet.Modality &&
|
||||
!['SEG', 'SR', 'RTSTRUCT', 'RTDOSE'].includes(displaySet.Modality)
|
||||
) {
|
||||
const studyMetadata = studyMetadataManager.get(study.StudyInstanceUID);
|
||||
|
||||
const derivedDisplaySets = studyMetadata.getDerivedDatasets({
|
||||
referencedSeriesInstanceUID: displaySet.SeriesInstanceUID,
|
||||
});
|
||||
|
||||
derivedDisplaySetsNumber = derivedDisplaySets.length;
|
||||
}
|
||||
|
||||
return derivedDisplaySetsNumber > 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Async function to check if there are any inconsistences in the series.
|
||||
*
|
||||
@@ -684,7 +711,6 @@ const _mapStudiesToThumbnails = function(studies, activeDisplaySetInstanceUID) {
|
||||
const {
|
||||
displaySetInstanceUID,
|
||||
SeriesDescription,
|
||||
InstanceNumber,
|
||||
numImageFrames,
|
||||
SeriesNumber,
|
||||
} = displaySet;
|
||||
@@ -709,6 +735,11 @@ const _mapStudiesToThumbnails = function(studies, activeDisplaySetInstanceUID) {
|
||||
studies
|
||||
);
|
||||
|
||||
const hasDerivedDisplaySets = _checkForDerivedDisplaySets(
|
||||
displaySet,
|
||||
study
|
||||
);
|
||||
|
||||
return {
|
||||
active: _isDisplaySetActive(
|
||||
displaySet,
|
||||
@@ -719,10 +750,10 @@ const _mapStudiesToThumbnails = function(studies, activeDisplaySetInstanceUID) {
|
||||
altImageText,
|
||||
displaySetInstanceUID,
|
||||
SeriesDescription,
|
||||
InstanceNumber,
|
||||
numImageFrames,
|
||||
SeriesNumber,
|
||||
hasWarnings,
|
||||
hasDerivedDisplaySets,
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user