hellfire 0.27.10 → 0.27.12

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.27.12](http://10.16.100.57/diffusion/115/paladin/compare/v0.27.11...v0.27.12) (2024-04-26)
6
+
7
+
8
+
9
+ ## [0.27.11](http://10.16.100.57/diffusion/115/paladin/compare/v0.27.10...v0.27.11) (2024-04-24)
10
+
11
+
12
+
5
13
  ## [0.27.10](http://10.16.100.57/diffusion/115/paladin/compare/v0.27.9...v0.27.10) (2024-04-08)
6
14
 
7
15
 
package/README.md CHANGED
@@ -151,6 +151,12 @@ disableUpDownKeyAction: boolean
151
151
 
152
152
  上下热键事件是否禁用
153
153
 
154
+ <b>`anonymous`</b>
155
+ ```
156
+ anonymous: boolean
157
+ ```
158
+ 病人信息匿名
159
+
154
160
  ### DicomView提供给父组件调用的方法:
155
161
 
156
162
  <b>`addStudy(data)`</b>
package/dist/index.js CHANGED
@@ -898,6 +898,7 @@ var SET_CINE_DIREACTION = 'SET_CINE_DIREACTION';
898
898
  var RESET_TOOLS_STATE = 'RESET_TOOLS_STATE';
899
899
  var SET_VR_MODE = 'SET_VR_MODE';
900
900
  var TOGGLE_MEASURE = 'TOGGLE_MEASURE';
901
+ var SET_MEASURE = 'SET_MEASURE';
901
902
  var SET_CENTESIS_PATH = 'SET_CENTESIS_PATH';
902
903
  var SET_IO_ON = 'SET_IO_ON';
903
904
  var SET_IO_OFF = 'SET_IO_OFF';
@@ -1046,9 +1047,22 @@ var action = (function () {
1046
1047
  }
1047
1048
 
1048
1049
  case TOGGLE_MEASURE:
1050
+ {
1051
+ var _next = !state.continuousMeasure; // 记忆连续测量的值
1052
+
1053
+
1054
+ var _nextStorageValue = _next ? 'open' : 'close';
1055
+
1056
+ window.localStorage.setItem('hellfire-continuous-measure-default-state', _nextStorageValue);
1057
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
1058
+ continuousMeasure: _next
1059
+ });
1060
+ }
1061
+
1062
+ case SET_MEASURE:
1049
1063
  {
1050
1064
  return _objectSpread$1(_objectSpread$1({}, state), {}, {
1051
- continuousMeasure: !state.continuousMeasure
1065
+ continuousMeasure: action.payload
1052
1066
  });
1053
1067
  }
1054
1068
 
@@ -1189,6 +1203,12 @@ function toggleMeasure() {
1189
1203
  return {
1190
1204
  type: TOGGLE_MEASURE
1191
1205
  };
1206
+ }
1207
+ function setMeasure(payload) {
1208
+ return {
1209
+ type: SET_MEASURE,
1210
+ payload: payload
1211
+ };
1192
1212
  } // 切换是否连续测量
