Browse Source

优化电子病历

DESKTOP-0GD05B0\Administrator 2 years ago
parent
commit
a539f817b2

+ 2 - 2
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/EmrWebSocketController.java

@@ -47,8 +47,8 @@ public class EmrWebSocketController {
     }
 
     @GetMapping("/isThereADoctorEditing")
-    public ResultVo<UserInfo> isThereADoctorEditing(@RequestParam("sid") String sid) {
-        return emrWebSocketServerV2.isThereADoctorEditing(sid);
+    public ResultVo<UserInfo> isBeingEditing(@RequestParam("sid") String sid) {
+        return emrWebSocketServerV2.isBeingEditing(sid);
     }
 
 

+ 5 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/YizhuLuRuController.java

@@ -124,6 +124,11 @@ public class YizhuLuRuController {
         return server.huoQuZhuYuanPinLv(code);
     }
 
+    @GetMapping("/getFrequencyCount")
+    public ResultVo<JSONObject> getFrequencyCount(String code) {
+        return server.getFrequencyCount(code);
+    }
+
     @GetMapping("/huoQuGeiYaoFangShi")
     @PassToken
     public ResultVo<List<GetDropdownBox>> huoQuGeiYaoFangShi(String code) {

+ 4 - 2
src/main/java/thyyxxk/webserver/service/redislike/RedisLikeService.java

@@ -207,8 +207,10 @@ public class RedisLikeService {
             USER_MAP.put(code, userInfo);
         }
         try {
-            JSONObject json = srvc.getUserinfo(TokenUtil.getWeComAddressBookToken(), userInfo.getCodeRs());
-            userInfo.setAvatar(json.getString("avatar"));
+            if (StringUtil.isBlank(userInfo.getAvatar())) {
+                JSONObject json = srvc.getUserinfo(TokenUtil.getWeComAddressBookToken(), userInfo.getCodeRs());
+                userInfo.setAvatar(json.getString("avatar"));
+            }
         } catch (Exception ignored) {
         }
         return userInfo;

+ 20 - 30
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/YiZhuLuRuServer.java

@@ -1004,25 +1004,13 @@ public class YiZhuLuRuServer {
                     if (dao.dischargeWithMedicationAdministration(item.getSupplyCode()) == 0) {
                         errorMessage.add("出院带药给药方式不能包含费用。");
                     }
-                    int day = 1;
                     if (item.getStartTime() == null) {
                         errorMessage.add("出院带药请输入开始时间。");
                     }
                     if (item.getEndTime() == null) {
                         errorMessage.add("出院带药请输入结束时间。");
                     }
-                    if (item.getStartTime() != null && item.getEndTime() != null) {
-                        long cha = item.getEndTime().getTime() - item.getStartTime().getTime();
-                        long nd = 1000 * 24 * 60 * 60;
-                        day = (int) (cha / nd);
-                        if (day > 出院带药限制天数) {
-                            errorMessage.add("出院带药天数不得超过 15 天,计算方式结束时间减去开始时间。");
-                        }
-                        if (day == 0) {
-                            day = 1;
-                        }
-                    }
-                    dischargeWithMedicationCollection(getTotal(item, day), detailsOfDrugs, item);
+                    item.setDrugOcc(item.getDrugQuan());
                 } else {
                     // 计算普通药品的领量 durg_quan durg_occ
                     calculateDrugAmount(item, detailsOfDrugs);
@@ -1154,6 +1142,22 @@ public class YiZhuLuRuServer {
         return new BigDecimal((day <= 0 ? 1 : day) * times);
     }
 
+    public ResultVo<JSONObject> getFrequencyCount(String code) {
+        // 计算出院带药的领量
+        Map<String, Short> numberOfTimesADay = dao.numberOfTimesADay(code);
+        int times = 0;
+        for (Map.Entry<String, Short> entry : numberOfTimesADay.entrySet()) {
+            if (entry.getValue() != null) {
+                times += entry.getValue();
+            }
+        }
+        JSONObject js = new JSONObject();
+        // 一天几次
+        js.put("count", times);
+        js.put("code", code);
+        return ResultVoUtil.success(js);
+    }
+
 
     /***
      * 获取项目信息
@@ -1541,25 +1545,11 @@ public class YiZhuLuRuServer {
         Map<String, List<XinZhenYzActOrder>> takeTheMedicineList = new HashMap<>(Capacity.TWO);
 
         for (XinZhenYzActOrder item : patInfo.getList()) {
-            XinZhenYzActOrder detailsOfDrugs = dao.getDrugOne(item.getOrderCode() + item.getSerial(), item.getGroupNo());
-            int day = 1;
-            // 如果是临时医嘱 开了就结束了.
-            if ("ONCE".equals(item.getFrequCode())) {
-                item.setEndTime(item.getStartTime());
-            }
-            if (item.getStartTime() != null && item.getEndTime() != null) {
-                long cha = item.getEndTime().getTime() - item.getStartTime().getTime();
-                long nd = 1000 * 24 * 60 * 60;
-                day = (int) (cha / nd);
-                if (day == 0) {
-                    day = 1;
-                }
-            }
             // 计算出院带药的领量
-            dischargeWithMedicationCollection(getTotal(item, day), detailsOfDrugs, item);
+//            dischargeWithMedicationCollection(getTotal(item, day), detailsOfDrugs, item);
             // 在这里更新出院带药领量
-            dao.updateThePickup(item);
-            // 费用标志为 4 的就是出院带药
+//            dao.updateThePickup(item);
+//             费用标志为 4 的就是出院带药
             if ("4".equals(item.getSelfBuy())) {
                 if (takeTheMedicineList.containsKey(item.getGroupNo())) {
                     takeTheMedicineList.get(item.getGroupNo()).add(item);

+ 14 - 13
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/emr/EmrWebSocketServerV2.java

@@ -2,46 +2,47 @@ package thyyxxk.webserver.service.zhuyuanyisheng.emr;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
-import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrSocketParam;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 @Slf4j
 @Service
 public class EmrWebSocketServerV2 {
     private final RedisLikeService redisLikeService;
-    private static final List<String> EDITOR_USER = new ArrayList<>();
+    private static final ConcurrentHashMap<String, String> EDITOR_USER = new ConcurrentHashMap<>();
 
     @Autowired
     public EmrWebSocketServerV2(RedisLikeService redisLikeService) {
         this.redisLikeService = redisLikeService;
     }
 
-    public ResultVo<UserInfo> isThereADoctorEditing(String documentId) {
-        for (String s : EDITOR_USER) {
-            EmrSocketParam param = parameterParsing(s);
-            if (param.getId().equals(documentId)) {
-                UserInfo us = redisLikeService.getUserInfoByCode(param.getUserCode());
-                return ResultVoUtil.success(us);
+    public ResultVo<UserInfo> isBeingEditing(String documentId) {
+        if (EDITOR_USER.containsKey(documentId)) {
+            String code = EDITOR_USER.get(documentId);
+            if (code == null) {
+                return ResultVoUtil.success();
             }
+            UserInfo us = redisLikeService.getUserInfoByCode(code);
+            return ResultVoUtil.success(us);
         }
         return ResultVoUtil.success();
     }
 
     public static void open(String sid) {
-        EDITOR_USER.add(sid);
+        EmrSocketParam param = parameterParsing(sid);
+        EDITOR_USER.put(param.getId(), param.getUserCode());
     }
 
     public static void close(String sid) {
-        EDITOR_USER.remove(sid);
+        EmrSocketParam param = parameterParsing(sid);
+        EDITOR_USER.remove(param.getId());
     }
 
     public static EmrSocketParam parameterParsing(String sid) {