Jelajahi Sumber

输注记录查询 提供app端查询逻辑 对照NB

wangzl 3 bulan lalu
induk
melakukan
402c966fea

+ 19 - 0
pump-admin/src/main/test/com/tuoren/web/Test1.java

@@ -4,7 +4,9 @@ import com.alibaba.druid.support.json.JSONUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.tuoren.TuorenApplication;
+import com.tuoren.common.api.CommonResult;
 import com.tuoren.web.layer.controller.BusPatientController;
+import com.tuoren.web.layer.controller.BusPumpController;
 import com.tuoren.web.layer.d0.BusReceiveRecordUpdateDTO;
 import com.tuoren.web.layer.d0.PumpRemoveRequestDTO;
 import com.tuoren.web.layer.d0.PumpVo;
@@ -16,6 +18,7 @@ import com.tuoren.web.layer.service.IBusPumpService;
 import com.tuoren.web.layer.service.IBusReceiveRecordUpdateService;
 import com.tuoren.web.layer.service.IBusWordService;
 import com.tuoren.web.layer.service.impl.BusPumpServiceImpl;
+import com.tuoren.web.layer.vo.PumpNewParam;
 import com.tuoren.web.layer.vo.PumpParam;
 import com.tuoren.web.layer.vo.ReceiveRecordUpdateQueryParam;
 import com.tuoren.web.layer.vo.WordParam;
@@ -31,6 +34,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -152,4 +156,19 @@ public class Test1 {
         System.out.println(busReceiveRecordUpdateDTO);
     }
 
+    @Test
+    public void test8() throws Exception{
+        PumpNewParam param = new PumpNewParam();
+        param.setHospitalCode("bb3a62d10f8b45e38372fa17f3d56353");
+//        param.setPatientCode("999900091");
+//        param.setPatientId("651b3be0-2491-428d-95b3-3ead80618f17");
+//        param.setExceptionFlag(true);
+//        List<Date> timeRange = new ArrayList<>();
+//        timeRange.add(new Date());
+//        timeRange.add(new Date());
+//        param.setTimeRange(timeRange);
+        param.setTip(false);
+        List<PumpVo> pumpVos = iBusPumpService.queryPumpInfoNew(param);
+        System.out.println(pumpVos.get(0));
+    }
 }

+ 5 - 22
pump-web/src/main/java/com/tuoren/web/layer/controller/BusPatientController.java

@@ -1,40 +1,23 @@
 package com.tuoren.web.layer.controller;
 
-import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.tuoren.common.api.CommonResult;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-
-import com.tuoren.common.utils.ConstastUtils;
-import com.tuoren.common.utils.enums.LogType;
-import com.tuoren.web.layer.entity.BusAnalgesicScoreEntity;
-import com.tuoren.web.layer.entity.SysBreathEntity;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.tuoren.common.api.CommonResult;
+import com.tuoren.web.layer.entity.BusPatientEntity;
+import com.tuoren.web.layer.service.IBusPatientService;
 import com.tuoren.web.layer.vo.PatientExceptionFlagParam;
 import com.tuoren.web.layer.vo.PatientParam;
-import com.tuoren.web.utils.ConverterUtils;
-import com.tuoren.web.utils.DataUtils;
-import com.tuoren.web.utils.LogUtils;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.rabbit.connection.CorrelationData;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
 import org.springframework.web.bind.annotation.*;
 
-import com.tuoren.web.layer.service.IBusPatientService;
-import com.tuoren.web.layer.entity.BusPatientEntity;
-
 import java.io.Serializable;
 import java.util.List;
 
