瀏覽代碼

处方回调时自动将没有满5个药品的处方合并

hurugang 2 年之前
父節點
當前提交
14e6180b17

+ 1 - 1
src/main/java/cn/hnthyy/thmz/service/impl/his/mz/MzChargeDetailServiceImpl.java

@@ -1476,7 +1476,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
                     if (mzChargeDetail.getGroupOrder() == null) {
                         mzChargeDetail.setGroupOrder(1);
                     }
-                    xyDetail.put("orderCode", mzChargeDetail.getChargeItemCode() + "_" + mzChargeDetail.getSerial() + "_" + mzChargeDetail.getGroupOrder());
+                    xyDetail.put("orderCode", mzChargeDetail.getChargeItemCode() + "_" + mzChargeDetail.getSerial() + "_" + mzChargeDetail.getGroupOrder()+ "_" + mzChargeDetail.getOrderNo());
                     xyDetail.put("groupOrder", mzChargeDetail.getGroupOrder());
                     if (StringUtils.isNotBlank(ypZdDict.getManuCode())) {
                         String manufactoryName = ypZdManufactoryService.queryYpZdManufactoryByCode(ypZdDict.getManuCode());

+ 10 - 0
src/main/resources/static/js/common/map-util.js

@@ -16,6 +16,7 @@ function Map(){
                 return;
             }
         };
+        this.keyArr[this.keyArr.length]=key;
         this.arr[this.arr.length] = new struct(key, value);
     };
     //  根据key获取value
