瀏覽代碼

fix 输注处理代码,不完全

龙三郎 3 年之前
父節點
當前提交
571a5abbaa
共有 23 個文件被更改,包括 379 次插入63 次删除
  1. 20 13
      coffee-system/src/main/java/com/coffee/aliyun/AliyunConsumerGroupService.java
  2. 16 0
      coffee-system/src/main/java/com/coffee/aliyun/utils/Constants.java
  3. 33 0
      coffee-system/src/main/java/com/coffee/aliyun/utils/Items.java
  4. 46 0
      coffee-system/src/main/java/com/coffee/aliyun/utils/PumpParams.java
  5. 2 2
      coffee-system/src/main/java/com/coffee/bus/controller/BusAlarmController.java
  6. 2 2
      coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceEntity.java
  7. 2 2
      coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceHistoryEntity.java
  8. 2 3
      coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceRunningEntity.java
  9. 60 14
      coffee-system/src/main/java/com/coffee/bus/entity/BusInfusionHistoryEntity.java
  10. 3 2
      coffee-system/src/main/java/com/coffee/bus/entity/BusInfusionModifyEntity.java
  11. 2 2
      coffee-system/src/main/java/com/coffee/bus/entity/PatientDeviceRepeatDomain.java
  12. 2 2
      coffee-system/src/main/java/com/coffee/bus/entity/PatientMonitorDomain.java
  13. 6 4
      coffee-system/src/main/java/com/coffee/bus/enums/DeviceTypeEnum.java
  14. 19 0
      coffee-system/src/main/java/com/coffee/bus/enums/FlowStatusEnum.java
  15. 21 0
      coffee-system/src/main/java/com/coffee/bus/listener/event/infusion/InfusionCreateEvent.java
  16. 21 0
      coffee-system/src/main/java/com/coffee/bus/listener/event/infusion/InfusionUpdateEvent.java
  17. 11 0
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusDeviceService.java
  18. 80 0
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusInfusionHistoryService.java
  19. 22 0
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusPatientService.java
  20. 0 8
      coffee-system/src/main/java/com/coffee/bus/service/dto/PatientDeviceNoneResult.java
  21. 2 2
      coffee-system/src/main/java/com/coffee/bus/service/dto/PatientDeviceRepeatResult.java
  22. 2 2
      coffee-system/src/main/java/com/coffee/bus/service/dto/PatientMonitorQuery.java
  23. 5 5
      coffee-system/src/main/java/com/coffee/bus/websocket/listener/DeviceInfoListener.java

+ 20 - 13
coffee-system/src/main/java/com/coffee/aliyun/AliyunConsumerGroupService.java

@@ -1,15 +1,19 @@
 package com.coffee.aliyun;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.coffee.aliyun.utils.Constants;
+import com.coffee.aliyun.utils.Items;
 import com.coffee.bus.bean.AliIotConfig;
 import com.coffee.bus.entity.BusDeviceEntity;
 import com.coffee.bus.entity.BusDeviceRunningEntity;
+import com.coffee.bus.entity.BusInfusionHistoryEntity;
 import com.coffee.bus.listener.event.bean.DeviceInfoEvent;
 import com.coffee.bus.service.LocalBusDeviceService;
