hellfire 0.29.1 → 0.29.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [0.29.3](http://10.16.100.57/diffusion/115/paladin/compare/v0.29.2...v0.29.3) (2025-03-24)
6
+
7
+
8
+
9
+ ## [0.29.2](http://10.16.100.57/diffusion/115/paladin/compare/v0.29.1...v0.29.2) (2025-03-18)
10
+
11
+
12
+
5
13
  ## [0.29.1](http://10.16.100.57/diffusion/115/paladin/compare/v0.29.0...v0.29.1) (2025-03-13)
6
14
 
7
15
 
package/dist/index.js CHANGED
@@ -40290,7 +40290,7 @@ var ConnectedVRMode = reactRedux.connect(mapStateToProps$a, {
40290
40290
  setVRMode: setVRMode
40291
40291
  }, mergeProps$a)(VRMode);
40292
40292
 
40293
- var css_248z$d = ".paladin-tool-go-flatten {\n cursor: pointer;\n font-size: 12px;\n height: 32px;\n text-align: center;\n border-bottom: 1px solid #fff;\n background: #353535;\n position: relative;\n z-index: 999;\n color: #fff;\n}\n.paladin-tool-go-flatten svg {\n width: 7px !important;\n color: #fff;\n}\n.paladin-tool-go-flatten:hover {\n background: #d4d4d4;\n}\n.paladin-tool-go-flatten:hover svg {\n color: #333;\n}\n.paladin-tool-go-line {\n cursor: pointer;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n right: 0;\n margin-top: 6px;\n height: 34px;\n}\n.paladin-tool-go-line .paladin-full-content {\n width: 24px;\n}\n.paladin-tool-go-line svg {\n width: 8px !important;\n color: #fff;\n}\n.paladin-tool-go-line:hover {\n background: #d4d4d4;\n}\n.paladin-tool-go-line:hover svg {\n color: #333;\n}\n.paladin-tool-item {\n background: #fff;\n padding: 5px 0;\n min-width: 160px;\n max-width: 280px;\n}\n.paladin-tool-lg-content {\n border-bottom: 1px solid #5b5b5b;\n}\n.paladin-tool-lg-content .paladin-tool-lg-item {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n flex: 1;\n border-top: 1px solid #5b5b5b;\n color: #b0b0b0;\n font-size: 12px;\n text-align: center;\n padding: 8px 10px;\n cursor: pointer;\n border-left: 1px solid #5b5b5b;\n}\n.paladin-tool-lg-content .paladin-tool-lg-item:hover {\n color: #fff;\n}\n.paladin-tool-lg-content .paladin-tool-lg-item-active {\n background: #0d5075;\n color: #fff;\n}\n.paladin-tool-flatten-vertical-wrapper {\n width: 228px;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav-wrapper {\n margin: 6px 2px;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border-top: 1px solid #5b5b5b;\n border-bottom: 1px solid #5b5b5b;\n border-left: 1px solid #5b5b5b;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav-pet {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border: 1px solid #5b5b5b;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-qa {\n cursor: pointer;\n margin-left: 15px;\n color: #e2e2e2;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-qa svg {\n width: 22px;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav-active {\n color: #c8c8c8;\n background-color: #5b5b5b;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-space-line {\n border-top: 1px solid gray;\n margin-top: 6px;\n padding-top: 6px;\n}\n.paladin-tool-flatten-hor-wrapper {\n position: relative;\n z-index: 100;\n width: 100%;\n display: flex;\n flex-direction: row;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line {\n display: flex;\n flex-direction: column;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content {\n width: 24px;\n height: 100%;\n text-align: center;\n line-height: 100%;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content svg {\n width: 10px !important;\n color: #fff;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content:hover {\n background: #d4d4d4;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content:hover svg {\n color: #333;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav-wrapper {\n padding: 5px;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border: 1px solid #5b5b5b;\n margin-bottom: 5px;\n text-align: center;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav-pet {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border: 1px solid #5b5b5b;\n height: 20px;\n line-height: 20px;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-qa {\n cursor: pointer;\n margin: 5px auto;\n color: #e2e2e2;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-qa svg {\n width: 20px;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav-active {\n color: #c8c8c8;\n background-color: #5b5b5b;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-lg-item {\n border: 1px solid #5b5b5b;\n}\n.paladin-tool-space-line-3d {\n border-top: 1px solid gray;\n margin-top: 6px;\n}\n.paladin-tool-space-line-mip {\n margin-top: 6px;\n padding-top: 6px;\n}\n.paladin-tool-subtitle {\n font-size: 12px;\n color: gray;\n padding: 4px 2px 3px 2px;\n}\n.paladin-hor-border {\n border-right: 1px solid #666;\n margin-right: 6px;\n}\n.paladin-hor-three-content {\n position: relative;\n padding-left: 13px;\n}\n.paladin-hor-three-content .paladin-hor-three-title {\n position: absolute;\n left: 0;\n top: 2px;\n width: 12px;\n font-size: 12px;\n word-break: break-all;\n color: gray;\n}\n.paladin-hor-three-content .paladin-hor-three-title-bottom {\n position: absolute;\n top: 2px;\n width: 12px;\n font-size: 12px;\n word-break: break-all;\n color: gray;\n left: 0;\n top: 80px;\n}\n.paladin-dicom-tool-tab-more {\n display: inline-block;\n padding-left: 5px;\n}\n.paladin-dicom-tool-tab-more svg {\n width: 7px !important;\n color: #c0c0c0 !important;\n}\n.paladin-tool-fusion-box {\n color: #fff;\n font-size: 13px;\n margin-bottom: 20px;\n}\n.paladin-tool-fusion-box .paladin-flex-row {\n margin-top: 15px;\n flex-wrap: nowrap;\n}\n.paladin-tool-fusion-box .paladin-flex-col {\n flex: 1;\n}\n.paladin-tool-fusion-box .paladin-tool-fusion-label {\n width: 55px;\n flex: none;\n justify-content: center;\n}\n.paladin-tool-fusion-box .paladin-tool-fusion-end {\n margin-left: 6px;\n width: 30px;\n flex: none;\n}\n";
40293
+ var css_248z$d = ".paladin-tool-go-flatten {\n cursor: pointer;\n font-size: 12px;\n height: 32px;\n text-align: center;\n border-bottom: 1px solid #fff;\n background: #353535;\n position: relative;\n z-index: 999;\n color: #fff;\n}\n.paladin-tool-go-flatten svg {\n width: 7px !important;\n color: #fff;\n}\n.paladin-tool-go-flatten:hover {\n background: #d4d4d4;\n}\n.paladin-tool-go-flatten:hover svg {\n color: #333;\n}\n.paladin-tool-go-line {\n cursor: pointer;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n right: 0;\n margin-top: 6px;\n height: 34px;\n}\n.paladin-tool-go-line .paladin-full-content {\n width: 24px;\n}\n.paladin-tool-go-line svg {\n width: 8px !important;\n color: #fff;\n}\n.paladin-tool-go-line:hover {\n background: #d4d4d4;\n}\n.paladin-tool-go-line:hover svg {\n color: #333;\n}\n.paladin-tool-item {\n background: #fff;\n padding: 5px 0;\n min-width: 160px;\n max-width: 280px;\n}\n.paladin-tool-lg-content {\n border-bottom: 1px solid #5b5b5b;\n}\n.paladin-tool-lg-content .paladin-tool-lg-item {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n flex: 1;\n border-top: 1px solid #5b5b5b;\n color: #b0b0b0;\n font-size: 12px;\n text-align: center;\n padding: 8px 10px;\n cursor: pointer;\n border-left: 1px solid #5b5b5b;\n}\n.paladin-tool-lg-content .paladin-tool-lg-item:hover {\n color: #fff;\n}\n.paladin-tool-lg-content .paladin-tool-lg-item-active {\n background: #0d5075;\n color: #fff;\n}\n.paladin-tool-flatten-vertical-wrapper {\n width: 228px;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav-wrapper {\n margin: 6px 2px;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border-top: 1px solid #5b5b5b;\n border-bottom: 1px solid #5b5b5b;\n border-left: 1px solid #5b5b5b;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav-pet {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border: 1px solid #5b5b5b;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-qa {\n cursor: pointer;\n margin-left: 15px;\n color: #e2e2e2;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-qa svg {\n width: 22px;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-nav-active {\n color: #c8c8c8;\n background-color: #5b5b5b;\n}\n.paladin-tool-flatten-vertical-wrapper .paladin-tool-space-line {\n border-top: 1px solid gray;\n margin-top: 6px;\n padding-top: 6px;\n}\n.paladin-tool-flatten-hor-wrapper {\n position: relative;\n z-index: 100;\n width: 100%;\n display: flex;\n flex-direction: row;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line {\n display: flex;\n flex-direction: column;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content {\n width: 24px;\n height: 100%;\n text-align: center;\n line-height: 100%;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content svg {\n width: 10px !important;\n color: #fff;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content:hover {\n background: #d4d4d4;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-flatten-hor-go-line .paladin-flatten-hor-go-line-content:hover svg {\n color: #333;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav-wrapper {\n padding: 5px;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border: 1px solid #5b5b5b;\n margin-bottom: 5px;\n text-align: center;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav-pet {\n cursor: pointer;\n font-size: 13px;\n color: #e2e2e2;\n padding: 8px 10px;\n border: 1px solid #5b5b5b;\n height: 20px;\n line-height: 20px;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-qa {\n cursor: pointer;\n margin: 5px auto;\n color: #e2e2e2;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-qa svg {\n width: 20px;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-nav-active {\n color: #c8c8c8;\n background-color: #5b5b5b;\n}\n.paladin-tool-flatten-hor-wrapper .paladin-tool-lg-item {\n border: 1px solid #5b5b5b;\n}\n.paladin-tool-space-line-3d {\n border-top: 1px solid gray;\n margin-top: 6px;\n}\n.paladin-tool-space-line-mip {\n margin-top: 6px;\n padding-top: 6px;\n}\n.paladin-tool-subtitle {\n font-size: 12px;\n color: gray;\n padding: 4px 2px 3px 2px;\n}\n.paladin-hor-border {\n border-right: 1px solid #666;\n margin-right: 6px;\n}\n.paladin-hor-three-content {\n position: relative;\n padding-left: 13px;\n}\n.paladin-hor-three-content .paladin-hor-three-title {\n position: absolute;\n left: 0;\n top: 2px;\n width: 12px;\n font-size: 12px;\n word-break: break-all;\n color: gray;\n}\n.paladin-hor-three-content .paladin-hor-three-title-bottom {\n position: absolute;\n top: 2px;\n width: 12px;\n font-size: 12px;\n word-break: break-all;\n color: gray;\n left: 0;\n top: 80px;\n}\n.paladin-dicom-tool-tab-more {\n display: inline-block;\n padding-left: 5px;\n}\n.paladin-dicom-tool-tab-more svg {\n width: 7px !important;\n color: #c0c0c0 !important;\n}\n.paladin-tool-fusion-box {\n color: #fff;\n font-size: 13px;\n margin-bottom: 20px;\n}\n.paladin-tool-fusion-box .paladin-flex-row {\n margin-top: 15px;\n flex-wrap: nowrap;\n}\n.paladin-tool-fusion-box .paladin-flex-col {\n flex: 1;\n}\n.paladin-tool-fusion-box .paladin-tool-fusion-label {\n width: 55px;\n flex: none;\n justify-content: center;\n}\n.paladin-tool-fusion-box .paladin-tool-fusion-end {\n margin-left: 6px;\n width: 30px;\n flex: none;\n}\n.paladin-tool-fusion-message {\n margin-top: 15px;\n color: #ccc;\n font-size: 14px;\n line-height: 22px;\n padding: 0 6px;\n}\n";
40294
40294
  styleInject$1(css_248z$d);
40295
40295
 
40296
40296
  function startFullscreen() {
@@ -44596,10 +44596,10 @@ var DicomToolFlattenMode = /*#__PURE__*/function (_Component) {
44596
44596
  var isThree = MPR || VR || Surgery || MIP || CPR || Fusion; // 非同屏互通模式下
44597
44597
 
44598
44598
  var IODisconnect = !IO;
44599
- var commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'Reset', 'Fusion']; // 只有传入了关键图像操作的方法 才显示这个按钮
44599
+ var commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'Fusion', 'Reset']; // 只有传入了关键图像操作的方法 才显示这个按钮
44600
44600
 
44601
44601
  if (operateKeyImages) {
44602
- commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'KeyImages', 'Reset', 'Fusion'];
44602
+ commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'KeyImages', 'Fusion', 'Reset'];
44603
44603
  }
