Explorar el Código

Merge branch 'dev' into nb-pc-rabbitmq

# Conflicts:
#	nb-service/web-service/src/main/java/com/nb/web/service/bus/hospital/HospitalManager.java
18339543638 hace 3 años
padre
commit
9ffed39470

+ 56 - 0
nb-service-api/web-service-api/src/main/java/com/nb/web/api/feign/IClinicClient.java

@@ -0,0 +1,56 @@
+package com.nb.web.api.feign;
+
+import com.nb.web.api.entity.BusClinicEntity;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName IClinicClient.java
+ * @Description 临床服务
+ * @createTime 2022年09月07日 14:27:00
+ */
+public interface IClinicClient {
+    /**
+     * 找到该病号最近的一场手术
+     * @param hospitalId
+     * @param patientCode
+     */
+    BusClinicEntity recentClinicByPatientCode(String hospitalId, String patientCode);
+
+    /**
+     * 描述: 临床结束管理
+     * @author lifang
+     * @date 2022/9/7 14:29
+     * @param clinicId
+     * @param tenantId
+     * @return void
+     */
+    void finish(String clinicId, String tenantId) ;
+
+    /**
+     * 描述: 新增临床信息
+     * @author lifang
+     * @date 2022/9/7 14:41
+     * @param source
+     * @return void
+     */
+    BusClinicEntity insertFromHis(BusClinicEntity source);
+
+    /**
+     * 描述: 重启临床
+     * @author lifang
+     * @date 2022/9/7 14:40
+     * @param clinicId
+     * @return void
+     */
+    void resetClinic(String clinicId) ;
+
+    /**
+     * 描述: 将此次手术信息设置为当前临床信息
+     * @author lifang
+     * @date 2022/9/7 14:31
+     * @param source
+     * @return void
+     */
+    void setCurrentClinicByHis(BusClinicEntity source);
+}

+ 1 - 0
nb-service/iot-service/src/main/java/com/nb/mq/entity/PcAnalgesicScoreEntity.java

@@ -159,6 +159,7 @@ public class PcAnalgesicScoreEntity implements Serializable {
         //todo 没有胎心
         result.setBreathRate(this.getRR());
         result.setBloodOxygenSaturation(this.getSpO2());
+        result.setTenantId(this.getHospitalCode());
         return result;
     }
 }

+ 40 - 10
nb-service/iot-service/src/main/java/com/nb/mq/entity/PcPatientEntity.java

@@ -1,11 +1,15 @@
 package com.nb.mq.entity;
-import java.time.LocalDateTime;
+
 import java.io.Serializable;
+import java.util.Date;
+
+import com.nb.web.api.bean.UndoDeviceConfig;
+import com.nb.web.api.entity.BusClinicEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author fanfan
@@ -89,19 +93,45 @@ public class PcPatientEntity implements Serializable {
     private String witnessPerson;
 
     @ApiModelProperty(value = "撤泵时间")
-    private LocalDateTime undoTime;
+    private Date undoTime;
 
     @ApiModelProperty(value = "盐值")
     private String salt;
 
-    @ApiModelProperty(value = "剩余量处置")
-    private String remain;
 
-    @ApiModelProperty(value = "备注")
-    private String remark;
+    private String bmi;
 
-    @ApiModelProperty(value = "是否删除")
-    private Boolean isDelete;
 
-    private String bmi;
+    public BusClinicEntity toClinic(String patientId){
+        BusClinicEntity result = new BusClinicEntity();
+        result.setSurgeryName(this.getOperationName());
+        result.setPatientCode(this.getPatientCode());
+        result.setPatientId(patientId);
+        result.setAsa(this.getAsa());
+        result.setPatientName(this.getName());
+        //todo
+//        result.setPatientGender(this.getSex());
+        result.setPatientAge(this.getAge());
+        result.setWard(this.getWardCode());
+        result.setBedNo(this.getBedCode());
+        result.setWeight(this.getWeight());
+        result.setHeight(this.getHeight());
+        result.setAnaDoctor(this.getAnesthesiaDoctor1());
+        result.setAnaType(this.getAnesthesiaMode());
+        result.setSurgeryDoctor(this.getAnesthesiaDoctor2());
+        result.setConfigPerson(this.getConfigPerson());
+        //配方 todo
+        if(this.getUndoTime()!=null){
+            UndoDeviceConfig undoDeviceConfig = new UndoDeviceConfig();
+            undoDeviceConfig.setDestroyer(this.getDestoryPerson());
+            undoDeviceConfig.setUndoBy(this.getUndoPerson());
+            undoDeviceConfig.setUndoTime(this.getUndoTime());
+            undoDeviceConfig.setWitnesses(this.getWitnessPerson());
+            result.setUndoConfig(undoDeviceConfig);
+            result.setFinished(true);
+        }
+        result.setMonitorType(true);
+        result.setTenantId(this.getHospitalCode());
+        return result;
+    }
 }

