Przeglądaj źródła

add 低输注报警、镇痛不足报警、不在服务区报警 保存

A17404李放 3 lat temu
rodzic
commit
37eba8ebd1

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

@@ -266,8 +266,6 @@ public class BusPatientController  implements BaseQueryController<BusPatientEnti
         }
         if(haveDevice){
             BusInfusionHistoryEntity infusion =infusionService.currentInClinic(clinic.getId());
-//            BusInfusionHistoryEntity infusion = infusionService.getOne(new QueryWrapper<BusInfusionHistoryEntity>().lambda().eq(BusInfusionHistoryEntity::getClinicId,clinic.getId())
-//                    .orderByDesc(BusInfusionHistoryEntity::getStartTime).last("limit 1"));
             result.setInfusion(infusion);
             if(StrUtil.isNotEmpty(infusion.getClinicId())){
                 result.setClinic(clinicService.getById(infusion.getClinicId()));

+ 36 - 0
coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceAlarmEntity.java

@@ -143,4 +143,40 @@ public class BusDeviceAlarmEntity extends TenantGenericEntity<String,String> {
         }
         return false;
     }
+
+
+    public static BusDeviceAlarmEntity noSignalOf(String deviceId,String infusionId,String historyId,String tenantId,Date uploadTIme){
+        BusDeviceAlarmEntity result = of(deviceId,infusionId,historyId,tenantId,uploadTIme);
+        result.setRunState(DeviceStatusEnum.NoSignal);
+        return result;
+    }
+
+    public static BusDeviceAlarmEntity lowInfusion(String deviceId,String infusionId,String historyId,String tenantId,Date uploadTIme){
+        BusDeviceAlarmEntity result = of(deviceId,infusionId,historyId,tenantId,uploadTIme);
+        result.setWarnFlow(FlowStatusEnum.Lowest);
+        return result;
+    }
+
+    public static BusDeviceAlarmEntity insufficient(String deviceId,String infusionId,String historyId,String tenantId,Date uploadTIme){
+        BusDeviceAlarmEntity result = of(deviceId,infusionId,historyId,tenantId,uploadTIme);
+        result.setWarnAnalgesicPoor(true);
+        return result;
+    }
+
+    private static BusDeviceAlarmEntity of(String deviceId,String infusionId,String historyId,String tenantId,Date uploadTIme){
+        BusDeviceAlarmEntity result = new BusDeviceAlarmEntity();
+        result.setRunState(DeviceStatusEnum.Waiting);
+        result.setInfusionId(infusionId);
+        result.setTenantId(tenantId);
+        result.setUploadTime(uploadTIme);
+        result.setHistoryId(historyId);
+        result.setAlarm(false);
+        result.setAlarmState(DeviceAlarmEnum.None);
+        result.setDeviceId(deviceId);
+        result.setWarnLowBattery(false);
+        result.setWarnFlow(FlowStatusEnum.None);
+        result.setWarnAnalgesicPoor(false);
+        result.setWarnWillFinished(false);
+        return result;
+    }
 }

+ 7 - 0
coffee-system/src/main/java/com/coffee/bus/entity/BusDeviceRunningEntity.java

@@ -83,6 +83,13 @@ public class BusDeviceRunningEntity extends CommonDeviceParam<String,String> {
     @JsonIgnoreProperties
     private String infusionModifyId;
 
+    /**
+     * 当前运行状态所绑定的历史记录id,只在设备上传解析过程中使用,其他地方无用处
+     */
+    @TableField(exist = false)
+    @JsonIgnoreProperties
+
+    private String historyId;
     @TableField(exist = false)
     @JsonIgnoreProperties
     private Date modifyTime;

+ 4 - 2
coffee-system/src/main/java/com/coffee/bus/hospital/HospitalManager.java

@@ -58,6 +58,8 @@ public class HospitalManager {
 
     private ConfigStorage storage;
 
+    private LocalBusDeviceAlarmService alarmService;
+
     public HospitalManager(String hospitalId,
                            LocalBusHospitalService hospitalService,
                            LocalBusHospitalConfigService hospitalConfigService,
@@ -79,8 +81,8 @@ public class HospitalManager {
         this.storage=configStorageManager.getStorage(hospitalId);
         this.autoUndoConfigHandler=new HospitalAutoUndoConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry);
         this.finishMonitorConfigHandler=new HospitalFinishMonitorConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry);
-        this.analConfigHandler=new HospitalFunctionAnalConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry);
-        this.extraConfigHandler=new HospitalFunctionExtraConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry,finishMonitorConfigHandler,autoUndoConfigHandler);
+        this.analConfigHandler=new HospitalFunctionAnalConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry,alarmService);
+        this.extraConfigHandler=new HospitalFunctionExtraConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry,finishMonitorConfigHandler,autoUndoConfigHandler,alarmService);
         init(configStorageManager);
     }
 

