Jelajahi Sumber

查询医嘱

lihong 2 tahun lalu
induk
melakukan
0ecb25ae6e

+ 8 - 0
src/main/java/thyyxxk/webserver/controller/medicaladvice/medicamanage/MedicalManagementController.java

@@ -2,11 +2,14 @@ package thyyxxk.webserver.controller.medicaladvice.medicamanage;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
+import thyyxxk.webserver.entity.inpatient.patient.YzQueryBase;
 import thyyxxk.webserver.service.medicaladvice.medicamanage.MedicalManagementService;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
@@ -38,4 +41,9 @@ public class MedicalManagementController {
         return ResultVoUtil.success(service.queryPatientInfo(patNo,ward));
     }
 
+    @PostMapping("/queryYz")
+    public ResultVo<Map<String,Object>> queryYz(@RequestBody YzQueryBase yzQueryBase) {
+        return ResultVoUtil.success(service.queryYz(yzQueryBase));
+    }
+
 }

+ 2 - 0
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/medicamanage/MedicalManagementDao.java

@@ -337,4 +337,6 @@ public interface MedicalManagementDao {
             " from zy_actpatient a ${ew.customSqlSegment}" +
             " ORDER BY cast(a.bed_no AS int)")
     List<Patient> queryPatientInfo(@Param(Constants.WRAPPER)QueryWrapper<?> query);
+    @Select("select top 1 1  from op_record where inpatient_no=#{patNo} and admiss_times=#{times}")
+    Integer existOprt(@Param("patNo") String patNo, @Param("times")Integer times);
 }

+ 12 - 0
src/main/java/thyyxxk/webserver/entity/inpatient/patient/Patient.java