@@ -30,12 +31,15 @@ function Map(){
     //   根据key删除
     var remove = function(key) {
         var v;
+        var keyCurrent;
         for (var i = 0; i < this.arr.length; i++) {
             v = this.arr.pop();
+            keyCurrent=this.keyArr.pop();
             if ( v.key === key ) {
                 continue;
             }
             this.arr.unshift(v);
+            this.keyArr.unshift(keyCurrent);
         }
     };
     //   获取map键值对个数
@@ -46,10 +50,16 @@ function Map(){
     var isEmpty = function() {
         return this.arr.length <= 0;
     };
+    //   获取key集合
+    var keySet = function() {
+       return this.keyArr;
+    };
     this.arr = new Array();
+    this.keyArr = new Array();
     this.get = get;
     this.put = put;
     this.remove = remove;
     this.size = size;
     this.isEmpty = isEmpty;
+    this.keySet = keySet;
 }

+ 144 - 39
src/main/resources/static/js/mz/clinic.js

@@ -20,6 +20,8 @@ var gropuIdAndOrderNoMap = null;
 //var prevCategoriesFlag = null;
 //处方回调和修改的时候处方号与处方tab的关系
 var orderNoAndTableIdMap = null;
+//处方回调和修改的时候处方tab与处方号的关系
+var tableIdAndOrderNoMap = null;
 $(function () {
     initGenderSelect();
     iniAdmissStatus();
@@ -802,6 +804,7 @@ $(function () {
         timer = setTimeout(isScrollEnd, 100)
         t1 = $("#scroll-wrap").scrollTop();
     })
+
     function isScrollEnd() {
         t2 = $("#scroll-wrap").scrollTop();
         if (t2 == t1) {
@@ -810,6 +813,7 @@ $(function () {
             console.log("滚动停止", t2) // 这里处理
         }
     }
+
     //监听滚动停止处理逻辑结束
 
 
@@ -2490,6 +2494,8 @@ function medicalModelModal(id) {
                 $("#idTemplate").val(res.data.id);
                 $("#zsTemplate").html(jsonData.mzBlRecord.emrChiefComplaint);
                 $("#xbsTemplate").html(jsonData.mzBlRecord.emrHpi);
+                $("#tgjcTemplate").html(jsonData.mzBlRecord.emrPe);
+                $("#jkjyTemplate").html(jsonData.mzBlRecord.emrJkjy);
                 var icdText = res.data.icdText;
                 $("#zdTemplate").html("");
                 $("#xypyContent").html("");
@@ -2641,6 +2647,7 @@ function callBackZlDetail(code, mzChargeDetail) {
  */
 function editPrescription(jsonData, type) {
     orderNoAndTableIdMap = new Map();
+    tableIdAndOrderNoMap = new Map();
     var firstOrNot = jsonData.firstOrNot;
     var conciseRecordsFlag = false;
     if (type == 1) {
@@ -2740,25 +2747,29 @@ function editPrescription(jsonData, type) {
     var zlArrays = [];
     //住院选中的数据组
     var zyReqArrays = [];
+    //组号与同组药数量的map
+    var groupOrderAndLengthMap = new Map();
+    //处方号与同处方号药数量的map
+    var orderNoAndLengthMap = new Map();
     //住院回写
     var zyReqCallBack = false;
     if (type == 1) {
-        setCallBackArrays("xypyContent", xyArrays);
-        setCallBackArrays("xymjContent", xyArrays);
-        setCallBackArrays("xyjeContent", xyArrays);
-        setCallBackArrays("yczlContent", xyArrays);
-        setCallBackArrays("zyzlContent", zyArrays);
-        setCallBackArrays("jcjyContent", jcjyArrays);
-        setCallBackArrays("zlContent", zlArrays);
+        setCallBackArrays("xypyContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("xymjContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("xyjeContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("yczlContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("zyzlContent", zyArrays, null, null);
+        setCallBackArrays("jcjyContent", jcjyArrays, null, null);
+        setCallBackArrays("zlContent", zlArrays, null, null);
         zyReqCallBack = $("#zyReqContent").find("input").prop("checked");
     } else if (type == 2) {
-        setCallBackArrays("prescriptionDetail_xypyContent", xyArrays);
-        setCallBackArrays("prescriptionDetail_xymjContent", xyArrays);
-        setCallBackArrays("prescriptionDetail_xyjeContent", xyArrays);
-        setCallBackArrays("prescriptionDetail_yczlContent", xyArrays);
-        setCallBackArrays("prescriptionDetail_zyzlContent", zyArrays);
-        setCallBackArrays("prescriptionDetail_jcjyContent", jcjyArrays);
-        setCallBackArrays("prescriptionDetail_zlContent", zlArrays);
+        setCallBackArrays("prescriptionDetail_xypyContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("prescriptionDetail_xymjContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("prescriptionDetail_xyjeContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("prescriptionDetail_yczlContent", xyArrays, groupOrderAndLengthMap, orderNoAndLengthMap);
+        setCallBackArrays("prescriptionDetail_zyzlContent", zyArrays, null, null);
+        setCallBackArrays("prescriptionDetail_jcjyContent", jcjyArrays, null, null);
+        setCallBackArrays("prescriptionDetail_zlContent", zlArrays, null, null);
         zyReqCallBack = $("#prescriptionDetail_zyReqContent").find("input").prop("checked");
     } else if (type == 0) {
         zyReqCallBack = true;
@@ -2769,6 +2780,13 @@ function editPrescription(jsonData, type) {
     var hadSetZyFullParams = false;
     //西药,成药,医材,麻精,中药,诊疗
     if (mzChargeDetailList != null && mzChargeDetailList.length > 0) {
+        //当前实际回写的组号
+        var currentOrderNo = null;
+        //处方号与药品类型关系
+        var orderAndGroupNoMap = new Map();
+        // mzChargeDetailList.sort(function (a, b) {
+        //     return a.groupNo - b.groupNo
+        // });
         for (var i = 0; i < mzChargeDetailList.length; i++) {
             var mzChargeDetail = mzChargeDetailList[i];
             var groupNo = mzChargeDetail.groupNo;
@@ -2785,7 +2803,9 @@ function editPrescription(jsonData, type) {
                 if (groupOrder == null || groupOrder == 'null' || groupOrder == "") {
                     groupOrder = 1;
                 }
-                if (type != 0 && !isInArray(code + "_" + serial + "_" + groupOrder, xyArrays)) {
+                var orderNo = mzChargeDetail.orderNo;
+                orderAndGroupNoMap.put(orderNo, groupNo);
+                if (type != 0 && !isInArray(code + "_" + serial + "_" + groupOrder + "_" + orderNo, xyArrays)) {
                     continue;
                 }
                 var lastGroupOrder = parseInt($("#groupId > option:last").val());
@@ -2796,7 +2816,58 @@ function editPrescription(jsonData, type) {
                 //appendGroupOrder()
                 $("#groupId").selectpicker('val', groupOrder);
                 $('#groupId').selectpicker('refresh');
-                checkYpInfo(code, serial, groupNo, false, mzChargeDetail.orderNo);
+                //模板和历史轨迹回调的时候,如果前一个处方不满5个,就将后面的处方的药品添加到上一个处方中,但如果同一组药不能全部添加到上一个处方,就不会追加到该处方中
+                var orderNoLength = orderNoAndLengthMap.get(orderNo);
+                if (currentOrderNo == null) {
+                    currentOrderNo = orderNo;
+                } else if (orderAndGroupNoMap.get(currentOrderNo) != orderAndGroupNoMap.get(orderNo)) {
+                    var currentGroupNos = $("#xyTabContent").find("input.current_groupNo");
+                    //查询还没有满5个的处方页
+                    var tempOrderNo = null;
+                    for (var k = 0; k < currentGroupNos.length; k++) {
+                        if ($(currentGroupNos[k]).val() == groupNo) {
+                            var next = $(currentGroupNos[k]).next();
+                            if ($(next).children().length < 4) {
+                                var parentId = $(currentGroupNos[k]).parent().attr("id");
+                                tempOrderNo = tableIdAndOrderNoMap.get(parentId);
+                            }
+                        }
+                    }
+                    currentOrderNo = tempOrderNo;
+                } else if (currentOrderNo != orderNo && orderNoLength < 5) {
+                    var currentOrderNoLength = orderNoAndLengthMap.get(currentOrderNo);
+                    var groupOrderLength = groupOrderAndLengthMap.get(groupOrder);
+                    if (groupOrderLength + currentOrderNoLength <= 5) {
+                        currentOrderNoLength = currentOrderNoLength + 1;
+                        orderNoLength = orderNoLength - 1;
+                        groupOrderLength = groupOrderLength - 1;
+                        orderNoAndLengthMap.put(currentOrderNo, currentOrderNoLength);
+                        orderNoAndLengthMap.put(orderNo, orderNoLength);
+                        groupOrderAndLengthMap.put(groupOrder, groupOrderLength);
+                        orderNo = currentOrderNo;
+                        if (currentOrderNoLength == 5) {
+                            var currentGroupNos = $("#xyTabContent").find("input.current_groupNo");
+                            //查询还没有满5个的处方页,
+                            var tempOrderNo = null;
+                            for (var k = 0; k < currentGroupNos.length; k++) {
+                                if ($(currentGroupNos[k]).val() == groupNo) {
+                                    var next = $(currentGroupNos[k]).next();
+                                    //这里判断是4,是因为已经把组号设置了,所以要减去1
+                                    if ($(next).children().length < 4) {
+                                        var parentId = $(currentGroupNos[k]).parent().attr("id");
+                                        tempOrderNo = tableIdAndOrderNoMap.get(parentId);
+                                    }
+                                }
+                            }
+                            currentOrderNo = tempOrderNo;
+                        }
+                    }else{
+                        currentOrderNo=orderNo;
+                    }
+                }
+
+
+                checkYpInfo(code, serial, groupNo, false, orderNo);
                 // 给药方式 同组药品给药方式相同
                 $("#supplyType").selectpicker('val', mzChargeDetail.supplyCode);
                 $('#supplyType').selectpicker('refresh');
@@ -2822,6 +2893,7 @@ function editPrescription(jsonData, type) {
                 $('#medicalAdvice').selectpicker('refresh');
                 saveWesternMedicine(false);
                 $("#western_medicine_button").click();
+                $("#xyTab").find("li:eq(0) a").off("click").click();
             } else {
                 if (type != 0 && !isInArray(code + "_" + serial, zyArrays)) {
                     continue;
@@ -2911,14 +2983,17 @@ function editPrescription(jsonData, type) {
     }, 1000);
     //清空映射map
     orderNoAndTableIdMap = null;
+    tableIdAndOrderNoMap = null;
 }
 
 /**
  * 根据勾选内容设置选中集合
  * @param id 区域id
  * @param arrays 集合
+ * @param groupOrderAndLengthMap 组号与同组药数量的map
+ * @param orderNoAndLengthMap 处方号与同处方号药数量的map
  */
-function setCallBackArrays(id, arrays) {
+function setCallBackArrays(id, arrays, groupOrderAndLengthMap, orderNoAndLengthMap) {
     var contents = $("#" + id).children();
     if (contents == null || contents.length == 0) {
         return;
@@ -2928,6 +3003,35 @@ function setCallBackArrays(id, arrays) {
         var data_id = $(obj).attr("data-id");
         if (checked && data_id != undefined && data_id != null && data_id != "null" && data_id != "") {
             arrays[arrays.length] = data_id;
+            var dataArr = null;
+            //设置组号与同组药品数量关系
+            if (groupOrderAndLengthMap != null) {
+                dataArr = data_id.split("_");
+                if (dataArr != null && dataArr.length >= 3) {
+                    var groupOrder = Number(dataArr[2]);
+                    var length = groupOrderAndLengthMap.get(groupOrder);
+                    if (length == null || length == "") {
+                        length = 0;
+                    }
+                    length++;
+                    groupOrderAndLengthMap.put(groupOrder, length);
+                }
+            }
+            //设置处方号与同处方号药品数量关系
+            if (orderNoAndLengthMap != null) {
+                if (dataArr == null) {
+                    dataArr = data_id.split("_");
+                }
+                if (dataArr != null && dataArr.length >= 4) {
+                    var orderNo = Number(dataArr[3]);
+                    var length = orderNoAndLengthMap.get(orderNo);
+                    if (length == null || length == "") {
+                        length = 0;
+                    }
+                    length++;
+                    orderNoAndLengthMap.put(orderNo, length);
+                }
+            }
         }
     });
 }
@@ -6065,20 +6169,18 @@ function checkYpInfo(code, serial, groupNo, needNotice, orderNo) {
                     var tableId = $("#xyTab li.active").find("a").attr("href");
                     var childrens = $(tableId).find("div:eq(0)").children().length;
                     var currentGroupNo = $(tableId).find("input.current_groupNo").val();
-                    if (childrens === 5) {
+                    if (childrens === 5 && $(tableId).is(':last-child')) {
                         if (needNotice) {
                             $("#messageModal").modal();
                             $("#messageContent").html("单张处方最多只能开具5个药品,是否需要新增处方?");
                             $("#messageButton").off("click").on("click", function (t) {
                                 $("#messageModal").modal("hide");
-                                refreshNavTabs(0, groupNo, null);
+                                refreshNavTabs(0, groupNo, orderNo);
                                 fitWesternMedicine(res, groupNo);
-                                // //选中药品后,光标默认到用法
-                                // $("#supplyType").next().click();
                             });
                             $("#cancelButton").off("click");
                         } else {
-                            refreshNavTabs(0, groupNo, null);
+                            refreshNavTabs(0, groupNo, orderNo);
                             fitWesternMedicine(res, groupNo);
                         }
                     } else if (currentGroupNo != null && currentGroupNo != '' && groupNo != currentGroupNo) {
@@ -6093,6 +6195,7 @@ function checkYpInfo(code, serial, groupNo, needNotice, orderNo) {
                                     var parentId = $(currentGroupNos[i]).parent().attr("id");
                                     //切换处方
                                     $("#xyTab").find("a[href='#" + parentId + "']").off("click").tab('show');
+                                    //$("#xyTab").find("a[href='#" + tableId + "']").off("click").click();
                                     //因为存在没有满5个的处方页,直接保存到该页
                                     needAddTable = false;
                                     fitWesternMedicine(res, groupNo);
@@ -6114,14 +6217,14 @@ function checkYpInfo(code, serial, groupNo, needNotice, orderNo) {
                                 $("#messageContent").html(message);
                                 $("#messageButton").off("click").on("click", function (t) {
                                     $("#messageModal").modal("hide");
-                                    refreshNavTabs(0, groupNo, null);
+                                    refreshNavTabs(0, groupNo, orderNo);
                                     fitWesternMedicine(res, groupNo);
                                     // //选中药品后,光标默认到用法
                                     // $("#supplyType").next().click();
                                 });
                                 $("#cancelButton").off("click");
                             } else {
-                                refreshNavTabs(0, groupNo, null);
+                                refreshNavTabs(0, groupNo, orderNo);
                                 fitWesternMedicine(res, groupNo);
                             }
                         }
@@ -6130,17 +6233,20 @@ function checkYpInfo(code, serial, groupNo, needNotice, orderNo) {
                         //修改药品
                         if (orderNo != null) {
                             //西药处方数量
-                            var xyTabLiLength = $("#xyTab li").length;
-                            if (xyTabLiLength < orderNo) {
-                                var tableId = orderNoAndTableIdMap.get(orderNo);
-                                if (tableId != null && tableId != "") {
-                                    //切换处方
-                                    $("#xyTab").find("a[href='#" + tableId + "']").off("click").tab('show');
-                                } else {
-                                    refreshNavTabs(0, groupNo, orderNo);
-                                }
-                            } else {
+                            // var xyTabLiLength = $("#xyTab li").length;
+                            // if (xyTabLiLength < orderNo) {
+                            //
+                            // } else {
+                            //     $("#xyTab li.active").find("a").find("small.cfdesc").text("(" + cfdesc + ")");
+                            // }
+                            var tableId = orderNoAndTableIdMap.get(orderNo);
+                            if (tableId != null && tableId != "") {
+                                //切换处方
+                                $("#xyTab").find("a[href='#" + tableId + "']").off("click").tab('show');
+                                //$("#xyTab").find("a[href='#" + tableId + "']").off("click").click();
                                 $("#xyTab li.active").find("a").find("small.cfdesc").text("(" + cfdesc + ")");
+                            } else {
+                                refreshNavTabs(0, groupNo, orderNo);
                             }
                             fitWesternMedicine(res, groupNo);
                         } else {
@@ -6148,11 +6254,6 @@ function checkYpInfo(code, serial, groupNo, needNotice, orderNo) {
                             fitWesternMedicine(res, groupNo);
                         }
                     }
-                    // if (needNotice) {
-                    //     //选中药品后,光标默认到用法
-                    //     $("#supplyType").next().click();
-                    //     //  prevEleId = 'supplyType';
-                    // }
                 }
             } else {
                 errorMesage(res);
@@ -6897,6 +6998,7 @@ function initNavTabs(index, groupNo, orderNo) {
     }
     if (orderNo != null && orderNo != "" && orderNoAndTableIdMap != null) {
         orderNoAndTableIdMap.put(orderNo, paneId);
+        tableIdAndOrderNoMap.put(paneId, orderNo);
     }
 }
 
@@ -7032,6 +7134,7 @@ function refreshNavTabs(index, groupNo, orderNo) {
     }
     if (orderNo != null && orderNo != "" && orderNoAndTableIdMap != null) {
         orderNoAndTableIdMap.put(orderNo, paneId);
+        tableIdAndOrderNoMap.put(paneId, orderNo);
     }
 }
 
@@ -8535,6 +8638,8 @@ function prescriptionDetailCommon(patientId, times, clnicId, payMark, type) {
                 }
                 $("#prescriptionDetail_zs").html(jsonData.mzBlRecord.emrChiefComplaint);
                 $("#prescriptionDetail_xbs").html(jsonData.mzBlRecord.emrHpi);
+                $("#prescriptionDetail_tgjc").html(jsonData.mzBlRecord.emrPe);
+                $("#prescriptionDetail_jkjy").html(jsonData.mzBlRecord.emrJkjy);
                 var icdText = jsonData.icdText;
                 if (icdText != null) {
                     var arr = icdText.split(",");

+ 52 - 0
src/main/resources/templates/mz/clinic.html

@@ -1677,6 +1677,32 @@
                             </div>
                         </div>
                     </div>
+                    <div class="item form-group thmz_alert">
+                        <div class="col-md-6 col-sm-6 col-xs-12 item"
+                             style="color: #2e69eb!important;margin-left: -10px;">
+                            体格检查:
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert"
+                         style="padding-bottom: 10px;">
+                        <div class="col-md-12 col-sm-12 col-xs-12 item">
+                            <div class="tagZdy" id="prescriptionDetail_tgjc">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <div class="col-md-6 col-sm-6 col-xs-12 item"
+                             style="color: #2e69eb!important;margin-left: -10px;">
+                            健康教育:
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert"
+                         style="padding-bottom: 10px;">
+                        <div class="col-md-12 col-sm-12 col-xs-12 item">
+                            <div class="tagZdy" id="prescriptionDetail_jkjy">
+                            </div>
+                        </div>
+                    </div>
                     <div class="item form-group thmz_alert">
                         <div class="col-md-6 col-sm-6 col-xs-12 item"
                              style="color: #2e69eb!important;margin-left: -10px;">
@@ -1870,6 +1896,32 @@
                             </div>
                         </div>
                     </div>
+                    <div class="item form-group thmz_alert">
+                        <div class="col-md-6 col-sm-6 col-xs-12 item"
+                             style="color: #2e69eb!important;margin-left: -10px;">
+                            体格检查:
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert"
+                         style="padding-bottom: 10px;">
+                        <div class="col-md-12 col-sm-12 col-xs-12 item">
+                            <div class="tagZdy" id="tgjcTemplate">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <div class="col-md-6 col-sm-6 col-xs-12 item"
+                             style="color: #2e69eb!important;margin-left: -10px;">
+                            健康教育:
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert"
+                         style="padding-bottom: 10px;">
+                        <div class="col-md-12 col-sm-12 col-xs-12 item">
+                            <div class="tagZdy" id="jkjyTemplate">
+                            </div>
+                        </div>
+                    </div>
                     <div class="item form-group thmz_alert">
                         <div class="col-md-6 col-sm-6 col-xs-12 item"
                              style="color: #2e69eb!important;margin-left: -10px;">