import store from '@store'; import { REINITPATINFO, CLEARINITPATINFO } from '@store/types/patInfo'; import { CLEAR_MAIN_SUIT, CLEAR_SEARCH, REMAINSUITDATA, CLEARMAINSUITDATA, } from '@store/types/mainSuit'; import { CLEAR_CURRENT_ILL, CURRENT_CLEAR, RECURRENTDATA, CLEARCURRENTDATA, } from '@store/types/currentIll'; import { REPASTTEXTDATA, CLEARPASTTEXTDATA } from '@store/types/pastHistory'; import { CLEAR_MR_INFO } from '@store/types/print'; import { REPERSONTEXTDATA, CLEARPERSONTEXTDATA } from '@store/types/personalHistory'; import { REFAMILYTEXTDATA, CLEARFAMILYTEXTDATA } from '@store/types/familyHistory'; import { REMARRIAGETEXTDATA, CLEARMARRIAGETEXTDATA } from '@store/types/marriageHistory'; import {REMENSTRUATIONTEXTDATA,CLEARMENSTRUATIONTEXTDATA,} from '@store/types/menstruationHistory'; import { REINSPECTDATA, CLEARINSPECTDATA } from '@store/types/inspect'; import { REASSISTCHECKDATA, CLEARASSISTCHECKDATA } from '@store/types/assistCheck'; import { RENEWADVICEDATA, CLEARNEWADVICEDATA } from '@store/types/newAdvice'; import {CLEAROTHERHISTORY,OTHERHIS_CLEAR} from '@store/types/otherHistory'; import { CLEARCHECKBODY, SET, CHECKBODY_CLEAR, RECHECKBODYTEXTDATA,CLEARCHECKBODYTEXTDATA } from '@store/types/checkBody'; import {clearAssistData,addAssistLabel} from '@store/actions/assistCheck'; import { clearAllLabel, addLabel} from '@store/actions/inspect'; import { CLEAR_ALL_DIAG, REDIAGDATA, CLEARDIAGDATA } from '@store/types/diagnosticList'; import {CLEAR_ALL_PUSH_MESSAGE, SET_TIPS,BILLING_ADVICE,PUSHCHANGE,SET_MR_ANALYSE} from '@store/types/pushMessage'; import {ISREAD, SETREADDITEMS,SET_SELECTED_AREA,SET_CURRENT_MODULE} from "../store/types/homePage"; import {CLEAR_FIRST_MAIN_DIAG, CLEAR_ALL_TREAT} from "../store/types/treat"; import {tabChange} from '@store/actions/tabTemplate'; import {CLEAR_ASSESS_RESULT_VALUE} from '@types/assessResult'; import { SET_READ_MODE } from "@store/types/typeConfig"; import config from '@config/index'; import up from '@images/up.png'; import down from '@images/down.png'; import $ from 'jquery'; import {CLEAR_SEARCH_PARAM} from "../store/types/print"; // import { embedPush } from '@store/async-actions/pushMessage' /*** * 工具函数 * * ***/ const qs = require('qs'); //localStorage方法封装 const storageLocal = { set: function (name, data) { if(!data) { return; } if(typeof data !== 'string') { data = JSON.stringify(data); } localStorage.setItem(name, data); }, get: function (name) { return localStorage.getItem(name); }, remove: function (name) { localStorage.removeItem(name); }, clear: function () { localStorage.clear(); } }; const strDateTime = (str) => { var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if (r == null) return false; var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]); return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]); } const compareDate = (time) => { var date = new Date(time) return date.getTime() } //是否为空 const isNull = (item)=>{ return String(item)=== "" || String(item)==="null" || String(item)==="undefined"; }; const isNotNull = (item)=>{ return !(isNull(item)); }; //判断是否为ie浏览器 const isIE = () => { //ie? if (!!window.ActiveXObject || "ActiveXObject" in window){ return true; } else{ return false; } } const deepClone = (data)=>{ return JSON.parse(JSON.stringify(data)||null)||{}; }; const getUrlArgObject = (parm) => { let query = window.location.search; let args = qs.parse(query.substr(1)); return args[parm];//返回对象 } // 转换jsonData 数据 转为json const getAllDataList =(baseList) =>{ //获取所有模块结构化的数据 let jsonData = {}; jsonData.lis = {}; jsonData.chief = baseList.mainSuit.saveText&&baseList.mainSuit.saveText[0]; // 主诉 jsonData.currentIll = baseList.currentIll.saveText && baseList.currentIll.saveText[0]; //现病史 jsonData.pastHistory = baseList.pastHistory.saveText && baseList.pastHistory.saveText[0]; //既往史 jsonData.personalHistory = baseList.personalHistory.saveText && baseList.personalHistory.saveText[0]; //个人史 jsonData.familyHistory = baseList.familyHistory.saveText && baseList.familyHistory.saveText[0]; //家族史 jsonData.marriageHistory = baseList.marriageHistory.saveText && baseList.marriageHistory.saveText[0]; //婚育史 jsonData.menstruationHistory = baseList.menstruationHistory.saveText && baseList.menstruationHistory.saveText[0]; //月经史 jsonData.checkBody = baseList.checkBody.saveText && baseList.checkBody.saveText[0]; //查体 jsonData.lis.labelList = baseList.inspect.labelListSmall && baseList.inspect.labelListSmall; //化验 jsonData.pacs = baseList.assistCheck.assistLabel; //辅检 jsonData.diag = baseList.diagnosticList.diagnosticList; //诊断 jsonData.advice = baseList.newAdvice.labelListSmall; //医嘱 //月经史公式 // const other = baseList.otherHistory; // jsonData.lis = {}; // jsonData.chief = baseList.mainSuit.data; //主诉 // jsonData.present = baseList.currentIll.data; //现病史 // jsonData.other = other.data; //其他史 // jsonData.otherHistoryIsEmpty = other.isEmpty; // jsonData['yjs_1'] = other['yjs_1']; // jsonData['yjs_2'] = other['yjs_2']; // jsonData['yjs_3'] = other['yjs_3']; // jsonData['yjs_4'] = other['yjs_4']; // jsonData.vital = baseList.checkBody.data; //查体 // jsonData.checkBodyIsEmpty = baseList.checkBody.isEmpty; // jsonData.lis.labelList = baseList.inspect.labelList; //化验 // jsonData.lis.getExcelDataList = baseList.inspect.getExcelDataList; //化验导入 // jsonData.checkedListImport = baseList.assistCheck.checkedListImport; //辅检导入 // jsonData.pacs = baseList.assistCheck.assistLabel; //辅检 // jsonData.diag = baseList.diagnosticList.diagnosticList; //诊断 // jsonData.advice = baseList.pushMessage.advice; //医嘱 // jsonData.addItems = baseList.homePage.addItems||{}; // jsonData.mainsuitIds = baseList.mainSuit.mainIds; //主诉去重 // jsonData.mainChronicDesease = baseList.mainSuit.chronicDesease; //主诉慢病{} // jsonData.diagChronicMagItem = baseList.diagnosticList.chronicMagItem; //诊断慢病{} // jsonData.currentIds = baseList.currentIll.symptomIds; //现病史去重 // jsonData.isFirstMainDiag = baseList.treat.isFirstMainDiag; //治疗方案 // jsonData.mainReadSonM = baseList.mainSuit.addSmoduleData; //主诉-子模板 // jsonData.currReadSonM = baseList.currentIll.useEmpty?baseList.currentIll.currentEmptySon:baseList.currentIll.processModule; //现病史-子模板 return jsonData; } const getAllDataStringList =(baseList) =>{ //获取所有模块文本的数据 let jsonDataString = {}; jsonDataString.lis = {}; let chiefData = [],presentData=[],otherData=[],vitalData=[]; if(baseList.mainSuit.saveText.length == 1 && baseList.mainSuit.saveText[0].trim() == ''){ chiefData = [] }else{ chiefData = baseList.mainSuit.saveText } if(baseList.currentIll.saveText.length == 1 && baseList.currentIll.saveText[0].trim() == ''){ presentData = [] }else{ presentData = baseList.currentIll.saveText } const oText = baseList.otherHistory.saveText; if(oText.length == 1 && oText[0] && oText[0].trim() == ''){ otherData = [] }else{ otherData = baseList.otherHistory.saveText } if(baseList.checkBody.saveText.length == 1 && baseList.checkBody.saveText[0].trim() == ''){ vitalData = [] }else{ vitalData = baseList.checkBody.saveText } jsonDataString = { 'chief' : JSON.stringify(chiefData), 'present' : JSON.stringify(presentData), 'other' : JSON.stringify(otherData), 'vital' : JSON.stringify(vitalData), 'lis' : baseList.inspect.inspectStrPlus, 'pacs' : baseList.assistCheck.dataString, 'diag' : baseList.diagnosticList.diagnosticStr, 'advice' : baseList.pushMessage.AdviceStr } return jsonDataString; } // 返回文本信息 转换preview 数据 转为json const formatTextInfo = (baseList) =>{console.log(1,baseList) // console.log(baseList,'=========baseList=========='); let labelList = { labelListSmall: [], labelListBig: [], }; labelList.labelListSmall = baseList.inspect.labelListSmall; labelList.labelListBig = baseList.inspect.labelListBig; let newAdviceLabelList = { labelListSmall: [], labelListBig: [], labelListBlood: [], }; newAdviceLabelList.labelListSmall = baseList.newAdvice.labelListSmall; newAdviceLabelList.labelListBig = baseList.newAdvice.labelListBig; newAdviceLabelList.labelListBlood = baseList.newAdvice.labelListBlood; newAdviceLabelList.operationName = baseList.newAdvice.operationName; let assistLabelList = { dataString: baseList.assistCheck.dataString, assistLabel: baseList.assistCheck.assistLabel, }; let diagnosticList = { diagnosticList: baseList.diagnosticList.diagnosticList, diagnosticStrNoType: baseList.diagnosticList.diagnosticStrNoType, diagnosticStr: baseList.diagnosticList.diagnosticStr, diseaseName: baseList.diagnosticList.diseaseName, }; const {otherIndex} = baseList.diagnosticList; const {tcmList} = baseList.diagnosticList; let str = ''; tcmList.map((it)=>{ str+=it.tcmDiag+"-"+it.tcmSyndrome+',' }); let diagnosticTcmList = { diagnosticList: baseList.diagnosticList.tcmList, diagnosticStrNoType: otherIndex?(otherIndex.tcmDiag+otherIndex.tcmSyndrome):'', diagnosticStr: str, diseaseName: otherIndex, }; return { chief: JSON.stringify(baseList.mainSuit.saveText), present: JSON.stringify(baseList.currentIll.saveText), pastHistory: JSON.stringify(baseList.pastHistory.saveText), personalHistory: JSON.stringify(baseList.personalHistory.saveText), familyHistory: JSON.stringify(baseList.familyHistory.saveText), marriageHistory: JSON.stringify(baseList.marriageHistory.saveText), menstruationHistory: JSON.stringify(baseList.menstruationHistory.saveText), vital: JSON.stringify(baseList.checkBody.saveText), lis: labelList, //化验 pacs: assistLabelList, diag: diagnosticList, tcmDiag:diagnosticTcmList, advice: newAdviceLabelList, }; } // 回读数据_lcq_2020.08.17 const pushHistoryDataList = (reData) =>{ store.getState().inspect.context.scrollArea&&store.getState().inspect.context.scrollArea.scrollTop() let dataJson = JSON.parse(reData.preview) // 回显头部表单数据 store.dispatch({ type: REINITPATINFO, params: reData, }); store.dispatch({ type: RENEWADVICEDATA, params: dataJson, }); // 回显 主诉数据 store.dispatch({ type: REMAINSUITDATA, params: dataJson, }); // 回显 现病史数据 store.dispatch({ type: RECURRENTDATA, params: dataJson, }); // 回显 既往史数据 store.dispatch({ type: REPASTTEXTDATA, params: dataJson, }); store.dispatch({ type: REPERSONTEXTDATA, params: dataJson, }); store.dispatch({ type: REFAMILYTEXTDATA, params: dataJson, }); store.dispatch({ type: REMARRIAGETEXTDATA, params: dataJson, }); // 月经史 store.dispatch({ type: REMENSTRUATIONTEXTDATA, params: dataJson, }); store.dispatch({ type: RECHECKBODYTEXTDATA, params: dataJson, }); store.dispatch({ type: REINSPECTDATA, params: dataJson, }); store.dispatch({ type: REASSISTCHECKDATA, params: dataJson, }); store.dispatch({ type: REDIAGDATA, params: dataJson, }); store.dispatch({ type: ISREAD, }); } // 清空数据 _lcq_2020.08.18 const delHistoryDataList = () =>{ store.getState().inspect.context.scrollArea && store.getState().inspect.context.scrollArea.scrollTop(); store.dispatch({ type: CLEARINITPATINFO, }); store.dispatch({ type: CLEARMAINSUITDATA, }); store.dispatch({ type: CLEARCURRENTDATA, }); store.dispatch({ type: CLEARPASTTEXTDATA, }); store.dispatch({ type: CLEARPERSONTEXTDATA, }); store.dispatch({ type: CLEARFAMILYTEXTDATA, }); store.dispatch({ type: CLEARMARRIAGETEXTDATA, }); store.dispatch({ type: CLEARMENSTRUATIONTEXTDATA, }); store.dispatch({ type: CLEARCHECKBODYTEXTDATA, }); store.dispatch({ type: CLEARINSPECTDATA, }); store.dispatch({ type: CLEARASSISTCHECKDATA, }); store.dispatch({ type: CLEARDIAGDATA, }); store.dispatch({ type: 'CLEARTCMDIAGDATA', }); store.dispatch({ type: CLEARNEWADVICEDATA, }); store.dispatch({ type: CLEAR_MR_INFO, }); store.dispatch({ type: ISREAD, }); } // 防抖函数 export function debounce(func, delay) { let timer = null; return function (...args) { if (timer) clearTimeout(timer); timer = setTimeout(() => { func.apply(this, args); }, delay); }; } /** * * @param {回读数据} reData * @param {回读数据是历史病历'history',还是模板'template',预问诊引用'preIcss'} type * @param {什么操作,回读'push'还是清空'clear'} action * @param {引用的话是保存时候的文本类型,编辑的时候是当前页面设置的文本类型} whichSign */ const pushAllDataList =(whichSign,action,reData,type) =>{ //回读清空所有的数据 store.getState().inspect.context.scrollArea&&store.getState().inspect.context.scrollArea.scrollTop() if(action == 'clear'){ //清空 const embedPush=require('@store/async-actions/pushMessage').embedPush; //直接在上面import会报错 const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签 //清除已删除标签记录 //localStorage.removeItem('deletedTags'); //store.dispatch({type: SET_READ_MODE, readMode: -1,readConfig:-1,isPreIcss:false}); //清除回读模式值 store.dispatch({type: CLEAR_MAIN_SUIT,data:[],saveText:[],editClear:true,mainIds:[],mainTailIds:[],clearAction:true,symptomFeature:[],chronicDesease:null,mainReadSonM:[]}); store.dispatch({type: CLEAR_CURRENT_ILL,data:[],saveText:[],editClear:true,symptomIds:[],currReadSonM:[]}); store.dispatch({type: CLEAROTHERHISTORY,data:[block],isEmpty:true,saveText:[],editClear:true,yjs_1:'',yjs_2:'',yjs_3:'',yjs_4:''}); store.dispatch({type: CLEARCHECKBODY,data:[block],isEmpty:true,saveText:[]}); //store.dispatch({type:SETREADDITEMS}); //清空已存的血压加号项 store.dispatch(clearAssistData([],'',[])); store.dispatch(clearAllLabel([],[],'')); store.dispatch(embedPush({mode:1})); //刷新右侧推送 //右侧搜索条件清空 store.dispatch({ type: CLEAR_SEARCH_PARAM, data: Math.random() }); //tab跳回辅助信息 store.dispatch(tabChange('0')); store.dispatch({ type: SET_TIPS, tips: {} }) store.dispatch({ type: CLEAR_ALL_DIAG, data:[], saveText:'', mainSuitStr: '', chronicMagItem:null }); store.dispatch({ type: CLEAR_ALL_PUSH_MESSAGE, data:{}, saveText:'', }); store.dispatch({ type:CLEAR_FIRST_MAIN_DIAG, flag:true }); store.dispatch({ type: CLEAR_ALL_TREAT, }); //清空已选的指标推送数据及填的值 /*store.dispatch({ type: CLEAR_ASSESS_RESULT_VALUE, });*/ store.dispatch({//推送重置 type: BILLING_ADVICE, determine:[], doubt:[], possible:[], vigilant: [], likely:[], lab: [], pacs:[], setPushEmergency:{}, setPushEmergencyIdx:'' }); /*store.dispatch({ type: SET_CURRENT_MODULE, moduleName: '' }) store.dispatch({ type: SET_MR_ANALYSE, MRAnalyseResult: [] })*/ storageLocal.remove('emrParam'); // Notify.success('页面已清空') }else if(type == 'preIcss'){ store.dispatch({type: SET_READ_MODE, readMode: whichSign,isPreIcss:true}); store.dispatch({ //主诉文本框 type: CLEAR_MAIN_SUIT, data:[], saveText:reData.chief }); store.dispatch({ type: CLEAR_CURRENT_ILL, data:[], saveText:reData.current }); store.dispatch({ type: CLEAROTHERHISTORY, data:[], isEmpty:false, saveText:reData.other }); store.dispatch({ type: SET, isEmpty:reData.checkBody?false:true, data:reData.checkBody, isText:true, //查体只显示文本 }); store.dispatch({type:SETREADDITEMS}); //清空已存的血压加号项 store.dispatch(clearAssistData([],'',[])); store.dispatch(clearAllLabel([],[],'')); store.dispatch({ type: SET_TIPS, tips: {} }) store.dispatch({ type: CLEAR_ALL_DIAG, data:[], saveText:'', mainSuitStr: '', chronicMagItem:null }); store.dispatch({ type: CLEAR_ALL_PUSH_MESSAGE, data:{}, saveText:'', }); store.dispatch({ type:CLEAR_FIRST_MAIN_DIAG, flag:true }); store.dispatch({ type: CLEAR_ALL_TREAT, }); //清空已选的指标推送数据及填的值 store.dispatch({ type: CLEAR_ASSESS_RESULT_VALUE, }); store.dispatch({//推送重置 type: BILLING_ADVICE, determine:[], doubt:[], possible:[], vigilant: [], likely:[], lab: [], pacs:[], setPushEmergency:{}, setPushEmergencyIdx:'' }); storageLocal.remove('emrParam'); }else{ let dataJson = JSON.parse(reData.dataJson); const docConfig = dataJson.docConfigs; //回读/引用设置回读模式值(主诉-其他史使用) store.dispatch({type: SET_READ_MODE, readMode: whichSign,readConfig:docConfig}); if (whichSign == 0) { //其他史data const oData = dataJson.other; const onlyOneText = oData.length==1&&oData[0].tagType==8&&!(oData[0].name||oData[0].value); if(type == 'template'){ //结构化模板回读 let dataJsonStr = JSON.parse(reData.preview); // console.log(dataJson,dataJsonStr,'结构化模板引用') //清空已选的指标推送数据及填的值 store.dispatch({ type: CLEAR_ASSESS_RESULT_VALUE, }); store.dispatch({ type: CLEAR_MAIN_SUIT, data:dataJson.chief, saveText:JSON.parse(dataJsonStr.chief), mainIds:dataJson.mainsuitIds?dataJson.mainsuitIds:[], chronicDesease:dataJson.mainChronicDesease, mainReadSonM:dataJson.mainReadSonM, }); store.dispatch({ type: CLEAR_CURRENT_ILL, data:dataJson.present, saveText:JSON.parse(dataJsonStr.present), symptomIds:dataJson.currentIds?dataJson.currentIds:[], currReadSonM:dataJson.currReadSonM }); store.dispatch({ type: CLEAROTHERHISTORY, data:dataJson.other, yjs_1:dataJson.yjs_1, yjs_2:dataJson.yjs_2, yjs_3:dataJson.yjs_3, yjs_4:dataJson.yjs_4, isEmpty:onlyOneText?true:false,//dataJson.otherHistoryIsEmpty, saveText:JSON.parse(dataJsonStr.other), editClear:dataJson.other.length>0?false:true }); store.dispatch({ type: CLEARCHECKBODY, data:dataJson.vital, isEmpty:dataJson.checkBodyIsEmpty, saveText:JSON.parse(dataJsonStr.vital) }); store.dispatch(clearAllLabel( dataJson.lis.labelList, dataJson.lis.getExcelDataList, dataJsonStr.lis.split('-')[0], dataJsonStr.lis.split('-')[1] )); store.dispatch(clearAssistData(dataJson.pacs,dataJsonStr.pacs,dataJson.checkedListImport||[])); store.dispatch({ type: CLEAR_ALL_DIAG, data:dataJson.diag, saveText:dataJsonStr.diag, chronicMagItem:dataJson.diagChronicMagItem }); store.dispatch({ type: CLEAR_ALL_PUSH_MESSAGE, data:dataJson.advice, saveText:dataJsonStr.advice }); store.dispatch({ type:SETREADDITEMS, data:dataJson.addItems }); store.dispatch({ type:CLEAR_FIRST_MAIN_DIAG, flag:dataJson.isFirstMainDiag }); //tab跳回辅助信息 store.dispatch(tabChange('0')); }else{ //结构化历史病历回读 let dataJsonStr = reData.detailList; //清空已选的指标推送数据及填的值 store.dispatch({ type: CLEAR_ASSESS_RESULT_VALUE, }); store.dispatch({ type: CLEAR_MAIN_SUIT, data:dataJson.chief, saveText:dataJsonStr[0].content ? JSON.parse(dataJsonStr[0].content) :[], mainIds:dataJson.mainsuitIds?dataJson.mainsuitIds:[], chronicDesease:dataJson.mainChronicDesease, mainReadSonM:dataJson.mainReadSonM, }); store.dispatch({ type: CLEAR_CURRENT_ILL, data:dataJson.present, saveText:dataJsonStr[1].content ? JSON.parse(dataJsonStr[1].content):[], symptomIds:dataJson.currentIds?dataJson.currentIds:[], currReadSonM:dataJson.currReadSonM }); store.dispatch({ type: CLEAROTHERHISTORY, data:dataJson.other, yjs_1:dataJson.yjs_1, yjs_2:dataJson.yjs_2, yjs_3:dataJson.yjs_3, yjs_4:dataJson.yjs_4, saveText:dataJsonStr[2].content ? JSON.parse(dataJsonStr[2].content):[], isEmpty:onlyOneText?true:false,//dataJson.otherHistoryIsEmpty,回读回来后判断是否只有一个空标签,是的话要使用模板 editClear:dataJson.other.length>0?false:true }); store.dispatch({ type: CLEARCHECKBODY, data:dataJson.vital, isEmpty:dataJson.checkBodyIsEmpty, saveText:dataJsonStr[3].content ? JSON.parse(dataJsonStr[3].content):[] }); store.dispatch(clearAllLabel( dataJson.lis.labelList, dataJson.lis.getExcelDataList, dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[0] :'', dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[1] :'' )); store.dispatch(clearAssistData( dataJson.pacs, dataJsonStr[5].content ? dataJsonStr[5].content:'', dataJson.checkedListImport||[] )); store.dispatch({ type: CLEAR_ALL_DIAG, data:dataJson.diag, saveText:dataJsonStr[6].content ? dataJsonStr[6].content:'', chronicMagItem:dataJson.diagChronicMagItem }); store.dispatch({ type: CLEAR_ALL_PUSH_MESSAGE, data:dataJson.advice, saveText:dataJsonStr[7].content ? dataJsonStr[7].content:'' }); store.dispatch({ type:SETREADDITEMS, data:dataJson.addItems }); store.dispatch({ type:CLEAR_FIRST_MAIN_DIAG, flag:dataJson.isFirstMainDiag }); } } else { if(type == 'template'){ //纯文本模板回读 //let dataJson = JSON.parse(reData.dataJson); let dataJsonStr = JSON.parse(reData.preview); // console.log(dataJson,dataJsonStr,'纯文本模板引用') store.dispatch({ //主诉文本框 type: CLEAR_MAIN_SUIT, data:[], saveText:JSON.parse(dataJsonStr.chief) }); store.dispatch({ type: CLEAR_CURRENT_ILL, data:[], saveText:JSON.parse(dataJsonStr.present) }); store.dispatch({ type: CLEAROTHERHISTORY, data:[], isEmpty:dataJson.otherHistoryIsEmpty, saveText:JSON.parse(dataJsonStr.other) }); store.dispatch({ type: CLEARCHECKBODY, data:dataJson.vital, isEmpty:dataJson.checkBodyIsEmpty, flg:true, saveText:JSON.parse(dataJsonStr.vital) }); store.dispatch(clearAllLabel( dataJson.lis.labelList, dataJson.lis.getExcelDataList, dataJsonStr.lis.split('-')[0], dataJsonStr.lis.split('-')[1] )); store.dispatch(clearAssistData(dataJson.pacs,dataJsonStr.pacs,dataJson.checkedListImport||[])); store.dispatch({ type: CLEAR_ALL_DIAG, data:dataJson.diag, saveText:dataJsonStr.diag }); store.dispatch({ type: CLEAR_ALL_PUSH_MESSAGE, data:dataJson.advice, saveText:dataJsonStr.advice, }); store.dispatch({ type:SETREADDITEMS, data:dataJson.addItems }); store.dispatch({ type:CLEAR_FIRST_MAIN_DIAG, flag:dataJson.isFirstMainDiag }); //tab跳回辅助信息 store.dispatch(tabChange('0')); }else{ //纯文本历史病历回读 //let dataJson = JSON.parse(reData.dataJson); let dataJsonStr = reData.detailList; // console.log(dataJson,dataJsonStr,'纯文本历史病历回读') if(!dataJson && !dataJsonStr && !reData.sign){ return; } store.dispatch({ type: CLEAR_MAIN_SUIT, data:[], saveText:dataJsonStr[0].content ? JSON.parse(dataJsonStr[0].content) :[] }); store.dispatch({ type: CLEAR_CURRENT_ILL, data:[], saveText:dataJsonStr[1].content ? JSON.parse(dataJsonStr[1].content) :[] }); store.dispatch({ type: CLEAROTHERHISTORY, data:[], isEmpty:dataJson.otherHistoryIsEmpty, saveText:dataJsonStr[2].content ? JSON.parse(dataJsonStr[2].content) :[] }); store.dispatch({ type: CLEARCHECKBODY, data:dataJson.vital, flg:true, isEmpty:dataJson.checkBodyIsEmpty, saveText:dataJsonStr[3].content ? JSON.parse(dataJsonStr[3].content):[] }); store.dispatch(clearAllLabel( dataJson.lis.labelList, dataJson.lis.getExcelDataList, dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[0] :'', dataJsonStr[4].content ? dataJsonStr[4].content.split('-')[1]:'' )); store.dispatch(clearAssistData( dataJson.pacs, dataJsonStr[5].content ? dataJsonStr[5].content:'', dataJson.checkedListImport||[] )); store.dispatch({ type: CLEAR_ALL_DIAG, data:dataJson.diag, saveText:dataJsonStr[6].content ? dataJsonStr[6].content:'' }); store.dispatch({ type: CLEAR_ALL_PUSH_MESSAGE, data:dataJson.advice, saveText:dataJsonStr[7].content ? dataJsonStr[7].content:'' }); store.dispatch({ type:SETREADDITEMS, data:dataJson.addItems }); store.dispatch({ type:CLEAR_FIRST_MAIN_DIAG, flag:dataJson.isFirstMainDiag }); } } } store.dispatch({ type:ISREAD }); } function filterArr(arr){ let tmpArr = arr.filter((item)=>{ if(item){ return item } }); return tmpArr.join("").replace(/\s/g,''); } function filterDataArr(arrTmp){ //数据处理 if(!Array.isArray(arrTmp)){ return } let tmpArr = []; tmpArr = arrTmp.map((it,i)=>{ //连续的标点符号保留第一个 if(!it)return ''; if(!it.match(config.punctuationReg)&&!arrTmp[i-1]){ //只有标点符号或者前一个标签无值是(说明本标点灰显,不显示在预览中) return ''; } return it.replace(config.punReg,function(word){ return word.substr(0,1); }); }); return trimDots(tmpArr.join('')); //去掉开头的标点符号,最后的标点保留第一个,中间连续的保留第一个 } //其他史预览数据处理-月经史 function filterOtherDataArr(arrTmp,jsonArr){ let tmpArr = []; let index1 = jsonArr.findIndex((item)=>{ return item.formulaCode=='yjs_1'; }); let index2 = jsonArr.findIndex((item)=>{ return item.formulaCode=='yjs_2'; }); let index3 = jsonArr.findIndex((item)=>{ return item.formulaCode=='yjs_3'; }); let index4 = jsonArr.findIndex((item)=>{ return item.formulaCode=='yjs_4'; }); if(index1==-1&&index2==-1&&index3==-1&&index4==-1){//无月经史 return {str1:filterDataArr(arrTmp),str2:''}; } tmpArr = arrTmp.map((it,i)=>{ //连续的标点符号保留第一个 if(!it.match(config.punctuationReg)&&!arrTmp[i-1]||[index1,index2,index3,index4].includes(i)){ //只有标点符号或者前一个标签无值是(说明本标点灰显,不显示在预览中) return ''; } return it.replace(config.punReg,function(word){ return word.substr(0,1); }); }); const splitNum = [index1,index2,index3,index4].find((i)=>i!=-1); const str1 = [...tmpArr].splice(0,splitNum).join(""); const str2 = [...tmpArr].splice(splitNum).join(""); return {str1:trimDots(str1),str2:trimDots(str2),index:index1}; } //去掉开头的标点符号,最后的标点保留第一个,中间连续的保留第一个 function trimDots(str){ if(!str)return'' ; return str.replace(config.punReg,function(word){ return word.substr(0,1); }).replace(/^[,,.。::"“??”;;、!!\s]+/,'').replace(/[,,.。::"“??”;;、!!\s]*$/,'。'); } //标签间连续标点只保留一个,保留前面一个 function formatContinueDots(data){ let arr=[]; arr=data&&data.filter((it,i)=>{ if(i==0||(it.name&&(it.name.match(config.punctuationReg))||(data[i-1].name&&data[i-1].name.match(config.punctuationReg)))){ return it; } if(!it.name){ //主诉现病史病情变化 return it; } }); return arr; } // 取消默认行为 function preventDefault(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } } //ie8添加解除事件兼容 function windowEventHandler(type,func,dom){ let win = dom?dom:window; if(win.addEventListener){ win.addEventListener(type, func); }else{ win.attachEvent('on'+type,func); } } function windowRemoveEventHandler(type,func,dom){ let win = dom?dom:window; if(win.addEventListener){ win.removeEventListener(type, func); }else{ win.detachEvent('on'+type,func); } } //禁止回车事件 function handleEnter(event){ event = event?event:window.event; if(event.keyCode==13){return false;} } // 获取参数value function formatFormParmas(val,arr){ let item = arr.length!==0 && arr.find(item=>{ return item.id === val }) return item.value } //获取病例输入的内容 function getEMRParams(){ const state = store.getState(); const { curHos } = state.homePage; const {message,patInfoData} = state.patInfo; const { mainSuit, currentIll, otherHistory, checkBody, inspect, assistCheck, diagnosticList, marriageHistory, pastHistory, personalHistory, familyHistory, menstruationHistory, newAdvice, } = state; const diag = []; for(let i = 0; i < diagnosticList.diagnosticList.length; i++) { diag.push({"dateValue": "","name": diagnosticList.diagnosticList[i].name,"uniqueName": ""}) } if(diagnosticList.diagnosticList.length>0)diagnosticList.diseaseName.uniqueName = '' let templis = (inspect.labelListSmall).concat(inspect.labelListBig) templis = templis.filter((item)=>{ if(!item.check){ if(item.flg == 1){ item.detailName = "" } if(curHos.hosId != -1){ item.uniqueName = '' } return item } if (item.check){ item.finishDateValue = "" } }) let tempLisOrder = JSON.parse(JSON.stringify(inspect.totalOrder)) tempLisOrder = tempLisOrder.filter((item)=>{ delete item.finishDateValue if(item.flg == 1){ item.detailName = "" } if(curHos.hosId != -1){ item.uniqueName = '' } return item }) let temppacs = assistCheck.assistLabel temppacs = temppacs.filter((item)=>{ if(!item.check){ if(curHos.hosId != -1){ item.uniqueName = '' } return item } if (item.check) { item.finishDateValue = "" } }) let tempPacOrder = JSON.parse(JSON.stringify(assistCheck.totalOrder)) tempPacOrder = tempPacOrder.filter((item)=>{ delete item.finishDateValue if(curHos.hosId != -1){ item.uniqueName = '' } return item }) let tempdrug = newAdvice.labelListBig tempdrug = tempdrug.filter((item)=>{ if(!item.check){ if(curHos.hosId != -1){ item.name = item.detailName item.uniqueName = '' }else{ item.name = (item.uniqueName+(item.form||'')) } return item } if (item.check) { item.finishDateValue = "" } }) let tempdrugorder = newAdvice.drugOrder tempdrugorder = tempdrugorder.filter((item)=>{ if(curHos.hosId != -1){ item.name = item.detailName item.uniqueName = '' }else{ item.name = (item.uniqueName+(item.form||'')) } return item }) let tempoperation = newAdvice.labelListSmall tempoperation = tempoperation.filter((item)=>{ if(!item.check){ if(curHos.hosId != -1){ item.uniqueName = '' } return item } if (item.check) { item.finishDateValue = "" } }) let tempOperationOrder = newAdvice.operationOrder tempOperationOrder = tempOperationOrder.filter((item)=>{ if(curHos.hosId != -1){ item.uniqueName = '' } return item }) let tempOperationName = newAdvice.operationName if(curHos.hosId != -1&&tempOperationName.name){ tempOperationName.uniqueName = '' } let tempblood = newAdvice.labelListBlood||[] tempblood = tempblood.filter((item)=>{ if(!item.check){ if(curHos.hosId != -1){ item.uniqueName = '' } return item } if (item.check) { item.finishDateValue = "" } }) let tempTransfusionOrder = newAdvice.transfusionOrder||[] tempTransfusionOrder = tempTransfusionOrder.filter((item)=>{ if(curHos.hosId != -1){ item.uniqueName = '' } return item }) let sex = formatFormParmas('patientSex', patInfoData); const obj = { "hospitalId": curHos.hosId || '', "age": formatFormParmas('patientAge', patInfoData), "sex": sex, "deptName": formatFormParmas('hospitalDeptName', patInfoData), "chief": mainSuit.saveText[0]||'', //主诉 "symptom": currentIll.saveText[0]||'', //现病史 "vital": checkBody.saveText[0]||'', //查体 "pasts": pastHistory.saveText[0]||'', //既往史 // "pasts": filterDataArr(pastHistory.saveText)||'', //既往史 "marriage": '', "personal": personalHistory.saveText[0]||'', //个人史 "family": familyHistory.saveText[0]||'', //家族史 "marital": marriageHistory.saveText[0]||'', //婚育史 "menstrual": menstruationHistory.saveText[0]||'', //月经史 "diseaseName":diagnosticList.diseaseName, "otherIndex":diagnosticList.otherIndex, "operationName":tempOperationName, "infectious": "", "operation": tempoperation, "allergy": "", "vaccination": "", "other": filterDataArr(otherHistory.saveText)||'', "lisString": "", "pacsString": "", "diagString": "", "drugString": "", "lis": templis, "pacs": temppacs||[], "diag": diag, "lisOrder": tempLisOrder, "pacsOrder": tempPacOrder, "diagOrder": [], "drugOrder": tempdrugorder, "operationOrder": tempOperationOrder, "otherOrder": [], "patientId": message.patientId, "drug": tempdrug, 'transfusion':tempblood,//输血 'transfusionOrder':tempTransfusionOrder } if(sex !== 2){ // 不是女性时,去除月经史 obj.menstrual = ''; } return obj; }; function getMRInfo() { const state = store.getState(); const {message} = state.patInfo; const {mainSuit,currentIll,otherHistory,checkBody,inspect,assistCheck,diagnosticList} = state; let diagStr = "" for(let i = 0; i < diagnosticList.diagnosticList.length; i++) { if(i == 0) { diagStr +=diagnosticList.diagnosticList[i].name } else { diagStr += ',' + diagnosticList.diagnosticList[i].name } } let str = `姓名: ${message.patientName} 性别:${message.patientSex} 年龄:${message.patientAge} 主诉:${filterDataArr(mainSuit.saveText)} 现病史:${filterDataArr(currentIll.saveText)} 其他史:${filterDataArr(otherHistory.saveText)} 查体:${filterDataArr(checkBody.saveText)} 化验:${inspect.inspectStrPlus} 辅检:${assistCheck.dataString} 诊断:${diagStr} 医师签名:${message.doctorName}` //let str = "姓  名:姜** /r/n性   别:女/r/n年 龄:34岁/r/n民 族:汉族/r/n职 业:经商/r/n出 生 地:浙江省长兴县/r/n婚 姻:已婚/r/n联系地址:*** /r/n病史陈述者:患者本人/r/n入院日期:2019-12-04 10:12/r/n /r/n记录日期:2019-12-04 14:37/r/n /r/n主 诉: 腹痛1周 /r/n现 病 史: 患者1周前饮食辛辣食物后出现腹痛,主要为脐以上为主,呈持续性钝痛,无明显恶心呕吐,无肩背部疼痛,无咳嗽咳痰,无腹泻腹痛,无胸闷气促,无头晕头痛,无视物旋转,无异常阴道流血流液等情况,自诉近一周感下腹坠胀感,为求进一步诊治拟\"腹痛待查\"收住入院。/r/n患病来,神志清,精神软,胃纳差,睡眠一步,大小便如常,近期体重无明显改变。 /r/n既 往 史: 否认\"高血压,糖尿病,冠心病\"病史,否认\"肝炎,结核\"等传染病史,否认重大外伤史,否认手术史,否认输血史,既往存在头孢过敏,具体不详,否认长期药物使用史,否认药物成瘾,预防接种史不详。 /r/n个 人 史: 出生并生长于浙江省长兴县,经商,初中文化,否认疫区居住史,否认放射物、毒物、粉尘接触史,否认吸烟,否认饮酒,否认特殊嗜好,否认不洁性交史。 /r/n月 经 史: ,经量中等,颜色正常,无痛经,经期规律;白带量一般,性状无殊。 /r/n婚 育 史: 27岁结婚,否认近亲结婚,配偶健康状况良好,夫妻关系和睦,育有1女,均健康。/r/n家 族 史: 父亲体健,母已故(死因不详),有2哥,均体健,家族中无传染病及遗传病史,否认两系三代内遗传性、家族性疾病史,否认家族中有\"肝炎、结核\"等传染病史,否认两系三代内\"胃癌、肺癌\"等肿瘤病史,否认类似疾病史。 /r/n体格检查(一)/r/n /r/n一般状况:/r/n体温36.3℃,脉搏68次/分,呼吸19次/分,血压133/81mmHg。/r/n意识清晰,自主体位,面容无殊,体重56Kg,身高163cm,查体合作。 /r/n皮 肤:/r/n皮肤色泽正常,弹性好,未见明显水肿,未见皮疹,未见皮下出血,未见肝掌及蜘蛛痣。/r/n淋 巴 结:/r/n未触及明显浅表淋巴结肿大 /r/n头 部:/r/n外形大小正常,无畸形。听力粗测正常。眼睑正常,结膜正常,巩膜无黄染,瞳孔等大等圆,直径3mm,对光反射灵敏。鼻部外形正常,通气顺畅,副鼻窦区无压痛,乳突无压痛。口腔粘膜正常,扁桃体无肿大。/r/n颈  部:/r/n颈软,无抵抗感,气管位置居中,颈静脉无怒张。/r/n胸  部:/r/n外形正常,肋间隙正常,双侧乳房正常对称。/r/n肺 部:/r/n呼吸运动正常对称,双肺叩诊呈清音,呼吸音清晰,未闻及干、湿啰音。/r/n心 脏:/r/n心率68次/分,心律齐,心音有力,P2<A2,各瓣膜听诊区未闻及杂音。 /r/n血 管:/r/n周围血管征阴性。 /r/n腹  部:/r/n外形正常,未见肠形及蠕动波,腹壁松软,脐以上及下腹存在轻压痛,无反跳痛,/r/n包块未触及,肝脏肋下未触及,胆囊肋下未触及,脾脏肋下未触及,双肾区无叩痛,肠鸣音正常,3~5次/分,移动性浊音阴性。/r/n外生殖器:/r/n未见明显畸形 /r/n直肠肛门:/r/n未见明显畸形 /r/n四肢脊柱:/r/n脊柱无畸形,无压痛叩击痛,无放射痛,活动自如,四肢正常。/r/n神经系统:/r/n四肢肌张力正常,肌力V级,膝腱反射双侧正常,Babinski征双侧阴性。/r/n其 他:/r/n详见专科检查。/r/n/r/n体格检查(二)/r/n补 充 及 专 科 情 况/r/n体温36.3℃,脉搏68次/分,呼吸19次/分,血压133/81mmHg神志清,呼吸平稳,浅表淋巴结未及肿大,两肺呼吸音清,双下肺未闻及湿罗音,心率68次/分,律齐,未闻及病理性杂音,腹平软,脐以上及下腹存在轻压痛,无反跳痛,肝脾肋下未触及,双下肢无浮肿。/r/n /r/n /r/n心脏相对浊音界/r/n /r/n右界cm/r/n肋间/r/n左界cm/r/n/r/n 2/r/nⅡ/r/n 2/r/n/r/n 2/r/nⅢ/r/n 4/r/n/r/n 3/r/nⅣ/r/n 6/r/n/r/n /r/nⅤ/r/n 8/r/n/r/n左锁骨中线距胸骨中线 8 cm/r/n辅助检查: 2019-12-4 心电图未见明显异常。 /r/n /r/n初步诊断:1、腹痛待查 2.盆腔炎/r/n修正诊断: /r/n 医师签名:李勇 /r/n /r/n2019-12-04 /r/n /r/n补充诊断:" let label = ["姓名","性别","年龄", "主诉","现病史","其他史","查体","化验","辅检", "诊断","医师签名"] const param = { "cid":0, "medrec": [ { "content": { "content":str }, "label": label, "title": "入院记录" } ], "token": "" } return param } function didPushParamChange(){ const emrData = getEMRParams(); const oldParams = storageLocal.get('emrParam'); const newParams = JSON.stringify(emrData); if(newParams === oldParams){ return false; } return true; } //判断模板保存时文本数据是否为空 function isAllClear(jsonStr){ if ( //结构化和文本数据都为空 filterDataArr(JSON.parse(jsonStr.chief)) == '' && filterDataArr(JSON.parse(jsonStr.present)) == '' && filterDataArr(JSON.parse(jsonStr.other)) == '' && //这里都是filterDataArr不是filterArr,要去符号的 filterDataArr(JSON.parse(jsonStr.vital)) == '' && jsonStr.diag == '' && jsonStr.lis == '' && jsonStr.pacs == '' && jsonStr.advice == '' ) { return false; }else{ return true; } } //判断页面所有数据是否为空,包括空标签 function isAllPartClear(jsonData,jsonStr,baseList){ if ( //结构化和文本数据都为空 JSON.stringify(jsonData.advice) == '{}' && jsonData.chief.length < 1 && jsonData.present.length < 1 && // jsonData.other.length < 1 && (jsonData.other.length > 0 ? baseList.otherHistory.isEmpty : true) && //jsonData.vital.length < 1 && (jsonData.vital.length > 0 ? baseList.checkBody.isEmpty : true) && jsonData.diag.length < 1 && jsonData.checkedListImport.length < 1 && jsonData.pacs.length < 1 && jsonData.lis.labelList.length < 1 && jsonData.lis.getExcelDataList.length < 1 && filterDataArr(JSON.parse(jsonStr.chief)) == '' && filterDataArr(JSON.parse(jsonStr.present)) == '' && filterDataArr(JSON.parse(jsonStr.other)) == '' && //这里都是filterDataArr不是filterArr,要去符号的 filterDataArr(JSON.parse(jsonStr.vital)) == '' ) { return false; }else{ return true; } } //判断除主诉外页面数据是否为空--慢病模板 function ifOtherClear(jsonData,jsonStr,baseList){ if ( //结构化和文本数据都为空 JSON.stringify(jsonData.advice) == '{}' && jsonData.present.length < 1 && (jsonData.other.length > 0 ? baseList.otherHistory.isEmpty : true) && (jsonData.vital.length > 0 ? baseList.checkBody.isEmpty : true) && jsonData.diag.length < 1 && jsonData.pacs.length < 1 && jsonData.lis.labelList.length < 1 && jsonData.lis.getExcelDataList.length < 1 && filterDataArr(JSON.parse(jsonStr.present)) == '' && filterDataArr(JSON.parse(jsonStr.other)) == '' && //这里都是filterDataArr不是filterArr,要去符号的 filterDataArr(JSON.parse(jsonStr.vital)) == '' ) { return false; }else{ return true; } } function normalVal(min,max){//添加正常值0处理 if(!min&&!max){ return null; }else if(min&&max){ return `正常值:(${min}~${max})` }else if(!min && max){ if(min == 0){ return `正常值:(${min}~${max})` } return `正常值:(<${max})` }else if(min && !max){ if(max == 0){ return `正常值:(${min}~${max})` } return `正常值:(>${min})` } } /** * * @param {弹窗显示位置是否往下设置} stic */ function getPageCoordinate(event,stic){//获取鼠标点击的位置 let e = event || window.event; var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollY = document.documentElement.scrollTop || document.body.scrollTop; var x = e.pageX || (e.clientX + scrollX); var y = (e.pageY+(stic?25:0)) || (e.clientY + scrollY + (stic?25:0));//弹窗位置偏下25 let obj = { boxLeft : x , boxTop : y+18 } return obj; } function timestampToTime(timestamp) { //excel导入2019年5月1日会转换成时间戳 var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = date.getFullYear() + '-'; var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; var D = (date.getDate() < 10 ? '0'+(date.getDate()) : date.getDate()) + ' '; var h = date.getHours() + ':'; var m = date.getMinutes() + ':'; var s = date.getSeconds(); return Y+M+D+h+m+s; } function timesYMDTime(timestamp) { //excel导入2019年5月1日会转换成时间戳 var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = date.getFullYear() + '-'; var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; // var D = date.getDate() ; var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); ; return Y + M + D } /** * * @param {需要年月日传个true,不需要不传或者false} flg */ function getCurrentDate(flg,con){ let link = con?con:'-' let myDate = new Date(); let year = myDate.getFullYear(); //获取完整的年份(4位,1970-????) let mon = myDate.getMonth()-0+1; //获取当前月份(0-11,0代表1月) let day = myDate.getDate(); //获取当前日(1-31) let date = ''; if(flg){ var h = myDate.getHours(); var m = myDate.getMinutes(); var s = myDate.getSeconds(); date = year+link+(mon<10?("0"+mon):mon)+link+(day<10?("0"+day):day)+' '+(h<10?("0"+h):h)+':'+(m<10?("0"+m):m)+':'+(s<10?("0"+s):s); }else{ date = year+link+(mon<10?"0"+mon:mon)+link+(day<10?"0"+day:day); } return date; } function inspectAndAssist(){ const state = store.getState(); let mainType = state.typeConfig.mode if(mainType == 1){return}//文本模式不放化验辅检的模板 let tmpAll = state.homePage.allModules; let tmpInspected = state.inspect.labelList; let tmpAssisted = state.assistCheck.assistLabel; let tmpInspect = [],tmpAssist = [],assayArr = [],tmpDetail=[],checkArr = []; for(let i = 0;i < tmpAll.length;i++){ let tmpItem = tmpAll[i]; if(tmpItem.type == 5){ tmpInspect = tmpItem.moduleDetailDTOList || [] }else if(tmpItem.type == 6){ tmpAssist = tmpItem.moduleDetailDTOList || [] } } for(let i = 0;i < tmpInspect.length;i++){//化验数据处理 let tmpObj = { //添加化验 details: [], name: '', questionId: '', showType: 1, uniqueName:'' } if (tmpInspect[i].controlType == 0) { tmpDetail = tmpInspect[i].questionMapping }else if(tmpInspect[i].controlType == 1 || tmpInspect[i].controlType == 6){ tmpDetail = new Array(tmpInspect[i]) } tmpObj.questionId = tmpInspect[i].id tmpObj.name = tmpInspect[i].name tmpObj.details = tmpDetail tmpObj.uniqueName = tmpInspect[i].uniqueName || '' assayArr.push(tmpObj) } for(let i = 0;i < tmpAssist.length;i++){//辅检数据处理 let tmpObj = { //添加辅检 name: '', questionId: '', showType: 1, time:getCurrentDate(1), value:'' } tmpObj.questionId = tmpAssist[i].id tmpObj.name = tmpAssist[i].name checkArr.push(tmpObj) } if(assayArr.length>0 && tmpInspected.length == 0){//化验 store.dispatch(addLabel(assayArr)) } if(checkArr.length > 0 && tmpAssisted.length == 0){//辅检 store.dispatch(addAssistLabel(checkArr)) } } function readyKeepHistory(){ let baseList = store.getState(); const { patInfo: { patInfoData }, } = baseList; let jsonStr = getAllDataStringList(baseList); let patientName = formatFormParmas('patientName', patInfoData); // 姓名 let patientAge = formatFormParmas('patientAge', patInfoData); // 年龄 let patientIdNo = formatFormParmas('patientIdNo', patInfoData); // 卡号 let hospitalDeptName = formatFormParmas('hospitalDeptName', patInfoData); // 科室 let doctorName = formatFormParmas('doctorName', patInfoData); // 医生 let recordId = formatFormParmas('recordId', patInfoData); // 门诊号 // console.log(patientAge, typeof patientAge,'patientAge================'); if(filterDataArr(JSON.parse(jsonStr.chief)) == ''){ return 1;//主诉不能为空 } if(patientName === '') { return 2 } if (patientAge === '') { return 3; } if (patientIdNo === '') { return 4; } if (hospitalDeptName === '') { return 5; } if (doctorName === '') { return 6; } if (recordId === '') { return 7; } if (+patientAge > 200) { return 8; } // }else if(!jsonStr.diag || jsonStr.diag.trim().length < 1){ // return 2;//诊断不能为空 // }else{ // return 3; // } } //评估图表数据转换 function parseChartData(indexData){ let arr=[],obj={},temp={}; let nameArr=[],nameObj={}; if(!indexData){ return []; } indexData.indexData.map((it)=>{ temp=indexData.indexConfigData.find((i)=>{return it.uniqueId==i.uniqueId}); arr=obj[temp.groupType]||[]; nameArr=nameObj[temp.groupType]||[]; obj[temp.groupType]=[...arr,it]; nameObj[temp.groupType]=[...nameArr,it.itemName]; }); //nameObj,obj; return {nameObj,obj}; } // 时间戳转换日期 function dateParser(timestamp,link = '-'){ let time = new Date(timestamp); let year = time.getFullYear(); let month = time.getMonth()+1; let date = time.getDate(); let hour = time.getHours(); let minute = time.getMinutes(); let second = time.getSeconds(); // let result = year+link+month+link+date; let result = year+link+(month<10?"0"+month:month)+link+(date<10?"0"+date:date)+' '+(hour<10&&hour!=0?"0"+hour:hour)+':'+(minute<10&&minute!=0?"0"+minute:minute)+':'+(second<10&&second!=0?"0"+second:second); return result; } //获取组合组件已填文字填入saveText function getSaveText(data){//console.log(data) const hasValue = data.questionMapping.findIndex((it)=>it.value!==undefined)!==-1; //有值时血压类型中文本标签要加入值 const arr = data.questionMapping.map((it)=>{ return it.value?(it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||''):(hasValue&&!notTextLabel(it)?it.name:''); }); return arr.join(''); } //添加自由文本标签 function notTextLabel(label){ return +label.tagType!==8; } /* * 给标签组添加自由文本标签 * 入参:arr源数组, * noPre是否不添加前置文本标签,默认false即添加 * noEnd是否不添加后置文本标签,默认false即添加 * 出参:newArr添加自由文本标签后的数据Array, * saveText添加自由文本后对应的预览数据Array, * */ function fullfillText(arr,noPre=false,noEnd=false,boxMark){ let newArr =[], pre={}, textLabel={}, notText = true, saveText=[], tempText = '', value = '', cNum = 0; Array.isArray(arr)&&arr.map((it,i)=>{ notText = notTextLabel(it); cNum = i; value = it.value||''; textLabel = JSON.parse(config.textLabel); //n个显示的标签最后一个标签后面要落关标,所以+1 if(i===0){ //第一个标签不是文本标签时在前面添加文本标签 if(!noPre&¬Text){ newArr.push(textLabel); saveText.push(''); } newArr.push(it); if(it.tagType == 6||it.tagType == 2){ tempText = getDefaultedSaveText(it,boxMark); }else if(it.tagType == 3){ tempText = getSaveText(it); }else{ //非血压类组合标签 tempText = value?it.labelPrefix+value+it.labelSuffix:''; tempText = notText?tempText:it.value||it.name; } saveText.push(tempText); // 模板只有一个标签时第一项后面也要加空标签 if(arr.length==1&¬Text){ newArr.push(JSON.parse(config.textLabel)); saveText.push(''); } }else{ pre = arr[i-1]; //如果本身不是文本标签且前面一个也不是文本标签,该标签前面添加文本标签 if(notTextLabel(pre)&¬Text){ newArr.push(textLabel,it); if(it.tagType == 6||it.tagType == 2){ tempText = getDefaultedSaveText(it,boxMark); }else if(it.tagType == 3){ tempText = getSaveText(it); }else{ tempText = value ? it.labelPrefix + value + it.labelSuffix : ''; } saveText.push("",tempText); }else{ //本身是或者前面是文本标签时,前面不添加文本标签 newArr.push(it); if(it.tagType == 6||it.tagType == 2){ tempText = getDefaultedSaveText(it,boxMark); }else if(it.tagType == 3){ tempText = getSaveText(it); } else{ tempText = value ? it.labelPrefix + value + it.labelSuffix : ''; tempText = notText ? tempText : (it.value || it.value == "" ? it.value : it.name); } saveText.push(tempText); } if(notText&&!noEnd&&i===arr.length-1){//最后一个非文本标签,后面添加一个文本标签 //不能用上面的变量textLabel,因为上一个if可能也进了,这样就是同一个对象,值改变时会同步 newArr.push(JSON.parse(config.textLabel)); saveText.push(""); } } }); return {newArr,saveText}; }; function getDefaultedSaveText(it,boxMark){ const state = store.getState(); const {readConfig,typeConfig}=state.typeConfig; const hasReadMode = readConfig!==-1; const curOtherMode =hasReadMode&&readConfig[2]!==null?readConfig[2]:typeConfig[2]; const curMode =hasReadMode&&readConfig[1]!==null?readConfig[1]:typeConfig[1]; const otherDefault=+curOtherMode===1; const curDefault=+curMode===1; const defaulted = (((boxMark=='2'&&curDefault)||(boxMark=='3'&&otherDefault)))&&it.selFlag=='1'&&it.value===undefined; const ext = it.questionMapping.filter((i)=>{ return +i.exclusionType===1; }); const text = ext.length>0&&defaulted?ext[0].questionDetailList[0].name:''; //console.log(state); return text; } /* * 查体添加自由文本标签函数 * 默认标签直接添加, * 前config.showCheckNum个源数据标签默认显示,剩余隐藏收起 * 入参:arr源数组, * noPre是否不添加前置文本标签,默认false即添加 * noEnd是否不添加后置文本标签,默认false即添加 * showInCheck是否默认在查体中展开 * 出参:newArr添加自由文本标签后的数据Array, * saveText添加自由文本后对应的预览数据Array, * checkHiddenDefault查体是否全部标签展开 * * */ function checkFullfillText(arr,noPre=false,noEnd=false){ let newArr =[], pre={}, textLabel={}, notText = true, saveText=[], tempText = '', value = '', item={}, checkHiddenDefault=false; arr&&arr.map((it,i)=>{ notText = notTextLabel(it); value = it.value||''; //textLabel = i==0?JSON.parse(config.textLabel):Object.assign({},JSON.parse(config.textLabel),{showInCheck:true}); //n个显示的标签最后一个标签后面要落关标,所以+1 //_textLabel = !ifEmpty&&cNumconfig.showCheckNum&&+it.tagType===1&&(+it.controlType===0||+it.controlType===1)){ if(it.questionDetailList.find((it)=>it.defaultSelect=='1')){ checkHiddenDefault=true; } } //如果本身不是文本标签且前面一个也不是文本标签,该标签前面添加文本标签 if(notTextLabel(pre)&¬Text){ textLabel = Object.assign(JSON.parse(config._textLabel),{showInCheck:i-1config.showCheckNum?false:true}); newArr.push(_text); saveText.push(""); } } }); return {newArr,saveText,checkHiddenDefault}; } //获取标签index,入参:病例项index+标签index+标签内index function getLabelIndex(index){ let ikey = index.split('-')[1]; return ikey; }; function getWindowInnerHeight(){ if(window.innerHeight!=undefined){ return window.innerHeight; }else{ let by = document.body, ele = document.documentElement; return Math.min(by.clientHeight,ele.clientHeight); } }; function getWindowInnerWidth(){ let width = window.innerWidth || document.body.clientWidth || document.documentElement.clientWidth return width }; function getIds(data){ let ids = []; data&&data.forEach((it,i)=>{ ids.push(it.id); }) return ids; } /** * * @param {日期相关} info * @param {时间是否包含时分秒} flg * @param {连接符} con */ function getCalendarDate(info) { let conect = '-'; let date = info.year + conect + (info.month < 10 ? '0' + info.month : info.month) + conect + (info.day < 10 ? '0' + info.day : info.day) + ' '+ (info.hour != 0&&(info.hour).toString().length<2 ? '0' + info.hour : info.hour)+':'+ (info.minute != 0&&(info.minute).toString().length<2 ? '0' + info.minute : info.minute)+':'+ (info.second&&(info.second).toString().length<2 ? '0' + info.second : info.second); return date; } // 导出 function downloadExportedData(data, fileName) { // var blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}); //type表示xlsx类型 var blob = new Blob([data], {type: 'application/vnd.ms-excel;charset=UTF-8'}); //type表示xlsx类型 var href = window.URL.createObjectURL(blob);//创建下载的链接 // 为兼容FF26 (不支持a标签的模拟点击事件) if (navigator.userAgent.indexOf("Firefox") > -1){ //window.open(requestUrl); window.location.href = href; }else { var downloadElement = document.createElement('a'); downloadElement.href = href; downloadElement.download = fileName; //下载后文件名 document.body.appendChild(downloadElement); downloadElement.click(); //点击下载 document.body.removeChild(downloadElement); //下载完成移除元素 window.URL.revokeObjectURL(href); } } function getStatusImg(type,val,status){ if(type == 0){//正常 return {val} }else if(type == 1){//异常(表单输入的话非数字显示为异常) return {val} } if(status == 1){ if(type == 2){ return {val} }else if(type == 3){ return {val} } }else{ if(type == 2){ return {val} }else if(type == 3){ return {val} } } } function getDomUpDown(min,max,value){ let dom = ''; if(min == null&&max == null||min == undefined&&max == undefined||min == ''&&max == ''){ dom = getStatusImg(0, value, 1) }else if (!isNaN(min) && !isNaN(max) &&min!=null&&max!=null) {//有最大值最小值 if (isNaN(value)) {//输入的不是数据 dom = getStatusImg(1, value, 1) } else if (value <= min) {//下降 dom = getStatusImg(3, value, 1) } else if (value >= max) {//上升 dom = getStatusImg(2, value, 1) } else {//正常 dom = getStatusImg(0, value, 1) } } else if (min==null && !isNaN(max)&&max!=null) {//有最大值无最小值 if (value >= max) {//上升 dom = getStatusImg(2, value, 1) } else if(isNaN(value)){ dom = getStatusImg(1, value, 1) }else {//正常 dom = getStatusImg(0, value, 1) } } else if (!isNaN(min) && max==null&&min!=null) {//有最小值无最大值 if (value <= min) {//下降 dom = getStatusImg(3, value, 1) } else if(isNaN(value)){ dom = getStatusImg(1, value, 1) }else {//正常 dom = getStatusImg(0, value, 1) } } else {//无最大最小值(中文)) dom = getStatusImg(1, value, 1) } return dom; } function getArrow(min,max,value){//1下降2上升3正常4标红 let dom = 3; if(min == null&&max == null||min == undefined&&max == undefined||min == ''&&max == ''||value == null||value == undefined){ dom = 3 }else if (!isNaN(min) && !isNaN(max) &&min!=null&&max!=null) {//有最大值最小值 if (isNaN(value)) {//输入的不是数据 dom = 4 } else if (value <= min) {//下降 dom = 1 } else if (value >= max) {//上升 dom = 2 } else {//正常 dom = 3 } } else if (min==null && !isNaN(max)&&max!=null) {//有最大值无最小值 if (value >= max) {//上升 dom = 2 } else if(isNaN(value)){ dom = 4 }else {//正常 dom = 3 } } else if (!isNaN(min) && max==null&&min!=null) {//有最小值无最大值 if (value <= min) {//下降 dom = 1 } else if(isNaN(value)){ dom = 4 }else {//正常 dom = 3 } } else {//无最大最小值(中文)) dom = 3 } return dom; } //键值对转换 function parseNameVal(arr){ let obj = {}; Array.isArray(arr)&&arr.map((it)=>{ obj[it.code]=it.value; }); return obj; } //化验数据处理 function getStringPlus(dataList){ let strPlus = ''; dataList && dataList.map((item)=>{ if(item.detailName){ let strTmp = item.name + ','+ item.detailName + ',' + (item.otherValue ? item.otherValue : (item.value + item.units)) +';' // let strTmp = item.name + ','+(item.inpValue?(item.inpValue+','):'') + item.detailName + ',' + (item.otherValue ? item.otherValue : (item.value + item.units)) +';' strPlus += strTmp; }else{ // let strTmp = item.name+ (item.inpValue?(','+item.inpValue):';') let strTmp = item.name+ ';' strPlus += strTmp; } }) return strPlus; } /** * * @param {data1} excel导入的数据 getExcelDataList * @param {data2} 填写单数据 labelList */ function getPushList(data1,data2){ //推送数据 let tmpArr1 = []; let tmpArr2 = []; let totalTmpArr = []; const now = dateParser(new Date()); data1.length>0 && data1.map((items)=>{ //excel导入的数据拼接 items.lisExcelRes.map((item)=>{ item.lisExcelItem.map((part)=>{ let tmpObj = {}; tmpObj.name = part.mealName || '';//套餐名 tmpObj.detailName = part.itemName || '';//化验项名 tmpObj.uniqueName = part.uniqueName || '';//公表名称 tmpObj.source = '1';//数据来源 tmpObj.maxValue = part.max || ''; tmpObj.minValue = part.min || ''; // tmpObj.dateValue = part.time ||now; tmpObj.units = part.unit || '';//单位 tmpObj.value = (part.value-0) === (part.value-0) ? part.value:'';//值 tmpObj.otherValue = (part.value-0) === (part.value-0) ?'':part.value; //阴性阳性 tmpArr1.push(tmpObj); }) }) }) data2.length>0 && data2.map((item)=>{ //填写单数据拼接 item.details && item.details.map((val)=>{ if(val.value != undefined && val.value != ''){ let tmpObj = {}; tmpObj.name = item.name || ''; tmpObj.detailName = val.name || ''; tmpObj.uniqueName = val.uniqueName || '';//公表名称 tmpObj.source = '0'; //数据来源 tmpObj.maxValue = val.maxValue ? val.maxValue : ''; tmpObj.minValue = val.minValue ? val.minValue : ''; // tmpObj.dateValue = val.time || now; tmpObj.units = val.labelSuffix || ''; tmpObj.value = (val.value-0) === (val.value-0) ? val.value:''; tmpObj.otherValue = (val.value-0) === (val.value-0) ?'':val.value; tmpArr2.push(tmpObj); } }) }) totalTmpArr = tmpArr1.concat(tmpArr2); return totalTmpArr; } function getPushLists(data1,data2){ //推送数据 let tmpArr1 = []; let tmpArr2 = []; let totalTmpArr = []; data1.length>0 && data1.map((items)=>{ //excel导入的数据拼接 items.lisExcelRes.map((item)=>{ item.lisExcelItem.map((part)=>{ let tmpObj = {}; tmpObj.name = part.mealName || '';//套餐名 tmpObj.detailName = part.itemName || '';//化验项名 tmpObj.uniqueName = part.uniqueName || '';//公表名称 tmpObj.source = '1';//数据来源 tmpObj.maxValue = part.max || ''; tmpObj.minValue = part.min || ''; tmpObj.units = part.unit || '';//单位 tmpObj.value = (part.value-0) === (part.value-0) ? part.value:'';//值 tmpObj.otherValue = (part.value-0) === (part.value-0) ?'':part.value; //阴性阳性 tmpArr1.push(tmpObj); }) }) }) data2.length>0 && data2.map((item)=>{ //填写单数据拼接 if(item.show){ item.details.map((val)=>{ if(val.value != undefined && val.value != ''){ let tmpObj = {}; tmpObj.name = item.name || ''; tmpObj.inpValue = item.inpValue || '';//套餐名 tmpObj.detailName = val.name || ''; tmpObj.uniqueName = val.uniqueName || '';//公表名称 tmpObj.source = '0'; //数据来源 tmpObj.maxValue = val.maxValue ? val.maxValue : ''; tmpObj.minValue = val.minValue ? val.minValue : ''; tmpObj.units = val.labelSuffix || ''; tmpObj.value = (val.value-0) === (val.value-0) ? val.value:''; tmpObj.otherValue = (val.value-0) === (val.value-0) ?'':val.value; tmpArr2.push(tmpObj); } }) }else{ let tmpObj = {}; tmpObj.name = item.name; tmpObj.inpValue = item.inpValue; tmpArr2.push(tmpObj); } }) totalTmpArr = tmpArr1.concat(tmpArr2); return totalTmpArr; } function getAllString(checkedListImport,assistLabel,flg){ let tmpImportLis = [],tmpString='',tmpArr=[],tmpObj={}; for(let i = 0;i < checkedListImport.length;i++){ for(let j = 0;j < checkedListImport[i].length;j++){ tmpImportLis.push(checkedListImport[i][j]) } } let tempArr = tmpImportLis.concat(assistLabel) for (let i = 0; i < tempArr.length; i++) { let tmpVal = tempArr[i].value ? tempArr[i].value.trim() : tempArr[i].value; let obj = { // "dateValue": tempArr[i].time||"", "name": "", "uniqueName": tempArr[i].name||"", "desc": tempArr[i].value||"", "result": tempArr[i].value||"", } tmpArr.push(obj) console.log(tempArr) // tmpString += (tempArr[i].name + (tmpVal ? (':' + tmpVal) + ', ' : ':') + (tempArr[i].time ? '报告日期:' + tempArr[i].time : '') + '^;') tmpString += `
` + `
` + ``+tempArr[i].name + `` + `
` + (tempArr[i].time ? tempArr[i].time : '') + (tempArr[i].check || tempArr[i].finishDateValue == '' ? '' : ``) + (tempArr[i].check ? '' : tempArr[i].finishDateValue) + '
' + `
` + `` + (tmpVal ? tmpVal : '')+`` +`
` } // return tmpObj = { arr:tmpArr, str:tmpString } // if(flg){ // return tmpArr; // }else{ // return tmpString; // } } // 模板中处理tagType==4的数据 function resetTagtype(data){ let newDataArr = []; if(data&&data.length>0){ for(let i=0; iconfig.recoverTagNum?config.recoverTagNum:deledTag.length; localStorage.setItem('deletedTags',JSON.stringify(deledTag)); } //删除被恢复的标签 function shiftLocalDelTag(){ const deledTags = localStorage.getItem('deletedTags')?JSON.parse(localStorage.getItem('deletedTags')):[]; deledTags.shift(); localStorage.setItem('deletedTags',JSON.stringify(deledTags)); } //弹窗显示问题 function setPosition (e,dom,setHighter){ const isBlock = store.getState().typeConfig.typeConfig[0]===2; //自由模式 setTimeout(()=>{ const contHt =$(dom).height(); const $dom = isBlock?$("#EmrBlockContainer"):$("#EmrContainer"); const wrapHt = $dom.height();//滚动区域高度 const clickHt = getPageCoordinate(e).boxTop;//点击高度 const scrollHt = Math.abs(parseFloat(document.documentElement.scrollTop || document.body.scrollTop)) //滚动的距离 let btmHt = $(window).height()-(clickHt-scrollHt);//点击位置距离底部的距离 // console.log('滚动区域高度:',wrapHt,' 点击高度:',clickHt,' 滚动区滚动的距离',scrollHt,'点击距离底部',btmHt,$(e.target).html()) if(btmHt<300){ if(btmHt<200&&$(e.target).html()=='添加检验项'){ setHighter&&setHighter(48); }else{ setHighter&&setHighter(400-btmHt); } $(e.target)[0].scrollIntoView(); }else{ setHighter&&setHighter(48); //标签填写单连续点击弹出,未超出需要恢复 } },10); } function moveEnd(obj,flg) { if(window.getSelection){//ie11 10 9 ff safari setTimeout(() => { obj.focus(); //解决ff不获取焦点无法定位问题 var range = window.getSelection();//创建range range.selectAllChildren(obj);//range 选择obj下所有子内容 if(flg){ range.collapseToStart();//光标移至开头 }else{ range.collapseToEnd();//光标移至最后 } }, 0); } else if (document.selection) {//ie10 9 8 7 6 5 var range = document.selection.createRange();//创建选择对象 range.moveToElementText(obj);//range定位到obj if(flg){ range.collapse(true);//光标移至开头 }else{ range.collapse(false);//光标移至最后 } range.select(); } } /** * 获取样式类名 * largeFontSize 18px middleFontSize 16px(暂无) simpleFontSize 14px * flg 1标准字体时颜色加深,可以让选中的字体加粗 * 2体征颜色单独处理不需要设置 */ const setFontColorSize = (flg,pacs) => { const classNameSelect = ['largeFontSize','middleFontSize','simpleFontSize','simpleLightColor','simpleColor','selectColor'] const state = store.getState(); let readConfig = state.typeConfig.readConfig let mainType = readConfig==-1?state.typeConfig.typeConfig:readConfig; let font = mainType[3],colour = mainType[4],classStr = ''; if(font == 1&&colour == 1){//字体加大颜色加深 if(flg == 2){ if(pacs == 1){ classStr = `largeFontSize pdright` }else if(pacs == 2){ classStr = `largeFontSize widthChangeed` }else if(pacs == 3){ classStr = `largeFontSize middleImg` }else if(pacs == 4){ classStr = `largeFontSize titleWidth` }else if(pacs == 5){ classStr = `largeFontSize specialSize` }else if(pacs == 6){ classStr = `largeFontSize selectColor` }else if(pacs == 7){ classStr = `largeFontSize fontWeight selectColor` }else if(pacs == 8){ classStr = `largeFontSize selectColor` }else{ classStr = `largeFontSize` } }else if(flg == 1){ classStr = `selectColor largeFontSize` }else{ classStr = `selectColor largeFontSize` } }else if(font == 0&&colour == 1){//标准字体颜色加黑 if(flg == 2){ if(pacs == 6){ classStr = `simpleFontSize selectColor` }else if(pacs == 7){ classStr = `simpleFontSize fontWeight selectColor` }else if(pacs == 8){ classStr = `simpleFontSize selectColor` }else{ classStr = `simpleFontSize` } }else if(flg == 1){ classStr = `selectColor simpleFontSize` }else{ classStr = `selectColor simpleFontSize` } }else if(font == 1&&colour == 0){//大字体标准颜色 if(flg == 2){ if(pacs == 1){ classStr = `largeFontSize pdright` }else if(pacs == 2){ classStr = `largeFontSize widthChangeed` }else if(pacs == 3){ classStr = `largeFontSize middleImg` }else if(pacs == 4){ classStr = `largeFontSize titleWidth` }else if(pacs == 5){ classStr = `largeFontSize specialSize` }else if(pacs == 6){ classStr = `largeFontSize` }else if(pacs == 8){ classStr = `simpleColor largeFontSize` }else if(pacs == 7){ classStr = `largeFontSize fontWeight` }else{ classStr = `largeFontSize` } }else if(flg == 1){ classStr = `simpleLightColor largeFontSize` }else{ classStr = `simpleColor largeFontSize` } }else{//都是标准的 if(flg == 2){ if(pacs == 7){ classStr = `simpleFontSize fontWeight` }else if(pacs == 6){ classStr = `simpleFontSize` }else if(pacs == 8){ classStr = `simpleColor simpleFontSize` }else if(pacs == 7){ classStr = `simpleFontSize fontWeight` }else{ classStr = `simpleFontSize` } }else if(flg == 1){ classStr = `simpleLightColor simpleFontSize` }else{ classStr = `simpleColor simpleFontSize` } } return classStr; } //获取生命体征或非生命体征标签 function getLifeLabels(arr,flag){ //flag=true获取非生命体征 const newArr = arr.filter((it)=>{ return flag?+it.specFlag!==4:+it.specFlag===4; }); return newArr; } //获取已选中的标签 function getValuedLabels(arr){ const newArr = arr.filter((it)=>{ if(it.tagType=='3'){ //血压类型 if(+it.specFlag!==4&&it.questionMapping.findIndex((i)=>i.value!==undefined)!==-1){ return true; } return false; } return +it.specFlag!==4&&it.value; }); return newArr; } //对象数组去重 function removeRepeat(arr1,arr2){ //arr1被完全保留的数组 const arr = arr2.reduce(function(newArr,item,inx){ const it = newArr.findIndex((i)=>i.id===item.id); const firstInx = arr2.findIndex((i)=>i.id===item.id); //旧体征标签比新体征标签多出的标签,已填值的保留,未填值的舍弃 if(it!==-1){ //多个相同标签,保留已填值的 if(firstInx!==inx&&(item.value!==undefined||(item.tagType=='3'&&item.questionMapping.findIndex((i)=>i.value!==undefined)!==-1))){ //重复的已填值标签 newArr.splice(inx-firstInx+it,0,item); } if(firstInx===inx){ newArr.splice(it,1,item); } }else if(item.value!==undefined||(it.tagType=='3'&&it.questionMapping.findIndex((i)=>i.value!==undefined)!==-1)){ newArr.push(item); } return newArr; },[...arr1]); return arr; } function handleMouseUp(param){ const {select_start,i,boxMark}= param; if(select_start!==undefined){ store.dispatch({ type:SET_SELECTED_AREA, data:{i,boxMark,dir:'end'} }); //清空搜索结果以关闭搜索弹窗 const map = { '1':CLEAR_SEARCH, '2':CURRENT_CLEAR, '3':OTHERHIS_CLEAR, '4':CHECKBODY_CLEAR }; store.dispatch({ type:map[boxMark] }); window.getSelection().empty(); } } //判断不同科室内容是否相同 function checkDeptContent(jsonStr,tmpLis){ for(let i = 0;i