Compare commits
No commits in common. "1d6656a5b88b78beadb88ba286a132508cf1dde3" and "9852d99a4ae5dde3e215ea2479c03311e6493a89" have entirely different histories.
1d6656a5b8
...
9852d99a4a
|
@ -295,7 +295,6 @@
|
||||||
<ul style="width:100px;" v-if="readingTaskState < 2">
|
<ul style="width:100px;" v-if="readingTaskState < 2">
|
||||||
<li v-for="i in customizeStandards" :key="i.toolName" style="text-align:left;">
|
<li v-for="i in customizeStandards" :key="i.toolName" style="text-align:left;">
|
||||||
<a href="#" @click.prevent="setMoreToolActive(i.toolName)">
|
<a href="#" @click.prevent="setMoreToolActive(i.toolName)">
|
||||||
<svg-icon :icon-class="i.icon" class="svg-icon" style="margin-right: 5px;"/>
|
|
||||||
{{ $t(i.i18nKey) }}
|
{{ $t(i.i18nKey) }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
HU: {{ mousePosition.value }}
|
HU: {{ mousePosition.value }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="(series.Modality === 'PT' && mousePosition.value)">
|
<div v-else-if="(series.Modality === 'PT' && mousePosition.value)">
|
||||||
{{mousePosition.modalityUnit}}: {{ digitPlaces === -1 ?mousePosition.value.toFixed(3) :mousePosition.value.toFixed(digitPlaces) }}
|
SUVbw(g/ml): {{ digitPlaces === -1 ?mousePosition.value.toFixed(3) :mousePosition.value.toFixed(digitPlaces) }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="mousePosition.value">
|
<div v-else-if="mousePosition.value">
|
||||||
Density: {{ mousePosition.value }}
|
Density: {{ mousePosition.value }}
|
||||||
|
@ -74,9 +74,6 @@
|
||||||
<div v-show="imageInfo.size">
|
<div v-show="imageInfo.size">
|
||||||
W*H: {{ imageInfo.size }}
|
W*H: {{ imageInfo.size }}
|
||||||
</div>
|
</div>
|
||||||
<div v-show="imageInfo.zoom">
|
|
||||||
Zoom: {{ imageInfo.zoom }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-if="series" class="right-bottom-text">
|
<div v-if="series" class="right-bottom-text">
|
||||||
<div v-show="imageInfo.location">Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` }}</div>
|
<div v-show="imageInfo.location">Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` }}</div>
|
||||||
|
@ -114,12 +111,9 @@ import {
|
||||||
} from '@cornerstonejs/core'
|
} from '@cornerstonejs/core'
|
||||||
import * as cornerstoneTools from '@cornerstonejs/tools'
|
import * as cornerstoneTools from '@cornerstonejs/tools'
|
||||||
import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'
|
import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'
|
||||||
import {
|
const {
|
||||||
utilities as csToolsUtils
|
ToolGroupManager
|
||||||
} from '@cornerstonejs/tools'
|
} = cornerstoneTools
|
||||||
import { getPTImageIdInstanceMetadata } from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPTImageIdInstanceMetadata'
|
|
||||||
import ptScalingMetaDataProvider from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/ptScalingMetaDataProvider'
|
|
||||||
import { calculateSUVScalingFactors } from '@cornerstonejs/calculate-suv'
|
|
||||||
import { vec3 } from 'gl-matrix'
|
import { vec3 } from 'gl-matrix'
|
||||||
export default {
|
export default {
|
||||||
name: 'ImageViewport',
|
name: 'ImageViewport',
|
||||||
|
@ -194,7 +188,6 @@ export default {
|
||||||
this.element.addEventListener('CORNERSTONE_TOOLS_MOUSE_MOVE', this.cornerstoneToolsMouseMove)
|
this.element.addEventListener('CORNERSTONE_TOOLS_MOUSE_MOVE', this.cornerstoneToolsMouseMove)
|
||||||
this.element.addEventListener('mouseleave', () => {
|
this.element.addEventListener('mouseleave', () => {
|
||||||
this.mousePosition.index = []
|
this.mousePosition.index = []
|
||||||
this.mousePosition.value = null
|
|
||||||
})
|
})
|
||||||
// console.log(cornerstoneTools)
|
// console.log(cornerstoneTools)
|
||||||
// element.addEventListener('CORNERSTONE_STACK_NEW_IMAGE', this.stackNewImage)
|
// element.addEventListener('CORNERSTONE_STACK_NEW_IMAGE', this.stackNewImage)
|
||||||
|
@ -346,31 +339,16 @@ export default {
|
||||||
viewport.render()
|
viewport.render()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async prefetchMetadataInformation(imageIdsToPrefetch, modality) {
|
async prefetchMetadataInformation(imageIdsToPrefetch) {
|
||||||
let taskPromises = []
|
let taskPromises = []
|
||||||
for (let i = 0; i < imageIdsToPrefetch.length; i++) {
|
for (let i = 0; i < imageIdsToPrefetch.length; i++) {
|
||||||
taskPromises.push(cornerstoneDICOMImageLoader.wadouri.loadImage(imageIdsToPrefetch[i]).promise)
|
taskPromises.push(cornerstoneDICOMImageLoader.wadouri.loadImage(imageIdsToPrefetch[i]).promise)
|
||||||
if (taskPromises.length >= 6 || i === imageIdsToPrefetch.length - 1) {
|
if (taskPromises.length >= 6 || i === imageIdsToPrefetch.length - 1) {
|
||||||
let res = await Promise.all(taskPromises)
|
await Promise.all(taskPromises)
|
||||||
if (modality === 'PT') {
|
|
||||||
this.cachePTMetadata(res)
|
|
||||||
}
|
|
||||||
taskPromises = []
|
taskPromises = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cachePTMetadata(images) {
|
|
||||||
images.map(i=>{
|
|
||||||
const instanceMetadata = getPTImageIdInstanceMetadata(i.imageId)
|
|
||||||
if (typeof instanceMetadata.CorrectedImage === 'string') {
|
|
||||||
instanceMetadata.CorrectedImage = instanceMetadata.CorrectedImage.split('\\')
|
|
||||||
}
|
|
||||||
if (instanceMetadata) {
|
|
||||||
const suvScalingFactors = calculateSUVScalingFactors([instanceMetadata])
|
|
||||||
ptScalingMetaDataProvider.addInstance(i.imageId, suvScalingFactors[0])
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
async setSeriesInfo(obj, isLocate = false) {
|
async setSeriesInfo(obj, isLocate = false) {
|
||||||
try {
|
try {
|
||||||
if (this.series && obj.Id === this.series.Id && obj.Description === this.series.Description && !isLocate) {
|
if (this.series && obj.Id === this.series.Id && obj.Description === this.series.Description && !isLocate) {
|
||||||
|
@ -381,12 +359,9 @@ export default {
|
||||||
this.series = { ...obj }
|
this.series = { ...obj }
|
||||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||||
const image = await cornerstoneDICOMImageLoader.wadouri.loadImage(obj.ImageIds[obj.SliceIndex]).promise
|
this.prefetchMetadataInformation(obj.ImageIds)
|
||||||
if (obj.Modality === 'PT') {
|
|
||||||
this.cachePTMetadata([image])
|
|
||||||
}
|
|
||||||
this.prefetchMetadataInformation(obj.ImageIds, obj.Modality)
|
|
||||||
await viewport.setStack(this.series.Stack, obj.SliceIndex)
|
await viewport.setStack(this.series.Stack, obj.SliceIndex)
|
||||||
|
// cornerstoneTools.utilities.stackContextPrefetch.enable(viewport.element)
|
||||||
viewport.render()
|
viewport.render()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
|
@ -397,48 +372,13 @@ export default {
|
||||||
const worldPoint = currentPoints.world
|
const worldPoint = currentPoints.world
|
||||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||||
let referencedImageId = viewport.getCurrentImageId()
|
const imageData = viewport.getImageData()
|
||||||
const data = viewport.getImageData()
|
if (!imageData) return
|
||||||
if (!data) return
|
const index = imageData.imageData.worldToIndex(worldPoint)
|
||||||
const { dimensions, imageData, metadata, voxelManager } = data
|
|
||||||
const index = imageData.worldToIndex(worldPoint)
|
|
||||||
index[0] = Math.floor(index[0])
|
index[0] = Math.floor(index[0])
|
||||||
index[1] = Math.floor(index[1])
|
index[1] = Math.floor(index[1])
|
||||||
index[2] = Math.floor(index[2])
|
index[2] = Math.floor(index[2])
|
||||||
this.mousePosition.index = index
|
this.mousePosition.index = index
|
||||||
const modality = metadata.Modality
|
|
||||||
let ijk = csUtils.transformWorldToIndex(imageData, worldPoint)
|
|
||||||
ijk = vec3.round(ijk, ijk);
|
|
||||||
if (csUtils.indexWithinDimensions(ijk, dimensions)) {
|
|
||||||
this.isHandleOutsideImage = false
|
|
||||||
let value = voxelManager.getAtIJKPoint(ijk)
|
|
||||||
ijk[2] = viewport.getCurrentImageIdIndex()
|
|
||||||
let modalityUnit
|
|
||||||
if (modality === 'US') {
|
|
||||||
const calibratedResults = csToolsUtils.getCalibratedProbeUnitsAndValue(image, [ijk])
|
|
||||||
const hasEnhancedRegionValues = calibratedResults.values.every(
|
|
||||||
(value) => value !== null
|
|
||||||
)
|
|
||||||
value = (hasEnhancedRegionValues ? calibratedResults.values : value)
|
|
||||||
modalityUnit = hasEnhancedRegionValues
|
|
||||||
? calibratedResults.units
|
|
||||||
: 'raw';
|
|
||||||
} else {
|
|
||||||
const scalingModule = referencedImageId && metaData.get('scalingModule', referencedImageId)
|
|
||||||
const isSuvScaled = typeof scalingModule?.suvbw === 'number'
|
|
||||||
const pixelUnitsOptions = {
|
|
||||||
isPreScaled: csToolsUtils.viewport.isViewportPreScaled(viewport, referencedImageId),
|
|
||||||
isSuvScaled: isSuvScaled,
|
|
||||||
}
|
|
||||||
modalityUnit = csToolsUtils.getPixelValueUnits(
|
|
||||||
modality,
|
|
||||||
referencedImageId,
|
|
||||||
pixelUnitsOptions
|
|
||||||
);
|
|
||||||
}
|
|
||||||
this.mousePosition.value = value
|
|
||||||
this.mousePosition.modalityUnit = modalityUnit
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
toggleTask(evt, visitTaskNum, i) {
|
toggleTask(evt, visitTaskNum, i) {
|
||||||
this.$emit('activeViewport', this.viewportIndex)
|
this.$emit('activeViewport', this.viewportIndex)
|
||||||
|
|
Loading…
Reference in New Issue