tools.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
  1. import store from '@store';
  2. import {CLEAR_MAIN_SUIT} from '@store/types/mainSuit';
  3. import {CLEAR_CURRENT_ILL} from '@store/types/currentIll';
  4. import {CLEAROTHERHISTORY} from '@store/types/otherHistory';
  5. import {CLEARCHECKBODY} from '@store/types/checkBody';
  6. import {clearAssistData} from '@store/actions/assistCheck';
  7. import {clearAllLabel} from '@store/actions/inspect';
  8. import {CLEAR_ALL_DIAG} from '@store/types/diagnosticList';
  9. import {CLEAR_ALL_PUSH_MESSAGE, SET_TIPS} from '@store/types/pushMessage';
  10. import {ISREAD, SETREADDITEMS} from "../store/types/homePage";
  11. import config from '@config/index.js';
  12. /***
  13. * 工具函数
  14. *
  15. * ***/
  16. const ARR = "Array";
  17. const NUMBER = "Number";
  18. const STRING = "String";
  19. const OBJECT = "Object";
  20. const UNDEFINED = "Undefined";
  21. const NULL = "Null";
  22. const BOOLEAN = "Boolean";
  23. const qs = require('qs');
  24. // 数据类型判断
  25. const Type = {
  26. typeConstant: {
  27. 'array': ARR,
  28. 'number': NUMBER,
  29. 'string': STRING,
  30. 'object': OBJECT,
  31. 'undefined': UNDEFINED,
  32. 'null': NULL,
  33. 'boolean': BOOLEAN
  34. },
  35. tolower: (str)=> {
  36. if(typeof str !== "string") {
  37. return "";
  38. }
  39. return str.toLowerCase();
  40. },
  41. checkType: (el, type)=> {
  42. type = Type.tolower(type);
  43. type = Type.typeConstant[type];
  44. return Object.prototype.toString.call(el) === "[object "+ type +"]";
  45. }
  46. }
  47. // 计算字符串长度,该长度将一个中文字算作2个字符长度
  48. const regexp = {
  49. ch: (str)=> {//匹配中文
  50. if(typeof str !== "string") {
  51. return "";
  52. }
  53. return str.match(/[\u4e00-\u9fa5]/g) || "";
  54. },
  55. chLen: function (str) {//中文长度
  56. return regexp.ch(str).length;
  57. },
  58. strLen: function (str) {//字符串长度(一个中文当作两个英文字母)
  59. if(typeof str !== "string") {
  60. return 0;
  61. }
  62. return str.length + regexp.chLen(str);
  63. }
  64. }
  65. //判断是否空对象或未定义
  66. const isUndefined = function (str) {
  67. if(str === 0 || str === "") {
  68. return false;
  69. }
  70. return (Type.checkType(str, 'null') || Type.checkType(str, 'undefined'));
  71. }
  72. //sessionStorage方法封装
  73. const Storage = {
  74. session: {
  75. get: function (name) {
  76. return JSON.parse(sessionStorage.getItem(name));
  77. },
  78. set: function (name, data) {
  79. sessionStorage.setItem(name, JSON.stringify(data));
  80. },
  81. remove: function (name) {
  82. sessionStorage.removeItem(name);
  83. },
  84. clear: function () {
  85. sessionStorage.clear();
  86. }
  87. }
  88. };
  89. //localStorage方法封装
  90. const storageLocal = {
  91. set: function (name, data) {
  92. if(!data) {
  93. return;
  94. }
  95. if(typeof data !== 'string') {
  96. data = JSON.stringify(data);
  97. }
  98. localStorage.setItem(name, data);
  99. },
  100. get: function (name) {
  101. return localStorage.getItem(name);
  102. },
  103. remove: function (name) {
  104. localStorage.removeItem(name);
  105. },
  106. clear: function () {
  107. localStorage.clear();
  108. }
  109. };
  110. const nullFn = ()=>{};
  111. //是否为空
  112. const isNull = (item)=>{
  113. return String(item)=== "" || String(item)==="null" || String(item)==="undefined";
  114. };
  115. const isNotNull = (item)=>{
  116. return !(isNull(item));
  117. };
  118. //判断是否为ie浏览器
  119. const isIE = () => { //ie?
  120. if (!!window.ActiveXObject || "ActiveXObject" in window){
  121. return true;
  122. } else{
  123. return false;
  124. }
  125. }
  126. const deepClone = (data)=>{
  127. return JSON.parse(JSON.stringify(data))
  128. };
  129. const getUrlArgObject = (parm) => {
  130. /*let args=new Object();
  131. let query=window.location.href;//获取查询串
  132. let pairs,arr;
  133. if(query.indexOf("?") != -1){
  134. pairs=query.split("?")[1].split("&");
  135. for(let i=0;i<pairs.length;i++){
  136. let pos=pairs[i].indexOf('=');//查找name=value
  137. if(pos==-1){//如果没有找到就跳过
  138. continue;
  139. }
  140. let argname=pairs[i].substring(0,pos);//提取name
  141. let value=decodeURIComponent(pairs[i].substring(pos+1));//提取value
  142. args[argname]=unescape(value);//存为属性
  143. }
  144. }*/
  145. let query = window.location.search;
  146. let args = qs.parse(query.substr(1));
  147. return args[parm];//返回对象
  148. }
  149. const getAllDataList =(baseList) =>{ //获取所有模块结构化的数据
  150. let jsonData = {};
  151. jsonData.lis = {};
  152. jsonData.chief = baseList.mainSuit.data; //主诉
  153. jsonData.present = baseList.currentIll.data; //现病史
  154. jsonData.other = baseList.otherHistory.data; //其他史
  155. jsonData.vital = baseList.checkBody.data; //查体
  156. jsonData.lis.labelList = baseList.inspect.labelList; //化验
  157. jsonData.lis.getExcelDataList = baseList.inspect.getExcelDataList; //化验导入
  158. jsonData.pacs = baseList.assistCheck.assistLabel; //辅检
  159. jsonData.diag = baseList.diagnosticList.diagnosticList; //诊断
  160. jsonData.advice = baseList.pushMessage.advice; //医嘱
  161. jsonData.mainSuitSelecteds = baseList.mainSuit.selecteds; //主诉选中状态保存
  162. jsonData.currentIllSelecteds = baseList.currentIll.selecteds; //主诉选中状态保存
  163. jsonData.otherHistorySelecteds = baseList.otherHistory.selecteds; //主诉选中状态保存
  164. jsonData.checkBodySelecteds = baseList.checkBody.selecteds; //主诉选中状态保存
  165. jsonData.addItems = baseList.homePage.addItems||{};
  166. jsonData.mainsuitIds = baseList.mainSuit.mainIds; //主诉去重
  167. jsonData.currentIds = baseList.currentIll.symptomIds; //现病史去重
  168. // console.log(jsonData,'结构化数据获取')
  169. return jsonData;
  170. }
  171. const getAllDataStringList =(baseList) =>{ //获取所有模块文本的数据
  172. let jsonDataString = {};
  173. jsonDataString.lis = {};
  174. let chiefData = [],presentData=[],otherData=[],vitalData=[];
  175. if(baseList.mainSuit.saveText.length == 1 && baseList.mainSuit.saveText[0].trim() == ''){
  176. chiefData = []
  177. }else{
  178. chiefData = baseList.mainSuit.saveText
  179. }
  180. if(baseList.currentIll.saveText.length == 1 && baseList.currentIll.saveText[0].trim() == ''){
  181. presentData = []
  182. }else{
  183. presentData = baseList.currentIll.saveText
  184. }
  185. if(baseList.otherHistory.saveText.length == 1 && baseList.otherHistory.saveText[0].trim() == ''){
  186. otherData = []
  187. }else{
  188. otherData = baseList.otherHistory.saveText
  189. }
  190. if(baseList.checkBody.saveText.length == 1 && baseList.checkBody.saveText[0].trim() == ''){
  191. vitalData = []
  192. }else{
  193. vitalData = baseList.checkBody.saveText
  194. }
  195. jsonDataString = {
  196. 'chief' : JSON.stringify(chiefData),
  197. 'present' : JSON.stringify(presentData),
  198. 'other' : JSON.stringify(otherData),
  199. 'vital' : JSON.stringify(vitalData),
  200. 'lis' : baseList.inspect.inspectStrPlus,
  201. 'pacs' : baseList.assistCheck.dataString,
  202. 'diag' : baseList.diagnosticList.diagnosticStr,
  203. 'advice' : baseList.pushMessage.AdviceStr
  204. }
  205. //console.log(jsonDataString,'文本模式数据获取')
  206. return jsonDataString;
  207. }
  208. /**
  209. *
  210. * @param {回读数据} reData
  211. * @param {回读数据是历史病历'history',还是模板'template'} type
  212. * @param {什么操作,回读'push'还是清空'clear'} action
  213. * @param {引用的话是保存时候的文本类型,编辑的时候是当前页面设置的文本类型} whichSign
  214. */
  215. const pushAllDataList =(whichSign,action,reData,type) =>{ //回读清空所有的数据
  216. if(action == 'clear'){ //清空
  217. store.dispatch({type: CLEAR_MAIN_SUIT,data:[],saveText:[],selecteds:[],editClear:true,mainIds:[]});
  218. store.dispatch({type: CLEAR_CURRENT_ILL,data:[],saveText:[],selecteds:[],editClear:true,symptomIds:[]});
  219. store.dispatch({type: CLEAROTHERHISTORY,data:[],saveText:[],selecteds:[],editClear:true});
  220. store.dispatch({type: CLEARCHECKBODY,data:[],isEmpty:true,saveText:[],selecteds:[]});
  221. store.dispatch(clearAssistData([],''));
  222. store.dispatch(clearAllLabel([],[],''));
  223. store.dispatch({
  224. type: SET_TIPS,
  225. tips: {}
  226. })
  227. store.dispatch({
  228. type: CLEAR_ALL_DIAG,
  229. data:[],
  230. saveText:'',
  231. mainSuitStr: '',
  232. });
  233. store.dispatch({
  234. type: CLEAR_ALL_PUSH_MESSAGE,
  235. data:{}
  236. });
  237. storageLocal.remove('emrParam');
  238. // Notify.success('页面已清空')
  239. }else{
  240. if (whichSign == 0) {
  241. if(type == 'template'){ //结构化模板回读
  242. let dataJson = JSON.parse(reData.dataJson);
  243. let dataJsonStr = JSON.parse(reData.preview);
  244. // console.log(dataJson,dataJsonStr,'结构化模板引用')
  245. store.dispatch({
  246. type: CLEAR_MAIN_SUIT,
  247. data:dataJson.chief,
  248. selecteds:dataJson.mainSuitSelecteds?dataJson.mainSuitSelecteds:[],
  249. saveText:JSON.parse(dataJsonStr.chief),
  250. mainIds:dataJson.mainsuitIds?dataJson.mainsuitIds:[],
  251. });
  252. store.dispatch({
  253. type: CLEAR_CURRENT_ILL,
  254. data:dataJson.present,
  255. selecteds:dataJson.currentIllSelecteds?dataJson.currentIllSelecteds:[],
  256. saveText:JSON.parse(dataJsonStr.present),
  257. symptomIds:dataJson.currentIds?dataJson.currentIds:[]
  258. });
  259. store.dispatch({
  260. type: CLEAROTHERHISTORY,
  261. data:dataJson.other,
  262. selecteds:dataJson.otherHistorySelecteds?dataJson.otherHistorySelecteds:[],
  263. saveText:JSON.parse(dataJsonStr.other),
  264. editClear:dataJson.other.length>0?false:true
  265. });
  266. store.dispatch({
  267. type: CLEARCHECKBODY,
  268. data:dataJson.vital,
  269. selecteds:dataJson.checkBodySelecteds?dataJson.checkBodySelecteds:[],
  270. saveText:JSON.parse(dataJsonStr.vital)
  271. });
  272. store.dispatch(clearAllLabel(
  273. dataJson.lis.labelList,
  274. dataJson.lis.getExcelDataList,
  275. dataJsonStr.lis.split('-')[0],
  276. dataJsonStr.lis.split('-')[1]
  277. ));
  278. store.dispatch(clearAssistData(dataJson.pacs,dataJsonStr.pacs));
  279. store.dispatch({
  280. type: CLEAR_ALL_DIAG,
  281. data:dataJson.diag,
  282. saveText:dataJsonStr.diag
  283. });
  284. store.dispatch({
  285. type: CLEAR_ALL_PUSH_MESSAGE,
  286. data:dataJson.advice,
  287. saveText:dataJsonStr.advice
  288. });
  289. store.dispatch({
  290. type:SETREADDITEMS,
  291. data:dataJson.addItems
  292. });
  293. }else{ //结构化历史病历回读
  294. let dataJson = JSON.parse(reData.dataJson);
  295. let dataJsonStr = reData.detailList;
  296. // console.log(dataJson,dataJsonStr,'结构化历史病历回读')
  297. // console.log(dataJson.mainSuitSelecteds,7887)
  298. store.dispatch({
  299. type: CLEAR_MAIN_SUIT,
  300. data:dataJson.chief,
  301. selecteds:dataJson.mainSuitSelecteds?dataJson.mainSuitSelecteds:[],
  302. saveText:dataJsonStr[0].content ? JSON.parse(dataJsonStr[0].content) :[],
  303. mainIds:dataJson.mainsuitIds?dataJson.mainsuitIds:[],
  304. });
  305. store.dispatch({
  306. type: CLEAR_CURRENT_ILL,
  307. data:dataJson.present,
  308. selecteds:dataJson.currentIllSelecteds?dataJson.currentIllSelecteds:[],
  309. saveText:dataJsonStr[1].content ? JSON.parse(dataJsonStr[1].content):[],
  310. symptomIds:dataJson.currentIds?dataJson.currentIds:[]
  311. });
  312. store.dispatch({
  313. type: CLEAROTHERHISTORY,
  314. data:dataJson.other,
  315. selecteds:dataJson.otherHistorySelecteds?dataJson.otherHistorySelecteds:[],
  316. saveText:dataJsonStr[2].content ? JSON.parse(dataJsonStr[2].content):[],
  317. editClear:dataJson.other.length>0?false:true
  318. });
  319. store.dispatch({
  320. type: CLEARCHECKBODY,
  321. data:dataJson.vital,
  322. selecteds:dataJson.checkBodySelecteds?dataJson.checkBodySelecteds:[],
  323. saveText:dataJsonStr[3].content ? JSON.parse(dataJsonStr[3].content):[]
  324. });
  325. store.dispatch(clearAllLabel(
  326. dataJson.lis.labelList,
  327. dataJson.lis.getExcelDataList,
  328. dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[0] :'',
  329. dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[1] :''
  330. ));
  331. store.dispatch(clearAssistData(
  332. dataJson.pacs,
  333. dataJsonStr[5].content ? dataJsonStr[5].content:''
  334. ));
  335. store.dispatch({
  336. type: CLEAR_ALL_DIAG,
  337. data:dataJson.diag,
  338. saveText:dataJsonStr[6].content ? dataJsonStr[6].content:''
  339. });
  340. store.dispatch({
  341. type: CLEAR_ALL_PUSH_MESSAGE,
  342. data:dataJson.advice,
  343. saveText:dataJsonStr[7].content ? dataJsonStr[7].content:''
  344. });
  345. store.dispatch({
  346. type:SETREADDITEMS,
  347. data:dataJson.addItems
  348. });
  349. }
  350. } else {
  351. if(type == 'template'){ //纯文本模板回读
  352. let dataJson = JSON.parse(reData.dataJson);
  353. let dataJsonStr = JSON.parse(reData.preview);
  354. // console.log(dataJson,dataJsonStr,'纯文本模板引用')
  355. store.dispatch({ //主诉文本框
  356. type: CLEAR_MAIN_SUIT,
  357. data:[],
  358. saveText:JSON.parse(dataJsonStr.chief)
  359. });
  360. store.dispatch({
  361. type: CLEAR_CURRENT_ILL,
  362. data:[],
  363. saveText:JSON.parse(dataJsonStr.present)
  364. });
  365. store.dispatch({
  366. type: CLEAROTHERHISTORY,
  367. data:[],
  368. saveText:JSON.parse(dataJsonStr.other)
  369. });
  370. store.dispatch({
  371. type: CLEARCHECKBODY,
  372. data:dataJson.vital,
  373. saveText:JSON.parse(dataJsonStr.vital)
  374. });
  375. store.dispatch(clearAllLabel(
  376. dataJson.lis.labelList,
  377. dataJson.lis.getExcelDataList,
  378. dataJsonStr.lis.split('-')[0],
  379. dataJsonStr.lis.split('-')[1]
  380. ));
  381. store.dispatch(clearAssistData(dataJson.pacs,dataJsonStr.pacs));
  382. store.dispatch({
  383. type: CLEAR_ALL_DIAG,
  384. data:dataJson.diag,
  385. saveText:dataJsonStr.diag
  386. });
  387. store.dispatch({
  388. type: CLEAR_ALL_PUSH_MESSAGE,
  389. data:dataJson.advice,
  390. saveText:dataJsonStr.advice,
  391. });
  392. store.dispatch({
  393. type:SETREADDITEMS,
  394. data:dataJson.addItems
  395. });
  396. }else{ //纯文本历史病历回读
  397. let dataJson = JSON.parse(reData.dataJson);
  398. let dataJsonStr = reData.detailList;
  399. // console.log(dataJson,dataJsonStr,'纯文本历史病历回读')
  400. if(!dataJson && !dataJsonStr && !reData.sign){
  401. return;
  402. }
  403. store.dispatch({
  404. type: CLEAR_MAIN_SUIT,
  405. data:[],
  406. saveText:dataJsonStr[0].content ? JSON.parse(dataJsonStr[0].content) :[]
  407. });
  408. store.dispatch({
  409. type: CLEAR_CURRENT_ILL,
  410. data:[],
  411. saveText:dataJsonStr[1].content ? JSON.parse(dataJsonStr[1].content) :[]
  412. });
  413. store.dispatch({
  414. type: CLEAROTHERHISTORY,
  415. data:[],
  416. saveText:dataJsonStr[2].content ? JSON.parse(dataJsonStr[2].content) :[]
  417. });
  418. store.dispatch({
  419. type: CLEARCHECKBODY,
  420. data:dataJson.vital,
  421. saveText:dataJsonStr[3].content ? JSON.parse(dataJsonStr[3].content):[]
  422. });
  423. store.dispatch(clearAllLabel(
  424. dataJson.lis.labelList,
  425. dataJson.lis.getExcelDataList,
  426. dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[0] :'',
  427. dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[1]:''
  428. ));
  429. store.dispatch(clearAssistData(
  430. dataJson.pacs,
  431. dataJsonStr[5].content ? dataJsonStr[5].content:''
  432. ));
  433. store.dispatch({
  434. type: CLEAR_ALL_DIAG,
  435. data:dataJson.diag,
  436. saveText:dataJsonStr[6].content ? dataJsonStr[6].content:''
  437. });
  438. store.dispatch({
  439. type: CLEAR_ALL_PUSH_MESSAGE,
  440. data:dataJson.advice,
  441. saveText:dataJsonStr[7].content ? dataJsonStr[7].content:''
  442. });
  443. store.dispatch({
  444. type:SETREADDITEMS,
  445. data:dataJson.addItems
  446. });
  447. }
  448. }
  449. }
  450. store.dispatch({
  451. type:ISREAD
  452. });
  453. }
  454. function filterArr(arr){
  455. let tmpArr = arr.filter((item)=>{
  456. if(item){
  457. return item
  458. }
  459. });
  460. return tmpArr.join("").replace(/\s/g,'');
  461. }
  462. function filterDataArr(arrTmp){ //数据处理
  463. let tmpArr = [];
  464. let arr = arrTmp.join('').split('');
  465. for(let i = 0;i < arr.length;i++){
  466. if(!(arr[i].match(config.punctuationReg)||arr[i-1])){ //只有标点符号或者前一个标签无值是(说明本标点灰显,不显示在预览中)
  467. arr.splice(i,1,'');
  468. }
  469. if(arr[i] && arr[i].indexOf('undefined') == -1){
  470. if(tmpArr[tmpArr.length-1] != ',' && tmpArr[tmpArr.length-1] != ',' ){
  471. tmpArr.push(arr[i])
  472. }else if((tmpArr[tmpArr.length-1] == ',' && (arr[i] != ',' || arr[i] != ',')) || (tmpArr[tmpArr.length-1] == ',' && (arr[i] != ',' || arr[i] != ','))) {
  473. if(arr[i] == '。'){ //前面逗号后面句号 [',','。']
  474. tmpArr.pop();
  475. tmpArr.push(arr[i]);
  476. }else if(tmpArr[tmpArr.length-2] == '。' && (tmpArr[tmpArr.length-1] == ',' || tmpArr[tmpArr.length-1] == ',')){//前面句号后面逗号 ['。',',']
  477. tmpArr.pop();
  478. tmpArr.push(arr[i]);
  479. }else if(arr[i] == ',' || arr[i] == ','){ // 中英文逗号交替[',',',']
  480. tmpArr.pop();
  481. tmpArr.push(arr[i]);
  482. }else if(arr[i] == '、'){ //前面逗号后面句号 [',','、']
  483. tmpArr.pop();
  484. tmpArr.push(arr[i]);
  485. }else if(tmpArr[tmpArr.length-2] == '、' && (tmpArr[tmpArr.length-1] == ',' || tmpArr[tmpArr.length-1] == ',')){ //前面逗号后面句号 ['、',',']
  486. tmpArr.splice(tmpArr.length-2,1);
  487. tmpArr.push(arr[i]);
  488. }else{
  489. tmpArr.push(arr[i]);
  490. }
  491. }
  492. }
  493. }
  494. return (tmpArr.join('')).replace(/^,+/,"").replace(/,+$/,"").replace(/,+$/,"").replace(/,+$/,"");
  495. }
  496. // 取消默认行为
  497. function preventDefault(event) {
  498. if (event.preventDefault) {
  499. event.preventDefault();
  500. } else {
  501. event.returnValue = false;
  502. }
  503. }
  504. //ie8添加解除事件兼容
  505. function windowEventHandler(type,func,dom){
  506. let win = dom?dom:window;
  507. if(win.addEventListener){
  508. win.addEventListener(type, func);
  509. }else{
  510. win.attachEvent('on'+type,func);
  511. }
  512. }
  513. function windowRemoveEventHandler(type,func,dom){
  514. let win = dom?dom:window;
  515. if(win.addEventListener){
  516. win.removeEventListener(type, func);
  517. }else{
  518. win.detachEvent('on'+type,func);
  519. }
  520. }
  521. //禁止回车事件
  522. function handleEnter(event){
  523. event = event?event:window.event;
  524. if(event.keyCode==13){return false;}
  525. }
  526. //获取病例输入的内容
  527. function getEMRParams(){
  528. const state = store.getState();
  529. const {message} = state.patInfo;
  530. const {mainSuit,currentIll,otherHistory,checkBody,inspect,assistCheck,diagnosticList} = state;
  531. const main = filterDataArr(mainSuit.saveText)||'',
  532. current=filterDataArr(currentIll.saveText)||'',
  533. other = filterDataArr(otherHistory.saveText)||'',
  534. vital = filterDataArr(checkBody.saveText)||'',
  535. lis = inspect.pushItem, //化验推送所需数据
  536. pacs = assistCheck.dataString||'',
  537. dis=diagnosticList.diagnosticStr||'',
  538. advice = '',
  539. diseaeId = [];
  540. const age = message.patientAge;
  541. const sex = message.sex;
  542. return {main,current,other,vital,lis,pacs,dis,advice,diseaeId,sex,age};
  543. };
  544. function didPushParamChange(){
  545. const emrData = getEMRParams();
  546. const oldParams = storageLocal.get('emrParam');
  547. const newParams = JSON.stringify({
  548. age: emrData.age,
  549. featureType: "5,6,7",
  550. diag: emrData.dis,
  551. lis: emrData.lis,
  552. other: emrData.other,
  553. pacs: emrData.pacs,
  554. sex: emrData.sex,
  555. vital:emrData.vital,
  556. symptom: emrData.current + emrData.main
  557. });
  558. if(newParams == oldParams){
  559. return false;
  560. }
  561. return true;
  562. }
  563. //判断页面所有数据是否为空
  564. function isAllClear(jsonData,jsonStr){
  565. if ( //结构化和文本数据都为空
  566. JSON.stringify(jsonData.advice) == '{}' &&
  567. jsonData.chief.length < 1 &&
  568. jsonData.present.length < 1 &&
  569. jsonData.other.length < 1 &&
  570. jsonData.vital.length < 1 &&
  571. jsonData.diag.length < 1 &&
  572. jsonData.pacs.length < 1 &&
  573. jsonData.lis.labelList.length < 1 &&
  574. jsonData.lis.getExcelDataList.length < 1 &&
  575. JSON.stringify(jsonData.advice) == '{}' &&
  576. filterArr(JSON.parse(jsonStr.chief)) == '' &&
  577. filterArr(JSON.parse(jsonStr.present)) == '' &&
  578. filterArr(JSON.parse(jsonStr.other)) == '' &&
  579. filterArr(JSON.parse(jsonStr.vital)) == '' &&
  580. jsonData.diag.length < 1 &&
  581. jsonData.pacs.length < 1 &&
  582. jsonData.lis.labelList.length < 1 &&
  583. jsonData.lis.getExcelDataList.length < 1
  584. ) {
  585. return false;
  586. }else{
  587. return true;
  588. }
  589. }
  590. function normalVal(min,max){
  591. if((min-0) && (max-0)){
  592. return `正常值: (${min}~${max})`
  593. }else if((min-0) && !(max-0)){
  594. return `正常值: (>=${min})`
  595. }else if(!(min-0) && (max-0)){
  596. if(min == '' || min == null){
  597. return `正常值: (<=${max})`
  598. }else{
  599. return `正常值: (${min}~${max})`
  600. }
  601. }else{
  602. return null;
  603. }
  604. }
  605. function getPageCoordinate(event){
  606. let e = event || window.event;
  607. var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
  608. var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
  609. var x = e.pageX || (e.clientX + scrollX);
  610. var y = (e.pageY+25) || (e.clientY + scrollY + 25);
  611. let obj = {
  612. boxLeft : x ,
  613. boxTop : y
  614. }
  615. return obj;
  616. }
  617. module.exports = {
  618. checkType: Type.checkType,
  619. regexp,
  620. isUndefined,
  621. Storage,
  622. nullFn,
  623. isNotNull,
  624. isNull,
  625. deepClone,
  626. isIE,
  627. storageLocal,
  628. getUrlArgObject,
  629. getAllDataList,
  630. getAllDataStringList,
  631. pushAllDataList,
  632. filterArr,
  633. filterDataArr,
  634. preventDefault,
  635. handleEnter,
  636. didPushParamChange,
  637. getEMRParams,
  638. windowEventHandler,
  639. isAllClear,
  640. normalVal,
  641. getPageCoordinate,
  642. windowRemoveEventHandler
  643. };