1193
1213
  function openIO() {
1194
1214
  return {
@@ -6167,12 +6187,48 @@ var formatToString = function formatToString(value) {
6167
6187
  }
6168
6188
  };
6169
6189
 
6170
- var DicomInfo = function DicomInfo(datasets, pixelData) {
6190
+ var DicomInfo = function DicomInfo(datasets, pixelData, isAnonymous) {
6171
6191
  classCallCheck(this, DicomInfo);
6172
6192
 
6173
6193
  return new Proxy(this, {
6174
6194
  get: function get(dicomTarget, dicomProp, dicomReceiver) {
6175
6195
  switch (true) {
6196
+ case dicomProp === 'PatientName':
6197
+ {
6198
+ if (isAnonymous) {
6199
+ return '***';
6200
+ } else {
6201
+ return new DicomElementAggregator(datasets, dicomProp);
6202
+ }
6203
+ }
6204
+
6205
+ case dicomProp === 'PatientSex':
6206
+ {
6207
+ if (isAnonymous) {
6208
+ return '*';
6209
+ } else {
6210
+ return new DicomElementAggregator(datasets, dicomProp);
6211
+ }
6212
+ }
6213
+
6214
+ case dicomProp === 'PatientAge':
6215
+ {
6216
+ if (isAnonymous) {
6217
+ return '**';
6218
+ } else {
6219
+ return new DicomElementAggregator(datasets, dicomProp);
6220
+ }
6221
+ }
6222
+
6223
+ case dicomProp === 'PatientID' || dicomProp === 'InstitutionName':
6224
+ {
6225
+ if (isAnonymous) {
6226
+ return '****';
6227
+ } else {
6228
+ return new DicomElementAggregator(datasets, dicomProp);
6229
+ }
6230
+ }
6231
+
6176
6232
  case dicomProp === 'datasets':
6177
6233
  {
6178
6234
  return datasets;
@@ -10309,6 +10365,7 @@ function resetTaskPool() {
10309
10365
  }
10310
10366
 
10311
10367
  var dicomCache = {};
10368
+ var isAnonymous = false;
10312
10369
 
10313
10370
  var loadAndCacheDicom = function loadAndCacheDicom(imageId) {
10314
10371
  return new Promise(function (resolve, reject) {
@@ -10319,7 +10376,7 @@ var loadAndCacheDicom = function loadAndCacheDicom(imageId) {
10319
10376
 
10320
10377
  var imagePromise = loadAndCacheImagePlus(imageId);
10321
10378
  imagePromise.then(function (image) {
10322
- var dicom = new DicomInfo(image.data, image.getPixelData());
10379
+ var dicom = new DicomInfo(image.data, image.getPixelData(), isAnonymous);
10323
10380
  dicomCache[imageId] = dicom;
10324
10381
  resolve(dicom);
10325
10382
  }, function (e) {
@@ -10332,6 +10389,18 @@ var purgeDicomCache = function purgeDicomCache() {
10332
10389
  dicomCache = {};
10333
10390
  };
10334
10391
 
10392
+ var setInfoAnonymous = function setInfoAnonymous() {
10393
+ isAnonymous = true;
10394
+ };
10395
+
10396
+ var setNotAnonymous = function setNotAnonymous() {
10397
+ isAnonymous = false;
10398
+ };
10399
+
10400
+ var getAnonymousState = function getAnonymousState() {
10401
+ return isAnonymous;
10402
+ };
10403
+
10335
10404
  function _createSuper$c(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$c(); return function _createSuperInternal() { var Super = getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn(this, result); }; }
10336
10405
 
10337
10406
  function _isNativeReflectConstruct$c() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
@@ -32570,6 +32639,7 @@ var ButtonGroup = /*#__PURE__*/function (_Component) {
32570
32639
 
32571
32640
  defineProperty(ButtonGroup, "propTypes", {});
32572
32641
 
32642
+ var anonymousKeys = ['InstitutionName', 'InstitutionAddress', 'PatientID', 'IssuerOfPatientID', 'TypeOfPatientID', 'IssuerOfPatientIDQualifiersSequence', 'PatientName', 'PatientSex', 'PatientAge', 'PatientBirthDate', 'PatientBirthTime', 'PatientBirthName', 'PatientSize', 'PatientWeight', 'PatientAddress', 'PatientMotherBirthName', 'PatientTelephoneNumbers', 'PatientComments'];
32573
32643
  /**
32574
32644
  *
32575
32645
  * Get tag js object from our custom dicom object
@@ -32599,6 +32669,7 @@ var formatDicom = function formatDicom(dicom) {
32599
32669
  ]
32600
32670
  };
32601
32671
  var formatedDicomInfos = [];
32672
+ var isAnonymous = getAnonymousState();
32602
32673
  lodash$1.forEach(dicom, function (item) {
32603
32674
  var tagID = item.tag.toUpperCase();
32604
32675
  var value;
@@ -32608,7 +32679,13 @@ var formatDicom = function formatDicom(dicom) {
32608
32679
  if (options.maxLength && item.element.length > options.maxLength) {
32609
32680
  value = "Length(".concat(item.element.length, ")");
32610
32681
  } else {
32611
- value = item.toString();
32682
+ value = item.toString(); // 匿名
32683
+
32684
+ if (isAnonymous) {
32685
+ if (item.keyword && lodash$1.includes(anonymousKeys, item.keyword)) {
32686
+ value = "**";
32687
+ }
32688
+ }
32612
32689
  }
32613
32690
 
32614
32691
  if (item.vr === 'SQ') {
@@ -32741,72 +32818,100 @@ var DicomInfoModal = /*#__PURE__*/function (_Component) {
32741
32818
 
32742
32819
  _this = _super.call(this, props);
32743
32820
 
32744
- defineProperty(assertThisInitialized(_this), "getAndFormatOriginData", function (imageId) {
32745
- var imagePromise = loadAndCacheImagePlus(imageId);
32746
- imagePromise.then(function (image) {
32747
- var dicom = new DicomInfo(image.data);
32748
- var dicomInfo = getTagInfo(dicom); // id第一位是奇数 处理成收纳的形式
32749
-
32750
- var originDataWithIdOdd = []; // id第一位是偶数
32751
- // let originDataWithIdEven = [];
32752
-
32753
- var dataSource = [];
32754
- lodash$1.forEach(dicomInfo, function (item) {
32755
- var id;
32756
- var idStart;
32757
- xregexp.replace(item.tagID, xregexp('\\((?<a>.{4}),(?<b>.{4})\\)'), function (match) {
32758
- id = match && lodash$1.toString(match.a) + lodash$1.toString(match.b) || null;
32759
- idStart = match && match.a || null;
32760
- });
32761
- var tagNameOrigin = dicomDataDictionary$1.standardDataElements[id] ? dicomDataDictionary$1.standardDataElements[id].name : null;
32821
+ defineProperty(assertThisInitialized(_this), "getAndFormatOriginData", /*#__PURE__*/function () {
32822
+ var _ref = asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(imageId) {
32823
+ var dicom, dicomInfo, originDataWithIdOdd, dataSource, dataSourceScan;
32824
+ return regenerator.wrap(function _callee$(_context) {
32825
+ while (1) {
32826
+ switch (_context.prev = _context.next) {
32827
+ case 0:
32828
+ _context.next = 2;
32829
+ return loadAndCacheDicom(imageId);
32762
32830
 
32763
- var data = _objectSpread$l(_objectSpread$l({}, item), {}, {
32764
- tagIDOrigin: id,
32765
- idStart: idStart,
32766
- tagNameOrigin: tagNameOrigin
32767
- });
32831
+ case 2:
32832
+ dicom = _context.sent;
32768
32833
 
32769
- if (idStart && idStart.substring(idStart.length - 1) % 2 === 1) {
32770
- originDataWithIdOdd.push(data);
32771
- } else {
32772
- dataSource.push(data);
32773
- }
32774
- });
32834
+ if (dicom) {
32835
+ _context.next = 5;
32836
+ break;
32837
+ }
32775
32838
 
32776
- if (originDataWithIdOdd && originDataWithIdOdd.length > 0) {
32777
- originDataWithIdOdd = lodash$1.groupBy(originDataWithIdOdd, 'idStart');
32778
- lodash$1.forEach(originDataWithIdOdd, function (item) {
32779
- if (item.length === 1) {
32780
- dataSource = lodash$1.concat(dataSource, item);
32781
- } else {
32782
- // 收纳
32783
- var firstItem = item[0];
32839
+ return _context.abrupt("return");
32784
32840
 
32785
- var _item = item.splice(1);
32841
+ case 5:
32842
+ dicomInfo = getTagInfo(dicom); // id第一位是奇数 处理成收纳的形式
32843
+
32844
+ originDataWithIdOdd = []; // id第一位是偶数
32845
+ // let originDataWithIdEven = [];
32846
+
32847
+ dataSource = [];
32848
+ lodash$1.forEach(dicomInfo, function (item) {
32849
+ var id;
32850
+ var idStart;
32851
+ xregexp.replace(item.tagID, xregexp('\\((?<a>.{4}),(?<b>.{4})\\)'), function (match) {
32852
+ id = match && lodash$1.toString(match.a) + lodash$1.toString(match.b) || null;
32853
+ idStart = match && match.a || null;
32854
+ });
32855
+ var tagNameOrigin = dicomDataDictionary$1.standardDataElements[id] ? dicomDataDictionary$1.standardDataElements[id].name : null;
32786
32856
 
32787
- dataSource.push(_objectSpread$l(_objectSpread$l({}, firstItem), {}, {
32788
- items: [_item]
32789
- }));
32790
- }
32791
- });
32792
- }
32857
+ var data = _objectSpread$l(_objectSpread$l({}, item), {}, {
32858
+ tagIDOrigin: id,
32859
+ idStart: idStart,
32860
+ tagNameOrigin: tagNameOrigin
32861
+ });
32793
32862
 
32794
- dataSource = lodash$1.sortBy(dataSource, 'tagIDOrigin');
32795
- var dataSourceScan = lodash$1.map(dicomTagsKeysScan, function (key) {
32796
- return lodash$1.find(dataSource, {
32797
- 'tagIDOrigin': key
32798
- }) || {
32799
- tagIDOrigin: key,
32800
- tagNameOrigin: dicomDataDictionary$1.standardDataElements[key] && dicomDataDictionary$1.standardDataElements[key].name || ''
32801
- };
32802
- });
32863
+ if (idStart && idStart.substring(idStart.length - 1) % 2 === 1) {
32864
+ originDataWithIdOdd.push(data);
32865
+ } else {
32866
+ dataSource.push(data);
32867
+ }
32868
+ });
32803
32869
 
32804
- _this.setState({
32805
- dataSource: dataSource,
32806
- dataSourceScan: dataSourceScan
32807
- });
32808
- });
32809
- });
32870
+ if (originDataWithIdOdd && originDataWithIdOdd.length > 0) {
32871
+ originDataWithIdOdd = lodash$1.groupBy(originDataWithIdOdd, 'idStart');
32872
+ lodash$1.forEach(originDataWithIdOdd, function (item) {
32873
+ if (item.length === 1) {
32874
+ dataSource = lodash$1.concat(dataSource, item);
32875
+ } else {
32876
+ // 收纳
32877
+ var firstItem = item[0];
32878
+
32879
+ var _item = item.splice(1);
32880
+
32881
+ dataSource.push(_objectSpread$l(_objectSpread$l({}, firstItem), {}, {
32882
+ items: [_item]
32883
+ }));
32884
+ }
32885
+ });
32886
+ }
32887
+
32888
+ dataSource = lodash$1.sortBy(dataSource, 'tagIDOrigin');
32889
+ dataSourceScan = lodash$1.map(dicomTagsKeysScan, function (key) {
32890
+ return lodash$1.find(dataSource, {
32891
+ 'tagIDOrigin': key
32892
+ }) || {
32893
+ tagIDOrigin: key,
32894
+ tagNameOrigin: dicomDataDictionary$1.standardDataElements[key] && dicomDataDictionary$1.standardDataElements[key].name || ''
32895
+ };
32896
+ });
32897
+
32898
+ _this.setState({
32899
+ dataSource: dataSource,
32900
+ dataSourceScan: dataSourceScan
32901
+ });
32902
+
32903
+ case 13:
32904
+ case "end":
32905
+ return _context.stop();
32906
+ }
32907
+ }
32908
+ }, _callee);
32909
+ }));
32910
+
32911
+ return function (_x) {
32912
+ return _ref.apply(this, arguments);
32913
+ };
32914
+ }());
32810
32915
 
32811
32916
  defineProperty(assertThisInitialized(_this), "setDicomModalTag", function (dicomModalTag) {
32812
32917
  _this.setState({
@@ -55043,7 +55148,7 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55043
55148
  },
55044
55149
  initSeries: function () {
55045
55150
  var _initSeries2 = asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(changeStudy, callback) {
55046
- var data, synchronizer, linkSynchronizer, linkImageModeSynchronizer, linkScrollSynchronizer, options, _study, series, needCheckMultiFrame, hasMultiFrame, modalitiesInStudy, i, item, wado, url, dataSet, numFrames, imageIds, _i, imageId, seriesCurrentIndex, firstReady, maxRequest, retry, clearCacheEveryLoad, dicom, frameTime, toolLocalDefaultState, realActiveIndex;
55151
+ var data, synchronizer, linkSynchronizer, linkImageModeSynchronizer, linkScrollSynchronizer, options, _study, series, needCheckMultiFrame, hasMultiFrame, modalitiesInStudy, i, item, wado, url, dataSet, numFrames, imageIds, _i, imageId, seriesCurrentIndex, firstReady, maxRequest, retry, clearCacheEveryLoad, dicom, frameTime, linkToolLocalDefaultState, realActiveIndex, continuousMeasureLocalDefaultState;
55047
55152
 
55048
55153
  return regenerator.wrap(function _callee$(_context) {
55049
55154
  while (1) {
@@ -55051,6 +55156,7 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55051
55156
  case 0:
55052
55157
  /**
55053
55158
  * 初始化study
55159
+ * - 是否是匿名显示
55054
55160
  * - 初始化 cornerstoneWADOImageLoader token
55055
55161
  * - 初始化 global toolState (study中存在serverToolState的情况)
55056
55162
  * - 初始化 手术路径规划的缓存数据 (study中是否存在centesisPath)
@@ -55061,11 +55167,18 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55061
55167
  * - 初始化viewport缓存池
55062
55168
  * - 初始化图像预加载
55063
55169
  * - 如果有frameTime的话设置fps
55064
- * - 初始化本地存储的工具初始状态(目前包含:自动联动)
55170
+ * - 初始化本地存储的工具初始状态(目前包含:自动联动、连续测量)
55065
55171
  *
55066
55172
  * 检查io是否为true是的话打开同屏开关
55067
55173
  */
55068
55174
  console.log('[paladin] - init series');
55175
+
55176
+ if (ownProps.anonymous && ownProps.anonymous === true) {
55177
+ setInfoAnonymous();
55178
+ } else {
55179
+ setNotAnonymous();
55180
+ }
55181
+
55069
55182
  cornerstoneWADOImageLoader.configure({
55070
55183
  beforeSend: function beforeSend(xhr) {
55071
55184
  xhr.setRequestHeader('Authorization', "bearer ".concat(ownProps.token));
@@ -55141,32 +55254,32 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55141
55254
  });
55142
55255
 
55143
55256
  if (!needCheckMultiFrame) {
55144
- _context.next = 44;
55257
+ _context.next = 45;
55145
55258
  break;
55146
55259
  }
55147
55260
 
55148
55261
  i = 0;
55149
55262
 
55150
- case 28:
55263
+ case 29:
55151
55264
  if (!(i < series.length)) {
55152
- _context.next = 44;
55265
+ _context.next = 45;
55153
55266
  break;
55154
55267
  }
55155
55268
 
55156
55269
  item = series[i];
55157
55270
 
55158
55271
  if (!(item.numberOfSeriesRelatedInstances && item.numberOfSeriesRelatedInstances === 1)) {
55159
- _context.next = 41;
55272
+ _context.next = 42;
55160
55273
  break;
55161
55274
  }
55162
55275
 
55163
55276
  wado = lodash$1.cloneDeep(item.imageIds[0].split(':'));
55164
55277
  wado.shift();
55165
55278
  url = wado.join(':');
55166
- _context.next = 36;
55279
+ _context.next = 37;
55167
55280
  return cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.load(url, cornerstoneWADOImageLoader.internal.xhrRequest);
55168
55281
 
55169
- case 36:
55282
+ case 37:
55170
55283
  dataSet = _context.sent;
55171
55284
  // 这边如果加载了的话 进度条也需要匹配上
55172
55285
  propsFromDispatch.setSeriesLoaded(item.seriesInstanceUID);
@@ -55190,12 +55303,12 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55190
55303
 
55191
55304
  cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.purge();
55192
55305
 
55193
- case 41:
55306
+ case 42:
55194
55307
  i++;
55195
- _context.next = 28;
55308
+ _context.next = 29;
55196
55309
  break;
55197
55310
 
55198
- case 44:
55311
+ case 45:
55199
55312
  // 初始化seriesCurrentIndex
55200
55313
  seriesCurrentIndex = Array.apply(null, Array(series.length)).map(function () {
55201
55314
  return 0;
@@ -55251,21 +55364,21 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55251
55364
  })]
55252
55365
  }); // 如果有frameTime的话设置fps
55253
55366
 
55254
- _context.next = 59;
55367
+ _context.next = 60;
55255
55368
  return loadAndCacheDicom(series[0].imageIds[0]);
55256
55369
 
55257
- case 59:
55370
+ case 60:
55258
55371
  dicom = _context.sent;
55259
55372
 
55260
55373
  if (dicom && dicom.FrameTime && dicom.FrameTime.value) {
55261
55374
  frameTime = dicom.FrameTime.value;
55262
55375
  propsFromDispatch.setCineFps(lodash$1.round(1000 / frameTime, 3) || 3);
55263
- } // 初始化本地存储的工具初始状态(目前包含:自动联动)
55376
+ } // 初始化本地存储的工具初始状态(目前包含:自动联动、连续测量)
55264
55377
 
55265
55378
 
55266
- toolLocalDefaultState = window.localStorage.getItem('hellfire-link-tool-default-state');
55379
+ linkToolLocalDefaultState = window.localStorage.getItem('hellfire-link-tool-default-state');
55267
55380
 
55268
- if (toolLocalDefaultState && toolLocalDefaultState === 'open') {
55381
+ if (linkToolLocalDefaultState && linkToolLocalDefaultState === 'open') {
55269
55382
  propsFromDispatch.activeDicomFunction("Link");
55270
55383
  realActiveIndex = getCurrentRealActiveIndex();
55271
55384
  openAutoLink({
@@ -55282,7 +55395,13 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55282
55395
  });
55283
55396
  }
55284
55397
 
55285
- case 63:
55398
+ continuousMeasureLocalDefaultState = window.localStorage.getItem('hellfire-continuous-measure-default-state');
55399
+
55400
+ if (continuousMeasureLocalDefaultState && continuousMeasureLocalDefaultState === 'close') {
55401
+ propsFromDispatch.setMeasure(false);
55402
+ }
55403
+
55404
+ case 66:
55286
55405
  case "end":
55287
55406
  return _context.stop();
55288
55407
  }
@@ -55384,7 +55503,8 @@ var ConnectedDicomView = reactRedux.connect(mapStateToProps$u, {
55384
55503
  setOriginStudyData: setOriginStudyData,
55385
55504
  setSeriesCurrentIndex: setSeriesCurrentIndex,
55386
55505
  setSeries: setSeries,
55387
- setLinkSeries: setLinkSeries
55506
+ setLinkSeries: setLinkSeries,
55507
+ setMeasure: setMeasure
55388
55508
  }, mergeProps$t, withRef())(DicomView);
55389
55509
 
55390
55510
  function withRef() {