-import org.springframework.web.bind.annotation.RestController;
-
 /**
  * <p>
  *  前端控制器

+ 23 - 0
pump-web/src/main/java/com/tuoren/web/layer/controller/BusPumpController.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import com.tuoren.web.layer.d0.PumpRemoveRequestDTO;
+import com.tuoren.web.layer.vo.PumpNewParam;
 import com.tuoren.web.layer.vo.PumpParam;
 import com.tuoren.web.layer.entity.BusPatientEntity;
 import com.tuoren.web.layer.entity.SysUserEntity;
@@ -215,6 +216,28 @@ public class BusPumpController{
             return CommonResult.failed();
         }
     }
+    @ApiOperation("获取注液信息和病人信息")
+    @PostMapping("/getPumpInfoNew")
+    public CommonResult getPumpInfoNew(PumpNewParam pumpParam) throws Exception{
+        try{
+            QueryWrapper<BusPatientEntity> pie = new QueryWrapper<BusPatientEntity>();
+            if(StrUtil.isNotBlank(pumpParam.getPatientId())){
+                pie.eq(StrUtil.isNotBlank(pumpParam.getPatientId()),"patient_id",pumpParam.getPatientId());
+            } else {
+                return CommonResult.failed("请输入患者ID");
+            }
+            BusPatientEntity patientInfoEntity = iBusPatientService.getOne(pie);
+            pumpParam.setPatientCode(patientInfoEntity.getPatientCode());
+            List<PumpVo> pumpVo = iBusPumpEntityService.queryPumpInfoNew(pumpParam);
+            if(!pumpVo.isEmpty()){
+                return CommonResult.success(pumpVo.get(0));
+            }
+            return CommonResult.noData();
+        } catch (Exception e) {
+            log.error("出现错误, {}",e.getMessage());
+            return CommonResult.failed();
+        }
+    }
 
 
     /**

+ 2 - 0
pump-web/src/main/java/com/tuoren/web/layer/d0/PumpVo.java

@@ -44,6 +44,8 @@ public class PumpVo extends BusPumpEntity {
     private  String formula;
     //异常标识
     private  Boolean exceptionFlag;
+    //评价状态  0 未评价 1 待评价 2 已评价
+    private Integer scoreType;
     // 不在服务区
 //    private Boolean noSignal = false;
     // 医院ID

+ 8 - 2
pump-web/src/main/java/com/tuoren/web/layer/entity/BusPatientEntity.java

@@ -1,13 +1,16 @@
 package com.tuoren.web.layer.entity;
+
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDateTime;
-import java.io.Serializable;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
 /**
  * <p>
  * 
@@ -124,4 +127,7 @@ public class BusPatientEntity implements Serializable {
     @ApiModelProperty("异常标识")
     private Boolean exceptionFlag;
 
+    @ApiModelProperty
+    private Date lastScoreTime;
+
 }

+ 2 - 0
pump-web/src/main/java/com/tuoren/web/layer/mapper/BusPumpMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.tuoren.web.layer.entity.BusPumpEntity;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.tuoren.web.layer.d0.PumpVo;
+import com.tuoren.web.layer.vo.PumpNewParam;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -51,6 +52,7 @@ public interface BusPumpMapper extends BaseMapper<BusPumpEntity> {
             @Param("hospitalCode") String hospitalCode
     );
 
+    List<PumpVo> queryPumpInfoNew(@Param("pumpParam")PumpNewParam pumpParam);
     List<PumpVo> queryPumpWarnListByUser(
             @Param("userCode") String userCode,
             @Param("stateFlag") Integer stateFlag,

+ 6 - 0
pump-web/src/main/java/com/tuoren/web/layer/service/IBusPumpService.java

@@ -2,6 +2,7 @@ package com.tuoren.web.layer.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.tuoren.web.layer.d0.PumpRemoveRequestDTO;
+import com.tuoren.web.layer.vo.PumpNewParam;
 import com.tuoren.web.layer.vo.PumpParam;
 import com.tuoren.web.layer.entity.BusPumpEntity;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -56,6 +57,11 @@ public interface IBusPumpService extends IService<BusPumpEntity> {
      * @return
      */
     List<PumpVo> queryPumpInfo(PumpParam pumpParam);