+ 38 - 7
nb-service/iot-service/src/main/java/com/nb/mq/listener/RabbitMqListener.java

@@ -4,10 +4,11 @@ import cn.hutool.json.JSONUtil;
 import com.nb.mq.entity.PcAnalgesicScoreEntity;
 import com.nb.mq.entity.PcPatientEntity;
 import com.nb.mq.entity.PcPumpEntity;
-import com.nb.web.api.feign.IClinicEvalClient;
-import com.nb.web.api.feign.IDeviceClient;
-import com.nb.web.api.feign.IIotMsgHandler;
-import com.nb.web.api.feign.IPatientClient;
+import com.nb.web.api.entity.BusClinicEntity;
+import com.nb.web.api.entity.BusEvaluationEntity;
+import com.nb.web.api.entity.BusInfusionHistoryEntity;
+import com.nb.web.api.feign.*;
+import com.nb.web.api.feign.result.PatientMonitorDetailResult;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.annotation.Queue;
@@ -15,6 +16,9 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.messaging.handler.annotation.Payload;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
+import java.util.Optional;
+
 /**
  * @author lifang
  * @version 1.0.0
@@ -26,10 +30,9 @@ import org.springframework.stereotype.Component;
 @Slf4j
 @AllArgsConstructor
 public class RabbitMqListener {
-    private final IIotMsgHandler iotMsgHandler;
-    private final  IDeviceClient deviceService;
     private final IPatientClient patientClient;
     private final IClinicEvalClient clinicEvalClient;
+    private final IClinicClient clinicClient;
     /**
      * 描述: 监听病人队列
      * @author lifang
@@ -41,7 +44,23 @@ public class RabbitMqListener {
     public void patientQueue(@Payload String body) {
         log.info("消息队列中,病人队列{cloud.patient},接受消息:{}",body);
         PcPatientEntity source = JSONUtil.toBean(body, PcPatientEntity.class);
-
+        String patientId = patientClient.lookPatientId(source.getHospitalCode(), source.getPatientCode());
+        BusClinicEntity clinic= source.toClinic(patientId);
+        PatientMonitorDetailResult patientDetail = patientClient.lookPatientDetail(patientId);
+        BusClinicEntity existClinic = patientDetail.getClinic();
+        clinic.setStartTime(existClinic.getStartTime()==null?new Date():existClinic.getStartTime());
+        if(Boolean.TRUE.equals(clinic.getFinished())){
+            //进行撤泵处理
+            clinicClient.finish(existClinic.getId(),existClinic.getTenantId());
+            return;
+        }
+        //当上一个临床状态为已结束时,生成新的临床信息
+        if(Boolean.TRUE.equals(existClinic.getFinished())){
+            clinic=clinicClient.insertFromHis(clinic);
+        }else {
+            clinic.setId(existClinic.getId());
+        }
+        clinicClient.setCurrentClinicByHis(clinic);
     }
 
     /**
@@ -55,6 +74,7 @@ public class RabbitMqListener {
     public void pumpQueue(@Payload String body) {
         log.info("消息队列中,网络泵队列{cloud.pump},接受消息:{}",body);
         PcPumpEntity source = JSONUtil.toBean(body, PcPumpEntity.class);
+
     }
 
     /**
@@ -69,6 +89,17 @@ public class RabbitMqListener {
         log.info("消息队列中,评分队列{cloud.analgesicScore},接受消息:{}",body);
         PcAnalgesicScoreEntity source = JSONUtil.toBean(body, PcAnalgesicScoreEntity.class);
 
+        String patientId = patientClient.lookPatientId(source.getHospitalCode(), source.getPatientCode());
+
+        PatientMonitorDetailResult patientDetail = patientClient.lookPatientDetail(patientId);
+
+        BusInfusionHistoryEntity infusion = Optional.ofNullable(patientDetail.getInfusion()).orElse(new BusInfusionHistoryEntity());
+
+        BusEvaluationEntity eval = source.toEval(patientId,
+                infusion.getDeviceId(),
+                infusion.getId(),
+                patientDetail.getClinic().getId());
+        clinicEvalClient.save(eval);
     }
 
 }

+ 9 - 4
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusClinicService.java

@@ -9,6 +9,7 @@ import com.nb.web.api.enums.ClinicManageEnum;
 import com.nb.web.api.event.ClinicFinishedEvent;
 import com.nb.web.api.event.ClinicRestartEvent;
 import com.nb.web.api.event.PatientInfoEvent;
+import com.nb.web.api.feign.IClinicClient;
 import com.nb.web.service.bus.controller.vo.ClinicStatsVo;
 import com.nb.web.api.entity.BusClinicEntity;
 import com.nb.web.api.entity.BusInfusionHistoryEntity;
@@ -40,7 +41,7 @@ import java.util.*;
  */
 @Service
 @Slf4j