+ 18 - 3
coffee-system/src/main/java/com/coffee/bus/hospital/config/HospitalFunctionAnalConfigHandler.java

@@ -3,12 +3,14 @@ package com.coffee.bus.hospital.config;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.coffee.bus.entity.BusDeviceAlarmEntity;
 import com.coffee.bus.hospital.config.bean.FunctionAnalConfig;
 import com.coffee.bus.entity.BusDeviceRunningEntity;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
 import com.coffee.bus.hospital.enums.ConfigHandlerEnums;
 import com.coffee.bus.registry.device.DeviceRegistry;
 import com.coffee.bus.registry.patient.PatientRegistry;
+import com.coffee.bus.service.LocalBusDeviceAlarmService;
 import com.coffee.bus.service.LocalBusDeviceRunningService;
 import com.coffee.bus.service.LocalBusInfusionHistoryService;
 import com.coffee.bus.utils.WsPublishUtils;
@@ -35,9 +37,11 @@ import java.util.concurrent.TimeUnit;
 @Slf4j
 public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHandler<FunctionAnalConfig,BusDeviceRunningEntity> {
 
+    private LocalBusDeviceAlarmService alarmService;
 
-    public HospitalFunctionAnalConfigHandler(ConfigStorage configStorage, String hospitalId, RedissonUtil redissonUtil, LocalBusDeviceRunningService deviceRunningService, LocalBusInfusionHistoryService infusionHistoryService, DeviceRegistry deviceRegistry, WsPublishUtils wsPublishUtils, PatientRegistry patientRegistry) {
+    public HospitalFunctionAnalConfigHandler(ConfigStorage configStorage, String hospitalId, RedissonUtil redissonUtil, LocalBusDeviceRunningService deviceRunningService, LocalBusInfusionHistoryService infusionHistoryService, DeviceRegistry deviceRegistry, WsPublishUtils wsPublishUtils, PatientRegistry patientRegistry,LocalBusDeviceAlarmService alarmService) {
         super(configStorage, hospitalId, redissonUtil, deviceRunningService, infusionHistoryService, deviceRegistry, wsPublishUtils, patientRegistry);
+        this.alarmService=alarmService;
     }
 
     @Override
@@ -47,7 +51,7 @@ public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHan
 
     @Override
     public String getDescription() {
-        return "进行镇痛不足判定、不在服务区判定、低输注判定";
+        return "进行镇痛不足判定";
     }
 
 
@@ -100,7 +104,9 @@ public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHan
                 .threshold(analConfig.getInsufficientCount())
                 .judgeByValid(analConfig.getValid())
                 .tenantId(source.getTenantId())
+                .historyId(source.getHistoryId())
                 .timestamp(new Date())
+                .infusionId(source.getInfusionId())
                 .build();
 
         delayedQueue.offer(anal,anal.getTimeout(),anal.getUnit());
@@ -148,7 +154,10 @@ public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHan
                     //发布推送
                     wsPublishUtils.publishPatientMonitor(runningInfo.getPatientCode(),runningInfo.getTenantId());
                 }
-                //设置镇痛不足后,设置镇痛消失延迟时间
+                //记录镇痛不足报警
+                Date uploadTime=new Date(anal.getTimestamp().getTime()+anal.getUnit().toMillis(anal.getTimeout()));
+                BusDeviceAlarmEntity alarm = BusDeviceAlarmEntity.insufficient(anal.getDeviceId(),anal.getInfusionId(),anal.getHistoryId(),anal.getTenantId(),uploadTime);
+                alarmService.save(alarm);
             }
             noneAnalDelayedQueue.clear();
         }else {
@@ -159,6 +168,8 @@ public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHan
                     .tenantId(anal.getTenantId())
                     .timeout(config.getDisappearTime())
                     .unit(TimeUnit.MINUTES)
+                    .infusionId(anal.getInfusionId())
+                    .historyId(anal.getHistoryId())
                     .timestamp(new Date())
                     .build();
             noneAnalDelayedQueue.offer(noneAnal,noneAnal.getTimeout(),noneAnal.getUnit());
@@ -202,6 +213,8 @@ public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHan
         private boolean judgeByValid;
         private String tenantId;
         private Date timestamp;
+        private String infusionId;
+        private String historyId;
     }
 
     @Data