+    /**
+     *  获取注液信息和病人信息对应NB新开发
+     * @return
+     */
+    List<PumpVo> queryPumpInfoNew(PumpNewParam pumpParam);
 
 
     void removePump(List<String> ids);

+ 10 - 0
pump-web/src/main/java/com/tuoren/web/layer/service/impl/BusAnalgesicScoreServiceImpl.java

@@ -1,5 +1,6 @@
 package com.tuoren.web.layer.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.tuoren.web.layer.vo.AnalgesicScoreParam;
@@ -22,6 +23,8 @@ import com.tuoren.web.layer.mapper.BusPumpMapper;
 import com.tuoren.web.layer.mapper.BusSolutionMapper;
 import com.tuoren.web.layer.service.IBusAnalgesicScoreService;
 
+import java.time.ZoneId;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -80,10 +83,17 @@ public class BusAnalgesicScoreServiceImpl extends ServiceImpl<BusAnalgesicScoreM
 
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public long insertAcqId(BusAnalgesicScoreEntity busAnalgesicScoreEntity) {
 		busAnalgesicScoreEntity.setId(System.currentTimeMillis());
 //		return this.baseMapper.insertAcqId(busAnalgesicScoreEntity);
 		save(busAnalgesicScoreEntity);
+		Date lastScoreTime = Date.from(busAnalgesicScoreEntity.getFollowDate().atZone(ZoneId.systemDefault()).toInstant());
+		busPatinetMapper.update(null, new LambdaUpdateWrapper<BusPatientEntity>()
+				.set(BusPatientEntity::getLastScoreTime,lastScoreTime)
+				.eq(BusPatientEntity::getPatientCode,busAnalgesicScoreEntity.getPatientCode())
+				.eq(BusPatientEntity::getHospitalCode,busAnalgesicScoreEntity.getHospitalCode())
+				.eq(BusPatientEntity::getPumpCode,busAnalgesicScoreEntity.getPumpCode()));
 		return busAnalgesicScoreEntity.getId();
 	}
 

+ 29 - 0
pump-web/src/main/java/com/tuoren/web/layer/service/impl/BusPumpServiceImpl.java

@@ -19,6 +19,7 @@ import com.tuoren.web.layer.mapper.BusPumpMapper;
 import com.tuoren.web.layer.mapper.BusReceiveRecordCopyMapper;
 import com.tuoren.web.layer.mapper.BusReceiveRecordMapper;
 import com.tuoren.web.layer.service.IBusPumpService;
+import com.tuoren.web.layer.vo.PumpNewParam;
 import com.tuoren.web.layer.vo.PumpParam;
 import com.tuoren.web.rabbit.RabbitHandle;
 import org.springframework.beans.BeanUtils;
@@ -184,6 +185,34 @@ public class BusPumpServiceImpl extends ServiceImpl<BusPumpMapper, BusPumpEntity
         );
     }
 
