Index: ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/config.js =================================================================== diff -u -r41104 -r41240 --- ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/config.js (.../config.js) (revision 41104) +++ ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/config.js (.../config.js) (revision 41240) @@ -301,6 +301,8 @@ enableCSSDNursingQualityControlSummaryReport:true, //提取诊疗号的正则表达式 regExpForExtractingClinicNumber:"\"PatNO\":\"(.*?)\"}", + //启用设备接口灭菌完成判定功能 + enableSterilizationCompletionDeterminationViaEquipmentInterface:true, //供应室数据隔离模块 supplyRoomDataIsolationModule:["recyclingApplication","invoicePlanExtracted","invoice","directPacking","customInvoice","reviewDepartmentGroup","printInvoiceConfig","invoiceDepartmentView"] } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js =================================================================== diff -u -r40425 -r41240 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js (.../sterilizerForm.js) (revision 40425) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js (.../sterilizerForm.js) (revision 41240) @@ -464,7 +464,6 @@ frame: true, labelSeparator: ':', bodyStyle: 'padding:5px 5px 0px 5px', - labelAlign: 'right', labelWidth: 100, autoScroll: true, height: top.screen.height > 800 ? 720 : 600, @@ -506,6 +505,7 @@ id: 'sterilizationFrequecyReminds' }, { layout: 'column', + labelAlign: 'right', items: [{ columnWidth: 0.6, layout: 'column', @@ -1055,6 +1055,115 @@ triggerAction: 'all', anchor: '95%' }] + }, { + layout: 'form', + labelWidth: 100, + columnWidth: 1, + height: 38, + hidden: !sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface, + items: [{ + columnWidth: 1, + xtype: 'combo', + fieldLabel: '智能判断灭菌结果', + name: 'autoJudgmentResult', + id: 'autoJudgmentResult', + valueField: 'value', + displayField: 'value', + forceSelection: true, + editable: false, + store: new Ext.data.SimpleStore({ + fields: ['value'], + data: [['是'], ['否']] + }), + value: '否', + mode: 'local', + triggerAction: 'all', + anchor: '98%', + listeners:{ + select: function (combo, record, index) { + var value = record.data.value; + if(value == '是'){ + top.Ext.getCmp('tempStartRangeBox').show(); + top.Ext.getCmp('tempEndRangeBox').show(); + top.Ext.getCmp('pressureStartRangeBox').show(); + top.Ext.getCmp('pressureEndRangeBox').show(); + }else { + top.Ext.getCmp('tempStartRangeBox').hide(); + top.Ext.getCmp('tempEndRangeBox').hide(); + top.Ext.getCmp('pressureStartRangeBox').hide(); + top.Ext.getCmp('pressureEndRangeBox').hide(); + } + } + } + }] + }, { + layout: 'form', + labelWidth: 120, + columnWidth: 0.6, + height: 38, + hidden: !sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface, + id: 'tempStartRangeBox', + items: [{ + xtype: 'numberfield', + allowNegative: true, + allowDecimals: true, + fieldLabel: '温度合格范围(℃)', + id: 'tempStartRange', + name: 'tempStartRange', + anchor: '95%' + }] + }, { + layout: 'form', + labelWidth: 20, + columnWidth: 0.4, + height: 38, + hidden: !sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface, + labelAlign:'left', + id: 'tempEndRangeBox', + items: [{ + xtype: 'numberfield', + labelSeparator:'', + allowNegative: true, + allowDecimals: true, + fieldLabel: '—', + id: 'tempEndRange', + name: 'tempEndRange', + anchor: '95%' + }] + }, { + layout: 'form', + labelWidth: 120, + columnWidth: 0.6, + height: 38, + hidden: !sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface, + id: 'pressureStartRangeBox', + items: [{ + xtype: 'numberfield', + allowNegative: true, + allowDecimals: true, + fieldLabel: '压力合格范围(Kpa)', + id: 'pressureStartRange', + name: 'pressureStartRange', + anchor: '95%' + }] + }, { + layout: 'form', + labelWidth: 20, + columnWidth: 0.4, + height: 38, + hidden: !sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface, + labelAlign:'left', + id: 'pressureEndRangeBox', + items: [{ + xtype: 'numberfield', + labelSeparator:'', + allowNegative: true, + allowDecimals: true, + fieldLabel: '—', + id: 'pressureEndRange', + name: 'pressureEndRange', + anchor: '95%' + }] }] }, { columnWidth: 0.4, @@ -1781,6 +1890,22 @@ top.Ext.getCmp('timingCompleteSterilization').disable(); } + //FSEYEQ-36:智能判断灭菌结果 + if(sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface){ + if(sterilizer.autoJudgmentResult == '是'){ + top.Ext.getCmp('tempStartRangeBox').show(); + top.Ext.getCmp('tempEndRangeBox').show(); + top.Ext.getCmp('pressureStartRangeBox').show(); + top.Ext.getCmp('pressureEndRangeBox').show(); + }else { + top.Ext.getCmp('autoJudgmentResult').setValue('否'); + top.Ext.getCmp('tempStartRangeBox').hide(); + top.Ext.getCmp('tempEndRangeBox').hide(); + top.Ext.getCmp('pressureStartRangeBox').hide(); + top.Ext.getCmp('pressureEndRangeBox').hide(); + } + } + if (id != 0) { configStore.loadData(Ext.util.JSON.decode(action.result.sterilisationJsonData)); consumableStore.loadData(Ext.util.JSON.decode(action.result.consumptiveJsonData)); @@ -1823,6 +1948,14 @@ top.Ext.getCmp('timingCompleteSterilization').setValue('否'); top.Ext.getCmp('timingCompleteSterilization').disable(); } + //FSEYEQ-36:智能判断灭菌结果 + if(sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface){ + top.Ext.getCmp('autoJudgmentResult').setValue('否'); + top.Ext.getCmp('tempStartRangeBox').hide(); + top.Ext.getCmp('tempEndRangeBox').hide(); + top.Ext.getCmp('pressureStartRangeBox').hide(); + top.Ext.getCmp('pressureEndRangeBox').hide(); + } } Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js =================================================================== diff -u -r41119 -r41240 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js (.../sterilizationRecordView.js) (revision 41119) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js (.../sterilizationRecordView.js) (revision 41240) @@ -1594,7 +1594,52 @@ id: 'completeSterilizationBtn', handler: function () { sterilizerStatus = statusEnd; - sterilizationComplete(grid, statusEnd); + if (sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface) { + var sterilizationFailureRcords = grid.getSelectionModel().getSelections(); + if (sterilizationFailureRcords.length == 0) { + showMultipleResult("请至少选中一条灭菌记录!", null, sstsConfig.messagePauseTimeOnSterilizationRecordPage); + return false; + } else if (sterilizationFailureRcords.length > 1) { + showMultipleResult("一次只能选一条灭菌记录", null, sstsConfig.messagePauseTimeOnSterilizationRecordPage); + return false; + } + var sterilizationRecordId = sterilizationFailureRcords[0].data.id; + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/sterilization/sterilizationRecordAction!checkSterilizationFailure.do', + params: { + sterilizationRecordId: sterilizationRecordId + }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + sterilizationComplete(grid, statusEnd); + } else { + top.Ext.MessageBox.show({ + title: '请确认', + msg: '' + result.message + '', + buttons: top.Ext.Msg.OK, + icon: top.Ext.Msg.INFO, + width: 300, + closable: false, + fn: function (btn) { + if (btn == 'ok') { + sterilizerStatus = statusFailure; + qualityMonitoringSterilizationID = sterilizationRecordId; + otherPartAddQM = true; + openQualityMonitoringWin("灭菌管理", 0); + } + } + }); + } + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + showMultipleResult(result.cause || result.message); + } + }); + } else { + sterilizationComplete(grid, statusEnd); + } } }, '-', { text: '灭菌中断', Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizerRecord/sterilizerLineChartOfCommon.js =================================================================== diff -u -r41017 -r41240 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizerRecord/sterilizerLineChartOfCommon.js (.../sterilizerLineChartOfCommon.js) (revision 41017) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizerRecord/sterilizerLineChartOfCommon.js (.../sterilizerLineChartOfCommon.js) (revision 41240) @@ -1,6 +1,7 @@ var queryTable = false; var enableParameterFileConfirmation = false; var commonParaType = ['8', '9', '10', '11']; +var autoJudgmentResultData = []; //打印 function printAll() { @@ -171,6 +172,16 @@ //FSEYEQ-26: Clean H101513(灭菌器型号) function creatLineChart(result) { + var startTime = ''; + var endTime = ''; + var startTimeStr = 0; + var endTimeStr = 0; + var sterilizeTime = []; + var sterilizerInnerTemperatureArray = []; + var sterilizerInterlayerTemperatureArray = []; + var sterilizerInnerPressureArray = []; + var sterilizerInterlayerPressureArray = []; + //室内温度 var innerTemperatureArray = result.data.innerTemperatureArray; //夹层温度 @@ -179,6 +190,8 @@ var innerPressureArray = result.data.innerPressureArray; //夹层压力 var interlayerPressureArray = result.data.interlayerPressureArray; + //空数据 + var nullArray = []; //时间 var timeArr = result.data.timeData; var colors = ['#5470C6', '#91CC75', '#FA8072', '#FFA500']; @@ -194,10 +207,72 @@ }) } } + nullArray.push(null) } + var markLine = {}; + var startDate = result.data.keyValues['启动时间:'] ? result.data.keyValues['启动时间:'].split(' ')[0] : ''; + //FSEYEQ-36:标记灭菌阶段 + if (sstsConfig.enableSterilizationCompletionDeterminationViaEquipmentInterface) { + for (var i = 0; i < timeArr.length; i++) { + if (stageNameArray[i] == '灭菌') { + sterilizeTime.push(timeArr[i]) + sterilizerInnerTemperatureArray.push(innerTemperatureArray[i]) + sterilizerInterlayerTemperatureArray.push(interlayerTemperatureArray[i]) + sterilizerInnerPressureArray.push(innerPressureArray[i]) + sterilizerInterlayerPressureArray.push(interlayerPressureArray[i]) + } + } + if (sterilizeTime.length > 0) { + startTime = sterilizeTime[0]; + endTime = sterilizeTime[sterilizeTime.length - 1]; + startTimeStr = new Date(startDate + ' ' + startTime).getTime(); + endTimeStr = new Date(startDate + ' ' + endTime).getTime(); + } + markLine = { + silent: true, + itemStyle: { + color: 'rgba(255, 173, 177, 0.4)' + }, + label: { + show: true, + formatter: '灭菌阶段', // 显示的文字内容 + fontSize: 14, + color: '#555', + fontWeight: 'bold' + }, + emphasis: { + itemStyle: { + color: 'rgba(255, 173, 177, 0.6)' + } + }, + data: [[{ + xAxis: startTime + }, { + xAxis: endTime + }]] + } + } var option = { tooltip: { - trigger: 'axis' + trigger: 'axis', + formatter: function (params) { + var firstParam = Array.isArray(params) ? params[0] : params; + var axisValue = new Date(startDate + ' ' + firstParam.axisValue).getTime(); + if (axisValue >= startTimeStr && axisValue <= endTimeStr) { + var html = '
' + startDate + ' ' + firstParam.axisValue + '
'; + html += '' + "室内最高温度 " + Math.max.apply(null, sterilizerInnerTemperatureArray) + '
'; + html += '' + "室内最低温度 " + Math.min.apply(null, sterilizerInnerTemperatureArray) + '
'; + html += '' + "室内最高压力 " + Math.max.apply(null, sterilizerInnerPressureArray) + '
'; + html += '' + "室内最低压力 " + Math.min.apply(null, sterilizerInnerPressureArray) + '
'; + return html + } else { + var html = '' + startDate + ' ' + firstParam.axisValue + '
'; + for (var i = 0; i < params.length - 1; i++) { + html += '' + params[i].marker + " " + params[i].seriesName + " " + params[i].value + '
'; + } + return html + } + } }, color: colors, legend: { @@ -314,11 +389,23 @@ type: 'line', yAxisIndex: 2, data: innerPressureArray - }, { + }, + { name: '夹层压力', type: 'line', yAxisIndex: 3, data: interlayerPressureArray + }, + { + type: 'line', + lineStyle: { + opacity: 0 // 将线条完全透明 + }, + itemStyle: { + opacity: 0 // 将数据点完全透明 + }, + data: nullArray, + markArea: markLine }] }; myChart.setOption(option); @@ -330,17 +417,30 @@ //BJDXZLYY-74:改造通用的 function creatLineChartByCommon(result) { + var startTime = ''; + var endTime = ''; + var startTimeStr = 0; + var endTimeStr = 0; var temperature = result.data.t1TempData;//温度 var pressure = result.data.p1MbarData;//压力 var timeData = result.data.timeData;//时间 var sterilizerRecordArr = result.data.sterilizerRecordArr; - var addLline = false; + var sterilizeTime = []; + var sterilizerT1Temp = []; + var sterilizerP1Mbar = []; + //空数据 + var nullArray = []; + if (sterilizerRecordArr && sterilizerRecordArr.length > 0) { + var oldPhase = ''; var html = '| 温度 | 压力 | '; html += '||||
| ' + sterilizerRecordArr[i].phase + ' | '; @@ -350,23 +450,84 @@ html += '' + sterilizerRecordArr[i].time + ' | ' + sterilizerRecordArr[i].T1Temp + ' | ' + sterilizerRecordArr[i].P1Mbar + ' | '; html += '||
' + firstParam.axisValue + '
'; + html += '' + "最高温度 " + Math.max.apply(null, sterilizerT1Temp) + '
'; + html += '' + "最低温度 " + Math.min.apply(null, sterilizerT1Temp) + '
'; + html += '' + "最高压力 " + Math.max.apply(null, sterilizerP1Mbar) + '
'; + html += '' + "最低压力 " + Math.min.apply(null, sterilizerP1Mbar) + '
'; + return html + } else { + var html = '' + firstParam.axisValue + '
'; + for (var i = 0; i < params.length - 1; i++) { + html += '' + params[i].marker + " " + params[i].seriesName + " " + params[i].value + '
'; + } + return html + } + } }, color: ['#00CD66', '#CD2990'], legend: { left: "8%", - data: ['温度', '压力', "", "", ""] + data: ['温度', '压力'] }, xAxis: [{ @@ -379,9 +540,9 @@ axisLabel: { formatter: function (value, index) {//截取分钟 var minutesData = []; - var timeDataArr = value.split(" "); - var timeDataArrTwo = timeDataArr[1]; - timeDataArrTwo = timeDataArrTwo.substring(3, 8); + var timeDataArr = value.split(" ")[1].split(':'); + var timeDataArrTwo = timeDataArr[0] + ':' + timeDataArr[1]; + minutesData.push(timeDataArrTwo); return minutesData; } @@ -432,21 +593,7 @@ } } }, - data: temperature, - markLine: { - symbol: "none", - label: { - show: false - }, - data: [{ - silent: false, - lineStyle: { - type: "solid", - color: "#00CD66" - }, - yAxis: 134 - }] - } + data: temperature }, { name: '压力', @@ -461,32 +608,19 @@ }, yAxisIndex: 1, data: pressure + }, + { + type: 'line', + lineStyle: { + opacity: 0 // 将线条完全透明 + }, + itemStyle: { + opacity: 0 // 将数据点完全透明 + }, + data: nullArray, + markArea: markLine }] }; - if (addLline) { - var markLines = { - symbol: "none", - label: { - show: false - }, - data: [{ - silent: false, - lineStyle: { - type: "solid", - color: "#CD2990" - }, - yAxis: 0 - }, { - silent: false, - lineStyle: { - type: "solid", - color: "#CD2990" - }, - yAxis: -85 - }] - } - option.series[1].markLine = markLines; - } myChart.setOption(option); }