HospitalManager.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.coffee.bus.hospital;
  2. import cn.hutool.json.JSONUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.coffee.bus.bean.Script;
  5. import com.coffee.bus.entity.BusDeviceRunningEntity;
  6. import com.coffee.bus.entity.BusHospitalConfigEntity;
  7. import com.coffee.bus.entity.BusHospitalEntity;
  8. import com.coffee.bus.hospital.config.HospitalAutoUndoConfigHandler;
  9. import com.coffee.bus.hospital.config.HospitalFinishMonitorConfigHandler;
  10. import com.coffee.bus.hospital.config.HospitalFunctionAnalConfigHandler;
  11. import com.coffee.bus.hospital.config.HospitalFunctionExtraConfigHandler;
  12. import com.coffee.bus.hospital.config.bean.*;
  13. import com.coffee.bus.hospital.his.HisScriptSession;
  14. import com.coffee.bus.registry.device.DeviceRegistry;
  15. import com.coffee.bus.registry.patient.PatientRegistry;
  16. import com.coffee.bus.hospital.script.ScriptManager;
  17. import com.coffee.bus.hospital.script.ScriptParse;
  18. import com.coffee.bus.service.*;
  19. import com.coffee.bus.utils.WsPublishUtils;
  20. import com.coffee.common.cache.ConfigStorage;
  21. import com.coffee.common.cache.manager.ConfigStorageManager;
  22. import com.coffee.common.util.RedissonUtil;
  23. import lombok.Data;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Optional;
  27. /**
  28. * @author lifang
  29. * @version 1.0.0
  30. * @ClassName HospitalManage.java
  31. * @Description 医院管理器
  32. * @createTime 2022年05月20日 08:33:00
  33. */
  34. @Data
  35. public class HospitalManager {
  36. private String hospitalId;
  37. private HisScriptSession scriptSession;
  38. private HospitalAutoUndoConfigHandler autoUndoConfigHandler;
  39. private HospitalFinishMonitorConfigHandler finishMonitorConfigHandler;
  40. private HospitalFunctionAnalConfigHandler analConfigHandler;
  41. private HospitalFunctionExtraConfigHandler extraConfigHandler;
  42. private LocalBusHospitalService hospitalService;
  43. private LocalBusHospitalConfigService hospitalConfigService;
  44. private LocalBusClinicService clinicService;
  45. private ScriptManager scriptManager;
  46. private ConfigStorage storage;
  47. public HospitalManager(String hospitalId,
  48. LocalBusHospitalService hospitalService,
  49. LocalBusHospitalConfigService hospitalConfigService,
  50. LocalBusClinicService clinicService,
  51. LocalBusDeviceRunningService deviceRunningService,
  52. LocalBusInfusionHistoryService infusionHistoryService,
  53. PatientRegistry patientRegistry,
  54. DeviceRegistry deviceRegistry,
  55. WsPublishUtils wsPublishUtils,
  56. ScriptManager scriptManager,
  57. ConfigStorageManager configStorageManager,
  58. RedissonUtil redissonUtil) {
  59. this.hospitalId = hospitalId;
  60. this.hospitalService = hospitalService;
  61. this.hospitalConfigService = hospitalConfigService;
  62. this.clinicService = clinicService;
  63. this.scriptManager = scriptManager;
  64. this.hospitalId = hospitalId;
  65. this.storage=configStorageManager.getStorage(hospitalId);
  66. this.autoUndoConfigHandler=new HospitalAutoUndoConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry);
  67. this.finishMonitorConfigHandler=new HospitalFinishMonitorConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry);
  68. this.analConfigHandler=new HospitalFunctionAnalConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry);
  69. this.extraConfigHandler=new HospitalFunctionExtraConfigHandler(storage,hospitalId,redissonUtil,deviceRunningService,infusionHistoryService,deviceRegistry,wsPublishUtils,patientRegistry,finishMonitorConfigHandler,autoUndoConfigHandler);
  70. init(configStorageManager);
  71. }
  72. private void init(ConfigStorageManager configStorageManager){
  73. this.scriptSession=new HisScriptSession(hospitalId,scriptManager,configStorageManager,clinicService,hospitalService);
  74. refreshInfo();
  75. refreshConfig();
  76. refreshScript();
  77. }
  78. /**
  79. * 描述: 刷新医院信息
  80. * @author lifang
  81. * @date 2022/5/20 8:47
  82. * @param
  83. * @return void
  84. */
  85. public void refreshInfo(){
  86. BusHospitalEntity hospital = hospitalService.getById(hospitalId);
  87. storage.setConfig("info",hospital);
  88. }
  89. public BusHospitalEntity getInfo(){
  90. return storage.getConfig("info").as(BusHospitalEntity.class);
  91. }
  92. /**
  93. * 描述: 刷新配置
  94. * @author lifang
  95. * @date 2022/5/20 8:47
  96. * @param
  97. * @return void
  98. */
  99. public void refreshConfig(){
  100. List<BusHospitalConfigEntity> hospitalConfig = hospitalConfigService.list(new QueryWrapper<BusHospitalConfigEntity>().lambda().eq(BusHospitalConfigEntity::getTenantId, hospitalId));
  101. //设置默认参数
  102. for (BusHospitalConfigEntity config : hospitalConfig) {
  103. Map<String, Object> param = config.getConfig();
  104. switch (config.getType()) {
  105. case undo:
  106. FunctionUndoConfig functionUndoConfig = JSONUtil.toBean(JSONUtil.toJsonStr(param), FunctionUndoConfig.class);
  107. //自动撤泵
  108. FunctionAutoUndoConfig autoUndo = functionUndoConfig.getAuto();
  109. autoUndoConfigHandler.setConfig(autoUndo);
  110. //自动结束临床管理
  111. FunctionFinishMonitorConfig finishMonitor = functionUndoConfig.getFinishMonitor();
  112. finishMonitorConfigHandler.setConfig(finishMonitor);
  113. break;
  114. case other:
  115. FunctionOtherConfig otherConfig = JSONUtil.toBean(JSONUtil.toJsonStr(param), FunctionOtherConfig.class);
  116. //镇痛不足
  117. FunctionAnalConfig anal = otherConfig.getAnal();
  118. analConfigHandler.setConfig(anal);
  119. //其他
  120. FunctionExtraConfig extraConfig = otherConfig.getExtra();
  121. extraConfigHandler.setConfig(extraConfig);
  122. break;
  123. default:break;
  124. }
  125. }
  126. }
  127. /**
  128. * 描述: 对设备发来消息进行处理
  129. * @author lifang
  130. * @date 2022/5/20 8:50
  131. * @param source
  132. * @return void
  133. */
  134. public void handleDeviceMessage(BusDeviceRunningEntity source){
  135. analConfigHandler.handler(source);
  136. extraConfigHandler.handler(source);
  137. autoUndoConfigHandler.handler(source);
  138. finishMonitorConfigHandler.handler(source);
  139. }
  140. public void refreshScript(){
  141. BusHospitalEntity hospital = hospitalService.getById(hospitalId);
  142. ScriptParse scriptParse = scriptManager.getById(hospitalId);
  143. scriptManager.resetScript(hospitalId,scriptParse.getId(), Optional.ofNullable(hospital.getScript()).orElse(new Script()).getContent());
  144. }
  145. }