|
|
@@ -1,6 +1,7 @@
|
|
|
package com.nb.web.service.bus.hospital.his;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
@@ -12,18 +13,16 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.google.common.cache.Cache;
|
|
|
import com.google.common.cache.CacheBuilder;
|
|
|
import com.nb.web.api.entity.BusClinicEntity;
|
|
|
+import com.nb.web.api.entity.BusInfusionHistoryEntity;
|
|
|
import com.nb.web.service.bus.entity.*;
|
|
|
import com.nb.web.service.bus.listener.event.bean.HisEvent;
|
|
|
import com.nb.web.service.bus.hospital.script.DefaultParse;
|
|
|
-import com.nb.web.service.bus.service.LocalBusHospitalLogService;
|
|
|
-import com.nb.web.service.bus.service.LocalBusPatientService;
|
|
|
+import com.nb.web.service.bus.service.*;
|
|
|
import com.nb.web.service.bus.service.constant.LocalBusConDoctorService;
|
|
|
import com.nb.web.service.bus.service.constant.LocalBusConMixService;
|
|
|
import com.nb.core.exception.ExecuteResult;
|
|
|
import com.nb.web.service.bus.hospital.script.ScriptManager;
|
|
|
import com.nb.web.service.bus.hospital.script.ScriptParse;
|
|
|
-import com.nb.web.service.bus.service.LocalBusClinicService;
|
|
|
-import com.nb.web.service.bus.service.LocalBusHospitalService;
|
|
|
import com.nb.core.cache.ConfigStorage;
|
|
|
import com.nb.core.cache.manager.ConfigStorageManager;
|
|
|
import com.nb.core.Value;
|
|
|
@@ -32,6 +31,7 @@ import com.nb.core.exception.ScriptException;
|
|
|
import com.nb.core.result.R;
|
|
|
import com.nb.core.utils.ExceptionUtil;
|
|
|
import com.nb.web.api.entity.BusHospitalLogEntity;
|
|
|
+import com.nb.web.service.bus.utils.WsPublishUtils;
|
|
|
import lombok.Getter;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.util.Assert;
|
|
|
@@ -43,6 +43,7 @@ import org.tio.websocket.common.WsResponse;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -64,6 +65,7 @@ public class HisScriptSession {
|
|
|
private LocalBusHospitalLogService hospitalLogService;
|
|
|
private LocalBusConMixService conMixService;
|
|
|
private LocalBusConDoctorService conDoctorService;
|
|
|
+ private WsPublishUtils wsPublishUtils;
|
|
|
//缓存发给医院的请求,对相同的请求进行批量处理
|
|
|
private Cache<String, HisRequest> hisRequestMap = CacheBuilder.newBuilder()
|
|
|
.expireAfterWrite(30, TimeUnit.SECONDS)
|
|
|
@@ -80,6 +82,7 @@ public class HisScriptSession {
|
|
|
this.patientService=SpringUtil.getBean(LocalBusPatientService.class);
|
|
|
this.conMixService=SpringUtil.getBean(LocalBusConMixService.class);
|
|
|
this.conDoctorService=SpringUtil.getBean(LocalBusConDoctorService.class);
|
|
|
+ this.wsPublishUtils=SpringUtil.getBean(WsPublishUtils.class);
|
|
|
init(configStorageManager,hospitalId);
|
|
|
}
|
|
|
|
|
|
@@ -277,28 +280,42 @@ public class HisScriptSession {
|
|
|
List<BusClinicEntity> publish=new ArrayList<>();
|
|
|
//对数据去重, name+startTime进行唯一值判定
|
|
|
Map<String, BusClinicEntity> distinct = new HashMap<>();
|
|
|
- sources.forEach(source->{
|
|
|
- String key=source.getSurgeryName()+source.getStartTime();
|
|
|
- distinct.computeIfAbsent(key,k->{
|
|
|
+ for (BusClinicEntity source : sources) {
|
|
|
+ if(ObjectUtil.isNull(source.getStartTime())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String key=
|
|
|
+ StrUtil.isNullOrUndefined(source.getSurgeryName())?"":source.getSurgeryName()+
|
|
|
+ DateUtil.formatDateTime(source.getStartTime());
|
|
|
+ if(!distinct.containsKey(key)){
|
|
|
+ distinct.put(key,source);
|
|
|
publish.add(source);
|
|
|
- return source;
|
|
|
- });
|
|
|
- });
|
|
|
- publish.sort(Comparator.comparing(
|
|
|
- BusClinicEntity::getStartTime));
|
|
|
- publish.forEach(source->{
|
|
|
- source.setTenantId(hospitalId);
|
|
|
- if(patient!=null){
|
|
|
- source.setPatientId(patient.getId());
|
|
|
- source.setMonitorType(true);
|
|
|
- }else {
|
|
|
- source.setMonitorType(false);
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
+ publish=publish.stream().sorted(Comparator.comparing(
|
|
|
+ BusClinicEntity::getStartTime))
|
|
|
+ .peek(source->{
|
|
|
+ source.setTenantId(hospitalId);
|
|
|
+ if(patient!=null){
|
|
|
+ source.setPatientId(patient.getId());
|
|
|
+ source.setMonitorType(true);
|
|
|
+ }else {
|
|
|
+ source.setMonitorType(false);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
if(patient!=null){
|
|
|
- //病号不存在,即认定为无泵输注信息
|
|
|
- SpringUtil.publishEvent(new HisEvent(this,publish,hospitalId,patientCode));
|
|
|
+ if(CollectionUtil.isEmpty(publish)){
|
|
|
+ BusClinicEntity first = CollectionUtil.getFirst(sources);
|
|
|
+ publish.add(first);
|
|
|
+ first.setId(patient.getClinicId());
|
|
|
+ clinicService.updateById(first);
|
|
|
+ wsPublishUtils.publishPatientMonitor(patient.getId(),patient.getTenantId());
|
|
|
+ }else {
|
|
|
+ //病号不存在,即认定为无泵输注信息
|
|
|
+ SpringUtil.publishEvent(new HisEvent(this,publish,hospitalId,patientCode));
|
|
|
+ }
|
|
|
}
|
|
|
return publish.get(publish.size()-1);
|
|
|
}
|