@@ -211,7 +224,9 @@ public class HospitalFunctionAnalConfigHandler extends AbstractHospitalConfigHan
         private Integer timeout;
         private TimeUnit unit;
         private String tenantId;
+        private String historyId;
         private Date timestamp;
+        private String infusionId;
     }
 
 }

+ 23 - 1
coffee-system/src/main/java/com/coffee/bus/hospital/config/HospitalFunctionExtraConfigHandler.java

@@ -2,6 +2,7 @@ package com.coffee.bus.hospital.config;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.coffee.bus.entity.BusDeviceAlarmEntity;
 import com.coffee.bus.enums.ConfigEnum;
 import com.coffee.bus.hospital.config.bean.FunctionExtraConfig;
 import com.coffee.bus.entity.BusDeviceRunningEntity;
@@ -11,6 +12,7 @@ import com.coffee.bus.enums.DeviceTypeEnum;
 import com.coffee.bus.hospital.enums.ConfigHandlerEnums;
 import com.coffee.bus.registry.device.DeviceRegistry;
 import com.coffee.bus.registry.patient.PatientRegistry;
+import com.coffee.bus.service.LocalBusDeviceAlarmService;
 import com.coffee.bus.service.LocalBusDeviceRunningService;
 import com.coffee.bus.service.LocalBusInfusionHistoryService;
 import com.coffee.bus.utils.WsPublishUtils;
@@ -40,11 +42,13 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
 
     private HospitalFinishMonitorConfigHandler monitorConfigHandler;
     private HospitalAutoUndoConfigHandler autoUndoConfigHandler;
+    private LocalBusDeviceAlarmService alarmService;
     public HospitalFunctionExtraConfigHandler(ConfigStorage configStorage, String hospitalId, RedissonUtil redissonUtil, LocalBusDeviceRunningService deviceRunningService, LocalBusInfusionHistoryService infusionHistoryService, DeviceRegistry deviceRegistry, WsPublishUtils wsPublishUtils, PatientRegistry patientRegistry
-    , HospitalFinishMonitorConfigHandler monitorConfigHandler,HospitalAutoUndoConfigHandler autoUndoConfigHandler) {
+    , HospitalFinishMonitorConfigHandler monitorConfigHandler,HospitalAutoUndoConfigHandler autoUndoConfigHandler,LocalBusDeviceAlarmService alarmService) {
         super(configStorage, hospitalId, redissonUtil, deviceRunningService, infusionHistoryService, deviceRegistry, wsPublishUtils, patientRegistry);
         this.monitorConfigHandler=monitorConfigHandler;
         this.autoUndoConfigHandler=autoUndoConfigHandler;
+        this.alarmService=alarmService;
     }
 
     @Override
@@ -94,6 +98,8 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
                 .patientCode(source.getPatientCode())
                 .tenantId(source.getTenantId())
                 .timestamp(new Date())
+                .historyId(source.getHistoryId())
+                .infusionId(source.getInfusionId())
                 .timeout(interval)
                 .unit(TimeUnit.MINUTES)
                 .build();
@@ -116,6 +122,11 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
             //泵已换绑医院,无需再处理
             return;
         }
