|
|
@@ -0,0 +1,166 @@
|
|
|
+package com.coffee.bus.hospital;
|
|
|
+
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.coffee.bus.entity.BusDeviceRunningEntity;
|
|
|
+import com.coffee.bus.entity.BusHospitalConfigEntity;
|
|
|
+import com.coffee.bus.entity.BusHospitalEntity;
|
|
|
+import com.coffee.bus.hospital.config.HospitalAutoUndoConfigHandler;
|
|
|
+import com.coffee.bus.hospital.config.HospitalFinishMonitorConfigHandler;
|
|
|
+import com.coffee.bus.hospital.config.HospitalFunctionAnalConfigHandler;
|
|
|
+import com.coffee.bus.hospital.config.HospitalFunctionExtraConfigHandler;
|
|
|
+import com.coffee.bus.hospital.config.bean.*;
|
|
|
+import com.coffee.bus.hospital.his.HisScriptSession;
|
|
|
+import com.coffee.bus.registry.device.DeviceRegistry;
|
|
|
+import com.coffee.bus.registry.patient.PatientRegistry;
|
|
|
+import com.coffee.bus.script.ScriptManager;
|
|
|
+import com.coffee.bus.script.ScriptParse;
|
|
|
+import com.coffee.bus.service.*;
|
|
|
+import com.coffee.bus.utils.WsPublishUtils;
|
|
|
+import com.coffee.common.cache.ConfigStorage;
|
|
|
+import com.coffee.common.cache.manager.ConfigStorageManager;
|
|
|
+import com.coffee.common.util.RedissonUtil;
|
|
|
+import lombok.Data;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author lifang
|
|
|
+ * @version 1.0.0
|
|
|
+ * @ClassName HospitalManage.java
|
|
|
+ * @Description 医院管理器
|
|
|
+ * @createTime 2022年05月20日 08:33:00
|
|
|
+ */
|
|
|
+@Data
|
|
|
+public class HospitalManager {
|
|
|
+ private String hospitalId;
|
|
|
+
|
|
|
+ private HisScriptSession scriptSession;
|
|
|
+
|
|
|
+ private HospitalAutoUndoConfigHandler autoUndoConfigHandler;
|
|
|
+
|
|
|
+ private HospitalFinishMonitorConfigHandler finishMonitorConfigHandler;
|
|
|
+
|
|
|
+ private HospitalFunctionAnalConfigHandler analConfigHandler;
|
|
|
+
|
|
|
+ private HospitalFunctionExtraConfigHandler extraConfigHandler;
|
|
|
+
|
|
|
+ private LocalBusHospitalService hospitalService;
|
|
|
+
|
|
|
+ private LocalBusHospitalConfigService hospitalConfigService;
|
|
|
+
|
|
|
+ private LocalBusClinicService clinicService;
|
|
|
+
|
|
|
+ private ScriptManager scriptManager;
|
|
|
+
|
|
|
+ private ConfigStorage storage;
|
|
|
+
|
|
|
+ public HospitalManager(String hospitalId,
|
|
|
+ LocalBusHospitalService hospitalService,
|
|
|
+ LocalBusHospitalConfigService hospitalConfigService,
|
|
|
+ LocalBusClinicService clinicService,
|
|
|
+ LocalBusDeviceRunningService deviceRunningService,
|
|
|
+ LocalBusInfusionHistoryService infusionHistoryService,
|
|
|
+ PatientRegistry patientRegistry,
|
|
|
+ DeviceRegistry deviceRegistry,
|
|
|
+ WsPublishUtils wsPublishUtils,
|
|
|
+ ScriptManager scriptManager,
|
|
|
+ ConfigStorageManager configStorageManager,
|
|
|
+ RedissonUtil redissonUtil) {
|
|
|
+ this.hospitalId = hospitalId;
|
|
|
+ this.hospitalService = hospitalService;
|
|
|
+ this.hospitalConfigService = hospitalConfigService;
|
|
|
+ this.clinicService = clinicService;
|
|
|
+ this.scriptManager = scriptManager;
|
|
|
+ this.hospitalId = hospitalId;
|
|
|
+ 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);
|
|
|
+ init(configStorageManager);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void init(ConfigStorageManager configStorageManager){
|
|
|
+ this.scriptSession=new HisScriptSession(hospitalId,scriptManager,configStorageManager,clinicService,hospitalService);
|
|
|
+ refreshInfo();
|
|
|
+ refreshConfig();
|
|
|
+ refreshScript();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 描述: 刷新医院信息
|
|
|
+ * @author lifang
|
|
|
+ * @date 2022/5/20 8:47
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public void refreshInfo(){
|
|
|
+ BusHospitalEntity hospital = hospitalService.getById(hospitalId);
|
|
|
+ storage.setConfig("info",hospital);
|
|
|
+ }
|
|
|
+
|
|
|
+ public BusHospitalEntity getInfo(){
|
|
|
+ return storage.getConfig("info").as(BusHospitalEntity.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 描述: 刷新配置
|
|
|
+ * @author lifang
|
|
|
+ * @date 2022/5/20 8:47
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public void refreshConfig(){
|
|
|
+ List<BusHospitalConfigEntity> hospitalConfig = hospitalConfigService.list(new QueryWrapper<BusHospitalConfigEntity>().lambda().eq(BusHospitalConfigEntity::getTenantId, hospitalId));
|
|
|
+ //设置默认参数
|
|
|
+ for (BusHospitalConfigEntity config : hospitalConfig) {
|
|
|
+ Map<String, Object> param = config.getConfig();
|
|
|
+ switch (config.getType()) {
|
|
|
+ case undo:
|
|
|
+ FunctionUndoConfig functionUndoConfig = JSONUtil.toBean(JSONUtil.toJsonStr(param), FunctionUndoConfig.class);
|
|
|
+ //自动撤泵
|
|
|
+ FunctionAutoUndoConfig autoUndo = functionUndoConfig.getAuto();
|
|
|
+ autoUndoConfigHandler.setConfig(autoUndo);
|
|
|
+ //自动结束临床管理
|
|
|
+ FunctionFinishMonitorConfig finishMonitor = functionUndoConfig.getFinishMonitor();
|
|
|
+ finishMonitorConfigHandler.setConfig(finishMonitor);
|
|
|
+ break;
|
|
|
+ case other:
|
|
|
+ FunctionOtherConfig otherConfig = JSONUtil.toBean(JSONUtil.toJsonStr(param), FunctionOtherConfig.class);
|
|
|
+ //镇痛不足
|
|
|
+ FunctionAnalConfig anal = otherConfig.getAnal();
|
|
|
+ analConfigHandler.setConfig(anal);
|
|
|
+ //其他
|
|
|
+ FunctionExtraConfig extraConfig = otherConfig.getOther();
|
|
|
+ extraConfigHandler.setConfig(extraConfig);
|
|
|
+ break;
|
|
|
+ default:break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 描述: 对设备发来消息进行处理
|
|
|
+ * @author lifang
|
|
|
+ * @date 2022/5/20 8:50
|
|
|
+ * @param source
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public void handleDeviceMessage(BusDeviceRunningEntity source){
|
|
|
+ analConfigHandler.handler(source);
|
|
|
+ extraConfigHandler.handler(source);
|
|
|
+ autoUndoConfigHandler.handler(source);
|
|
|
+ finishMonitorConfigHandler.handler(source);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void refreshScript(){
|
|
|
+ BusHospitalEntity hospital = hospitalService.getById(hospitalId);
|
|
|
+ ScriptParse scriptParse = scriptManager.getById(hospitalId);
|
|
|
+ scriptManager.resetScript(hospitalId,scriptParse.getId(),hospital.getScript().getContent());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|