-public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClinicEntity,String> {
+public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClinicEntity,String> implements IClinicClient {
     @Autowired
     @Lazy
     private PatientRegistry patientRegistry;
@@ -110,6 +111,7 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
      * 结束当前医院病号的临床数据
      * @param clinicId 临床id
      */
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void finish(String clinicId, String tenantId) {
         this.finish(Collections.singletonList(clinicId),new Date(),tenantId);
@@ -142,6 +144,7 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
      * @param hospitalId
      * @param patientCode
      */
+    @Override
     public BusClinicEntity recentClinicByPatientCode(String hospitalId, String patientCode) {
         return this.baseMapper.recentClinic(hospitalId,patientCode);
     }
@@ -159,7 +162,6 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
         Assert.hasText(target.getId(),"LocalBusClinicService.compareFromHis方法调用时,target参数id不能为空");
         Assert.hasText(source.getPatientCode(),"LocalBusClinicService.compareFromHis方法调用时,source参数patientCode不能为空");
         Assert.notNull(source.getStartTime(),"LocalBusClinicService.compareFromHis方法调用时,source参数startTime不能为空");
-        Assert.hasText(source.getSurgeryName(),"LocalBusClinicService.compareFromHis方法调用时,source参数surgeName不能为空");
         source.setId(target.getId());
         source.setFinished(target.getFinished());
         this.updateById(source);
@@ -178,13 +180,14 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
      * @param source
      * @return void
      */
+    @Override
     @Transactional(rollbackFor = Exception.class)
-    public void insertFromHis(BusClinicEntity source){
+    public BusClinicEntity insertFromHis(BusClinicEntity source){
         Assert.hasText(source.getTenantId(),"LocalBusClinicService.insertFromHis方法调用时,source参数tenantId不能为空");
         Assert.hasText(source.getPatientCode(),"LocalBusClinicService.insertFromHis方法调用时,source参数patientCode不能为空");
-        Assert.hasText(source.getSurgeryName(),"LocalBusClinicService.insertFromHis方法调用时,source参数surgeName不能为空");
         this.save(source);
         infusionHistoryService.adjustInfusionByClinic(source.getId(),source.getPatientId(),source.getTenantId(),source.getStartTime());
+        return source;
     }
 
 
@@ -195,6 +198,7 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
      * @param source
      * @return void
      */
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void setCurrentClinicByHis(BusClinicEntity source){
         Assert.hasText(source.getId(),"LocalBusClinicService.setCurrentClinic方法调用时,source参数id不能为空");
@@ -270,6 +274,7 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
      * @return void
      */
     @Transactional(rollbackFor = Exception.class)
+    @Override
     public void resetClinic(String clinicId) {
         if (this.update(new UpdateWrapper<BusClinicEntity>().lambda().eq(BusClinicEntity::getId,clinicId).set(BusClinicEntity::getFinished,false))) {
             BusClinicEntity clinic = this.getById(clinicId);