123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289 |
- 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&&cNum<config.showCheckNum+1?Object.assign({},JSON.parse(config._textLabel),{showInCheck:true}):JSON.parse(config._textLabel);
- if(i===0){
- textLabel = Object.assign({},JSON.parse(config.textLabel),{showInCheck:true});
- //第一个标签不是文本标签时在前面添加文本标签
- if(!noPre&¬Text){
- newArr.push(textLabel);
- saveText.push('');
- }
- item = Object.assign({},it,{showInCheck:true});
- newArr.push(item);
- if(it.tagType != 3){
- tempText = value?it.labelPrefix+value+it.labelSuffix:'';
- tempText = notText?tempText:it.value||it.name;
- }else{
- tempText = getSaveText(it);
- }
- saveText.push(tempText);
- // 模板只有一个标签时第一项后面也要加空标签
- if(arr.length==1&¬Text){
- newArr.push(textLabel);
- saveText.push('');
- }
- }else{
- pre = arr[i-1];
- item = i<config.showCheckNum?Object.assign({},it,{showInCheck:true}):it;
- //判断单选项是否有默认选中,位置在隐藏区域时,查体所有标签展示
- if(!checkHiddenDefault&&i>config.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-1<config.showCheckNum?true:false});
- newArr.push(textLabel,item);
- if(it.tagType != 3) {
- tempText = value ? it.labelPrefix + value + it.labelSuffix : '';
- }else{
- tempText = getSaveText(it);
- }
- saveText.push("",tempText);
- }else{ //本身是或者前面是文本标签时,前面不添加文本标签
- newArr.push(item);
- if(it.tagType != 3) {
- tempText = value ? it.labelPrefix + value + it.labelSuffix : '';
- tempText = notText ? tempText : (it.value || it.value == "" ? it.value : it.name);
- }else{
- tempText = getSaveText(it);
- }
- saveText.push(tempText);
- }
- if(notText&&!noEnd&&i===arr.length-1){//最后一个非文本标签,后面添加一个文本标签
- const _text = Object.assign(JSON.parse(config.textLabel),{showInCheck:arr.length>config.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 <span>{val} </span>
- }else if(type == 1){//异常(表单输入的话非数字显示为异常)
- return <span className={'red'}>{val} </span>
- }
- if(status == 1){
- if(type == 2){
- return <span style={{color:'#FF5D5D'}}>{val}<img src={up} alt=""/> </span>
- }else if(type == 3){
- return <span style={{color:"#D949FF"}}>{val}<img src={down} alt=""/> </span>
- }
- }else{
- if(type == 2){
- return <span>{val}<img src={up} alt=""/> </span>
- }else if(type == 3){
- return <span>{val}<img src={down} alt=""/> </span>
- }
- }
- }
- 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 +=
- `<div>`
- + `<div style="display:flex;justify-content: space-between;">`
- + `<span>`+tempArr[i].name + `</span>`
- + `<div><img style='margin:0 5px' title="开单时间" src='/src/common/images/billing_time.png' alt=""/>`
- + (tempArr[i].time ? tempArr[i].time : '') + (tempArr[i].check || tempArr[i].finishDateValue == '' ? '' : `<img style="margin:0 5px" title="报告时间" src='/src/common/images/report_time.png' alt=""/>`)
- + (tempArr[i].check ? '' : tempArr[i].finishDateValue)
- + '</div>'
- + `</div>`
- + `<span>` + (tmpVal ? tmpVal : '')+`</span>`
- +`</div>`
- }
- //
- 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; i<data.length;i++){
- if(data[i].tagType==4){
- newDataArr.push(...data[i].questionMapping);
- }else{
- newDataArr.push(data[i]);
- }
- }
- }
- return newDataArr;
- }
- //记录最近3次被删除的标签
- function handleLocalDelTag(mark,index,tag){
- const deledTag = localStorage.getItem('deletedTags')?JSON.parse(localStorage.getItem('deletedTags')):[];
- if(tag.tagType){
- deledTag.unshift(Object.assign({},tag,{delIndex:mark+'-'+index}));
- }else{
- deledTag.unshift({tags:tag,delIndex:mark+'-'+index});
- }
- deledTag.length = deledTag.length>config.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 <tmpLis.length;i++){
- let dataStr = tmpLis[i].preview;
- if(
- filterDataArr(JSON.parse(jsonStr.chief)) == filterDataArr(eval('('+JSON.parse(dataStr).chief+')')) &&
- filterDataArr(JSON.parse(jsonStr.present)) == filterDataArr(eval('('+JSON.parse(dataStr).present+')')) &&
- filterDataArr(JSON.parse(jsonStr.other)) == filterDataArr(eval('('+JSON.parse(dataStr).other+')')) &&
- filterDataArr(JSON.parse(jsonStr.vital)) == filterDataArr(eval('('+JSON.parse(dataStr).vital+')')) &&
- jsonStr.lis == JSON.parse(dataStr).lis &&
- jsonStr.pacs == JSON.parse(dataStr).pacs &&
- jsonStr.diag == JSON.parse(dataStr).diag &&
- jsonStr.advice == JSON.parse(dataStr).advice
- ){
- // Notify.info('该模板已保存');
- return false;
- }
- }
- }
- module.exports = {
- strDateTime,
- compareDate,
- getIds,
- getWindowInnerWidth,
- getWindowInnerHeight,
- getLabelIndex,
- fullfillText,
- checkFullfillText,
- dateParser,
- isNotNull,
- isNull,
- deepClone,
- isIE,
- storageLocal,
- getUrlArgObject,
- getAllDataList,
- getAllDataStringList,
- pushAllDataList,
- filterArr,
- filterDataArr,
- filterOtherDataArr,
- preventDefault,
- handleEnter,
- didPushParamChange,
- getEMRParams,
- getMRInfo,
- windowEventHandler,
- isAllClear,
- normalVal,
- getPageCoordinate,
- windowRemoveEventHandler,
- timestampToTime,
- formatContinueDots,
- inspectAndAssist,
- getCurrentDate,
- ifOtherClear,
- readyKeepHistory,
- parseChartData,
- getCalendarDate,
- downloadExportedData,
- getStatusImg,
- parseNameVal,
- getStringPlus,
- getPushLists,
- getPushList,
- getAllString,
- resetTagtype,
- handleLocalDelTag,
- shiftLocalDelTag,
- setPosition,
- isAllPartClear,
- getDomUpDown,
- setFontColorSize,
- moveEnd,
- getLifeLabels,
- getValuedLabels,
- removeRepeat,
- handleMouseUp,
- checkDeptContent,
- formatTextInfo,
- getArrow,
- formatFormParmas,
- pushHistoryDataList,
- timesYMDTime,
- delHistoryDataList,
- };
|