From 62533db1473d5ffd5fdcce84f501e6fb4f02931c Mon Sep 17 00:00:00 2001
From: caiyiling <1321909229@qq.com>
Date: Thu, 21 Nov 2024 09:50:58 +0800
Subject: [PATCH] =?UTF-8?q?=E9=98=85=E7=89=87=E5=8F=8A=E5=BD=B1=E5=83=8F?=
=?UTF-8?q?=E9=A2=84=E8=A7=88=E9=A1=B5=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 17 +-
src/api/reading.js | 14 +
src/components/Dicom/DicomCanvas.vue | 499 ++-
src/components/Dicom/DicomTags.vue | 287 ++
src/components/Dicom/DicomViewer.vue | 60 +-
src/components/Dicom/dataDictionary.js | 3648 +++++++++++++++++
src/components/videos/index.vue | 80 +-
src/store/modules/reading.js | 369 +-
src/utils/metaDataProvider.js | 103 +
src/views/dicom-show/dicom-preview.vue | 50 +-
src/views/dicom-show/dicom-series.vue | 2 +-
src/views/dicom-show/dicom-study.vue | 721 ++--
src/views/dicom-show/dicom-visit.vue | 899 ++--
.../trials-panel/reading/ad-review/index.vue | 668 ++-
.../components/AdditionalAssessment.vue | 23 +-
.../dicoms/components/CustomWwwcForm.vue | 11 +-
.../reading/dicoms/components/DicomCanvas.vue | 174 +-
.../reading/dicoms/components/DicomViewer.vue | 456 ++-
.../reading/dicoms/components/Hotkeys.vue | 102 +-
.../components/IRecist/QuestionForm.vue | 2008 +++++----
.../components/IRecist/QuestionList.vue | 107 +-
.../reading/dicoms/components/Manuals.vue | 29 +-
.../dicoms/components/NoneDicomsCanvas.vue | 28 +-
.../dicoms/components/NoneDicomsViewer.vue | 2 +-
.../reading/dicoms/components/Others.vue | 42 +-
.../dicoms/components/PCWG/QuestionForm.vue | 365 +-
.../dicoms/components/PCWG/QuestionList.vue | 144 +-
.../dicoms/components/QuestionItem.vue | 232 +-
.../reading/dicoms/components/Questions.vue | 794 +++-
.../reading/dicoms/components/ReadPage.vue | 49 +-
.../dicoms/components/Recist/QuestionForm.vue | 1307 +++---
.../dicoms/components/Recist/QuestionList.vue | 105 +-
.../components/RecistBM/QuestionForm.vue | 737 ++--
.../components/RecistBM/QuestionList.vue | 104 +-
.../reading/dicoms/components/ReportPage.vue | 323 +-
.../reading/dicoms/components/StudyList.vue | 539 ++-
.../reading/dicoms/components/WL.vue | 42 +-
.../reading/dicoms/components/WLForm.vue | 33 +-
.../reading/dicoms/customize 2.zip | Bin 62602 -> 0 bytes
.../trials-panel/reading/dicoms/customize.zip | Bin 62600 -> 0 bytes
.../dicoms/customize/CustomizeDicomCanvas.vue | 574 +--
.../dicoms/customize/CustomizeDicomViewer.vue | 1645 ++++++--
.../customize/CustomizeMeasurementList.vue | 229 +-
.../customize/CustomizeQuestionFormItem.vue | 408 +-
.../customize/CustomizeQuestionItem.vue | 67 +-
.../CustomizeQuestionTableFormItem.vue | 182 +-
.../customize/CustomizeQuestionsPreview.vue | 78 +-
.../dicoms/customize/CustomizeReadPage.vue | 785 ++--
.../dicoms/customize/CustomizeReportPage.vue | 68 +-
.../customize/CustomizeReportPageUpload.vue | 92 +-
.../dicoms/customize/CustomizeStudyList.vue | 522 +--
.../reading/dicoms/customize/Hotkeys.vue | 50 +-
.../reading/dicoms/customize/Manuals.vue | 14 +-
.../reading/dicoms/customize/Others.vue | 34 +-
.../reading/dicoms/customize/WL.vue | 64 +-
.../reading/dicoms/customize/WLForm.vue | 45 +-
.../trials-panel/reading/dicoms/index.vue | 100 +-
.../reading/dicoms/none-dicoms.vue | 31 +-
.../dicoms/tools/CircleRoi/CircleRoiTool.js | 452 ++
.../dicoms/tools/CircleRoi/getCircleCoords.js | 21 +
.../reading/dicoms/tools/Length/LengthTool.js | 9 +-
.../tools/RectangleRoi/RectangleRoiTool.js | 22 +-
.../components/CustomizeTable.vue | 432 ++
.../global-review/components/IRecistTable.vue | 56 +-
.../global-review/components/PCWG3Table.vue | 53 +-
.../components/RecistBMTable.vue | 54 +-
.../global-review/components/RecistTable.vue | 57 +-
.../reading/global-review/index.vue | 209 +-
.../none-dicoms/components/Criterions.vue | 30 +-
.../reading/none-dicoms/components/ECRF.vue | 294 +-
.../none-dicoms/components/FormItem.vue | 356 +-
.../reading/none-dicoms/components/Report.vue | 956 +++++
.../none-dicoms/components/UploadFile.vue | 168 +
.../none-dicoms/components/VisitReview.vue | 144 +-
.../reading/none-dicoms/index.vue | 140 +-
.../reading/oncology-review/index.vue | 252 +-
vue.config.js | 10 +-
77 files changed, 17309 insertions(+), 6567 deletions(-)
create mode 100644 src/components/Dicom/DicomTags.vue
create mode 100644 src/components/Dicom/dataDictionary.js
create mode 100644 src/utils/metaDataProvider.js
delete mode 100644 src/views/trials/trials-panel/reading/dicoms/customize 2.zip
delete mode 100644 src/views/trials/trials-panel/reading/dicoms/customize.zip
create mode 100644 src/views/trials/trials-panel/reading/dicoms/tools/CircleRoi/CircleRoiTool.js
create mode 100644 src/views/trials/trials-panel/reading/dicoms/tools/CircleRoi/getCircleCoords.js
create mode 100644 src/views/trials/trials-panel/reading/global-review/components/CustomizeTable.vue
create mode 100644 src/views/trials/trials-panel/reading/none-dicoms/components/Report.vue
create mode 100644 src/views/trials/trials-panel/reading/none-dicoms/components/UploadFile.vue
diff --git a/package.json b/package.json
index fa321e8..504621a 100644
--- a/package.json
+++ b/package.json
@@ -13,13 +13,6 @@
"i18n:en": "node i18nGenerate.js lang=en keyCol=5 valCol=7"
},
"dependencies": {
- "@cornerstonejs/calculate-suv": "^1.1.0",
- "@cornerstonejs/core": "^1.27.4",
- "@cornerstonejs/dicom-image-loader": "^1.27.4",
- "@cornerstonejs/streaming-image-volume-loader": "1.23.2",
- "@cornerstonejs/tools": "^1.27.4",
- "@ffmpeg/core": "^0.10.0",
- "@ffmpeg/ffmpeg": "^0.10.1",
"@microsoft/signalr": "^6.0.8",
"@riophae/vue-treeselect": "0.4.0",
"ali-oss": "^6.17.1",
@@ -27,10 +20,10 @@
"babel-eslint": "7.2.3",
"copy-webpack-plugin": "^4.5.2",
"core-js": "^3.8.3",
- "cornerstone-core": "^2.3.0",
- "cornerstone-math": "^0.1.8",
- "cornerstone-tools": "^6.0.8",
- "cornerstone-wado-image-loader": "^3.1.2",
+ "cornerstone-core": "^2.6.1",
+ "cornerstone-math": "^0.1.10",
+ "cornerstone-tools": "^6.0.10",
+ "cornerstone-wado-image-loader": "^4.13.2",
"dcmjs": "^0.29.8",
"dicom-parser": "^1.8.9",
"dicomedit": "^0.1.0",
@@ -44,7 +37,6 @@
"jszip": "^3.7.1",
"moment": "^2.27.0",
"node-polyfill-webpack-plugin": "^2.0.1",
- "streamsaver": "^2.0.6",
"node-sass": "^4.14.1",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
@@ -54,6 +46,7 @@
"sass-loader": "^8.0.0",
"screenfull": "^4.2.0",
"sortablejs": "^1.15.0",
+ "streamsaver": "^2.0.6",
"v-viewer": "^1.6.4",
"vcrontab": "^0.3.5",
"vue": "^2.6.11",
diff --git a/src/api/reading.js b/src/api/reading.js
index d26fd8c..05a5d6f 100644
--- a/src/api/reading.js
+++ b/src/api/reading.js
@@ -226,3 +226,17 @@ export function confirmTaskReminder(param) {
data: param
})
}
+export function setSkipReadingCache(param) {
+ return request({
+ url: `/ReadingImageTask/setSkipReadingCache`,
+ method: 'post',
+ data: param
+ })
+}
+export function resetReadingTask(param) {
+ return request({
+ url: `/ReadingImageTask/resetReadingTask`,
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/components/Dicom/DicomCanvas.vue b/src/components/Dicom/DicomCanvas.vue
index b5f9304..9332f54 100644
--- a/src/components/Dicom/DicomCanvas.vue
+++ b/src/components/Dicom/DicomCanvas.vue
@@ -8,7 +8,6 @@
style="width:100%;height:100%;position:relative;"
class="cornerstone-element"
@contextmenu.prevent="onContextmenu"
- @mousemove="sliderMousemove"
@mouseup="sliderMouseup"
>
@@ -54,7 +53,7 @@
-
+
@@ -82,16 +81,25 @@
+
+
+
+
diff --git a/src/components/Dicom/DicomViewer.vue b/src/components/Dicom/DicomViewer.vue
index 8a7e83e..8d091c2 100644
--- a/src/components/Dicom/DicomViewer.vue
+++ b/src/components/Dicom/DicomViewer.vue
@@ -162,6 +162,19 @@
+
+
@@ -169,19 +182,7 @@
-
-
+
@@ -232,6 +233,10 @@
+
+
@@ -247,7 +252,7 @@
-
@@ -181,7 +181,7 @@ export default {
required: true
},
isReadingTaskViewInOrder: {
- type: Boolean,
+ type: Number,
required: true
},
customWwcTpl: {
@@ -222,7 +222,8 @@ export default {
taskBlindName: '',
frame: null,
imageRendered: false,
- isExistsClinicalData: false
+ isExistsClinicalData: false,
+ isExistMutiFrames: false
// preventCache: true
},
dicomInfo: {
@@ -333,7 +334,8 @@ export default {
mounted() {
console.log(cornerstoneTools)
- this.subjectCode = this.$router.currentRoute.query.subjectCode
+ // this.subjectCode = this.$router.currentRoute.query.subjectCode
+ this.subjectCode = localStorage.getItem('subjectCode')
document.addEventListener('mouseup', () => {
this.sliderMouseup()
})
@@ -477,7 +479,7 @@ export default {
},
methods: {
goViewer(e) {
- console.log(this.$refs['sliderBox'].clientHeight)
+ // console.log(this.$refs['sliderBox'].clientHeight)
var height = e.offsetY * 100 / this.$refs['sliderBox'].clientHeight
this.height = height
var index = Math.trunc(this.stack.imageIds.length * this.height / 100)
@@ -546,7 +548,7 @@ export default {
},
mouseUp(e) {
- console.log('mouseUp')
+ // console.log('mouseUp')
if (this.readingTaskState >= 2) return
this.image = e.detail.image
this.getToolStateInfo(e)
@@ -672,7 +674,7 @@ export default {
this.sliderInfo.isMove = false
},
getMeasureData() {
- console.log('getMeasureData')
+ // console.log('getMeasureData')
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
this.measureData = this.visitTaskList[idx].MeasureData
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
@@ -757,7 +759,7 @@ export default {
const imageInfo = this.getInstanceInfo(imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
for (var m = 0; m < this.measuredTools.length; m++) {
var toolType = this.measuredTools[m]
@@ -814,7 +816,7 @@ export default {
}
},
stackScrollCallback(e) {
- console.log('stackScrollCallback')
+ // console.log('stackScrollCallback')
const { detail } = e
if (this.isScrollSync && this.currentDicomCanvasIndex === this.canvasIndex) {
this.scrollSyncInfo.canvasIndex = this.canvasIndex
@@ -879,7 +881,6 @@ export default {
return seriesList[seriesIdx].loadStatus ? 1 : 0
},
renderMeasuredData(e) {
- this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
if (idx === -1) return
this.measureData = this.visitTaskList[idx].MeasureData
@@ -898,9 +899,7 @@ export default {
} else {
cornerstoneTools.setToolEnabledForElement(element, data.MeasureData.type, { mouseButtonMask: 1 })
}
- // console.log('renderMeasuredData', this.stack.frame)
-
- if (this.stack.instanceId.includes(data.InstanceId) && ((data.NumberOfFrames === this.stack.frame) || !data.NumberOfFrames) && data.MeasureData) {
+ if (this.stack.instanceId.includes(data.InstanceId) && ((this.stack.isExistMutiFrames && data.MeasureData.frame === this.stack.frame && data.MeasureData) || (!this.stack.isExistMutiFrames && data.MeasureData))) {
const toolState = ToolStateManager.getImageIdToolState(e.detail.image.imageId, data.MeasureData.type)
if (toolState && toolState.data.length > 0) {
var idx = toolState.data.findIndex(item => item.uuid === data.MeasureData.data.uuid)
@@ -987,7 +986,7 @@ export default {
const imageInfo = this.getInstanceInfo(imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
for (let t = 0; t < this.measuredTools.length; t++) {
var toolType = this.measuredTools[t]
@@ -998,7 +997,7 @@ export default {
if (i > -1) {
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === toolState.data[i].uuid)
if (idx > -1) {
- console.log('mouseClick')
+ // console.log('mouseClick')
DicomEvent.$emit('setCollapseActive', this.measureData[idx])
if (this.readingTaskState < 2) {
const measureData = {}
@@ -1040,7 +1039,7 @@ export default {
loadImageStack(dicomSeries) {
return new Promise(resolve => {
this.isCurrentTask = dicomSeries.isCurrentTask
- this.isBaseline = dicomSeries.isBaseline
+ this.isBaseline = dicomSeries.isBaseLineTask
this.readingTaskState = dicomSeries.readingTaskState
if (this.isCurrentTask && this.readingTaskState < 2) {
this.activeTool = 1
@@ -1055,7 +1054,7 @@ export default {
this.stack.studyId = dicomSeries.studyId
this.stack.seriesNumber = dicomSeries.seriesNumber
this.stack.imageIds = dicomSeries.imageIds
- this.stack.currentImageIdIndex = dicomSeries.imageIdIndex ? dicomSeries.imageIdIndex : 0
+ this.stack.currentImageIdIndex = dicomSeries.imageIdIndex && dicomSeries.imageIdIndex < dicomSeries.imageIds.length ? dicomSeries.imageIdIndex : 0
this.stack.imageIdIndex = dicomSeries.imageIdIndex
this.stack.firstImageLoading = true
this.stack.visitTaskId = dicomSeries.visitTaskId
@@ -1066,6 +1065,7 @@ export default {
this.stack.sliceThickness = dicomSeries.sliceThickness
this.stack.instanceCount = dicomSeries.instanceCount
this.stack.isExistsClinicalData = dicomSeries.isExistsClinicalData
+ this.stack.isExistMutiFrames = dicomSeries.isExistMutiFrames
// this.measuredData = dicomSeries.measuredData
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === dicomSeries.visitTaskId)
this.stack.visitTaskNum = this.visitTaskList[idx].VisitTaskNum
@@ -1086,18 +1086,18 @@ export default {
const imageInfo = this.getInstanceInfo(imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
this.stack.instanceId = instanceId
- const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
- ToolStateManager.clearImageIdToolState(dicomSeries.imageIds)
- if (this.toolState.clipPlaying) this.toggleClipPlay()
- this.toolState.viewportInvert = false
- this.toolState.dicomInfoVisible = false
-
+
const element = this.$refs.canvas
cornerstone.enable(element)
element.tabIndex = 0
element.focus()
+ const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
+ ToolStateManager.clearImageIdToolState(dicomSeries.imageIds)
+ this.toggleClipPlay(false)
+ this.toolState.viewportInvert = false
+ this.toolState.dicomInfoVisible = false
var scope = this
// var p = parseInt(new Date().getTime())
// requestPoolManager.loadAndCacheImagePlus(this.stack.imageIds[this.stack.currentImageIdIndex], this.stack.seriesId, p*100).then(image=>{
@@ -1110,22 +1110,27 @@ export default {
// }
// resolve()
// })
+ this.loading = true
cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex])
.then(async image => {
- await scope.onFirstImageLoaded(image)
+ if (this.stack.imageIds.indexOf(image.imageId) !== -1) {
+ await scope.onFirstImageLoaded(image)
+ }
+ scope.loading = false
resolve()
})
.catch((error) => {
if (error.error && error.error.message) {
this.$alert(error.error.message)
}
+ scope.loading = false
resolve()
})
})
},
onFirstImageLoaded(image) {
- console.log('onFirstImageLoaded')
- return new Promise(resolve => {
+ // console.log('onFirstImageLoaded')
+ return new Promise(async resolve => {
const element = this.$refs.canvas
var viewport = cornerstone.getDefaultViewportForImage(this.canvas, image)
cornerstone.displayImage(this.canvas, image, viewport)
@@ -1195,15 +1200,15 @@ export default {
const imageInfo = this.getInstanceInfo(image.imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
this.stack.instanceId = instanceId
this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
- this.resetWwwc()
+ // this.resetWwwc()
resolve()
})
},
onNewImage(e) {
- console.log('cornerstonenewimage')
+ // console.log('cornerstonenewimage')
if (this.isCurrentTask && this.readingTaskState < 2) {
this.resetHideMeasureArr()
}
@@ -1240,6 +1245,12 @@ export default {
if (this.dicomInfo.thick) {
this.dicomInfo.thick = this.dicomInfo.thick.toFixed(2)
}
+ const newImageIdIndex = this.stack.imageIds.findIndex(i => i === imageId)
+ if (newImageIdIndex === -1) return
+ this.stack.currentImageIdIndex = newImageIdIndex
+ this.stack.imageIdIndex = newImageIdIndex
+ this.series.imageIdIndex = newImageIdIndex
+ this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
},
getScreenshots() {
const canvas = this.canvas.querySelector('canvas')
@@ -1264,7 +1275,7 @@ export default {
const imageInfo = this.getInstanceInfo(imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
if (this.imageId !== instanceId) {
this.getOrientationMarker(e.detail.element)
// 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值
@@ -1316,20 +1327,20 @@ export default {
var element = cornerstone.getEnabledElement(this.canvas)
var viewport = element.viewport
// 测量完成
- console.log('completed')
+ // console.log('completed')
this.activeTool = 1
this.activeToolName = ''
var { imageId } = element.image
const imageInfo = this.getInstanceInfo(imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') {
const measureData = {}
measureData.studyId = this.stack.studyId
measureData.seriesId = this.stack.seriesId
measureData.instanceId = instanceId
- measureData.frame = this.stack.frame ? this.stack.frame : 0
+ measureData.frame = this.stack.frame
measureData.data = e.detail.measurementData
measureData.type = e.detail.toolName
measureData.thick = this.dicomInfo.thick
@@ -1434,7 +1445,7 @@ export default {
},
onMeasurementmodified(e) {
// 移动
- console.log('modified')
+ // console.log('modified')
if (this.readingTaskState >= 2) return
const { measurementData, toolType } = e.detail
var element = cornerstone.getEnabledElement(this.canvas)
@@ -1443,7 +1454,8 @@ export default {
const imageInfo = this.getInstanceInfo(imageId)
var instanceId = imageInfo.instanceId
var frame = imageInfo.frame
- this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0
+ this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null
+
var uuid = measurementData.uuid
var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
if (idx > -1) {
@@ -1559,8 +1571,10 @@ export default {
resetViewport() {
this.toolState.viewportInvert = false
- this.orientationMarkers = [...this.originalMarkers]
- this.setMarkers()
+ if (this.originalMarkers.length > 0) {
+ this.orientationMarkers = [...this.originalMarkers]
+ this.setMarkers()
+ }
var image = cornerstone.getImage(this.canvas)
cornerstone.setViewport(
this.canvas,
@@ -1619,18 +1633,19 @@ export default {
}
},
- toggleClipPlay() {
- if (this.toolState.clipPlaying) {
+ toggleClipPlay(isPlay) {
+ if (isPlay) {
+ this.toolState.clipPlaying = true
+ cornerstoneTools.playClip(this.canvas, this.dicomInfo.fps)
+ cornerstoneTools.getToolState(
+ this.canvas,
+ 'playClip'
+ ).data[0].loop = false
+ } else {
cornerstoneTools.stopClip(this.canvas)
this.toolState.clipPlaying = false
return
}
- this.toolState.clipPlaying = true
- cornerstoneTools.playClip(this.canvas, this.dicomInfo.fps)
- cornerstoneTools.getToolState(
- this.canvas,
- 'playClip'
- ).data[0].loop = false
},
setFps(fps) {
this.dicomInfo.fps = fps
@@ -1639,7 +1654,7 @@ export default {
resetWwwc() {
this.toolState.viewportInvert = false
var viewport = cornerstone.getViewport(this.canvas)
- viewport.invert = false
+ // viewport.invert = false
var image = cornerstone.getImage(this.canvas)
viewport.voi.windowWidth = image.windowWidth
viewport.voi.windowCenter = image.windowCenter
@@ -1675,8 +1690,10 @@ export default {
},
resetRotate() {
- this.orientationMarkers = [...this.originalMarkers]
- this.setMarkers()
+ if (this.originalMarkers.length > 0) {
+ this.orientationMarkers = [...this.originalMarkers]
+ this.setMarkers()
+ }
var viewport = cornerstone.getViewport(this.canvas)
viewport.hflip = false
viewport.vflip = false
@@ -1691,23 +1708,25 @@ export default {
}
},
setRotate(hflip, vflip, angle, type) {
- var markers = [...this.orientationMarkers]
- if (type === 2) {
- // 垂直翻转
- this.orientationMarkers[0] = markers[2]
- this.orientationMarkers[2] = markers[0]
- } else if (type === 3) {
- // 水平翻转
- this.orientationMarkers[1] = markers[3]
- this.orientationMarkers[3] = markers[1]
- } else if (type === 4) {
- // 左转90度
- this.orientationMarkers = markers.slice(1, 4).concat(markers[0])
- } else if (type === 5) {
- // 右转90度
- this.orientationMarkers = [markers[3]].concat(markers.slice(0, 3))
+ if (this.orientationMarkers.length > 0) {
+ var markers = [...this.orientationMarkers]
+ if (type === 2) {
+ // 垂直翻转
+ this.orientationMarkers[0] = markers[2]
+ this.orientationMarkers[2] = markers[0]
+ } else if (type === 3) {
+ // 水平翻转
+ this.orientationMarkers[1] = markers[3]
+ this.orientationMarkers[3] = markers[1]
+ } else if (type === 4) {
+ // 左转90度
+ this.orientationMarkers = markers.slice(1, 4).concat(markers[0])
+ } else if (type === 5) {
+ // 右转90度
+ this.orientationMarkers = [markers[3]].concat(markers.slice(0, 3))
+ }
+ this.setMarkers()
}
- this.setMarkers()
var viewport = cornerstone.getViewport(this.canvas)
if (hflip) viewport.hflip = !viewport.hflip
if (vflip) viewport.vflip = !viewport.vflip
@@ -1716,9 +1735,8 @@ export default {
},
saveImage() {
- let timestamp = Date.now()
- // var uid = cornerstone.getImage(this.canvas).data.string('x00080018')
- cornerstoneTools.SaveAs(this.canvas, `${this.subjectCode}_${this.stack.taskBlindName}_${timestamp}.png`)
+ var uid = cornerstone.getImage(this.canvas).data.string('x00080018')
+ cornerstoneTools.SaveAs(this.canvas, `${uid}.png`)
},
fitToWindow() {
if (this.stack.seriesNumber) {
@@ -1917,6 +1935,17 @@ export default {
}
}
},
+ getInstanceInfo(imageId) {
+ const params = {}
+ const searchParams = new URLSearchParams(imageId.split('?')[1])
+ for (const [key, value] of searchParams.entries()) {
+ params[key] = value
+ }
+ if (isNaN(params.frame)) {
+ params.frame = 0
+ }
+ return params
+ },
preventDefault(e) {
e.stopImmediatePropagation()
e.stopPropagation()
@@ -1927,15 +1956,6 @@ export default {
e.stopImmediatePropagation()
e.stopPropagation()
e.preventDefault()
- },
- getInstanceInfo(imageId) {
- const params = {}
- const searchParams = new URLSearchParams(imageId.split('?')[1])
-
- for (const [key, value] of searchParams.entries()) {
- params[key] = value
- }
- return params
}
}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue
index 31e1791..e95eeb3 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue
@@ -26,7 +26,7 @@
A
-
+
A
@@ -280,6 +280,54 @@
{{ tool.text }}
-->
+
-
+
@@ -438,6 +508,21 @@
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
@@ -1832,7 +2094,7 @@ export default {
flex-direction: column;
justify-content: center;
align-items: center;
- margin-right: 30px;
+ margin-right: 20px;
.icon{
padding: 5px;
border: 1px solid #404040;
@@ -1851,6 +2113,39 @@ export default {
display: none;
}
}
+ .tool-frame{
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ margin-right: 20px;
+ border: 1px solid #404040;
+ .icon{
+ padding: 5px;
+ border-right: 1px solid #404040;
+ cursor: pointer;
+ text-align: center;
+ .svg-icon{
+ font-size:20px;
+ color:#ddd;
+ }
+ }
+ .select-wrapper{
+ width: 60px;
+ background-color: black;
+ color: #ddd;
+ border: none;
+ font-size: 13px;
+ outline: none;
+ }
+ .text{
+ position: relative;
+ font-size: 12px;
+ margin-top: 5px;
+ color: #d0d0d0;
+ display: none;
+ }
+ }
.tool_active{
background-color: #607d8b;
}
@@ -1963,9 +2258,22 @@ export default {
.form-container{
// box-sizing: border-box;
width: 350px;
- height: 100%;
+ // height: 100vh;
border: 1px solid #727272;
- // overflow-y: auto;
+ // position: relative;
+ display: flex;
+ flex-direction: column;
+
+ }
+ .form-wrapper{
+ flex-grow: 1;
+ height: 0;
+ overflow: hidden;
+ }
+ .form-footer{
+ background: #000;
+ padding: 10px 0;
+ text-align: center;
}
.viewer-container{
box-sizing: border-box;
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue b/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue
index c259ba6..1f1cdb6 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue
@@ -56,22 +56,25 @@ export default {
this.getHotkeys()
},
methods: {
- getHotkeys(isReset = false) {
+ async getHotkeys(isReset = false) {
this.loading = true
this.hotKeyList = []
- getDoctorShortcutKey({ imageToolType: this.readingTool }).then(res => {
- res.Result.map(item => {
- this.hotKeyList.push({ id: item.Id, keys: { controlKey: { altKey: item.AltKey, ctrlKey: item.CtrlKey, shiftKey: item.ShiftKey, metaKey: item.MetaKey, key: item.Keyboardkey, code: item.Code }, text: item.Text }, label: item.ShortcutKeyEnum })
- })
- if (isReset) {
- this.$emit('reset', this.hotKeyList)
+ try {
+ const res = await getDoctorShortcutKey({ imageToolType: this.readingTool })
+ if (res.IsSuccess) {
+ res.Result.map(item => {
+ this.hotKeyList.push({ id: item.Id, keys: { controlKey: { altKey: item.AltKey, ctrlKey: item.CtrlKey, shiftKey: item.ShiftKey, metaKey: item.MetaKey, key: item.Keyboardkey, code: item.Code }, text: item.Text }, label: item.ShortcutKeyEnum })
+ })
+ if (isReset) {
+ this.$emit('reset', this.hotKeyList)
+ }
}
this.loading = false
- }).catch(() => {
+ } catch (e) {
this.loading = false
- })
+ }
},
- handleSave() {
+ async handleSave() {
var params = {
imageToolType: this.readingTool,
shortcutKeyList: []
@@ -86,17 +89,15 @@ export default {
emptyLabel = item.label
break
} else {
- shortcutKeyList.push(
- {
- shortcutKeyEnum: item.label,
- keyboardkey: item.keys.controlKey.key,
- code: item.keys.controlKey.code,
- text: item.keys.text,
- altKey: item.keys.controlKey.altKey,
- ctrlKey: item.keys.controlKey.ctrlKey,
- shiftKey: item.keys.controlKey.shiftKey,
- metaKey: item.keys.controlKey.metaKey }
- )
+ shortcutKeyList.push({
+ shortcutKeyEnum: item.label,
+ keyboardkey: item.keys.controlKey.key,
+ code: item.keys.controlKey.code,
+ text: item.keys.text,
+ altKey: item.keys.controlKey.altKey,
+ ctrlKey: item.keys.controlKey.ctrlKey,
+ shiftKey: item.keys.controlKey.shiftKey,
+ metaKey: item.keys.controlKey.metaKey })
}
}
if (isExistEmptyText) {
@@ -112,43 +113,40 @@ export default {
})
} else {
this.loading = true
- // this.hotKeyList.map(item => {
- // shortcutKeyList.push(
- // {
- // shortcutKeyEnum: item.label,
- // keyboardkey: item.keys.controlKey.key,
- // code: item.keys.controlKey.code,
- // text: item.keys.text,
- // altKey: item.keys.controlKey.altKey,
- // ctrlKey: item.keys.controlKey.ctrlKey,
- // shiftKey: item.keys.controlKey.shiftKey,
- // metaKey: item.keys.controlKey.metaKey }
- // )
- // })
params.shortcutKeyList = shortcutKeyList
- setShortcutKey(params).then(res => {
- this.$emit('reset', this.hotKeyList)
- // this.$emit('close')
+ try {
+ const res = await setShortcutKey(params)
+ if (res.IsSuccess) {
+ this.$emit('reset', this.hotKeyList)
+ }
this.loading = false
- }).catch(() => {
+ } catch (e) {
this.loading = false
- })
+ }
}
},
- handleReset() {
+ async handleReset() {
// '是否确认重置?'
- this.$confirm(this.$t('trials:hotkeys:message:confirmReset'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(() => {
- this.loading = true
- restoreDefaultShortcutKey({ imageToolType: this.readingTool }).then(res => {
- this.$message.success(this.$t('trials:hotkeys:message:resetSuccessfully')) // '重置成功!'
- this.getHotkeys(true)
- }).catch(() => { this.loading = false })
- })
- .catch(action => {})
+ const confirm = await this.$confirm(
+ this.$t('trials:hotkeys:message:confirmReset'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+
+ this.loading = true
+ try {
+ const res = await restoreDefaultShortcutKey({ imageToolType: this.readingTool })
+ if (res.IsSuccess) {
+ this.$message.success(this.$t('trials:hotkeys:message:resetSuccessfully')) // '重置成功!'
+ this.getHotkeys(true)
+ }
+ this.loading = false
+ } catch (e) {
+ this.loading = false
+ }
},
handleHotkeyVerify(hotkey) {
for (const item of this.hotKeyList) {
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue
index 03b7182..20146b1 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue
@@ -119,44 +119,48 @@
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
0mm,自动给“存在”状态,如果淋巴结靶病灶短径>=10mm,自动给“存在”状态。淋巴结靶病灶在短径小于10mm时,用十字线标记测量时标记为消失
- // if (!this.isBaseLineTask && this.lesionType === 0 && ((isLymphLesion === 0 && lesionLength > 0) || (isLymphLesion === 1 && lesionShort >= 10))) {
- // const stateId = this.getQuestionId(7)
- // this.$set(this.questionForm, stateId, 0)
- // lesionState = 0
- // }
-
- // if (!this.isBaseLineTask && this.lesionType === 0 && (isLymphLesion === 1 && measureData.type === 'Bidirectional' && lesionShort < 10)) {
- // const stateId = this.getQuestionId(7)
- // this.$set(this.questionForm, stateId, 3)
- // lesionState = 3
- // }
- // // 基线时,默认状态都为存在
- // if (this.isBaseLineTask && !lesionState) {
- // const stateId = this.getQuestionId(7)
- // this.$set(this.questionForm, stateId, 0)
- // lesionState = 0
- // }
-
+ const lesionL = this.getQuestionVal(0)
+ const lesionS = this.getQuestionVal(1)
+ var lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion: isLymph, lesionPart, lesionOrgan, lesionShort: lesionS, lesionLength: lesionL, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
this.toolType = measureData.type
DicomEvent.$emit('refreshStudyListMeasureData')
@@ -839,29 +815,33 @@ export default {
}
},
getQuestionVal(questionMark) {
- var idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
+ const idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
if (idx > -1) {
- var questionId = this.questions[idx].Id
- return this.questionForm[questionId]
+ const questionId = this.questions[idx].Id
+ const answer = this.questionForm[questionId]
+ if (isNaN(parseFloat(answer))) {
+ return answer
+ } else {
+ return parseFloat(answer)
+ }
} else {
return ''
}
},
filterState(arr) {
if (!this.isBaseLineTask) {
- var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
- const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : 0
- const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : 0
- const lastLesionL = !isNaN(parseInt(this.answers.LastTaskMajorAxis)) ? parseInt(this.answers.LastTaskMajorAxis) : 0
- const lastLesionS = !isNaN(parseInt(this.answers.LastTaskShortAxis)) ? parseInt(this.answers.LastTaskShortAxis) : 0
- if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionShort < lastLesionS) {
+ const isLymphLesion = this.getQuestionVal(2)
+ const lesionLength = this.getQuestionVal(0)
+ const lesionShort = this.getQuestionVal(1)
+ const bLesionL = !isNaN(parseFloat(this.answers.BaseLineMajorAxis)) ? parseFloat(this.answers.BaseLineMajorAxis) : 0
+ const bLesionS = !isNaN(parseFloat(this.answers.BaseLineShortAxis)) ? parseFloat(this.answers.BaseLineShortAxis) : 0
+ if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort < bLesionS) {
const v = this.isConvertedTask ? 4 : 1
arr = arr.filter(i => i.value !== v)
- } else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionShort >= 10 && lesionShort > lastLesionS) {
+ } else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort >= 10 && lesionShort > bLesionS) {
const v = this.isConvertedTask ? 4 : 1
arr = arr.filter(i => i.value === 0 || i.value === v)
- } else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < lastLesionL) {
+ } else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < bLesionL) {
const v = this.isConvertedTask ? 4 : 1
arr = arr.filter(i => i.value !== v)
}
@@ -926,210 +906,693 @@ export default {
// 生成Blob对象(文件对象)
return new Blob([bytesCode], { type: imgtype })
},
- handleSave() {
- this.$refs.measurementForm.validate(async valid => {
- if (!valid) return
- const loading = this.$loading({ fullscreen: true })
- var measureData = this.questionForm.MeasureData
- var lesionState = this.getQuestionVal(7)
- var lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
- var lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
- var lymphNodes = this.getQuestionVal(2)
- lymphNodes = (lymphNodes !== null && lymphNodes !== undefined) ? parseInt(lymphNodes) : null
- if (this.isBaseLineTask) {
- // 基线
- // 靶病灶且状态为存在(0)
- if (this.lesionType === 0 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具,短径大于等于15mm
- if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 15)) {
- // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记,且短径须大于15mm!
- this.$confirm(this.$t('trials:reading:warnning:msg19'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 直径测量工具 长径须大于等于10mm且不小于2倍层厚
- if (!(measureData && measureData.type === 'Length' && lesionLength >= 10 && (measureData.thick && lesionLength >= 2 * measureData.thick || !measureData.thick))) {
- // 评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记,长径须大于10mm且不小于2倍层厚!
- this.$confirm(this.$t('trials:reading:warnning:msg20'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ async handleSave() {
+ const valid = await this.$refs.measurementForm.validate()
+ if (!valid) return
+ const loading = this.$loading({ fullscreen: true })
+ var measureData = this.questionForm.MeasureData
+ var lesionState = this.getQuestionVal(7)
+ var lesionLength = this.getQuestionVal(0)
+ var lesionShort = this.getQuestionVal(1)
+ var lymphNodes = this.getQuestionVal(2)
+ if (this.isBaseLineTask) {
+ // 基线
+ // 靶病灶且状态为存在(0)
+ if (this.lesionType === 0 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具,短径大于等于15mm
+ if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 15)) {
+ // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记,且短径须大于15mm!
+ this.$confirm(this.$t('trials:reading:warnning:msg19'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 直径测量工具 长径须大于等于10mm且不小于2倍层厚
+ if (!(measureData && measureData.type === 'Length' && lesionLength >= 10 && (measureData.thick && lesionLength >= 2 * measureData.thick || !measureData.thick))) {
+ // 评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记,长径须大于10mm且不小于2倍层厚!
+ this.$confirm(this.$t('trials:reading:warnning:msg20'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
+ }
- // 非靶病灶且状态为存在(0)
- if (this.lesionType === 1 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结非靶病灶 必须使用长短径测量工具或箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记
- this.$confirm(this.$t('trials:reading:warnning:msg21'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具或箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg22'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ // 非靶病灶且状态为存在(0)
+ if (this.lesionType === 1 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结非靶病灶 必须使用长短径测量工具或箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记
+ this.$confirm(this.$t('trials:reading:warnning:msg21'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具或箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg22'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
- } else {
- // 非基线
- // 靶病灶且状态为存在(0)
- if (this.lesionType === 0 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具
- if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 10)) {
- // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg23'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 直径测量工具
- if (!(measureData && measureData.type === 'Length')) {
- // `评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg24'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ }
+ } else {
+ // 非基线
+ // 靶病灶且状态为存在(0)
+ if (this.lesionType === 0 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具
+ if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 10)) {
+ // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg23'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 直径测量工具
+ if (!(measureData && measureData.type === 'Length')) {
+ // `评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg24'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
- // 靶病灶且状态为太小(1)
- if (this.lesionType === 0 && lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用箭头工具,短径记录为5mm
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg25'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const shortId = this.getQuestionId(1)
- this.$set(this.questionForm, shortId, 5)
- lesionShort = 5
- }
- } else {
- // 非淋巴结靶病灶 箭头工具,长径记录为5mm
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg26'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const lengthId = this.getQuestionId(0)
- this.$set(this.questionForm, lengthId, 5)
- lesionLength = 5
- }
+ }
+ // 靶病灶且状态为太小(1)
+ if (this.lesionType === 0 && lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用箭头工具,短径记录为5mm
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg25'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const shortId = this.getQuestionId(1)
+ this.$set(this.questionForm, shortId, 5)
+ lesionShort = 5
+ }
+ } else {
+ // 非淋巴结靶病灶 箭头工具,长径记录为5mm
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg26'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const lengthId = this.getQuestionId(0)
+ this.$set(this.questionForm, lengthId, 5)
+ lesionLength = 5
}
}
+ }
- // 靶病灶且状态为无法评估(2)
- if (this.lesionType === 0 && lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 不需要添加标记
- if (measureData) {
- // 评估状态为无法评估的淋巴结靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg27'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
+ // 靶病灶且状态为无法评估(2)
+ if (this.lesionType === 0 && lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 不需要添加标记
+ if (measureData) {
+ // 评估状态为无法评估的淋巴结靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg27'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 不需要添加标记
+ if (measureData) {
+ // 状态为无法评估的非淋巴结靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg28'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 靶病灶且状态为消失(3)
+ if (this.lesionType === 0 && lesionState === 3) {
+ if (lymphNodes === 1) {
+ if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
+ // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
+ this.$confirm(this.$t('trials:reading:warnning:msg29'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 箭头工具
+ if (!(measureData && measureData.type === 'ArrowAnnotate')) {
+ // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg30'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const lId = this.getQuestionId(0)
+ this.$set(this.questionForm, lId, 0)
+ lesionLength = 0
+ }
+ }
+ }
+
+ // 非靶病灶且状态为存在(0)
+ if (this.lesionType === 1 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结非靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg31'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg32'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为显著增大(1)
+ if (this.lesionType === 1 && lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg33'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为显著增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg34'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为无法评估(2)
+ if (this.lesionType === 1 && lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 无标记
+ if (measureData) {
+ // 评估状态为无法评估的淋巴结非靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg35'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 无标记
+ if (measureData) {
+ // 评估状态为无法评估的非淋巴结非靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg36'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为消失(3)
+ if (this.lesionType === 1 && lesionState === 3) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的淋巴结非靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg37'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的非淋巴结非靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg38'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为显著增大(4)
+ if (this.lesionType === 1 && lesionState === 4) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg33'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为显著增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg34'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为进一步增大(5)
+ if (this.lesionType === 1 && lesionState === 5) {
+ if (lymphNodes === 1) {
+ // 淋巴结非靶病灶 必须使用长短径测量工具、矩形工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // `评估状态为进一步增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
+ this.$confirm(this.$t('trials:iRecist:warnning:msg50'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为进一步增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg51'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为明确(0)
+ if (this.lesionType === 2 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为存在的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg39'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为存在的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg40'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为疑似(1)
+ if (this.lesionType === 2 && lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg41'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
+ // `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg42'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为无法评估(2)
+ if (this.lesionType === 2 && lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (measureData) {
+ // `评估状态为无法评估的淋巴结新病灶不需要添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg43'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (measureData) {
+ // 评估状态为无法评估的非淋巴结新病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg44'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为消失(3)
+ if (this.lesionType === 2 && lesionState === 3) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg45'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg46'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ /** 新靶病灶 **/
+ if (this.lesionType === 5) {
+ if (this.isFirstChangeTask) {
+ // 靶病灶且状态为存在(0)
+ if (lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结新靶病灶 必须使用长短径测量工具,短径大于等于15mm
+ if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 15)) {
+ // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记,且短径须大于15mm!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg31'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结新靶病灶 直径测量工具 长径须大于等于10mm且不小于2倍层厚
+ if (!(measureData && measureData.type === 'Length' && lesionLength >= 10 && (measureData.thick && lesionLength >= 2 * measureData.thick || !measureData.thick))) {
+ // 评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记,长径须大于10mm且不小于2倍层厚!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg32'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
}
- } else {
- // 非淋巴结靶病灶 不需要添加标记
- if (measureData) {
- // 状态为无法评估的非淋巴结靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg28'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
+ }
+ } else {
+ // 靶病灶且状态为存在(1)
+ if (lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具
+ if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 10)) {
+ // 评估状态为存在的淋巴结新靶病灶需使用长短径测量工具添加标记! 短径应不小于10mm
+ this.$confirm(this.$t('trials:iRecist:warnning:msg1'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 直径测量工具
+ if (!(measureData && measureData.type === 'Length')) {
+ // `评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记!`
+ this.$confirm(this.$t('trials:iRecist:warnning:msg2'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+ // 靶病灶且状态为消失(2)
+ if (lesionState === 2) {
+ if (lymphNodes === 1) {
+ if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
+ // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
+ this.$confirm(this.$t('trials:iRecist:warnning:msg3'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 箭头工具
+ if (!(measureData && measureData.type === 'ArrowAnnotate')) {
+ // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg4'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const lId = this.getQuestionId(0)
+ this.$set(this.questionForm, lId, 0)
+ lesionLength = 0
+ }
+ }
+ }
+
+ // 新靶病灶且状态为无法评估(3)
+ if (lesionState === 3) {
+ if (lymphNodes === 1) {
+ // 淋巴结新靶病灶 不需要添加标记
+ if (measureData) {
+ // 评估状态为无法评估的淋巴结新靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg5'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 不需要添加标记
+ if (measureData) {
+ // 状态为无法评估的非淋巴结新靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg6'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新靶病灶且状态为太小(4)
+ if (lesionState === 4) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用箭头工具,短径记录为5mm
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg33'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const shortId = this.getQuestionId(1)
+ this.$set(this.questionForm, shortId, 5)
+ lesionShort = 5
+ }
+ } else {
+ // 非淋巴结靶病灶 箭头工具,长径记录为5mm
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg34'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const lengthId = this.getQuestionId(0)
+ this.$set(this.questionForm, lengthId, 5)
+ lesionLength = 5
+ }
}
}
}
// 靶病灶且状态为消失(3)
- if (this.lesionType === 0 && lesionState === 3) {
- if (lymphNodes === 1) {
- if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
- // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
- this.$confirm(this.$t('trials:reading:warnning:msg29'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 箭头工具
- if (!(measureData && measureData.type === 'ArrowAnnotate')) {
- // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg30'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const lId = this.getQuestionId(0)
- this.$set(this.questionForm, lId, 0)
- lesionLength = 0
- }
- }
- }
+ // if (lesionState === 3) {
+ // if (lymphNodes === 1) {
+ // if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
+ // // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
+ // this.$confirm(this.$t('trials:reading:warnning:msg29'), {
+ // type: 'warning',
+ // showCancelButton: false,
+ // callback: action => {}
+ // })
+ // loading.close()
+ // return
+ // }
+ // } else {
+ // // 非淋巴结靶病灶 箭头工具
+ // if (!(measureData && measureData.type === 'ArrowAnnotate')) {
+ // // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
+ // this.$confirm(this.$t('trials:reading:warnning:msg30'), {
+ // type: 'warning',
+ // showCancelButton: false,
+ // callback: action => {}
+ // })
+ // loading.close()
+ // return
+ // } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ // const lId = this.getQuestionId(0)
+ // this.$set(this.questionForm, lId, 0)
+ // lesionLength = 0
+ // }
+ // }
+ // }
+ }
- // 非靶病灶且状态为存在(0)
- if (this.lesionType === 1 && lesionState === 0) {
+ /** 新非靶病灶 **/
+ if (this.lesionType === 6) {
+ // 新非靶病灶且状态为存在(0)
+ if (lesionState === 0) {
if (lymphNodes === 1) {
// 淋巴结非靶病灶 必须使用长短径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg31'), {
+ // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg7'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1140,8 +1603,8 @@ export default {
} else {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg32'), {
+ // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg8'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1151,14 +1614,13 @@ export default {
}
}
}
-
- // 非靶病灶且状态为显著增大(1)
- if (this.lesionType === 1 && lesionState === 1) {
+ // 非靶病灶且状态为增大(0)
+ if (lesionState === 1) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg33'), {
+ // `评估状态为增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
+ this.$confirm(this.$t('trials:iRecist:warnning:msg9'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1169,8 +1631,8 @@ export default {
} else {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为显著增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg34'), {
+ // 评估状态为增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg10'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1180,14 +1642,13 @@ export default {
}
}
}
-
// 非靶病灶且状态为无法评估(2)
- if (this.lesionType === 1 && lesionState === 2) {
+ if (lesionState === 2) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 无标记
if (measureData) {
// 评估状态为无法评估的淋巴结非靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg35'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg11'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1199,7 +1660,7 @@ export default {
// 非淋巴结非靶病灶 无标记
if (measureData) {
// 评估状态为无法评估的非淋巴结非靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg36'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg12'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1209,14 +1670,13 @@ export default {
}
}
}
-
// 非靶病灶且状态为消失(3)
- if (this.lesionType === 1 && lesionState === 3) {
+ if (lesionState === 3) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
// 评估状态为消失的淋巴结非靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg37'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg13'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1228,65 +1688,7 @@ export default {
// 非淋巴结非靶病灶 箭头工具
if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
// 评估状态为消失的非淋巴结非靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg38'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 非靶病灶且状态为显著增大(4)
- if (this.lesionType === 1 && lesionState === 4) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg33'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为显著增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg34'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 非靶病灶且状态为进一步增大(5)
- if (this.lesionType === 1 && lesionState === 5) {
- if (lymphNodes === 1) {
- // 淋巴结非靶病灶 必须使用长短径测量工具、矩形工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // `评估状态为进一步增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg50'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为进一步增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg51'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg14'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1296,14 +1698,17 @@ export default {
}
}
}
+ }
+ /** 其他既往新病灶 **/
+ if (this.lesionType === 7) {
// 新病灶且状态为明确(0)
- if (this.lesionType === 2 && lesionState === 0) {
+ if (lesionState === 0) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为存在的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg39'), {
+ // 评估状态为明确的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg15'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1314,8 +1719,8 @@ export default {
} else {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为存在的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg40'), {
+ // 评估状态为明确的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg16'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1327,12 +1732,12 @@ export default {
}
// 新病灶且状态为疑似(1)
- if (this.lesionType === 2 && lesionState === 1) {
+ if (lesionState === 1) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
// 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg41'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg17'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1344,7 +1749,7 @@ export default {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
// `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg42'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg18'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1356,12 +1761,12 @@ export default {
}
// 新病灶且状态为无法评估(2)
- if (this.lesionType === 2 && lesionState === 2) {
+ if (lesionState === 2) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
if (measureData) {
// `评估状态为无法评估的淋巴结新病灶不需要添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg43'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg19'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1373,7 +1778,7 @@ export default {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
if (measureData) {
// 评估状态为无法评估的非淋巴结新病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg44'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg20'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1385,12 +1790,12 @@ export default {
}
// 新病灶且状态为消失(3)
- if (this.lesionType === 2 && lesionState === 3) {
+ if (lesionState === 3) {
if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
// 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg45'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg21'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1402,7 +1807,38 @@ export default {
// 箭头工具
if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
// 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg46'), {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg22'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+ }
+ /** 触发iRecist后的新病灶 **/
+ if (this.lesionType === 8) {
+ // 新病灶且状态为明确(1)
+ if (lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为明确的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg23'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为存在的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg24'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
@@ -1413,558 +1849,102 @@ export default {
}
}
- /** 新靶病灶 **/
- if (this.lesionType === 5) {
- if (this.isFirstChangeTask) {
- // 靶病灶且状态为存在(0)
- if (lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结新靶病灶 必须使用长短径测量工具,短径大于等于15mm
- if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 15)) {
- // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记,且短径须大于15mm!
- this.$confirm(this.$t('trials:iRecist:warnning:msg31'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结新靶病灶 直径测量工具 长径须大于等于10mm且不小于2倍层厚
- if (!(measureData && measureData.type === 'Length' && lesionLength >= 10 && (measureData.thick && lesionLength >= 2 * measureData.thick || !measureData.thick))) {
- // 评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记,长径须大于10mm且不小于2倍层厚!
- this.$confirm(this.$t('trials:iRecist:warnning:msg32'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
+ // 新病灶且状态为疑似(2)
+ if (lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:iRecist:warnning:msg25'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
} else {
- // 靶病灶且状态为存在(1)
- if (lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具
- if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 10)) {
- // 评估状态为存在的淋巴结新靶病灶需使用长短径测量工具添加标记! 短径应不小于10mm
- this.$confirm(this.$t('trials:iRecist:warnning:msg1'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 直径测量工具
- if (!(measureData && measureData.type === 'Length')) {
- // `评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg2'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- // 靶病灶且状态为消失(2)
- if (lesionState === 2) {
- if (lymphNodes === 1) {
- if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
- // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg3'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 箭头工具
- if (!(measureData && measureData.type === 'ArrowAnnotate')) {
- // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg4'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const lId = this.getQuestionId(0)
- this.$set(this.questionForm, lId, 0)
- lesionLength = 0
- }
- }
- }
-
- // 新靶病灶且状态为无法评估(3)
- if (lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结新靶病灶 不需要添加标记
- if (measureData) {
- // 评估状态为无法评估的淋巴结新靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg5'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 不需要添加标记
- if (measureData) {
- // 状态为无法评估的非淋巴结新靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg6'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新靶病灶且状态为太小(4)
- if (lesionState === 4) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用箭头工具,短径记录为5mm
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg33'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const shortId = this.getQuestionId(1)
- this.$set(this.questionForm, shortId, 5)
- lesionShort = 5
- }
- } else {
- // 非淋巴结靶病灶 箭头工具,长径记录为5mm
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg34'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const lengthId = this.getQuestionId(0)
- this.$set(this.questionForm, lengthId, 5)
- lesionLength = 5
- }
- }
- }
- }
-
- // 靶病灶且状态为消失(3)
- // if (lesionState === 3) {
- // if (lymphNodes === 1) {
- // if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
- // // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
- // this.$confirm(this.$t('trials:reading:warnning:msg29'), {
- // type: 'warning',
- // showCancelButton: false,
- // callback: action => {}
- // })
- // loading.close()
- // return
- // }
- // } else {
- // // 非淋巴结靶病灶 箭头工具
- // if (!(measureData && measureData.type === 'ArrowAnnotate')) {
- // // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
- // this.$confirm(this.$t('trials:reading:warnning:msg30'), {
- // type: 'warning',
- // showCancelButton: false,
- // callback: action => {}
- // })
- // loading.close()
- // return
- // } else if (measureData && measureData.type === 'ArrowAnnotate') {
- // const lId = this.getQuestionId(0)
- // this.$set(this.questionForm, lId, 0)
- // lesionLength = 0
- // }
- // }
- // }
- }
-
- /** 新非靶病灶 **/
- if (this.lesionType === 6) {
- // 新非靶病灶且状态为存在(0)
- if (lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结非靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg7'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg8'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- // 非靶病灶且状态为增大(0)
- if (lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // `评估状态为增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg9'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg10'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- // 非靶病灶且状态为无法评估(2)
- if (lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 无标记
- if (measureData) {
- // 评估状态为无法评估的淋巴结非靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg11'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 无标记
- if (measureData) {
- // 评估状态为无法评估的非淋巴结非靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg12'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- // 非靶病灶且状态为消失(3)
- if (lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的淋巴结非靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg13'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的非淋巴结非靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg14'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- }
-
- /** 其他既往新病灶 **/
- if (this.lesionType === 7) {
- // 新病灶且状态为明确(0)
- if (lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为明确的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg15'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为明确的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg16'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为疑似(1)
- if (lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg17'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
// `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg18'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为无法评估(2)
- if (lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (measureData) {
- // `评估状态为无法评估的淋巴结新病灶不需要添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg19'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (measureData) {
- // 评估状态为无法评估的非淋巴结新病灶不需要添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg20'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为消失(3)
- if (lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg21'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg22'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ this.$confirm(this.$t('trials:iRecist:warnning:msg26'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
}
- /** 触发iRecist后的新病灶 **/
- if (this.lesionType === 8) {
- // 新病灶且状态为明确(1)
- if (lesionState === 1) {
- if (lymphNodes === 1) {
+ // 新病灶且状态为消失(3)
+ if (lesionState === 3) {
+ if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为明确的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg23'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为存在的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg24'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为疑似(2)
- if (lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg25'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
- // `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg26'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- // 新病灶且状态为消失(3)
- if (lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
// 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg27'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg27'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
// 箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
// 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg28'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ this.$confirm(this.$t('trials:iRecist:warnning:msg28'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
- // 新病灶且状态为无法评估(4)
- if (lesionState === 4) {
- if (lymphNodes === 1) {
+ }
+ // 新病灶且状态为无法评估(4)
+ if (lesionState === 4) {
+ if (lymphNodes === 1) {
// 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (measureData) {
+ if (measureData) {
// `评估状态为无法评估的淋巴结新病灶不需要添加标记!`
- this.$confirm(this.$t('trials:iRecist:warnning:msg29'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
+ this.$confirm(this.$t('trials:iRecist:warnning:msg29'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
// 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (measureData) {
+ if (measureData) {
// 评估状态为无法评估的非淋巴结新病灶不需要添加标记!
- this.$confirm(this.$t('trials:iRecist:warnning:msg30'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ this.$confirm(this.$t('trials:iRecist:warnning:msg30'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
}
}
+ }
- DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
- // 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
- // 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
- // 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
+ DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
+ // 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
+ // 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
+ // 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
+ try {
var picturePath = ''
if (val && measureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
- picturePath = pictureObj.isSuccess ? pictureObj.result.name : ''
+ picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
}
var answers = []
var reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/)
@@ -2003,21 +1983,19 @@ export default {
this.deleteInfo = null
params.rowId = ''
}
- submitTableQuestion(params).then(async res => {
+ const res = await submitTableQuestion(params)
+ if (res.IsSuccess) {
// 保存成功!
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.currentMarkTool = measureData ? measureData.type : ''
// saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断);2:已保存,信息完整
-
this.$set(this.questionForm, 'saveTypeEnum', 2)
this.originalQuestionForm = { ...this.questionForm }
- loading.close()
var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
var lesionOrgan = this.getQuestionVal(6)
this.$set(this.questionForm, 'RowId', res.Result.RowId)
const lesionPart = this.getQuestionVal(8)
- const lesionState = Number(this.getQuestionVal(7))
+ const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, lesionState, rowIndex: this.rowIndex, rowId: res.Result.RowId, questionId: this.parentQsId, anwsers: this.questionForm })
// await store.dispatch('reading/refreshMeasuredData', this.visitTaskId)
@@ -2025,140 +2003,135 @@ export default {
this.$emit('close')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive')
- }).catch(() => { loading.close() })
- })
+ }
+ loading.close()
+ } catch (e) {
+ console.log(e)
+ loading.close()
+ }
})
},
- handleDeleteMeasureData() {
+ async handleDeleteMeasureData() {
// 是否确认清除标记?
- this.$confirm(this.$t('trials:reading:warnning:msg47'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(async() => {
- this.organList = []
- await this.getOrganInfoList()
- // 重置长短径 和 状态
- var lengId = this.getQuestionId(0)
- this.$set(this.questionForm, lengId, '')
- var shortId = this.getQuestionId(1)
- this.$set(this.questionForm, shortId, '')
- if (!(this.isFirstChangeTask && (this.lesionType === 5 || this.lesionType === 6))) {
- var stateId = this.getQuestionId(7)
- this.$set(this.questionForm, stateId, '')
- }
+ const confirm = await this.$confirm(
+ this.$t('trials:reading:warnning:msg47'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+ this.organList = []
+ await this.getOrganInfoList()
+ // 重置长短径 和 状态
+ var lengId = this.getQuestionId(0)
+ this.$set(this.questionForm, lengId, '')
+ var shortId = this.getQuestionId(1)
+ this.$set(this.questionForm, shortId, '')
+ if (!(this.isFirstChangeTask && (this.lesionType === 5 || this.lesionType === 6))) {
+ var stateId = this.getQuestionId(7)
+ this.$set(this.questionForm, stateId, '')
+ }
- // saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断)
- if (this.questionForm.RowId) {
- this.$set(this.questionForm, 'saveTypeEnum', 1)
- } else {
- this.$set(this.questionForm, 'saveTypeEnum', 0)
- }
- await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
- DicomEvent.$emit('getMeasureData')
- // Store.$emit('updateImage', this.questionForm.MeasureData.instanceId)
- var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
- const lesionPart = this.getQuestionVal(8)
- const lesionOrgan = this.getQuestionVal(6)
- const lesionLength = ''
- const lesionShort = ''
- const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
+ // saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断)
+ if (this.questionForm.RowId) {
+ this.$set(this.questionForm, 'saveTypeEnum', 1)
+ } else {
+ this.$set(this.questionForm, 'saveTypeEnum', 0)
+ }
+ await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
+ DicomEvent.$emit('getMeasureData')
+ // Store.$emit('updateImage', this.questionForm.MeasureData.instanceId)
+ var isLymphLesion = this.getQuestionVal(2)
+ const lesionPart = this.getQuestionVal(8)
+ const lesionOrgan = this.getQuestionVal(6)
+ const lesionLength = ''
+ const lesionShort = ''
+ const lesionState = this.getQuestionVal(7)
- if (!this.questionForm.IsDicomReading) {
- DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
- }
- this.$set(this.questionForm, 'IsDicomReading', true)
+ if (!this.questionForm.IsDicomReading) {
+ DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
+ }
+ this.$set(this.questionForm, 'IsDicomReading', true)
- this.$set(this.questionForm, 'MeasureData', '')
- let anwsers = null
- if (this.answers.measureObj) {
- anwsers = Object.assign({ measureObj: '' }, this.questionForm)
- } else {
- anwsers = Object.assign({}, this.questionForm)
- }
- this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
- DicomEvent.$emit('refreshStudyListMeasureData')
- })
- .catch(() => {})
+ this.$set(this.questionForm, 'MeasureData', '')
+ let anwsers = null
+ if (this.answers.measureObj) {
+ anwsers = Object.assign({ measureObj: '' }, this.questionForm)
+ } else {
+ anwsers = Object.assign({}, this.questionForm)
+ }
+ this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
+ DicomEvent.$emit('refreshStudyListMeasureData')
},
- handleDelete() {
- // 是否确认删除?
- this.$confirm(this.$t('trials:reading:warnning:msg48'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(async() => {
- if (this.questionForm.RowId) {
- const loading = this.$loading({ fullscreen: true })
- var param = {
- visitTaskId: this.visitTaskId,
- questionId: this.parentQsId,
- rowId: this.questionForm.RowId
- }
- deleteReadingRowAnswer(param)
- .then(async res => {
- loading.close()
- if (res.IsSuccess) {
- if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
- await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
- }
- if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
- DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
- }
- this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- DicomEvent.$emit('getReportInfo', true)
- // '删除成功!'
- this.$message.success(this.$t('common:message:deletedSuccessfully'))
- loading.close()
- }
- }).catch(() => { loading.close() })
- } else {
- // const loading = this.$loading({ fullscreen: true })
- // 移除新建病灶并关闭窗口
+ async handleDelete() {
+ const loading = this.$loading({ fullscreen: true })
+ try {
+ const confirm = await this.$confirm(
+ this.$t('trials:reading:warnning:msg48'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+ if (this.questionForm.RowId) {
+ var param = {
+ visitTaskId: this.visitTaskId,
+ questionId: this.parentQsId,
+ rowId: this.questionForm.RowId
+ }
+ const res = await deleteReadingRowAnswer(param)
+ if (res.IsSuccess) {
if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
}
- // DicomEvent.$emit('getMeasureData')
if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
}
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- // loading.close()
+ DicomEvent.$emit('getReportInfo', true)
+ // '删除成功!'
+ this.$message.success(this.$t('common:message:deletedSuccessfully'))
}
- DicomEvent.$emit('refreshStudyListMeasureData')
- })
+ } else {
+ // 移除新建病灶并关闭窗口
+ if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
+ await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
+ }
+ // DicomEvent.$emit('getMeasureData')
+ if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
+ DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
+ }
+ this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
+ }
+ DicomEvent.$emit('refreshStudyListMeasureData')
+ loading.close()
+ } catch (e) {
+ loading.close()
+ console.log(e)
+ }
},
- handleClose() {
+ async handleClose() {
if (!this.questionForm.RowId) {
// '当前病灶为新建病灶,未保存。如果关闭窗口,将会删除病灶信息,是否继续?'
- this.$confirm(this.$t('trials:reading:warnning:msg49'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(async() => {
- // 移除新建病灶并关闭窗口
- if (this.questionForm.MeasureData) {
- await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
- }
- // await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- DicomEvent.$emit('getMeasureData')
- this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- })
- .catch(() => {})
+ const confirm = await this.$confirm(
+ this.$t('trials:reading:warnning:msg49'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+ // 移除新建病灶并关闭窗口
+ if (this.questionForm.MeasureData) {
+ await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
+ }
+ // await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
+ DicomEvent.$emit('getMeasureData')
+ this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
} else {
- // saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断)
-
if (this.questionForm.saveTypeEnum === 1) {
- // // 当前病灶信息有更新,未保存,是否继续?
- // this.$confirm(this.$t('trials:reading:warnning:msg50'), {
- // type: 'warning',
- // distinguishCancelAndClose: true
- // })
- // .then(() => {
- // this.$emit('close')
- // })
- // .catch(() => {})
this.$emit('close')
} else {
this.$emit('close')
@@ -2178,13 +2151,12 @@ export default {
} else if (this.lesionType === 8) {
this.$set(this.questionForm, stateId, 4)
}
- var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
+ const isLymphLesion = this.getQuestionVal(2)
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
- const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
- const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
- const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
+ const lesionLength = this.getQuestionVal(0)
+ const lesionShort = this.getQuestionVal(1)
+ const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue
index 52c85fc..33a6823 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue
@@ -1,11 +1,21 @@
-
+
-
-
- {{ subjectCode }}
- {{ taskBlindName }}
-
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
{{ item.QuestionName }}
- (请重新评估)
+ {{ $t("trials:reading:dicom:IRecist:reevaluate") }}
{{ item.QuestionName }}
@@ -157,6 +167,7 @@
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue b/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue
index b0d40d0..ca05faf 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue
@@ -19,8 +19,9 @@
/>
-
- {{ $t('common:button:save') }}
+
@@ -29,8 +30,9 @@
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue b/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue
index 4fc6c6b..79779bd 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue
@@ -57,6 +57,7 @@
:is-reading-show-subject-info="isReadingShowSubjectInfo"
:is-reading-task-view-in-order="isReadingTaskViewInOrder"
:is-exists-manual="isExistsManual"
+ :iseCRFShowInDicomReading="iseCRFShowInDicomReading"
@previewCD="previewCD"
/>
@@ -72,6 +73,25 @@ import DicomEvent from './DicomEvent'
import store from '@/store'
import { getToken } from '@/utils/auth'
import { mapGetters } from 'vuex'
+import * as dicomParser from 'dicom-parser'
+import * as cornerstone from 'cornerstone-core'
+import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'
+import metaDataProvider from '@/utils/metaDataProvider'
+cornerstone.metaData.addProvider(metaDataProvider, { priority: 10 });
+var config = {
+ maxWebWorkers: 4,
+ startWebWorkersOnDemand: true,
+ taskConfiguration: {
+ decodeTask: {
+ initializeCodecsOnStartup: false
+ }
+ }
+}
+cornerstoneWADOImageLoader.webWorkerManager.initialize(config)
+cornerstoneWADOImageLoader.external.dicomParser = dicomParser
+cornerstoneWADOImageLoader.external.cornerstone = cornerstone
+const maximumSizeInBytes = 1024 * 1024 * 1024 * 6
+cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes)
export default {
name: 'ReadPage',
components: {
@@ -112,13 +132,17 @@ export default {
required: true
},
isReadingTaskViewInOrder: {
- type: Boolean,
+ type: Number,
required: true
},
isExistsManual: {
type: Boolean,
required: true
},
+ iseCRFShowInDicomReading: {
+ type: Boolean,
+ required: true
+ },
questionFormChangeState: {
type: Boolean,
default() {
@@ -210,14 +234,20 @@ export default {
this.$refs[this.activeTaskVisitId][0].selectSeries(data)
})
})
+ cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
+ window.addEventListener('beforeunload', e => {
+ cornerstone.imageCache.purgeCache()
+ })
},
beforeDestroy() {
+ cornerstone.imageCache.purgeCache()
DicomEvent.$off('getNextVisitInfo')
DicomEvent.$off('toggleSeries')
DicomEvent.$off('isCanActiveNoneDicomTool')
DicomEvent.$off('removeNoneDicomMeasureData')
DicomEvent.$off('addNoneDicomMeasureData')
DicomEvent.$off('selectSeries')
+ window.removeEventListener('beforeunload', e => { cornerstone.imageCache.purgeCache() })
},
methods: {
async getVisitInfo() {
@@ -400,7 +430,7 @@ export default {
idx > -1 ? obj = seriesList[idx] : ''
}
if (obj) {
- const index = Math.floor(obj.imageIds.length * ((baseSeries.imageIdIndex + 1) / baseSeries.instanceCount))
+ const index = Math.floor(obj.imageIds.length * ((baseSeries.imageIdIndex + 1) / baseSeries.imageIds))
obj.imageIdIndex = index > 0 ? index - 1 : 0
}
return obj
@@ -464,7 +494,10 @@ export default {
var seriesIdx = studyList[studyIdx].SeriesList.findIndex(s => s.seriesId === seriesId)
if (seriesIdx > -1) {
var series = studyList[studyIdx].SeriesList[seriesIdx]
- var instanceIdx = series.instanceList.findIndex(imageId => !!~imageId.indexOf(instanceId))
+ // var instanceIdx = series.instanceList.findIndex(imageId => !!~imageId.indexOf(instanceId))
+ const frame = this.visitTaskList[index].MeasureData[idx].MeasureData.frame
+ const filterStr = series.isExistMutiFrames ? `frame=${frame}&instanceId=${instanceId}` : `instanceId=${instanceId}`
+ var instanceIdx = series.imageIds.findIndex(imageId => imageId.includes(filterStr))
if (instanceIdx > -1) {
series.imageIdIndex = instanceIdx
// series.studyIndex = studyIdx
@@ -485,6 +518,16 @@ export default {
seriesInfo = this.getLinkedSeries(baseSeries, visitTaskId, visitTaskIdx)
}
return seriesInfo
+ },
+ cornerstoneimageloadprogress(e) {
+ const imageId = e.detail.imageId
+ const params = {}
+ const searchParams = new URLSearchParams(imageId.split('?')[1])
+ for (const [key, value] of searchParams.entries()) {
+ params[key] = value
+ }
+ params.percentComplete = e.detail.percentComplete
+ store.dispatch('reading/setImageLoadedProgress', params)
}
}
}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue
index 6ec7d79..10e112b 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue
@@ -119,34 +119,39 @@
/>
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
if (measureData) {
if (measureData.pictureBaseStr) {
@@ -590,7 +590,6 @@ export default {
measureData.pictureBaseStr = ''
}
// 获取长径(0)
- // const loading = this.$loading({ fullscreen: true })
var lengthObj = this.questions.find(i => i.QuestionMark === 0)
var shortObj = this.questions.find(i => i.QuestionMark === 1)
@@ -613,9 +612,6 @@ export default {
this.$set(this.questionForm, lengthObj.Id, '')
this.$set(this.questionForm, shortObj.Id, '')
}
- // if (this.toolType !== measureData.type) {
- // 获取器官问题
- // var organ = this.getQuestionVal(5)
// 十字线工具 器官只能是淋巴结类型
@@ -631,13 +627,6 @@ export default {
this.getOrganInfoList()
}
- // if (this.toolType) {
- // this.questionForm[this.getQuestionId(8)] = ''
- // this.questionForm[this.getQuestionId(5)] = ''
- // this.questionForm[this.getQuestionId(6)] = ''
- // this.questionForm[this.getQuestionId(2)] = ''
- // }
-
var data = {}
if (measureData.isDicomReading === false) {
this.$set(this.questionForm, 'IsDicomReading', false)
@@ -664,9 +653,8 @@ export default {
}
var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
- var lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
- var lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
+ var lesionLength = this.getQuestionVal(0)
+ var lesionShort = this.getQuestionVal(1)
// 当前添加的新病灶不做处理
if (!(this.isCurrentTaskAdd === 'True')) {
// 非基线时,非淋巴结病灶长径>=10mm,自动给“存在”状态,如果淋巴结病灶短径>=10mm,自动给“存在”状态。
@@ -685,7 +673,7 @@ export default {
}
}
- const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
+ const lesionState = this.getQuestionVal(7)
var status = ''
if (lesionState) {
if (this.lesionType === 0 && lesionState === 1) {
@@ -731,42 +719,17 @@ export default {
}
}
this.$set(this.questionForm, 'MeasureData', measureData)
- var isLymph = this.getQuestionVal(2)
- isLymph = !isNaN(parseInt(isLymph)) ? parseInt(isLymph) : null
+ const isLymph = this.getQuestionVal(2)
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
- // const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? Number(this.getQuestionVal(0)) : ''
- // const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? Number(this.getQuestionVal(1)) : ''
- const lesionL = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
- const lesionS = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
- var lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
- // // 状态为空时,非淋巴结靶病灶长径>0mm,自动给“存在”状态,如果淋巴结靶病灶短径>=10mm,自动给“存在”状态。淋巴结靶病灶在短径小于10mm时,用十字线标记测量时标记为消失
- // if (!this.isBaseLineTask && this.lesionType === 0 && ((isLymphLesion === 0 && lesionLength > 0) || (isLymphLesion === 1 && lesionShort >= 10))) {
- // const stateId = this.getQuestionId(7)
- // this.$set(this.questionForm, stateId, 0)
- // lesionState = 0
- // }
-
- // if (!this.isBaseLineTask && this.lesionType === 0 && (isLymphLesion === 1 && measureData.type === 'Bidirectional' && lesionShort < 10)) {
- // const stateId = this.getQuestionId(7)
- // this.$set(this.questionForm, stateId, 3)
- // lesionState = 3
- // }
- // // 基线时,默认状态都为存在
- // if (this.isBaseLineTask && !lesionState) {
- // const stateId = this.getQuestionId(7)
- // this.$set(this.questionForm, stateId, 0)
- // lesionState = 0
- // }
-
+ const lesionL = this.getQuestionVal(0)
+ const lesionS = this.getQuestionVal(1)
+ var lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion: isLymph, lesionPart, lesionOrgan, lesionShort: lesionS, lesionLength: lesionL, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
this.toolType = measureData.type
DicomEvent.$emit('refreshStudyListMeasureData')
resolve()
})
-
- // loading.close()
- // this.handleSave()
},
returnFloat(num) {
if (num) return
@@ -784,27 +747,31 @@ export default {
}
},
getQuestionVal(questionMark) {
- var idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
+ const idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
if (idx > -1) {
- var questionId = this.questions[idx].Id
- return this.questionForm[questionId]
+ const questionId = this.questions[idx].Id
+ const answer = this.questionForm[questionId]
+ if (isNaN(parseFloat(answer))) {
+ return answer
+ } else {
+ return parseFloat(answer)
+ }
} else {
return ''
}
},
filterState(arr) {
if (!this.isBaseLineTask) {
- var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
- const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : 0
- const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : 0
- const lastLesionL = !isNaN(parseInt(this.answers.LastTaskMajorAxis)) ? parseInt(this.answers.LastTaskMajorAxis) : 0
- const lastLesionS = !isNaN(parseInt(this.answers.LastTaskShortAxis)) ? parseInt(this.answers.LastTaskShortAxis) : 0
- if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionShort < lastLesionS) {
+ const isLymphLesion = this.getQuestionVal(2)
+ const lesionLength = this.getQuestionVal(0)
+ const lesionShort = this.getQuestionVal(1)
+ const bLesionL = !isNaN(parseFloat(this.answers.BaseLineMajorAxis)) ? parseFloat(this.answers.BaseLineMajorAxis) : 0
+ const bLesionS = !isNaN(parseFloat(this.answers.BaseLineShortAxis)) ? parseFloat(this.answers.BaseLineShortAxis) : 0
+ if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort < bLesionS) {
arr = arr.filter(i => i.value !== 1)
- } else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionShort >= 10 && lesionShort > lastLesionS) {
+ } else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort >= 10 && lesionShort > bLesionS) {
arr = arr.filter(i => i.value === 0 || i.value === 1)
- } else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < lastLesionL) {
+ } else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < bLesionL) {
arr = arr.filter(i => i.value !== 1)
}
return arr
@@ -831,7 +798,6 @@ export default {
},
async uploadScreenshots(fileName, file) {
try {
- console.log(this.OSSclient)
file = this.convertBase64ToBlob(file)
var trialId = this.$route.query.trialId
var subjectId = this.$route.query.trialId
@@ -869,467 +835,463 @@ export default {
// 生成Blob对象(文件对象)
return new Blob([bytesCode], { type: imgtype })
},
- handleSave() {
- this.$refs.measurementForm.validate(async valid => {
- if (!valid) return
- const loading = this.$loading({ fullscreen: true })
- var measureData = this.questionForm.MeasureData
- var lesionState = this.getQuestionVal(7)
- // var lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? Number(this.getQuestionVal(0)) : ''
- // var lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? Number(this.getQuestionVal(1)) : ''
- var lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
- var lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
- var lymphNodes = this.getQuestionVal(2)
- lymphNodes = (lymphNodes !== null && lymphNodes !== undefined) ? parseInt(lymphNodes) : null
- if (this.isBaseLineTask) {
- // 基线
- // 靶病灶且状态为存在(0)
- if (this.lesionType === 0 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具,短径大于等于15mm
- if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 15)) {
- // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记,且短径须大于15mm!
- this.$confirm(this.$t('trials:reading:warnning:msg19'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 直径测量工具 长径须大于等于10mm且不小于2倍层厚
- if (!(measureData && measureData.type === 'Length' && lesionLength >= 10 && (measureData.thick && lesionLength >= 2 * measureData.thick || !measureData.thick))) {
- // 评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记,长径须大于10mm且不小于2倍层厚!
- this.$confirm(this.$t('trials:reading:warnning:msg20'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ async handleSave() {
+ const valid = await this.$refs.measurementForm.validate()
+ if (!valid) return
+ const loading = this.$loading({ fullscreen: true })
+ var measureData = this.questionForm.MeasureData
+ var lesionState = this.getQuestionVal(7)
+ var lesionLength = this.getQuestionVal(0)
+ var lesionShort = this.getQuestionVal(1)
+ var lymphNodes = this.getQuestionVal(2)
+ if (this.isBaseLineTask) {
+ // 基线
+ // 靶病灶且状态为存在(0)
+ if (this.lesionType === 0 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具,短径大于等于15mm
+ if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 15)) {
+ // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记,且短径须大于15mm!
+ this.$confirm(this.$t('trials:reading:warnning:msg19'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
- }
-
- // 非靶病灶且状态为存在(0)
- if (this.lesionType === 1 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结非靶病灶 必须使用长短径测量工具或箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记
- this.$confirm(this.$t('trials:reading:warnning:msg21'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具或箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg22'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- } else {
- // 非基线
- // 靶病灶且状态为存在(0)
- if (this.lesionType === 0 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具
- if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 10)) {
- // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg23'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 直径测量工具
- if (!(measureData && measureData.type === 'Length')) {
- // `评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg24'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
- // 靶病灶且状态为太小(1)
- if (this.lesionType === 0 && lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用箭头工具,短径记录为5mm
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg25'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const shortId = this.getQuestionId(1)
- this.$set(this.questionForm, shortId, 5)
- lesionShort = 5
- }
- } else {
- // 非淋巴结靶病灶 箭头工具,长径记录为5mm
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg26'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const lengthId = this.getQuestionId(0)
- this.$set(this.questionForm, lengthId, 5)
- lesionLength = 5
- }
- }
- }
-
- // 靶病灶且状态为无法评估(2)
- if (this.lesionType === 0 && lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 不需要添加标记
- if (measureData) {
- // 评估状态为无法评估的淋巴结靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg27'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 不需要添加标记
- if (measureData) {
- // 状态为无法评估的非淋巴结靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg28'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 靶病灶且状态为消失(3)
- if (this.lesionType === 0 && lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 使用箭头工具
- // if (!(measureData && (measureData.type === 'ArrowAnnotate' || measureData.type === 'Bidirectional'))) {
- // this.$confirm(`评估状态为消失的淋巴结靶病灶需使用箭头工具或长短径工具添加标记!`, {
- // type: 'warning',
- // showCancelButton: false,
- // callback: action => {}
- // })
- // loading.close()
- // return
- // }
- // else if (measureData && measureData.type === 'Bidirectional' && lesionShort >= 10) {
- // this.$confirm(`评估状态为消失的淋巴结靶病灶,短径需小于10mm!`, {
- // type: 'warning',
- // showCancelButton: false,
- // callback: action => {}
- // })
- // loading.close()
- // return
- // }
- if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
- // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
- this.$confirm(this.$t('trials:reading:warnning:msg29'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结靶病灶 箭头工具
- if (!(measureData && measureData.type === 'ArrowAnnotate')) {
- // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg30'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- } else if (measureData && measureData.type === 'ArrowAnnotate') {
- const lId = this.getQuestionId(0)
- this.$set(this.questionForm, lId, 0)
- lesionLength = 0
- }
- }
- }
-
- // 非靶病灶且状态为存在(0)
- if (this.lesionType === 1 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结非靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg31'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg32'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 非靶病灶且状态为显著增大(1)
- if (this.lesionType === 1 && lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
- // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg33'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
- // 评估状态为显著增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg34'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 非靶病灶且状态为无法评估(2)
- if (this.lesionType === 1 && lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 无标记
- if (measureData) {
- // 评估状态为无法评估的淋巴结非靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg35'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 无标记
- if (measureData) {
- // 评估状态为无法评估的非淋巴结非靶病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg36'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 非靶病灶且状态为消失(3)
- if (this.lesionType === 1 && lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的淋巴结非靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg37'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的非淋巴结非靶病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg38'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为存在(0)
- if (this.lesionType === 2 && lesionState === 0) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为存在的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg39'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为存在的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg40'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为疑似(1)
- if (this.lesionType === 2 && lesionState === 1) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg41'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
- // `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg42'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为无法评估(2)
- if (this.lesionType === 2 && lesionState === 2) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (measureData) {
- // `评估状态为无法评估的淋巴结新病灶不需要添加标记!`
- this.$confirm(this.$t('trials:reading:warnning:msg43'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 非淋巴结非靶病灶 直径测量工具、箭头工具
- if (measureData) {
- // 评估状态为无法评估的非淋巴结新病灶不需要添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg44'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- }
- }
-
- // 新病灶且状态为消失(3)
- if (this.lesionType === 2 && lesionState === 3) {
- if (lymphNodes === 1) {
- // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg45'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
- } else {
- // 箭头工具
- if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
- // 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记!
- this.$confirm(this.$t('trials:reading:warnning:msg46'), {
- type: 'warning',
- showCancelButton: false,
- callback: action => {}
- })
- loading.close()
- return
- }
+ } else {
+ // 非淋巴结靶病灶 直径测量工具 长径须大于等于10mm且不小于2倍层厚
+ if (!(measureData && measureData.type === 'Length' && lesionLength >= 10 && (measureData.thick && lesionLength >= 2 * measureData.thick || !measureData.thick))) {
+ // 评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记,长径须大于10mm且不小于2倍层厚!
+ this.$confirm(this.$t('trials:reading:warnning:msg20'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
}
}
}
- DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
- // 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
- // 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
- // 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
+ // 非靶病灶且状态为存在(0)
+ if (this.lesionType === 1 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结非靶病灶 必须使用长短径测量工具或箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记
+ this.$confirm(this.$t('trials:reading:warnning:msg21'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具或箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg22'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+ } else {
+ // 非基线
+ // 靶病灶且状态为存在(0)
+ if (this.lesionType === 0 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具
+ if (!(measureData && measureData.type === 'Bidirectional' && lesionShort >= 10)) {
+ // 评估状态为存在的淋巴结靶病灶需使用长短径测量工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg23'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 直径测量工具
+ if (!(measureData && measureData.type === 'Length')) {
+ // `评估状态为存在的非淋巴结靶病灶需使用直径测量工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg24'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+ // 靶病灶且状态为太小(1)
+ if (this.lesionType === 0 && lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用箭头工具,短径记录为5mm
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg25'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const shortId = this.getQuestionId(1)
+ this.$set(this.questionForm, shortId, 5)
+ lesionShort = 5
+ }
+ } else {
+ // 非淋巴结靶病灶 箭头工具,长径记录为5mm
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg26'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const lengthId = this.getQuestionId(0)
+ this.$set(this.questionForm, lengthId, 5)
+ lesionLength = 5
+ }
+ }
+ }
+ // 靶病灶且状态为无法评估(2)
+ if (this.lesionType === 0 && lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 不需要添加标记
+ if (measureData) {
+ // 评估状态为无法评估的淋巴结靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg27'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 不需要添加标记
+ if (measureData) {
+ // 状态为无法评估的非淋巴结靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg28'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 靶病灶且状态为消失(3)
+ if (this.lesionType === 0 && lesionState === 3) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 使用箭头工具
+ // if (!(measureData && (measureData.type === 'ArrowAnnotate' || measureData.type === 'Bidirectional'))) {
+ // this.$confirm(`评估状态为消失的淋巴结靶病灶需使用箭头工具或长短径工具添加标记!`, {
+ // type: 'warning',
+ // showCancelButton: false,
+ // callback: action => {}
+ // })
+ // loading.close()
+ // return
+ // }
+ // else if (measureData && measureData.type === 'Bidirectional' && lesionShort >= 10) {
+ // this.$confirm(`评估状态为消失的淋巴结靶病灶,短径需小于10mm!`, {
+ // type: 'warning',
+ // showCancelButton: false,
+ // callback: action => {}
+ // })
+ // loading.close()
+ // return
+ // }
+ if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
+ // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm!`
+ this.$confirm(this.$t('trials:reading:warnning:msg29'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结靶病灶 箭头工具
+ if (!(measureData && measureData.type === 'ArrowAnnotate')) {
+ // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg30'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ } else if (measureData && measureData.type === 'ArrowAnnotate') {
+ const lId = this.getQuestionId(0)
+ this.$set(this.questionForm, lId, 0)
+ lesionLength = 0
+ }
+ }
+ }
+
+ // 非靶病灶且状态为存在(0)
+ if (this.lesionType === 1 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结非靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg31'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为存在的非淋巴结非靶病灶需使用直径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg32'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为显著增大(1)
+ if (this.lesionType === 1 && lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
+ // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg33'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'RectangleRoi'))) {
+ // 评估状态为显著增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg34'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为无法评估(2)
+ if (this.lesionType === 1 && lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 无标记
+ if (measureData) {
+ // 评估状态为无法评估的淋巴结非靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg35'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 无标记
+ if (measureData) {
+ // 评估状态为无法评估的非淋巴结非靶病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg36'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 非靶病灶且状态为消失(3)
+ if (this.lesionType === 1 && lesionState === 3) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的淋巴结非靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg37'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的非淋巴结非靶病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg38'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为存在(0)
+ if (this.lesionType === 2 && lesionState === 0) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为存在的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg39'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为存在的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg40'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为疑似(1)
+ if (this.lesionType === 2 && lesionState === 1) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg41'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
+ // `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg42'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为无法评估(2)
+ if (this.lesionType === 2 && lesionState === 2) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (measureData) {
+ // `评估状态为无法评估的淋巴结新病灶不需要添加标记!`
+ this.$confirm(this.$t('trials:reading:warnning:msg43'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 非淋巴结非靶病灶 直径测量工具、箭头工具
+ if (measureData) {
+ // 评估状态为无法评估的非淋巴结新病灶不需要添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg44'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+
+ // 新病灶且状态为消失(3)
+ if (this.lesionType === 2 && lesionState === 3) {
+ if (lymphNodes === 1) {
+ // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg45'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ } else {
+ // 箭头工具
+ if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
+ // 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记!
+ this.$confirm(this.$t('trials:reading:warnning:msg46'), {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ loading.close()
+ return
+ }
+ }
+ }
+ }
+ DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
+ // 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
+ // 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
+ // 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
+ try {
var picturePath = ''
if (val && measureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
- picturePath = pictureObj.isSuccess ? pictureObj.result.name : ''
+ picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
}
var answers = []
var reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/)
@@ -1366,166 +1328,150 @@ export default {
this.deleteInfo = null
params.rowId = ''
}
- submitTableQuestion(params).then(async res => {
- // 保存成功!
+ const res = await submitTableQuestion(params)
+ if (res.IsSuccess) {
+ // 保存成功!
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.currentMarkTool = measureData ? measureData.type : ''
// saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断);2:已保存,信息完整
this.$set(this.questionForm, 'saveTypeEnum', 2)
this.originalQuestionForm = { ...this.questionForm }
- loading.close()
var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
var lesionOrgan = this.getQuestionVal(6)
this.$set(this.questionForm, 'RowId', res.Result.RowId)
const lesionPart = this.getQuestionVal(8)
- const lesionState = Number(this.getQuestionVal(7))
+ const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, lesionState, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
-
// await store.dispatch('reading/refreshMeasuredData', this.visitTaskId)
// DicomEvent.$emit('getMeasureData')
this.$emit('close')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive')
- }).catch(() => { loading.close() })
- })
+ }
+ loading.close()
+ } catch (e) {
+ console.log(e)
+ loading.close()
+ }
})
},
- handleDeleteMeasureData() {
+ async handleDeleteMeasureData() {
// 是否确认清除标记?
- this.$confirm(this.$t('trials:reading:warnning:msg47'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(async() => {
- this.organList = []
- await this.getOrganInfoList()
- // 重置长短径 和 状态
- var lengId = this.getQuestionId(0)
- this.$set(this.questionForm, lengId, '')
- var shortId = this.getQuestionId(1)
- this.$set(this.questionForm, shortId, '')
+ const confirm = await this.$confirm(
+ this.$t('trials:reading:warnning:msg47'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+ this.organList = []
+ await this.getOrganInfoList()
+ // 重置长短径 和 状态
+ var lengId = this.getQuestionId(0)
+ this.$set(this.questionForm, lengId, '')
+ var shortId = this.getQuestionId(1)
+ this.$set(this.questionForm, shortId, '')
- var stateId = this.getQuestionId(7)
- this.$set(this.questionForm, stateId, '')
- // saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断)
- if (this.questionForm.RowId) {
- this.$set(this.questionForm, 'saveTypeEnum', 1)
- } else {
- this.$set(this.questionForm, 'saveTypeEnum', 0)
- }
- await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
- DicomEvent.$emit('getMeasureData')
- // Store.$emit('updateImage', this.questionForm.MeasureData.instanceId)
- var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
- const lesionPart = this.getQuestionVal(8)
- const lesionOrgan = this.getQuestionVal(6)
- const lesionLength = ''
- const lesionShort = ''
- const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
+ var stateId = this.getQuestionId(7)
+ this.$set(this.questionForm, stateId, '')
+ if (this.questionForm.RowId) {
+ this.$set(this.questionForm, 'saveTypeEnum', 1)
+ } else {
+ this.$set(this.questionForm, 'saveTypeEnum', 0)
+ }
+ await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
+ DicomEvent.$emit('getMeasureData')
+ // Store.$emit('updateImage', this.questionForm.MeasureData.instanceId)
+ const isLymphLesion = this.getQuestionVal(2)
+ const lesionPart = this.getQuestionVal(8)
+ const lesionOrgan = this.getQuestionVal(6)
+ const lesionLength = ''
+ const lesionShort = ''
+ const lesionState = this.getQuestionVal(7)
+ if (!this.questionForm.IsDicomReading) {
+ DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
+ }
+ this.$set(this.questionForm, 'IsDicomReading', true)
- if (!this.questionForm.IsDicomReading) {
- DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
- }
- this.$set(this.questionForm, 'IsDicomReading', true)
-
- this.$set(this.questionForm, 'MeasureData', '')
- let anwsers = null
- if (this.answers.measureObj) {
- anwsers = Object.assign({ measureObj: '' }, this.questionForm)
- } else {
- anwsers = Object.assign({}, this.questionForm)
- }
- this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
- DicomEvent.$emit('refreshStudyListMeasureData')
- })
- .catch(() => {})
+ this.$set(this.questionForm, 'MeasureData', '')
+ let anwsers = null
+ if (this.answers.measureObj) {
+ anwsers = Object.assign({ measureObj: '' }, this.questionForm)
+ } else {
+ anwsers = Object.assign({}, this.questionForm)
+ }
+ this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
+ DicomEvent.$emit('refreshStudyListMeasureData')
},
- handleDelete() {
- // 是否确认删除?
- this.$confirm(this.$t('trials:reading:warnning:msg48'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(async() => {
- if (this.questionForm.RowId) {
- const loading = this.$loading({ fullscreen: true })
- var param = {
- visitTaskId: this.visitTaskId,
- questionId: this.parentQsId,
- rowId: this.questionForm.RowId
- }
- deleteReadingRowAnswer(param)
- .then(async res => {
- loading.close()
- if (res.IsSuccess) {
- // this.$emit('getReadingQuestionAndAnswer')
- if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
- await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
- }
- // await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- // DicomEvent.$emit('getMeasureData')
- if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
- DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
- }
- this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- DicomEvent.$emit('getReportInfo', true)
- // if (!this.questionForm.IsDicomReading) {
- // DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
- // }
- // '删除成功!'
- this.$message.success(this.$t('common:message:deletedSuccessfully'))
- loading.close()
- }
- }).catch(() => { loading.close() })
- } else {
- // const loading = this.$loading({ fullscreen: true })
- // 移除新建病灶并关闭窗口
- if (this.questionForm.MeasureData && this.questionForm.IsDicomReading) {
+ async handleDelete() {
+ const loading = this.$loading({ fullscreen: true })
+ try {
+ const confirm = await this.$confirm(
+ this.$t('trials:reading:warnning:msg48'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+ if (this.questionForm.RowId) {
+ var param = {
+ visitTaskId: this.visitTaskId,
+ questionId: this.parentQsId,
+ rowId: this.questionForm.RowId
+ }
+ const res = await deleteReadingRowAnswer(param)
+ if (res.IsSuccess) {
+ if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
}
- // DicomEvent.$emit('getMeasureData')
if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
}
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- // loading.close()
+ DicomEvent.$emit('getReportInfo', true)
+ // '删除成功!'
+ this.$message.success(this.$t('common:message:deletedSuccessfully'))
}
- DicomEvent.$emit('refreshStudyListMeasureData')
- })
+ } else {
+ // 移除新建病灶并关闭窗口
+ if (this.questionForm.MeasureData && this.questionForm.IsDicomReading) {
+ await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
+ }
+ if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
+ DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
+ }
+ this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
+ }
+ DicomEvent.$emit('refreshStudyListMeasureData')
+ loading.close()
+ } catch (e) {
+ loading.close()
+ console.log(e)
+ }
},
- handleClose() {
+ async handleClose() {
if (!this.questionForm.RowId) {
// '当前病灶为新建病灶,未保存。如果关闭窗口,将会删除病灶信息,是否继续?'
- this.$confirm(this.$t('trials:reading:warnning:msg49'), {
- type: 'warning',
- distinguishCancelAndClose: true
- })
- .then(async() => {
- // 移除新建病灶并关闭窗口
- if (this.questionForm.MeasureData) {
- await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
- }
- // await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- DicomEvent.$emit('getMeasureData')
- this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
- })
- .catch(() => {})
+ const confirm = await this.$confirm(
+ this.$t('trials:reading:warnning:msg49'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm !== 'confirm') return
+ // 移除新建病灶并关闭窗口
+ if (this.questionForm.MeasureData) {
+ await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
+ }
+ DicomEvent.$emit('getMeasureData')
+ this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
} else {
// saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断)
-
if (this.questionForm.saveTypeEnum === 1) {
- // // 当前病灶信息有更新,未保存,是否继续?
- // this.$confirm(this.$t('trials:reading:warnning:msg50'), {
- // type: 'warning',
- // distinguishCancelAndClose: true
- // })
- // .then(() => {
- // this.$emit('close')
- // })
- // .catch(() => {})
this.$emit('close')
} else {
this.$emit('close')
@@ -1539,13 +1485,12 @@ export default {
if (isNaN(parseInt(lesionState)) && this.answers.IsFristAdd === 'False') {
const stateId = this.getQuestionId(7)
this.$set(this.questionForm, stateId, 2)
- var isLymphLesion = this.getQuestionVal(2)
- isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
+ const isLymphLesion = this.getQuestionVal(2)
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
- const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
- const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
- const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
+ const lesionLength = this.getQuestionVal(0)
+ const lesionShort = this.getQuestionVal(1)
+ const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
}
}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue
index ba1b85c..fc95fa5 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue
@@ -1,11 +1,22 @@
-
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
-
-
- {{ subjectCode }}
- {{ taskBlindName }}
-
@@ -122,6 +133,7 @@
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue
index 886fc4c..15af0d2 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue
@@ -49,20 +49,42 @@
/>
-
#{{ series.seriesNumber }}
-
-
-
+
+
#{{ series.seriesNumber }}
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.KeyFramesList.length > 0 ? instance.KeyFramesList.length : instance.NumberOfFrames : 1} frame` }}
+
+
+
+
+
+
+
@@ -73,7 +95,10 @@
T: {{ parseFloat(series.sliceThickness).toFixed(digitPlaces) }}
-
+
+ {{ series.modality }}: {{ series.imageloadedArr.length }}/{{ series.instanceCount }} image
+
+
{{ series.modality }}: {{ series.instanceCount }} image
@@ -88,9 +113,9 @@
-
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue
index 1dccd8d..39d1478 100644
--- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue
@@ -2,56 +2,50 @@