Parcourir la source

add
问卷信息

18339543638 il y a 4 mois
Parent
commit
44be7e948a

+ 29 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/config/PatientMonitorListener.java

@@ -1,6 +1,7 @@
 package cn.tr.module.smart.common.config;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.tr.core.annotation.TenantIgnore;
 import cn.tr.core.utils.JsonUtils;
 import cn.tr.module.api.sys.tenant.SysTenantApi;
@@ -109,8 +110,34 @@ public class PatientMonitorListener {
             infusionClinic.setInfusionId(infusionHistory.getId());
             infusionClinic.setClinicId(patientPO.getCurrentClinicId());
             infusionClinic.setType(InfusionBindType.autoBind);
-            infusionClinicRepository.insert(infusionClinic);
-            log.info("找到匹配的患者信息,患者ID: {}", patientPO.getId());
+            //判断有没有被绑定
+            BizInfusionClinicPO infusionClinicPO = infusionClinicRepository.selectOne(new LambdaQueryWrapper<BizInfusionClinicPO>()
+                    .eq(BizInfusionClinicPO::getClinicId, patientPO.getCurrentClinicId())
+                    .last("limit 1"));
+            if(StrUtil.equals(infusionClinicPO.getInfusionId(),infusionHistory.getId())){
+                //已绑定
+                return;
+            }
+            if (ObjectUtil.isNotNull(infusionClinicPO)) {
+                if(InfusionBindType.autoBind.equals(infusionClinicPO.getType())){
+                    //如果是自动绑的,则判断两个泵头的先后顺序
+                    BizInfusionHistoryPO preInfusionHistory = infusionHistoryRepository.selectById(infusionClinicPO.getInfusionId());
+                    if (ObjectUtil.isNotNull(preInfusionHistory)) {
+                        infusionClinicRepository.deleteById(infusionClinicPO.getId());
+                        infusionClinicRepository.insert(infusionClinic);
+                        log.info("找到匹配的患者信息,患者ID: {}", patientPO.getId());
+                    }else {
+                        if(ObjectUtil.compare(infusionHistory.getInfusionStartTime(),preInfusionHistory.getInfusionStartTime())>0){
+                            infusionClinicRepository.deleteById(infusionClinicPO.getId());
+                            infusionClinicRepository.insert(infusionClinic);
+                            log.info("找到匹配的患者信息,患者ID: {}", patientPO.getId());
+                        }
+                    }
+                }
+            }else {
+                infusionClinicRepository.insert(infusionClinic);
+                log.info("找到匹配的患者信息,患者ID: {}", patientPO.getId());
+            }
         } else {
             log.warn("未找到匹配的患者信息,住院号: {}", source.getPatientCode());
         }