+    /**
+     * 获取注液信息和病人信息对应NB新开发
+     *
+     * @param pumpParam
+     * @return
+     */
+    @Override
+    public List<PumpVo> queryPumpInfoNew(PumpNewParam pumpParam) {
+        //特殊处理报警
+        // 输液结束 未装药盒 堵塞 极限 电量耗尽  气泡 输注总量 电机失控 机械故障
+        String[] alarmList = {"输液结束","未装药盒", "堵塞", "极限", "电量耗尽", "气泡", "输注总量", "电机失控", "机械故障"};
+        if(Boolean.TRUE.equals(pumpParam.getAlarm())){
+            pumpParam.setAlarmList(Arrays.asList(alarmList));
+        }else if(Boolean.FALSE.equals(pumpParam.getAlarm())){
+            pumpParam.setAlarmList(Arrays.asList(alarmList));
+        }
+        //特殊处理提示
+        //镇痛不足
+        String[] tipList = {"镇痛不足"};
+        if(Boolean.TRUE.equals(pumpParam.getTip())){
+            pumpParam.setTipList(Arrays.asList(tipList));
+        }else if(Boolean.FALSE.equals(pumpParam.getTip())){
+            pumpParam.setTipList(Arrays.asList(tipList));
+        }
+
+        return this.getBaseMapper().queryPumpInfoNew(pumpParam);
+    }
+
     @Override
     public void removePump(List<String> ids) {
         if(CollectionUtil.isEmpty(ids)){

+ 89 - 0
pump-web/src/main/java/com/tuoren/web/layer/vo/PumpNewParam.java

@@ -0,0 +1,89 @@
+package com.tuoren.web.layer.vo;
+
+/**
+ * @author wangzl
+ * @description: TODO
+ * @date 2025/8/15 8:03
+ */
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "PumpNewParam")
+public class PumpNewParam {
+
+    @ApiModelProperty(value = "患者ID")
+    private String patientId;
+
+    @ApiModelProperty(value = "住院号")
+    private String patientCode;
+
+    @ApiModelProperty(value = "医院编码")
+    private String hospitalCode;
+
+    @ApiModelProperty("泵编号")
+    private String pumpCode;
+
+    @ApiModelProperty(value = "默认评价时间间隔", hidden = true)
+    private int defaultEvaluateTime = 1;
+
+    //泵类型,病区筛选,排序,评价状态,标识状态,时间,运行状态,报警,提示,管理方式
+    @ApiModelProperty(value = "泵类型")
+    private String productCode;
+
+    @ApiModelProperty(value = "病区")
+    private String wardCode;
+
+    @ApiModelProperty(value = "排序  true:正序 false:倒序  空:默认排序倒序")
+    private Boolean sort;
+
+    //0 未评价 1 待评价  2 已评价
+    @ApiModelProperty(value = "评价状态| 0 未评价 1 待评价  2 已评价")
+    private Integer scoreType;
+
+    @ApiModelProperty(value = "标识状态 ")
+    private Boolean exceptionFlag;
+
+    @ApiModelProperty(value = "时间")
+    private List<Date> timeRange;
+
+    // 开机 运行 关机 暂停 待机 不在服务区
+    // Shutdown(0,"关机"), StartUp(1,"开机"),  Running(2,"运行"),  Pause(3,"暂停"), Waiting(4,"待机"),   NoSignal(5,"不在服务区")
+    @ApiModelProperty(value = "运行状态 | 0  关机 1 开机 2 运行 3 暂停 4 待机 5 不在服务区")
+    private Integer runStatus;
+
+    //输液结束 未装药盒 堵塞 极限 电量耗尽  气泡 输注总量 电机失控 机械故障
+    @ApiModelProperty(value = "报警|  true 有报警 false 无报警 空 全部 ")
+    private Boolean alarm;
+    //镇痛不足
+    @ApiModelProperty(value = "提示    true 有报警 false 无报警 空 全部 ")
+    private Boolean tip;
+
+    @ApiModelProperty(value = "报警",hidden = true)
+    private List<String> alarmList;
+
+    @ApiModelProperty(value = "提示",hidden = true)
+    private List<String> tipList;
+
+    public void setTimeRange(List<Date> startTime) {
+        this.timeRange = new ArrayList<>();
+        if (CollectionUtil.isNotEmpty(startTime)) {
+            this.timeRange.add(DateUtil.beginOfDay(CollectionUtil.getFirst(startTime)));
+            if (startTime.size() > 1) {
+                this.timeRange.add(DateUtil.endOfDay(CollectionUtil.getLast(startTime)));
+            }
+
+        }
+    }
+
+}

+ 91 - 0
pump-web/src/main/resources/mapper/BusPumpEntityMapper.xml

@@ -279,5 +279,96 @@
     <select id="queryNewTimePumpInfo" resultType="com.tuoren.web.layer.entity.BusPumpEntity">
         SELECT last_upload_time,pump_code  FROM bus_pump where bus_pump.pump_code=#{pumpCode} ORDER BY last_upload_time desc limit 1;
     </select>
+    <select id="queryPumpInfoNew" resultType="com.tuoren.web.layer.d0.PumpVo">
+        SELECT
+        pi.patient_id,
+        pi.ward_code AS patientInfoWard,
+        pi.NAME,
+        pi.sex,
+        pi.age,
+        pi.bmi,
+        pi.height,
+        pi.operation_doctor,
+        pi.easy_mode,
+        pi.bed_code AS patientInfoBedNo,
+        pi.anesthesia_mode AS anesthesiaMode,
+        pi.anesthesia_doctor1,
+        pi.anesthesia_doctor2,
+        pi.operation_name,
+        pi.formula,
+        pi.exception_flag,
+        CASE
+        WHEN pi.last_score_time IS NULL THEN
+        0
+        WHEN DATE_ADD(pi.last_score_time, INTERVAL #{pumpParam.defaultEvaluateTime} MINUTE) &gt; NOW() THEN
+        2
+        WHEN DATE_ADD(pi.last_score_time, INTERVAL #{pumpParam.defaultEvaluateTime} MINUTE) &lt; NOW() THEN
+        1 ELSE 0
+        END AS scoreType ,
+        p.*
+        FROM
+        bus_pump p
+        LEFT JOIN bus_patient pi ON p.pump_code = pi.pump_code
+        AND p.patient_code = pi.patient_code
+        AND p.hospital_code = pi.hospital_code
+        <where>
+            AND p.hospital_code = #{pumpParam.hospitalCode}
+            AND pi.patient_code IS NOT NULL
+            <if test="pumpParam.pumpCode != null and pumpParam.pumpCode != ''">
+                AND p.pump_code = #{pumpParam.pumpCode}
+            </if>
+            <if test="pumpParam.productCode != null and pumpParam.productCode != ''">
+                AND p.product_code = #{pumpParam.productCode}
+            </if>
+            <if test="pumpParam.wardCode != null and pumpParam.wardCode != ''">
+                AND pi.ward_code = #{pumpParam.wardCode}
+            </if>
+            <if test="pumpParam.scoreType != null and pumpParam.scoreType != ''">
+                AND p.scoreType = #{pumpParam.scoreType}
+            </if>
+            <if test="pumpParam.exceptionFlag != null">
+                AND pi.exception_flag = #{pumpParam.exceptionFlag}
+            </if>
+            <if test="pumpParam.timeRange != null and pumpParam.timeRange.size() > 0">
+                AND p.start_time &gt;= #{pumpParam.timeRange[0]}
+            </if>
+            <if test="pumpParam.timeRange != null and pumpParam.timeRange.size() > 1">
+                AND p.start_time &lt;= #{pumpParam.timeRange[1]}
+            </if>
+            <if test="pumpParam.runStatus != null">
+                AND p.run_state = #{pumpParam.runStatus}
+            </if>
+            <if test="pumpParam.alarm != null and pumpParam.alarm">
+                AND p.view_state in
+                <foreach item="item" collection="pumpParam.alarmList" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="pumpParam.alarm != null and !pumpParam.alarm">
+                AND p.view_state not in
+                <foreach item="item" collection="pumpParam.alarmList" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="pumpParam.tip != null and pumpParam.tip">
+                AND p.view_state in
+                <foreach item="item" collection="pumpParam.tipList" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="pumpParam.tip != null and !pumpParam.tip">
+                AND p.view_state not in
+                <foreach item="item" collection="pumpParam.tipList" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        <if test="(pumpParam.sort != null and !pumpParam.sort) or pumpParam.sort == null">
+            ORDER BY p.last_upload_time desc
+        </if>
+        <if test="pumpParam.sort != null and pumpParam.sort ">
+            ORDER BY p.last_upload_time desc
+        </if>
+    </select>
 
 </mapper>