@@ -158,6 +158,18 @@ public class Patient {
      * 标杆费用
      */
     private String groupInfoFeeStand;
+    /**
+     * 病危状态
+     */
+    private String criticallyIllStatus;
+    /**
+     * 护理级别
+     */
+    private String nursingLevel;
+    /**
+     * 手术状态
+     */
+    private String oprtStatus;
 
 
     public String getSexName() {

+ 20 - 0
src/main/java/thyyxxk/webserver/entity/inpatient/patient/YzQueryBase.java

@@ -0,0 +1,20 @@
+package thyyxxk.webserver.entity.inpatient.patient;
+
+import lombok.Data;
+
+/**
+ * @Description:医嘱查询条件
+ * @Author:lihong
+ * @Date: 2023/4/20
+ */
+@Data
+public class YzQueryBase {
+    private String patNo;
+    private Integer times;
+    /**显示范围 0 全部 1停止 2当前(查询确认和执行) 3 今天 */
+    private String queryRange;
+    /**状态 0 全部 1录入 2确认 3 执行  5停止  */
+    private String statusFlag;
+
+
+}

+ 117 - 1
src/main/java/thyyxxk/webserver/service/medicaladvice/medicamanage/MedicalManagementService.java

@@ -5,19 +5,25 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.dao.his.medicaladvice.medicamanage.MedicalManagementDao;
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuLuRuDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
+import thyyxxk.webserver.entity.inpatient.patient.YzQueryBase;
 import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.entity.medicaladvice.medicamanage.YzPrintVO;
+import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYzActOrder;
 import thyyxxk.webserver.service.inpatient.PatientService;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.AssertUtil;
+import thyyxxk.webserver.utils.EntityStringTrim;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.StringUtil;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -37,6 +43,9 @@ public class MedicalManagementService {
     private PatientService patientService;
     @Autowired
     private RedisLikeService redisLikeService;
+    @Autowired
+    private YiZhuLuRuDao yiZhuLuRuDao;
+
 
 
     public ResultVo<Map<String,Object>> cqYzPrint(String patNo, Integer times) {
@@ -88,7 +97,7 @@ public class MedicalManagementService {
                }
            }
        }
-       Patient patientInfo = patientService.getPatientBaseInfo(patNo);
+       Patient patientInfo = getPatientBaseInfo(patNo,times);
        map.put("yzPrintVOList",yzPrintVOList);
        map.put("patientInfo",patientInfo);
        return ResultVoUtil.success(map);
@@ -111,5 +120,112 @@ public class MedicalManagementService {
        List<Patient> patient = dao.queryPatientInfo(query);
        return patient;
    }
+    /**
+     * @description:查询医嘱
+     * @author: lihong
+     * @date: 2023/4/20 10:34
+     * @param: yzQueryBase
+     * @return: java.lang.Object
+     **/
+    public Map<String,Object> queryYz(YzQueryBase yzQueryBase) {
+        Map<String, Object> result = new HashMap<>(3);
+        List<XinZhenYzActOrder> yiZhuList = listYzActOrder(yzQueryBase);
+        if (CollUtil.isNotEmpty(yiZhuList)) {
+            List<XinZhenYzActOrder> childrenList = yiZhuList.stream().filter(o -> o.getParentNo() != null).collect(Collectors.toList());
+            Map<Long, List<XinZhenYzActOrder>> groupMap = null;
+            if (CollUtil.isNotEmpty(childrenList)) {
+                groupMap = childrenList.stream().collect(Collectors.groupingBy(o -> Long.valueOf(o.getParentNo().longValue())));
+            }
+            for (XinZhenYzActOrder item : yiZhuList) {
+                if ("00".equals(item.getSerial())) {
+                    item.setGroupNoName("项目");
+                    item.setSerialName("项目");
+                } else {
+                    if ("01".equals(item.getSerial())) {
+                        item.setSerialName("小包装");
+                    } else if ("99".equals(item.getSerial())) {
+                        item.setSerialName("大包装");
+                    }
+                }
+                if (MapUtil.isNotEmpty(groupMap)) {
+                    if (item.getParentNo() == null && groupMap.containsKey(item.getActOrderNo().longValue())) {
+                        item.setOrderGroup("┏");
+                    } else if (item.getParentNo() != null) {
+                        List<XinZhenYzActOrder> orderList = groupMap.get(item.getParentNo().longValue());
+                        if (item.getActOrderNo() == orderList.get(orderList.size() - 1).getActOrderNo()) {
+                            item.setOrderGroup("┗");
+                        } else {
+                            item.setOrderGroup("┃");
+                        }
+                    }
+                }
+            }
+
+        }
+        Patient patientInfo = getPatientBaseInfo(yzQueryBase.getPatNo(),yzQueryBase.getTimes());
+        result.put("patientInfo", patientInfo);
+        result.put("yzDataList",yiZhuList);
+        return result;
+    }
 
+    @NotNull
+    public QueryWrapper<?> getQueryWrapper(YzQueryBase yzQueryBase) {
+        QueryWrapper<?> qw = new QueryWrapper<>();
+        qw.eq("a.inpatient_no", yzQueryBase.getPatNo()).eq("a.admiss_times", yzQueryBase.getTimes());
+        if ("3".equals(yzQueryBase.getStatusFlag())) {
+            qw.inSql("a.status_flag", "'3','4'");
+        } else if ( StringUtil.notBlank(yzQueryBase.getStatusFlag()) && !"0".equals(yzQueryBase.getStatusFlag())) {
+            qw.eq("a.status_flag", yzQueryBase.getStatusFlag());
+        }
+        /**显示范围 0 全部 1停止 2当前(查询确认和执行) 3 今天 */
+        if ("1".equals(yzQueryBase.getQueryRange())) {
+            qw.eq("a.status_flag", "5");
+        } else if ("2".equals(yzQueryBase.getQueryRange())) {
+            qw.inSql("a.status_flag", "'2','3','4'");
+        } else if ("3".equals(yzQueryBase.getQueryRange())) {
+            Date now = new Date();
+            String nowStr = DateUtil.format(now, "yyyy-MM-dd");
+            qw.ge("a.start_time", nowStr + " 00:00:00");
+            qw.le("a.start_time", nowStr + " 23:59:59");
+        }
+        qw.orderByAsc("a.order_time");
+        return qw;
+    }
+
+
+    public Patient getPatientBaseInfo(String patNo,Integer times){
+        Patient patientInfo = patientService.getPatientBaseInfo(patNo);
+        YzQueryBase yzQueryBase = new YzQueryBase();
+        yzQueryBase.setPatNo(patNo);
+        yzQueryBase.setTimes(times);
+        yzQueryBase.setQueryRange("0");
+        yzQueryBase.setStatusFlag("0");
+        List<XinZhenYzActOrder> orderList = listYzActOrder(yzQueryBase);
+        for(XinZhenYzActOrder item : orderList){
+            if ("3".equals(item.getStatusFlag()) || "4".equals(item.getStatusFlag())) {
+                if(item.getOrderName().contains("级护理")){
+                    patientInfo.setNursingLevel(item.getOrderName());
+                }
+            }
+            if ("05888".equals(item.getOrderCode())) {
+                patientInfo.setCriticallyIllStatus("病重");
+            }else if("05887".equals(item.getOrderCode())) {
+                patientInfo.setCriticallyIllStatus("病危");
+            }
+        }
+        Integer count =   dao.existOprt(patNo, times);
+        if(count != null){
+            patientInfo.setOprtStatus("有手术");
+        }else {
+            patientInfo.setOprtStatus("无手术");
+        }
+        return patientInfo;
+    }
+
+    public List<XinZhenYzActOrder> listYzActOrder(YzQueryBase yzQueryBase) {
+        QueryWrapper<?> qw = getQueryWrapper(yzQueryBase);
+        List<XinZhenYzActOrder> yiZhuList = yiZhuLuRuDao.selectOrderNo(qw);
+        EntityStringTrim.beanAttributeValueTrimList(yiZhuList);
+        return yiZhuList;
+    }
 }