44604
44604
 
44605
44605
  if (mode !== 'seriesMode') {
@@ -44866,7 +44866,9 @@ var DicomToolFlattenMode = /*#__PURE__*/function (_Component) {
44866
44866
  e.stopPropagation();
44867
44867
  handleFilmPrint && handleFilmPrint();
44868
44868
  }
44869
- }, "\u80F6\u7247\u6253\u5370\u533A", films && films.length > 0 ? "(".concat(films.length, ")") : ''))));
44869
+ }, "\u80F6\u7247\u6253\u5370\u533A", films && films.length > 0 ? "(".concat(films.length, ")") : ''))), Fusion && /*#__PURE__*/React__default.createElement("div", {
44870
+ className: "paladin-tool-fusion-message"
44871
+ }, "\u6CE8\u610F: \u5982\u672A\u7ECF\u6388\u6743\u4E0A\u4F20PET\u56FE\u50CF\uFF0C\u5E73\u53F0\u5373\u4F1A\u6536\u53D6\u76F8\u5173\u8D39\u7528\u3002"));
44870
44872
  }
44871
44873
  }]);
44872
44874
 
@@ -44965,10 +44967,10 @@ var DicomToolFlattenMode$1 = /*#__PURE__*/function (_Component) {
44965
44967
  fusionPetSUV = _this$props4.fusionPetSUV;
44966
44968
  var isThree = MPR || VR || Surgery || MIP || Fusion;
44967
44969
  var IODisconnect = !IO;
44968
- var commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'Reset', 'Fusion']; // 只有传入了关键图像操作的方法 才显示这个按钮
44970
+ var commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'Fusion', 'Reset']; // 只有传入了关键图像操作的方法 才显示这个按钮
44969
44971
 