+        //不在服务区报警信息保存
+        Date uploadTime=new Date(source.getTimestamp().getTime()+source.getUnit().toMillis(source.getTimeout()));
+        BusDeviceAlarmEntity alarm = BusDeviceAlarmEntity.noSignalOf(source.getDeviceId(),source.getInfusionId(),source.getHistoryId(),source.getTenantId(),uploadTime);
+        alarmService.save(alarm);
+
         deviceRunningService.update(new UpdateWrapper<BusDeviceRunningEntity>().lambda().eq(BusDeviceRunningEntity::getId, runningInfo.getId())
                 .set(BusDeviceRunningEntity::getRunState, DeviceStatusEnum.NoSignal));
         infusionHistoryService.update(new UpdateWrapper<BusInfusionHistoryEntity>().lambda().eq(BusInfusionHistoryEntity::getId, runningInfo.getInfusionId())
@@ -156,6 +167,8 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
                         .timeout(interval)
                         .unit(TimeUnit.MINUTES)
                         .tenantId(source.getTenantId())
+                        .historyId(source.getHistoryId())
+                        .infusionId(source.getInfusionId())
                         .timestamp(new Date())
                         .build();
                 delayedQueue.offer(lowInfusionEntity,lowInfusionEntity.getTimeout(),lowInfusionEntity.getUnit());
@@ -191,6 +204,11 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
                 .set(BusInfusionHistoryEntity::getWarnLowBattery, true));
         //报警/提醒缓存重置
         deviceRegistry.getOperator(deviceId).setAlarmOrWarn(null);
+        //低输注报警
+        Date uploadTime=new Date(source.getTimestamp().getTime()+source.getUnit().toMillis(source.getTimeout()));
+        BusDeviceAlarmEntity alarm = BusDeviceAlarmEntity.lowInfusion(source.getDeviceId(),source.getInfusionId(),source.getHistoryId(),source.getTenantId(),uploadTime);
+        alarmService.save(alarm);
+
         if (Boolean.TRUE.equals(runningInfo.getMaster())) {
             //发布推送
             wsPublishUtils.publishPatientMonitor(runningInfo.getPatientCode(), runningInfo.getTenantId());
@@ -205,6 +223,8 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
         private Integer timeout;
         private TimeUnit unit;
         private String tenantId;
+        private String infusionId;
+        private String historyId;
         private Date timestamp;
     }
 
@@ -214,7 +234,9 @@ public class HospitalFunctionExtraConfigHandler  extends  AbstractHospitalConfig
         private String deviceId;
         private Integer timeout;
         private TimeUnit unit;
+        private String historyId;
         private String tenantId;
+        private String infusionId;
         private Date timestamp;
     }
 }

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

@@ -114,16 +114,14 @@ public class DeviceInfoListener {
             //处理设备运行数据,     判断是否为注册后第一次开机,判断是否为新的输注信息
             boolean first = handleRunningInfo(device, deviceOperator,cacheOperation);
 
-            //医院相关配置处理
-            handleHospitalConfig(device,cacheOperation);
-
             //处理输注参数
             handleInfusion(device, deviceOperator, cacheOperation);
             //处理历史运行数据
             BusDeviceHistoryEntity history=handleRunningHistory(device);
             //处理报警、提醒信息
             handleAlarmOrWarn(history,deviceOperator,cacheOperation);
-            //todo 流速图处理
+            //医院相关配置处理
+            handleHospitalConfig(device,cacheOperation);
             if(first){
                 deviceService.update(new UpdateWrapper<BusDeviceEntity>().lambda().eq(BusDeviceEntity::getDeviceId,deviceId).set(BusDeviceEntity::getType,device.getType()));
                 PatientOperator<PatientCacheInfo> operator = patientRegistry.getOperator(device.getTenantId(), device.getPatientCode());
@@ -472,6 +470,7 @@ public class DeviceInfoListener {
         BusDeviceHistoryEntity entity = BusDeviceHistoryEntity.parseRunningInfo(device);
         entity.setId(String.valueOf(IdWorker.getId()));
         historyService.save(entity);
+        device.setHistoryId(entity.getId());
         return entity;
     }
 

+ 1 - 1
coffee-system/src/main/resources/mapper/bus/BusInfusionHistoryMapper.xml

@@ -5,7 +5,7 @@
 
     <select id="currentInClinic" resultType="com.coffee.bus.entity.BusInfusionHistoryEntity">
         select d.alias,i.* from
-            (select * from bus_infusion_history where clinic_id=#{clinicId} ORDER BY start_time limit 1) as i
+            (select * from bus_infusion_history where clinic_id=#{clinicId} ORDER BY start_time desc limit 1) as i
             left join bus_device  as d on d.device_id=i.device_id
     </select>