+import com.coffee.bus.service.LocalBusInfusionHistoryService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -33,20 +37,21 @@ import java.util.concurrent.TimeUnit;
 @Slf4j
 public class AliyunConsumerGroupService {
 
-    private final ApplicationContext applicationContext;
-
     // 初始化订阅客户端
     private final AliyunIotSubscribeClient client;
 
     // 设备Service
     private final LocalBusDeviceService deviceService;
 
-    public AliyunConsumerGroupService(ApplicationContext applicationContext,
-                                      AliyunIotSubscribeClient client,
-                                      LocalBusDeviceService deviceService) {
-        this.applicationContext = applicationContext;
+    // 输注Service
+    private final LocalBusInfusionHistoryService infusionHistoryService;
+
+    public AliyunConsumerGroupService(AliyunIotSubscribeClient client,
+                                      LocalBusDeviceService deviceService,
+                                      LocalBusInfusionHistoryService infusionHistoryService) {
         this.client = client;
         this.deviceService = deviceService;
+        this.infusionHistoryService = infusionHistoryService;
     }
 
     @Value("${aliyun.server-subscription.enable:false}")
@@ -160,12 +165,14 @@ public class AliyunConsumerGroupService {
                  * \"patientCode\":{\"value\":111110000,\"time\":1645606941717}}}"
                  * }
                  */
-                // 设备属性上报
+                // 设备属性集合
+                Items items = new Items(content.getJSONObject("items"));
+                BusInfusionHistoryEntity infusionHistory = infusionHistoryService.saveInfusion(deviceName,items);
 
 
-                // 发布设备信息事件
+                // 发布设备信息事件。处理完毕,传向下一步处理
                 DeviceInfoEvent deviceInfoEvent = new DeviceInfoEvent(this,new BusDeviceRunningEntity(),"123456");
-                applicationContext.publishEvent(deviceInfoEvent);
+                SpringUtil.publishEvent(deviceInfoEvent);
 
             }else if(topic.matches("[\\w\\/]+thing/lifecycle$")){// 设备生命周期
                 // 获取生命周期类型
@@ -174,10 +181,10 @@ public class AliyunConsumerGroupService {
                     // 创建设备
                     BusDeviceEntity device = new BusDeviceEntity();
                     device.setDeviceId(deviceName);
-                    device.setCreateBy("1");
-                    device.setUpdateBy("1");
+                    device.setCreateBy(Constants.DefaultCreateBy);
+                    device.setUpdateBy(Constants.DefaultUpdateBy);
                     device.setUpdateTime(now);
-                    device.setTenantId("1");
+                    device.setTenantId(Constants.DefaultHospital);
 
                     // 配置信息
                     AliIotConfig config = new AliIotConfig();

+ 16 - 0
coffee-system/src/main/java/com/coffee/aliyun/utils/Constants.java

@@ -0,0 +1,16 @@
+package com.coffee.aliyun.utils;
+
+/**
+ * @Author XX
+ * @Date 2022-04-26 13:44:36
+ * @Version 1.0
+ * @Description XXX
+ */
+public class Constants {
+    // 默认医院
+    public static final String DefaultHospital = "1";
+    // 默认创建人
+    public static final String DefaultCreateBy = "1";
+    // 默认更新人
+    public static final String DefaultUpdateBy = "1";
+}

+ 33 - 0
coffee-system/src/main/java/com/coffee/aliyun/utils/Items.java

@@ -0,0 +1,33 @@
+package com.coffee.aliyun.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author 龙三郎
+ * @Date 2022-04-26 10:18:08
+ * @Version 1.0
+ * @Description 方便获取阿里云数据中的items中的属性的value
+ */
+@AllArgsConstructor
+public class Items {
+    public static final String VALUE = "value";
+
+    private JSONObject items;
+
+    public String getString(PumpParams param){
+        return items.getJSONObject(param.getParam()).getString(VALUE);
+    }
+
+    public Integer getInteger(PumpParams param){
+        return items.getJSONObject(param.getParam()).getInteger(VALUE);
+    }
+
+    public BigDecimal getBigDecimal(PumpParams param){
+        return items.getJSONObject(param.getParam()).getBigDecimal(VALUE);
+    }
+
+}

+ 46 - 0
coffee-system/src/main/java/com/coffee/aliyun/utils/PumpParams.java

@@ -0,0 +1,46 @@
+package com.coffee.aliyun.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+/**
+ * @Author 龙三郎
+ * @Date 2022-04-26 10:37:47
+ * @Version 1.0
+ * @Description 设备上传的数据参数
+ */
+@AllArgsConstructor
+public enum PumpParams {
+    protocolHeader("protocolHeader","协议头"),
+    dataLength("dataLength","数据长度"),
+    pumpType("pumpType","泵类型"),
+    classification("classification","分类标识"),
+    dataNumber("dataNumber","数据编号"),
+    patientCodeLength("patientCodeLength","住院号长度"),
+    patientCode("patientCode","住院号"),
+    ward("ward","病区"),
+    bedNo("bedNo","床号"),
+    totalDose("totalDose","总量"),
+    maxDose("maxDose","极限量"),
+    singleDosis("singleDosis","追加量"),
+    lockTime("lockTime","锁时时间"),
+    flow("flow","持续量"),
+    finishedDosis("finishedDosis","已输入量"),
+    firstDosis("firstDosis","首次量"),
+    pcaValid("pcaValid","PCA有效次数"),
+    pcaInvalid("pcaInvalid","PCA无效次数"),
+    electricQuantity("electricQuantity","电池电量"),
+    runStatus("runStatus","运行状态"),
+    alarmStatus("alarmStatus","报警"),
+    warnWillFinished("warnWillFinished","输液将结束预报"),
+    warnAnalgesicPoor("warnAnalgesicPoor","镇痛不足预报"),
+    warnLowBattery("warnLowBattery","电量偏低预报"),
+    CRC("CRC","CRC");
+
+    @Getter
+    private String param;
+    @Getter
+    private String info;
+
+}

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/controller/BusAlarmController.java

@@ -3,7 +3,7 @@ package com.coffee.bus.controller;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.coffee.bus.entity.BusDeviceAlarmEntity;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.service.LocalBusDeviceAlarmService;
 import com.coffee.common.crud.BaseService;
 import com.coffee.common.crud.controller.BaseCrudController;
@@ -48,7 +48,7 @@ public class BusAlarmController extends BaseCrudController<BusDeviceAlarmEntity,
     }
 
     public static void main(String[] args) {
-        set(DeviceEnum.continuous);
+        set(DeviceTypeEnum.continuous);
     }
 
 

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceEntity.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.coffee.bus.bean.AliIotConfig;
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
 import com.coffee.common.entity.RecordCreationEntity;
 import com.coffee.common.entity.RecordModifierEntity;
@@ -42,7 +42,7 @@ public class BusDeviceEntity extends TenantGenericEntity<String,String> implemen
 
     @ApiModelProperty(value = "设备类型")
     @Length(max = 255,message = "设备类型不得超过255个字符")
-    private DeviceEnum type;
+    private DeviceTypeEnum type;
 
     @ApiModelProperty(value = "运行状态",readOnly = true)
     @TableField(javaType = true,updateStrategy = FieldStrategy.IGNORED)

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceHistoryEntity.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
 import com.coffee.common.entity.TenantGenericEntity;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -180,7 +180,7 @@ public class BusDeviceHistoryEntity extends TenantGenericEntity<String,String> {
 
     @ApiModelProperty(value = "泵类型",readOnly = true)
     @TableField(updateStrategy = FieldStrategy.NEVER)
-    private DeviceEnum type;
+    private DeviceTypeEnum type;
 
     @ApiModelProperty(value = "数据上传时间",readOnly = true,hidden = true)
     @JsonIgnoreProperties(allowSetters = true)

+ 2 - 3
coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceRunningEntity.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
 import com.coffee.common.entity.TenantGenericEntity;
 import com.coffee.common.enums.SexEnum;
@@ -17,7 +17,6 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 import org.apache.ibatis.type.EnumTypeHandler;
-import org.apache.ibatis.type.EnumTypeHandler;
 
 import javax.validation.constraints.DecimalMax;
 import javax.validation.constraints.DecimalMin;
@@ -209,7 +208,7 @@ public class BusDeviceRunningEntity extends TenantGenericEntity<String,String> {
 
     @ApiModelProperty(value = "泵类型",readOnly = true)
     @TableField(typeHandler = EnumTypeHandler.class,javaType = true,updateStrategy = FieldStrategy.NEVER)
-    private DeviceEnum type;
+    private DeviceTypeEnum type;
 
     @ApiModelProperty(value = "数据上传时间",readOnly = true,hidden = true)
     @JsonIgnoreProperties(allowSetters = true)

+ 60 - 14
coffee-system/src/main/java/com/coffee/bus/entity/BusInfusionHistoryEntity.java

@@ -1,9 +1,14 @@
 package com.coffee.bus.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.coffee.aliyun.utils.Items;
+import com.coffee.aliyun.utils.PumpParams;
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
+import com.coffee.bus.enums.FlowStatusEnum;
+import com.coffee.common.entity.RecordCreationEntity;
+import com.coffee.common.entity.RecordModifierEntity;
 import com.coffee.common.entity.TenantGenericEntity;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import io.swagger.annotations.ApiModel;
@@ -32,16 +37,33 @@ import java.util.Date;
 @Accessors(chain = true)
 @TableName(value = "bus_infusion_history",autoResultMap = true)
 @ApiModel(value="设备输注历史信息记录", description="设备的classification标识每改变一次,就算一次新的输注记录")
-public class BusInfusionHistoryEntity extends TenantGenericEntity<String,String> {
+public class BusInfusionHistoryEntity extends TenantGenericEntity<String,String> implements RecordCreationEntity, RecordModifierEntity {
     @ApiModelProperty(value = "网络泵id",readOnly = true)
     private String deviceId;
 
-    @ApiModelProperty(value = "病号")
-    private String patientCode;
-
     @ApiModelProperty(value = "临床号")
     private String clinicId;
 
+    @ApiModelProperty(value = "患者编号")
+    private String patientId;
+
+
+    @ApiModelProperty(value = "数据分类号,标识某些数据属于同一个输注",readOnly = true)
+    @JsonIgnoreProperties(allowSetters = true)
+    private String classification;
+
+    @ApiModelProperty(value = "数据编号",readOnly = true)
+    @JsonIgnoreProperties(allowSetters = true)
+    private String dataNumber;
+
+    @ApiModelProperty(value = "泵类型",readOnly = true)
+    @TableField(updateStrategy = FieldStrategy.NEVER)
+    private DeviceTypeEnum deviceType;
+
+    @ApiModelProperty(value = "住院号")
+    private String patientCode;
+
+
     /***************临床固定数据*****************/
     @ApiModelProperty(value = "病区")
     private String ward;
@@ -147,6 +169,10 @@ public class BusInfusionHistoryEntity extends TenantGenericEntity<String,String>
     @DecimalMin(value = "0",message ="自调比例最小值不得超过0" )
     private BigDecimal flowAdjustRate;
 
+    @ApiModelProperty(value = "加减档提示",readOnly = true)
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private FlowStatusEnum warnFlow;
+
 
     @ApiModelProperty(value = "泵运行状态",readOnly = true)
     @TableField(updateStrategy = FieldStrategy.IGNORED)
@@ -175,14 +201,6 @@ public class BusInfusionHistoryEntity extends TenantGenericEntity<String,String>
     @ApiModelProperty(value = "备注")
     private String remark;
 
-    @ApiModelProperty(value = "分包标记位",readOnly = true)
-    @JsonIgnoreProperties(allowSetters = true)
-    private String classification;
-
-    @ApiModelProperty(value = "泵类型",readOnly = true)
-    @TableField(updateStrategy = FieldStrategy.NEVER)
-    private DeviceEnum type;
-
     @ApiModelProperty(value = "当前输注记录数据最后上传时间",readOnly = true,hidden = true)
     @JsonIgnoreProperties(allowSetters = true)
     private Date lastUploadTime;
@@ -205,12 +223,28 @@ public class BusInfusionHistoryEntity extends TenantGenericEntity<String,String>
     @ApiModelProperty(value = "该次输注是否已结束")
     private Boolean finished;
 
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String createBy;
+
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateBy;
+
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic(value = "0",delval = "1")
+    private Integer isDelete;
+
     public static BusInfusionHistoryEntity parseRunningInfo(BusDeviceRunningEntity running){
         BusInfusionHistoryEntity entity = new BusInfusionHistoryEntity();
         entity.setDeviceId(running.getDeviceId());
         entity.setClinicId(running.getClinicId());
         entity.setPatientCode(running.getPatientCode());
-        entity.setType(running.getType());
+        entity.setDeviceType(running.getType());
         entity.setWard(running.getWard());
         entity.setBedNo(running.getBedNo());
         entity.setClassification(running.getClassification());
@@ -258,4 +292,16 @@ public class BusInfusionHistoryEntity extends TenantGenericEntity<String,String>
         entity.setClinicStartTime(new Date(31510861L));
         return entity;
     }
+
+    /**
+     * 根据阿里云传回数据的items,设置输注的属性
+     * @param items
+     */
+    public void setFiledsByItems(Items items) {
+        this.patientCode = items.getString(PumpParams.patientCode);
+        this.classification = items.getString(PumpParams.classification);
+        this.dataNumber = items.getString(PumpParams.dataNumber);
+        this.totalDose = items.getInteger(PumpParams.totalDose);
+        this.inputDose = items.getBigDecimal(PumpParams.finishedDosis);
+    }
 }

+ 3 - 2
coffee-system/src/main/java/com/coffee/bus/entity/BusInfusionModifyEntity.java

@@ -5,7 +5,7 @@ import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.common.entity.TenantGenericEntity;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import io.swagger.annotations.ApiModel;
@@ -14,6 +14,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import lombok.experimental.Accessors;
+
 import javax.validation.constraints.DecimalMax;
 import javax.validation.constraints.DecimalMin;
 import javax.validation.constraints.Max;
@@ -43,7 +44,7 @@ public class BusInfusionModifyEntity extends TenantGenericEntity<String,String>
 
     @ApiModelProperty(value = "泵类型",readOnly = true)
     @TableField(updateStrategy = FieldStrategy.NEVER)
-    private DeviceEnum type;
+    private DeviceTypeEnum type;
 
     @ApiModelProperty(value = "总量",readOnly = true)
     @Max(value = 999,message = "总量最大值不得超过999")

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/entity/PatientDeviceRepeatDomain.java

@@ -1,7 +1,7 @@
 package com.coffee.bus.entity;
 
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.common.enums.SexEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -40,7 +40,7 @@ public class PatientDeviceRepeatDomain {
     @ApiModelProperty("设备别名")
     private String deviceAlias;
     @ApiModelProperty("设备运行状态")
-    private DeviceEnum deviceRunState;
+    private DeviceTypeEnum deviceRunState;
     @ApiModelProperty("设备报警信息")
     private DeviceAlarmEnum deviceAlarm;
     @ApiModelProperty("输注开始时间")

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/entity/PatientMonitorDomain.java

@@ -1,7 +1,7 @@
 package com.coffee.bus.entity;
 
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
 import com.coffee.bus.enums.PatientAlarmEnum;
 import com.coffee.common.enums.SexEnum;
@@ -138,7 +138,7 @@ public class PatientMonitorDomain {
     private String remark;
 
     @ApiModelProperty(value = "泵类型")
-    private DeviceEnum deviceType;
+    private DeviceTypeEnum deviceType;
 
     @ApiModelProperty(value = "麻醉医生")
     private String anaDoctor;

+ 6 - 4
coffee-system/src/main/java/com/coffee/bus/enums/DeviceEnum.java → coffee-system/src/main/java/com/coffee/bus/enums/DeviceTypeEnum.java

@@ -15,10 +15,12 @@ import lombok.Getter;
  */
 @AllArgsConstructor
 @JsonFormat(shape = JsonFormat.Shape.OBJECT)
-public enum  DeviceEnum implements IEnum<Integer> {
-    continuous(0,"持续型网络泵"),
-    intelligent(1,"智能泵"),
-    pulse(2,"脉冲泵");
+public enum DeviceTypeEnum implements IEnum<Integer> {
+    no(0,"无泵"),
+    continuous(1,"持续型网络泵"),
+    pulse(2,"脉冲泵"),
+    intelligent(3,"智能泵"),
+    other(4,"其他泵");
 
     @Getter
     @ApiModelProperty("设备编码")

+ 19 - 0
coffee-system/src/main/java/com/coffee/bus/enums/FlowStatusEnum.java

@@ -0,0 +1,19 @@
+package com.coffee.bus.enums;
+
+/**
+ * @Author XX
+ * @Date 2022-04-26 09:28:34
+ * @Version 1.0
+ * @Description XXX
+ */
+public enum FlowStatusEnum {
+    /**
+     * 0 --- 正常(默认值)
+     * 1 --- 加档受限
+     * 2 --- 流速已达上限
+     * 3 --- 加档
+     * 4 --- 减档
+     * 5 --- 低输注状态
+     */
+    DUFAULT, ADDLIMIT, HIGHEST, UP, DOWN, LOWEST
+}

+ 21 - 0
coffee-system/src/main/java/com/coffee/bus/listener/event/infusion/InfusionCreateEvent.java

@@ -0,0 +1,21 @@
+package com.coffee.bus.listener.event.infusion;
+
+import com.coffee.bus.entity.BusInfusionHistoryEntity;
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * @Author XX
+ * @Date 2022-04-26 14:42:27
+ * @Version 1.0
+ * @Description XXX
+ */
+@Getter
+public class InfusionCreateEvent extends ApplicationEvent {
+    private BusInfusionHistoryEntity infusion;
+
+    public InfusionCreateEvent(Object source,BusInfusionHistoryEntity infusion) {
+        super(source);
+        this.infusion = infusion;
+    }
+}

+ 21 - 0
coffee-system/src/main/java/com/coffee/bus/listener/event/infusion/InfusionUpdateEvent.java

@@ -0,0 +1,21 @@
+package com.coffee.bus.listener.event.infusion;
+
+import com.coffee.bus.entity.BusInfusionHistoryEntity;
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * @Author XX
+ * @Date 2022-04-26 14:42:27
+ * @Version 1.0
+ * @Description XXX
+ */
+@Getter
+public class InfusionUpdateEvent extends ApplicationEvent {
+    private BusInfusionHistoryEntity infusion;
+
+    public InfusionUpdateEvent(Object source, BusInfusionHistoryEntity infusion) {
+        super(source);
+        this.infusion = infusion;
+    }
+}

+ 11 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusDeviceService.java

@@ -108,4 +108,15 @@ public class LocalBusDeviceService extends BaseService<BusDeviceMapper, BusDevic
             this.save(entity);
         }
     }
+
+    /**
+     * 根据deviceId获取设备
+     * @param deviceId
+     * @return
+     */
+    public BusDeviceEntity getByDeviceId(String deviceId) {
+        BusDeviceEntity device = getOne(new QueryWrapper<BusDeviceEntity>().lambda()
+                .eq(BusDeviceEntity::getDeviceId,deviceId));
+        return device;
+    }
 }

+ 80 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusInfusionHistoryService.java

@@ -1,11 +1,24 @@
 package com.coffee.bus.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.coffee.aliyun.utils.Constants;
+import com.coffee.aliyun.utils.Items;
+import com.coffee.aliyun.utils.PumpParams;
+import com.coffee.bus.entity.BusDeviceEntity;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
+import com.coffee.bus.entity.BusPatientEntity;
+import com.coffee.bus.listener.event.infusion.InfusionCreateEvent;
 import com.coffee.bus.mapper.BusInfusionHistoryMapper;
 import com.coffee.common.crud.BaseService;
+import jodd.util.ObjectUtil;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 /**
  * @author 龙三郎
  * @version 1.0.0
@@ -14,7 +27,12 @@ import org.springframework.stereotype.Service;
  * @createTime 2022年03月19日 09:27:00
  */
 @Service
+@AllArgsConstructor
 public class LocalBusInfusionHistoryService extends BaseService<BusInfusionHistoryMapper, BusInfusionHistoryEntity,String> {
+
+    private final LocalBusDeviceService deviceService;
+    private final LocalBusPatientService patientService;
+
     @Override
     public void validateBeforeSave(BusInfusionHistoryEntity entity) {
 
@@ -30,6 +48,68 @@ public class LocalBusInfusionHistoryService extends BaseService<BusInfusionHisto
 
     }
 
+    /**
+     * 保存输注
+     * 处理输注数据
+     * @param deviceId
+     * @param items
+     * @return
+     */
+    public BusInfusionHistoryEntity saveInfusion(String deviceId, Items items) {
+
+        // 第一步:判断设备是否存在
+        BusDeviceEntity device = deviceService.getByDeviceId(deviceId);
+        if (Objects.isNull(device)){
+            // 设备不存在,抛个异常
+            throw new RuntimeException("设备不存在");
+        }
+        // 第二步:判断输注是否存在,处理输注
+        // 根据deviceId和分类标识查询输注
+        BusInfusionHistoryEntity infusion = getOneByDeviceIdAndClassification(deviceId,items.getString(PumpParams.classification));
+        // 输注是否存在
+        boolean infusionIsExists = Objects.nonNull(infusion);
+        if (!infusionIsExists){
+            // 输注不存在
+            infusion = new BusInfusionHistoryEntity();
+            infusion.setDeviceId(deviceId);
+            infusion.setCreateBy(Constants.DefaultCreateBy);
+            infusion.setUpdateBy(Constants.DefaultUpdateBy);
+            // 给输注设置租户id
+            infusion.setTenantId(device.getTenantId());
+            // 根据住院号和医院获取一个患者
+            BusPatientEntity patient = patientService.getOneByHospitalAndPatientCode(device.getTenantId(),items.getString(PumpParams.patientCode));
+            infusion.setPatientId(patient.getId());
+            // 添加一个输注
+            this.save(infusion);
+        }
+        // 更新输注数据。
+        infusion.setFiledsByItems(items);
+        this.updateById(infusion);
+
+        // 输注不存在,创建新的输注的时候,需要去请求临床数据
+        if (!infusionIsExists){
+            // 发布输注创建事件,临床管理模块需要订阅该事件,去获取临床数据
+            // 输注监护功能订阅该事件
+            SpringUtil.publishEvent(new InfusionCreateEvent(this,infusion));
+        }else {
+            // 输注数据更新事件
+            SpringUtil.publishEvent(new InfusionCreateEvent(this,infusion));
+        }
+        return infusion;
+    }
+
+    /**
+     * 根据分类标识和设备号获取输注
+     * @param deviceId
+     * @param classification
+     * @return
+     */
+    private BusInfusionHistoryEntity getOneByDeviceIdAndClassification(String deviceId,String classification){
+        return this.getOne(new QueryWrapper<BusInfusionHistoryEntity>().lambda()
+                .eq(BusInfusionHistoryEntity::getDeviceId,deviceId)
+                .eq(BusInfusionHistoryEntity::getClassification,classification));
+    }
+
     public BusInfusionHistoryEntity recentInfusionByPatientCode(String hospitalId, String patientCode) {
         return this
                 .getOne(new QueryWrapper<BusInfusionHistoryEntity>()

+ 22 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusPatientService.java

@@ -1,5 +1,6 @@
 package com.coffee.bus.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -37,6 +38,7 @@ import java.util.*;
  * @createTime 2022年03月19日 09:27:00
  */
 @Service
+@AllArgsConstructor
 @Slf4j
 public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPatientEntity,String> {
     @Autowired
@@ -120,6 +122,26 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
         return result.getRecords();
     }
 
+    /**
+     * 根据医院和住院号获取一个患者
+     * @param tenantId
+     * @param patientCode
+     * @return
+     */
+    public BusPatientEntity getOneByHospitalAndPatientCode(String tenantId, String patientCode) {
+        BusPatientEntity patient = this.getOne(new QueryWrapper<BusPatientEntity>().lambda()
+                .eq(BusPatientEntity::getTenantId,tenantId)
+                .eq(BusPatientEntity::getCode,patientCode));
+        // 如果患者不存在则新增一个患者
+        if (Objects.isNull(patient)){
+            patient = new BusPatientEntity();
+            patient.setTenantId(tenantId);
+            patient.setCode(patientCode);
+            this.save(patient);
+        }
+        return patient;
+    }
+
     /**
      * 病人手动更新当前监控的临床信息
      * @param clinic

+ 0 - 8
coffee-system/src/main/java/com/coffee/bus/service/dto/PatientDeviceNoneResult.java

@@ -1,18 +1,10 @@
 package com.coffee.bus.service.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler;
-import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
 import com.coffee.common.enums.SexEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
 import lombok.Data;
 
-import java.util.Date;
-import java.util.List;
-
 /**
  * @author lifang
  * @version 1.0.0

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/service/dto/PatientDeviceRepeatResult.java

@@ -1,7 +1,7 @@
 package com.coffee.bus.service.dto;
 
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.common.enums.SexEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -56,7 +56,7 @@ public class PatientDeviceRepeatResult {
         @ApiModelProperty("设备别名")
         private String deviceAlias;
         @ApiModelProperty("设备运行状态")
-        private DeviceEnum deviceRunState;
+        private DeviceTypeEnum deviceRunState;
         @ApiModelProperty("设备报警信息")
         private DeviceAlarmEnum deviceAlarm;
         @ApiModelProperty("输注开始时间")

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/service/dto/PatientMonitorQuery.java

@@ -1,7 +1,7 @@
 package com.coffee.bus.service.dto;
 
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -24,7 +24,7 @@ public class PatientMonitorQuery {
     private List<String> wards;
 
     @ApiModelProperty("设备类型查询,网络泵、脉冲泵、智能泵")
-    private List<DeviceEnum> types;
+    private List<DeviceTypeEnum> types;
 
     @ApiModelProperty("设备输注最后运行状态查询")
     private List<DeviceStatusEnum> deviceStatus;

+ 5 - 5
coffee-system/src/main/java/com/coffee/bus/websocket/listener/DeviceInfoListener.java

@@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.coffee.bus.entity.*;
 import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceEnum;
+import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.enums.PatientAlarmEnum;
 import com.coffee.bus.listener.event.bean.HisEvent;
 import com.coffee.bus.registry.device.DeviceRegistry;
@@ -463,7 +463,7 @@ public class DeviceInfoListener {
         }
         ++count;
         BusDeviceRunningEntity pump = new BusDeviceRunningEntity();
-        pump.setType(DeviceEnum.continuous);
+        pump.setType(DeviceTypeEnum.continuous);
         pump.setClassification(String.valueOf(mark));
         pump.setDeviceId("123");
         pump.setPatientCode("456");
@@ -479,7 +479,7 @@ public class DeviceInfoListener {
 
         BusDeviceRunningEntity pump1 = new BusDeviceRunningEntity();
         pump1.setDeviceId("456");
-        pump1.setType(DeviceEnum.continuous);
+        pump1.setType(DeviceTypeEnum.continuous);
         pump1.setClassification(String.valueOf(mark));
         pump1.setPatientCode("456");
         pump1.setRemainDose(BigDecimal.valueOf(RandomUtil.randomInt(100)));
@@ -493,7 +493,7 @@ public class DeviceInfoListener {
         Thread.sleep(5000);
 
         BusDeviceRunningEntity pump2 = new BusDeviceRunningEntity();
-        pump2.setType(DeviceEnum.continuous);
+        pump2.setType(DeviceTypeEnum.continuous);
         pump2.setDeviceId("456");
         pump2.setClassification(String.valueOf(mark));
         pump2.setPatientCode("789");
@@ -512,7 +512,7 @@ public class DeviceInfoListener {
         BusDeviceRunningEntity pump3 = new BusDeviceRunningEntity();
         pump3.setDeviceId("456");
         pump3.setClassification(String.valueOf(mark));
-        pump3.setType(DeviceEnum.continuous);
+        pump3.setType(DeviceTypeEnum.continuous);
         pump3.setPatientCode("456");
         pump3.setRemainDose(BigDecimal.valueOf(RandomUtil.randomInt(100)));
         pump3.setContinueDose(BigDecimal.valueOf(RandomUtil.randomInt(100)));