44970
44972
  if (operateKeyImages) {
44971
- commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'KeyImages', 'Reset', 'Fusion'];
44973
+ commonTools = ['Layout', 'StackScroll', 'Wwwc', 'Zoom', 'Pan', 'Rotate', 'ReverseColor', 'Sharpen', 'Cine', 'FalseColor', 'Link', 'ReferencePosition', 'KeyImages', 'Fusion', 'Reset'];
44972
44974
  }
44973
44975
 
44974
44976
  if (mode !== 'seriesMode') {
@@ -45251,7 +45253,9 @@ var DicomToolFlattenMode$1 = /*#__PURE__*/function (_Component) {
45251
45253
  e.stopPropagation();
45252
45254
  handleFilmPrint && handleFilmPrint();
45253
45255
  }
45254
- }, "\u80F6\u7247\u6253\u5370\u533A", films && films.length > 0 ? "(".concat(films.length, ")") : ''))));
45256
+ }, "\u80F6\u7247\u6253\u5370\u533A", films && films.length > 0 ? "(".concat(films.length, ")") : '')), Fusion && /*#__PURE__*/React__default.createElement("div", {
45257
+ className: "paladin-tool-fusion-message"
45258
+ }, "\u6CE8\u610F: \u5982\u672A\u7ECF\u6388\u6743\u4E0A\u4F20PET\u56FE\u50CF\uFF0C\u5E73\u53F0\u5373\u4F1A\u6536\u53D6\u76F8\u5173\u8D39\u7528\u3002")));
45255
45259
  }
45256
45260
  }]);
45257
45261
 
@@ -48057,6 +48061,129 @@ function calcSUVToPixelData(suv, image) {
48057
48061
  return suv * correctedDose / (1000 * patientWeight);
48058
48062
  }
48059
48063
 
48064
+ function petFusionCheck (ownProps, propsFromState) {
48065
+ var isThree = propsFromState.isThree,
48066
+ mode = propsFromState.mode,
48067
+ currentSeries = propsFromState.currentSeries;
48068
+ var errorMessage;
48069
+
48070
+ var _fusionCTSeries;
48071
+
48072
+ var _fusionPETSeries;
48073
+
48074
+ var enterAfterOk = false;
48075
+
48076
+ if (isThree || mode !== 'seriesMode') {
48077
+ errorMessage = '请在二维的序列模式下进行融合操作';
48078
+ }
48079
+
48080
+ if (!currentSeries) {
48081
+ errorMessage = '请选中要融合的序列';
48082
+ }
48083
+
48084
+ var allowModality = ['CT', 'MR', 'PT'];
48085
+
48086
+ if (!currentSeries.modality || !allowModality.includes(currentSeries.modality)) {
48087
+ errorMessage = '该序列类型不支持融合';
48088
+ }
48089
+
48090
+ var currentStudy = ownProps.study[0];
48091
+ var currentImagePlane = cornerstone.metaData.get('imagePlaneModule', currentSeries.imageIds[0]);
48092
+ var currentFrameOfReferenceUID = currentImagePlane.frameOfReferenceUID;
48093
+
48094
+ if (currentSeries.modality === 'CT' || currentSeries.modality === 'MR') {
48095
+ var matchSeries = [];
48096
+ currentStudy.series.forEach(function (item) {
48097
+ var targetImagePlane = cornerstone.metaData.get('imagePlaneModule', item.imageIds[0]);
48098
+
48099
+ if (item.numberOfSeriesRelatedInstances === currentSeries.numberOfSeriesRelatedInstances && currentFrameOfReferenceUID === targetImagePlane.frameOfReferenceUID && item.modality === 'PT') {
48100
+ matchSeries.push(item);
48101
+ }
48102
+ });
48103
+
48104
+ if (matchSeries.length === 0) {
48105
+ errorMessage = '未发现可以和所选序列融合的序列';
48106
+ }
48107
+
48108
+ _fusionCTSeries = currentSeries;
48109
+
48110
+ if (matchSeries.length > 1) {
48111
+ // 如果检测到有1个以上,从多选中找,找到0个提示重新选择,找到1个以上提示重新选择,找到1个,提示检测有多个,是否确认融合当前选择的这个序列
48112
+ var matchLinkedSeries = [];
48113
+ var linkSeriesIndex = propsFromState.linkSeriesIndex,
48114
+ series = propsFromState.series;
48115
+ lodash$1.forEach(linkSeriesIndex, function (i) {
48116
+ var item = lodash$1.find(matchSeries, {
48117
+ seriesInstanceUID: series[i].seriesInstanceUID
48118
+ });
48119
+
48120
+ if (item) {
48121
+ matchLinkedSeries.push(item);
48122
+ }
48123
+ });
48124
+
48125
+ if (matchLinkedSeries.length === 1) {
48126
+ errorMessage = "当前有多个符合融合条件的序列!如当前选择的融合序列不正确,请使用键盘ctrl + 鼠标左键,重新选择融合序列";
48127
+ enterAfterOk = true;
48128
+ _fusionPETSeries = matchLinkedSeries[0];
48129
+ } else {
48130
+ errorMessage = "请使用键盘ctrl + 鼠标左键,挑选需要融合的PET和CT序列";
48131
+ }
48132
+ } else {
48133
+ _fusionPETSeries = matchSeries[0];
48134
+ }
48135
+ }
48136
+
48137
+ if (currentSeries.modality === 'PT') {
48138
+ var _matchSeries = [];
48139
+ currentStudy.series.forEach(function (item) {
48140
+ var targetImagePlane = cornerstone.metaData.get('imagePlaneModule', item.imageIds[0]);
48141
+
48142
+ if (item.numberOfSeriesRelatedInstances === currentSeries.numberOfSeriesRelatedInstances && currentFrameOfReferenceUID === targetImagePlane.frameOfReferenceUID && (item.modality === 'CT' || item.modality === 'MR')) {
48143
+ _matchSeries.push(item);
48144
+ }
48145
+ });
48146
+
48147
+ if (_matchSeries.length === 0) {
48148
+ errorMessage = '未发现可以和所选序列融合的序列';
48149
+ }
48150
+
48151
+ _fusionPETSeries = currentSeries;
48152
+
48153
+ if (_matchSeries.length > 1) {
48154
+ var _matchLinkedSeries = [];
48155
+ var _linkSeriesIndex = propsFromState.linkSeriesIndex,
48156
+ _series = propsFromState.series;
48157
+ lodash$1.forEach(_linkSeriesIndex, function (i) {
48158
+ var item = lodash$1.find(_matchSeries, {
48159
+ seriesInstanceUID: _series[i].seriesInstanceUID
48160
+ });
48161
+
48162
+ if (item) {
48163
+ _matchLinkedSeries.push(item);
48164
+ }
48165
+ });
48166
+
48167
+ if (_matchLinkedSeries.length === 1) {
48168
+ errorMessage = "当前有多个符合融合条件的序列!如当前选择的融合序列不正确,请使用键盘ctrl + 鼠标左键,重新选择融合序列";
48169
+ enterAfterOk = true;
48170
+ _fusionCTSeries = _matchLinkedSeries[0];
48171
+ } else {
48172
+ errorMessage = "请使用键盘ctrl + 鼠标左键,挑选需要融合的PET和CT序列";
48173
+ }
48174
+ } else {
48175
+ _fusionCTSeries = _matchSeries[0];
48176
+ }
48177
+ }
48178
+
48179
+ return {
48180
+ enterAfterOk: enterAfterOk,
48181
+ errorMessage: errorMessage,
48182
+ ctSeries: _fusionCTSeries,
48183
+ petSeries: _fusionPETSeries
48184
+ };
48185
+ }
48186
+
48060
48187
  function _createForOfIteratorHelper$9(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$b(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
48061
48188
 
48062
48189
  function _unsupportedIterableToArray$b(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$b(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$b(o, minLen); }
@@ -49286,59 +49413,11 @@ var mergeProps$m = function mergeProps(propsFromState, propsFromDispatch, ownPro
49286
49413
  propsFromDispatch.activeDicomFunction('Film');
49287
49414
  },
49288
49415
  petFusion: function petFusion() {
49289
- var errorMessage;
49290
-
49291
- var _fusionCTSeries;
49292
-
49293
- var _fusionPETSeries;
49294
-
49295
- if (isThree || mode !== 'seriesMode') {
49296
- errorMessage = '请在二维的序列模式下进行融合操作';
49297
- }
49298
-
49299
- if (!currentSeries) {
49300
- errorMessage = '请选中要融合的序列';
49301
- }
49302
-
49303
- var allowModality = ['CT', 'MR', 'PT'];
49304
-
49305
- if (!currentSeries.modality || !allowModality.includes(currentSeries.modality)) {
49306
- errorMessage = '该序列类型不支持融合';
49307
- }
49308
-
49309
- var currentStudy = ownProps.study[0];
49310
-
49311
- if (currentSeries.modality === 'CT' || currentSeries.modality === 'MR') {
49312
- var matchSeries = [];
49313
- currentStudy.series.forEach(function (item) {
49314
- if (item.numberOfSeriesRelatedInstances === currentSeries.numberOfSeriesRelatedInstances && item.modality === 'PT') {
49315
- matchSeries.push(item);
49316
- }
49317
- });
49318
-
49319
- if (matchSeries.length === 0) {
49320
- errorMessage = '未发现可以和所选序列融合的序列';
49321
- }
49322
-
49323
- _fusionCTSeries = currentSeries;
49324
- _fusionPETSeries = matchSeries[0];
49325
- }
49326
-
49327
- if (currentSeries.modality === 'PT') {
49328
- var _matchSeries = [];
49329
- currentStudy.series.forEach(function (item) {
49330
- if (item.numberOfSeriesRelatedInstances === currentSeries.numberOfSeriesRelatedInstances && (item.modality === 'CT' || item.modality === 'MR')) {
49331
- _matchSeries.push(item);
49332
- }
49333
- });
49334
-
49335
- if (_matchSeries.length === 0) {
49336
- errorMessage = '未发现可以和所选序列融合的序列';
49337
- }
49338
-
49339
- _fusionCTSeries = _matchSeries[0];
49340
- _fusionPETSeries = currentSeries;
49341
- }
49416
+ var _petFusionCheck = petFusionCheck(ownProps, propsFromState),
49417
+ errorMessage = _petFusionCheck.errorMessage,
49418
+ ctSeries = _petFusionCheck.ctSeries,
49419
+ petSeries = _petFusionCheck.petSeries,
49420
+ enterAfterOk = _petFusionCheck.enterAfterOk;
49342
49421
 
49343
49422
  if (errorMessage) {
49344
49423
  Modal.create( /*#__PURE__*/React__default.createElement("div", {
@@ -49355,13 +49434,26 @@ var mergeProps$m = function mergeProps(propsFromState, propsFromDispatch, ownPro
49355
49434
  },
49356
49435
  maskClosable: false,
49357
49436
  title: '提示',
49358
- footer: null
49437
+ okText: enterAfterOk ? '确认融合' : '关闭',
49438
+ okButtonProps: {
49439
+ type: 'primary'
49440
+ },
49441
+ cancelButtonProps: {
49442
+ show: false
49443
+ },
49444
+ onOk: function onOk() {
49445
+ if (enterAfterOk) {
49446
+ propsFromDispatch.setFusionReduxValue('fusionCTSeries', ctSeries);
49447
+ propsFromDispatch.setFusionReduxValue('fusionPETSeries', petSeries);
49448
+ propsFromDispatch.activeDicomFunction('Fusion', true);
49449
+ }
49450
+ }
49359
49451
  });
49360
49452
  return;
49361
49453
  }
49362
49454
 
49363
- propsFromDispatch.setFusionReduxValue('fusionCTSeries', _fusionCTSeries);
49364
- propsFromDispatch.setFusionReduxValue('fusionPETSeries', _fusionPETSeries);
49455
+ propsFromDispatch.setFusionReduxValue('fusionCTSeries', ctSeries);
49456
+ propsFromDispatch.setFusionReduxValue('fusionPETSeries', petSeries);
49365
49457
  propsFromDispatch.activeDicomFunction('Fusion', true);
49366
49458
  },
49367
49459
  changePetOpacity: function changePetOpacity(e) {
@@ -49406,11 +49498,8 @@ var mergeProps$m = function mergeProps(propsFromState, propsFromDispatch, ownPro
49406
49498
  var suvToWindowWidth = calcSUVToPixelData(nextValue, enabledOriginPET.image);
49407
49499
  var originPETViewport = cornerstone.getViewport(originPETElement);
49408
49500
  var fusionPETViewport = cornerstone.getViewport(fusionPETElement);
49409
-
49410
49501
  var windowWidth = lodash$1.round(suvToWindowWidth);
49411
-
49412
49502
  var windowCenter = lodash$1.round(suvToWindowWidth / 2);
49413
-
49414
49503
  originPETViewport.voi.windowWidth = windowWidth;
49415
49504
  originPETViewport.voi.windowCenter = windowCenter;
49416
49505
  fusionPETViewport.voi.windowWidth = windowWidth;