瀏覽代碼

update 病人新增时,新增一个临床信息,保证所有病人都有临床绑定

A17404李放 3 年之前
父節點
當前提交
fb4f911d08

+ 3 - 3
coffee-common/src/main/java/com/coffee/common/crud/BaseService.java

@@ -273,9 +273,9 @@ public abstract class BaseService<M extends BaseMapper<E>, E,PK extends Serializ
                 }
             });
         }
-//        else {
-//            queryWrapper.orderByDesc("create_time");
-//        }
+        else {
+            queryWrapper.orderByDesc("create_time");
+        }
         if(StrUtil.isNotEmpty(param.getTenantId())&&!StrUtil.isNullOrUndefined(param.getTenantId())){
             LoginUser loginUser = (LoginUser) StpUtil.getTokenSession().get(com.coffee.common.Constants.LOGIN_USER_KEY);
             //是否为系统用户

+ 10 - 14
coffee-system/src/main/java/com/coffee/bus/controller/BusClinicController.java

@@ -1,5 +1,6 @@
 package com.coffee.bus.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.coffee.bus.controller.vo.ClinicStatsVo;
 import com.coffee.bus.entity.BusClinicEntity;
@@ -23,26 +24,21 @@ import org.springframework.web.bind.annotation.*;
 @AllArgsConstructor
 @RequestMapping("/bus/clinic")
 @Api(tags = "病人临床手术管理",description = "统一权限前缀(bus:clinic),例如新增bus:clinic:add")
-public class BusClinicController extends BaseCrudController<BusClinicEntity, String> {
+public class BusClinicController {
     private final LocalBusClinicService clinicService;
 
 
     @PostMapping("/stats")
-    @ApiOperation("临床过程中的数据记录")
-    public R<ClinicStatsReturnResult> list(@RequestBody ClinicStatsVo statsVo) {
+    @ApiOperation(value = "临床过程中的数据记录",notes = "权限【无】")
+    public R<ClinicStatsReturnResult> stats(@RequestBody ClinicStatsVo statsVo) {
         return R.success(clinicService.stats(statsVo));
     }
-    /**
-     * 权限控制前缀
-     * @return
-     */
-    @Override
-    public String getPermissionPrefix() {
-        return "bus:clinic";
-    }
 
-    @Override
-    public BaseService<? extends Mapper<BusClinicEntity>, BusClinicEntity, String> getService() {
-        return clinicService;
+
+    @PostMapping("/page")
+    @SaCheckPermission("bus:clinic:query")
+    @ApiOperation(value = "临床管理分页查询",notes = "权限【bus:clinic:query】")
+    public R<ClinicStatsReturnResult> page(@RequestBody ClinicStatsVo statsVo) {
+        return R.success(clinicService.stats(statsVo));
     }
 }

+ 7 - 8
coffee-system/src/main/java/com/coffee/bus/controller/BusPatientController.java

@@ -140,7 +140,7 @@ public class BusPatientController  {
         }
         //组装撤泵信息
         List<ManualUndoConfig> undoConfigs = patientOperators.stream().map(operator ->
-                ManualUndoConfig.of(Collections.singletonList(operator.getBindDeviceId()), operator.getCode(), tenantId,true, monitorFinishedVo.getUndo())
+                ManualUndoConfig.of(Collections.singletonList(operator.getBindDeviceId()), operator.getCode(),operator.getClinicId(), tenantId,true, monitorFinishedVo.getUndo())
         )
                 .collect(Collectors.toList());
         //病患绑定的有设备,对设备进行撤泵操作,且结束临床
@@ -165,14 +165,12 @@ public class BusPatientController  {
     }
 
 
-    @PostMapping("/monitor/reset/{patientCode}")
+    @PostMapping("/monitor/reset/{clinicId}")
     @SaCheckPermission("device:patient:edit")
     @ApiOperation(value = "病人当前监控时间重启",notes = "当结束临床后有新的输注信息产生,那么病人监控会重新显示,此时监控时间不会重新计算,需先调用该接口,权限标识为【device:patient:edit】")
-    public R reset(@PathVariable("patientCode")String patientCode){
-        return R.success(patientService.update(new UpdateWrapper<BusPatientEntity>()
-                .lambda()
-                .eq(BusPatientEntity::getCode,patientCode)
-                .set(BusPatientEntity::getTmpFinished,false)));
+    public R reset(@ApiParam("临床id")@PathVariable("clinicId")String clinicId){
+        return R.success(clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda().eq(BusClinicEntity::getId,clinicId)
+                .set(BusClinicEntity::getFinished,false)));
     }
 
 
@@ -191,7 +189,8 @@ public class BusPatientController  {
         //泵切换完成后,对病号报警解除
         deviceRunningService.undo(undoConfig,false);
         //判断当前病号下是否还存在副泵
-        long count = deviceRunningService.count(new QueryWrapper<BusDeviceRunningEntity>().lambda().eq(BusDeviceRunningEntity::getPatientCode, undoConfig.getPatientCode())
+        long count = deviceRunningService.count(new QueryWrapper<BusDeviceRunningEntity>().lambda()
+                .eq(BusDeviceRunningEntity::getPatientCode, undoConfig.getPatientCode())
                 .eq(BusDeviceRunningEntity::getTenantId, undoConfig.getTenantId())
                 .eq(BusDeviceRunningEntity::getMaster, false)
                 .eq(BusDeviceRunningEntity::getIsUndo, false));

+ 5 - 1
coffee-system/src/main/java/com/coffee/bus/entity/BusClinicEntity.java

@@ -44,7 +44,11 @@ public class BusClinicEntity extends TenantGenericEntity<String,String> {
     @ApiModelProperty(value = "手术开始时间")
     private Date startTime;
 
-    @ApiModelProperty(value = "手术结束时间")
+    @TableField
+    @ApiModelProperty("手术监护开始时间,即该临床手术后第一次上传数据时间")
+    private Date monitorStartTime;
+
+    @ApiModelProperty(value = "手术监护结束时间")
     private Date endTime;
 
     @ApiModelProperty(value = "患者姓名")

+ 0 - 13
coffee-system/src/main/java/com/coffee/bus/entity/BusPatientEntity.java

@@ -43,18 +43,6 @@ public class BusPatientEntity extends TenantGenericEntity<String,String> {
     @ApiModelProperty("病号最新的输注记录")
     private String infusionId;
 
-    @TableField
-    @ApiModelProperty("病人此次监护开始时间")
-    private Date monitorStartTime;
-
-    @TableField
-    @ApiModelProperty("此次监护医生是否已手动结束,以此表示来计算监护时长")
-    private Boolean tmpFinished;
-
-    @TableField
-    @ApiModelProperty("病人最后一次手动监护结束时间")
-    private Date monitorEndTime;
-
     @TableField
     @ApiModelProperty("病人最后的手术id,若病人手术信息暂不存在,则先置为-1")
     private String clinicId;
@@ -78,7 +66,6 @@ public class BusPatientEntity extends TenantGenericEntity<String,String> {
         patient.setName(clinic.getPatientName());
         patient.setGender(clinic.getPatientGender());
         patient.setClinicId(clinic.getId());
-        patient.setTmpFinished(clinic.getFinished());
         patient.setTenantId(clinic.getTenantId());
         return patient;
     }

+ 13 - 0
coffee-system/src/main/java/com/coffee/bus/mapper/BusClinicMapper.java

@@ -1,9 +1,13 @@
 package com.coffee.bus.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.coffee.bus.controller.vo.ClinicStatsVo;
 import com.coffee.bus.entity.BusClinicEntity;
 import java.util.*;
+
+import com.coffee.bus.service.dto.ClinicResult;
 import com.coffee.bus.service.dto.ClinicStatsQueryResult;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -30,4 +34,13 @@ public interface BusClinicMapper extends BaseMapper<BusClinicEntity> {
 
 
     List<ClinicStatsQueryResult> stats(@Param("query") ClinicStatsVo query);
+
+    /**
+     * 描述: 分页查询临床数据
+     * @author lifang
+     * @date 2022/5/10 17:29
+     * @param page
+     * @return IPage<ClinicResult>
+     */
+    IPage<ClinicResult> pageQuery(Page<ClinicResult> page);
 }

+ 30 - 24
coffee-system/src/main/java/com/coffee/bus/registry/patient/ClusterPatientRegistry.java

@@ -3,6 +3,7 @@ package com.coffee.bus.registry.patient;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.coffee.bus.entity.BusClinicEntity;
 import com.coffee.bus.entity.BusDeviceRunningEntity;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
@@ -59,43 +60,45 @@ public class ClusterPatientRegistry implements PatientRegistry {
                     .lambda().eq(BusPatientEntity::getCode, patientCode)
                     .eq(BusPatientEntity::getTenantId, hospitalId));
             boolean insert=false;
+            BusClinicEntity clinic=new BusClinicEntity();
             if(patient==null){
+                clinic.setId(IdWorker.getIdStr());
+                clinic.setPatientCode(patientCode);
+                clinic.setTenantId(hospitalId);
+                //当用户不存在时,创建用户,并给与用户一个空的临床信息
                 insert=true;
                 patient=new BusPatientEntity();
                 patient.setCode(patientCode);
-                //默认为空字符串
-                patient.setClinicId("");
                 patient.setTenantId(hospitalId);
+                //异步拉取his信息
+                clinicService.asyncFromHis(hospitalId,patientCode);
+            }else {
+                clinic = clinicService.recentClinicByPatientCode(hospitalId, patientCode);
             }
+
             patientOperator.setCode(patientCode);
             patientOperator.setTenantId(hospitalId);
             patientOperator.setName(patient.getName());
             patientOperator.setGender(patient.getGender());
 
-            BusClinicEntity clinic = clinicService.recentClinicByPatientCode(hospitalId, patientCode);
-            //不存在临床或临床已结束
-            if(clinic==null||Boolean.TRUE.equals(clinic.getFinished())){
-                clinicService.asyncFromHis(hospitalId,patientCode);
-                patient.setClinicId("");
-                patientOperator.setClinicId("");
-            }else {
-                //填充临床信息
-                patient.setName(clinic.getName());
-                patient.setTmpFinished(clinic.getFinished());
-                patient.setClinicId(clinic.getId());
-                patient.setTmpFinished(clinic.getFinished());
+            //填充临床信息
+            patient.setName(clinic.getName());
+            patient.setClinicId(clinic.getId());
 
-                patientOperator.setWard(clinic.getWard());
-                patientOperator.setBedNo(clinic.getBedNo());
-                patientOperator.setClinicId(clinic.getId());
-                patientOperator.setFinished(clinic.getFinished());
-            }
+            patientOperator.setWard(clinic.getWard());
+            patientOperator.setBedNo(clinic.getBedNo());
+            patientOperator.setClinicId(clinic.getId());
+            patientOperator.setFinished(clinic.getFinished());
             //填充输注信息
-            BusInfusionHistoryEntity infusion = infusionService.recentInfusionByPatientCode(hospitalId, patientCode);
-            if(infusion!=null){
-                patient.setInfusionId(infusion.getId());
-                patient.setMonitorStartTime(infusion.getStartTime());
-                patient.setMonitorEndTime(infusion.getUndoTime());
+            BusInfusionHistoryEntity recentInfusion = infusionService.recentInfusionByPatientCode(hospitalId, patientCode);
+            if(recentInfusion!=null){
+                patient.setInfusionId(recentInfusion.getId());
+                clinic.setMonitorStartTime(recentInfusion.getStartTime());
+                //监护已结束
+                if(Boolean.TRUE.equals(recentInfusion.getIsUndo())){
+                    clinic.setEndTime(recentInfusion.getUndoTime());
+                    clinic.setFinished(true);
+                }
             }
             //填充主副泵信息
             List<BusDeviceRunningEntity> runningList = deviceRunningService.list(new QueryWrapper<BusDeviceRunningEntity>().lambda().eq(BusDeviceRunningEntity::getPatientCode, patientCode).eq(BusDeviceRunningEntity::getTenantId, hospitalId));
@@ -114,9 +117,12 @@ public class ClusterPatientRegistry implements PatientRegistry {
                 try {
                     log.info("医院[{}]新增病号数据[{}]",hospitalId,patientCode);
                     patientService.save(patient);
+                    clinicService.save(clinic);
                 }catch (DuplicateKeyException e){
                     log.warn("病号重复插入,医院id:[{}],病号:[{}]",hospitalId,patientCode);
                 }
+            }else {
+                clinicService.updateById(clinic);
             }
         }
         return patientOperator;

+ 17 - 13
coffee-system/src/main/java/com/coffee/bus/service/LocalBusClinicService.java

@@ -2,11 +2,14 @@ package com.coffee.bus.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.coffee.bus.controller.vo.ClinicStatsVo;
 import com.coffee.bus.entity.BusClinicEntity;
 import com.coffee.bus.entity.BusPatientEntity;
 import com.coffee.bus.mapper.BusClinicMapper;
 import com.coffee.bus.registry.patient.PatientRegistry;
+import com.coffee.bus.service.dto.ClinicResult;
 import com.coffee.bus.service.dto.ClinicStatsQueryResult;
 import com.coffee.bus.service.dto.ClinicStatsReturnResult;
 import com.coffee.common.crud.BaseService;
@@ -56,32 +59,29 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
 
     /**
      * 结束当前医院病号的临床数据
-     * @param patientCodes 病号
+     * @param clinicId 临床id
      */
     @Transactional(rollbackFor = Exception.class)
-    public void finish(List<String> patientCodes, String tenantId) {
-        this.finish(patientCodes,new Date(),tenantId);
+    public void finish(String clinicId, String tenantId) {
+        this.finish(Collections.singletonList(clinicId),new Date(),tenantId);
     }
 
     /**
      * 结束当前医院病号的临床数据
-     * @param patientCodes 病号
+     * @param clinicIds 临床id
      * @param  finishTime 临床结束时间
      */
     @Transactional(rollbackFor = Exception.class)
-    public void finish(List<String> patientCodes,Date finishTime, String tenantId) {
+    public void finish(List<String> clinicIds,Date finishTime, String tenantId) {
         this.update(new UpdateWrapper<BusClinicEntity>().lambda()
-                .in(BusClinicEntity::getPatientCode,patientCodes)
-                .eq(BusClinicEntity::getFinished,false)
+                .in(BusClinicEntity::getId,clinicIds)
                 .set(BusClinicEntity::getFinished,true)
                 .set(BusClinicEntity::getEndTime,finishTime));
-
-        patientService.update(new UpdateWrapper<BusPatientEntity>().lambda()
-                .in(BusPatientEntity::getCode,patientCodes)
-                .set(BusPatientEntity::getTmpFinished,true)
-                .set(BusPatientEntity::getMonitorEndTime,finishTime));
         //更新病人缓存
-        patientCodes.stream().map(code->patientRegistry.getOperator(tenantId,code)).forEach(operator->operator.setFinished(true));
+        this.listByIds(clinicIds).stream()
+                .map(BusClinicEntity::getPatientCode)
+                .map(code->patientRegistry.getOperator(tenantId,code))
+                .forEach(operator->operator.setFinished(true));
     }
 
     /**
@@ -106,4 +106,8 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
     public ClinicStatsReturnResult stats(ClinicStatsVo statsVo) {
         return ClinicStatsReturnResult.of(this.baseMapper.stats(statsVo));
     }
+
+    public IPage<ClinicResult> pageQuery(Page<ClinicResult> page){
+        return this.baseMapper.pageQuery(page);
+    }
 }

+ 1 - 1
coffee-system/src/main/java/com/coffee/bus/service/LocalBusDeviceRunningService.java

@@ -121,7 +121,7 @@ public class LocalBusDeviceRunningService extends BaseService<BusDeviceRunningMa
         }
         //结束临床
         if(finishClinic){
-            clinicService.finish(Collections.singletonList(manualUndoConfig.getPatientCode()),manualUndoConfig.getTenantId());
+            clinicService.finish(manualUndoConfig.getClinicId(),manualUndoConfig.getTenantId());
         }
 
     }

+ 67 - 0
coffee-system/src/main/java/com/coffee/bus/service/dto/ClinicResult.java

@@ -0,0 +1,67 @@
+package com.coffee.bus.service.dto;
+
+import com.coffee.bus.enums.PatientAlarmEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName ClinicResult.java
+ * @Description 临床管理接口
+ * @createTime 2022年05月10日 17:18:00
+ */
+@Data
+@ApiModel("临床管理接口")
+public class ClinicResult {
+    @ApiModelProperty("临床id")
+    private String clinicId;
+
+    @ApiModelProperty("住院号")
+    private String patientCode;
+
+    @ApiModelProperty("姓名")
+    private String patientName;
+
+    @ApiModelProperty("病区")
+    private String ward;
+
+    @ApiModelProperty("床号")
+    private String bedNo;
+
+    @ApiModelProperty("手术名称")
+    private String surgeryName;
+
+    @ApiModelProperty("手术医生")
+    private String surgeryDoctor;
+
+    @ApiModelProperty("麻醉医生")
+    private String anaDoctor;
+
+    @ApiModelProperty("是否为无泵监控 0、(无泵)其他监控 1、输注监控")
+    private Boolean monitorType;
+
+    @ApiModelProperty("手术开始时间")
+    private Date clinicStartTime;
+
+    @ApiModelProperty("临床是否结束")
+    private Boolean finished;
+
+    @ApiModelProperty("监控开始时间")
+    private Date monitorStartTime;
+
+    @ApiModelProperty("监控结束时间")
+    private Date monitorEndTime;
+
+    @ApiModelProperty("监控报警状态")
+    private PatientAlarmEnum monitorAlarm;
+
+    @ApiModelProperty("输注次数")
+    private Integer infusionCount;
+
+    @ApiModelProperty("评价信息")
+    private Integer evalCount;
+}

+ 7 - 1
coffee-system/src/main/java/com/coffee/bus/service/dto/ManualUndoConfig.java

@@ -1,6 +1,7 @@
 package com.coffee.bus.service.dto;
 
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -18,16 +19,21 @@ import java.util.*;
  * @createTime 2022年03月30日 08:31:00
  */
 @Data
-@ApiModel("手动撤泵配置")
+@ApiModel("手动结束临床配置")
 @AllArgsConstructor(staticName = "of")
 @NoArgsConstructor
 public class ManualUndoConfig implements Serializable {
+
     @ApiModelProperty("进行撤泵的所有运行数据id")
     private List<String> deviceIds;
 
     @ApiModelProperty("撤泵病号")
     private String patientCode;
 
+    @ApiModelProperty(value = "临床id",hidden = true)
+    @JsonIgnore
+    private String clinicId;
+
     @ApiModelProperty("医院id")
     private String tenantId;
 

+ 8 - 3
coffee-system/src/main/java/com/coffee/bus/websocket/listener/DeviceInfoListener.java

@@ -119,12 +119,17 @@ public class DeviceInfoListener {
             handleAlarm(history,deviceOperator,cacheOperation);
             //todo 流速图处理
             if(first){
+                PatientOperator<PatientCacheInfo> operator = patientRegistry.getOperator(device.getTenantId(), device.getPatientCode());
                 //首次插入则设置设备别名
                 device.setAlias(deviceOperator.getAlias());
                 //首次上传数据,开启病号监控时长
-                patientService.update(new UpdateWrapper<BusPatientEntity>()
-                        .lambda().eq(BusPatientEntity::getCode,device.getPatientCode())
-                        .eq(BusPatientEntity::getTenantId,device.getTenantId()).set(BusPatientEntity::getMonitorStartTime,device.getStartTime()));
+                clinicService.update(new UpdateWrapper<BusClinicEntity>()
+                        .lambda()
+                        .eq(BusClinicEntity::getId,operator.getClinicId())
+                        .set(BusClinicEntity::getWard,device.getWard())
+                        .set(BusClinicEntity::getBedNo,device.getBedNo())
+                        .set(BusClinicEntity::getMonitorStartTime,device.getStartTime())
+                );
                 deviceUsingService.save(device);
             }else {
                 deviceUsingService.updateById(device);

+ 4 - 10
coffee-system/src/main/java/com/coffee/bus/websocket/listener/HisInfoListener.java

@@ -211,19 +211,13 @@ public class HisInfoListener {
             if(infusion!=null){
                 //临床信息发生变化
                 if(Boolean.TRUE.equals(patientOperator.getFinished())){
-                    patientService.update(new UpdateWrapper<BusPatientEntity>().lambda()
-                            .eq(BusPatientEntity::getCode,clinic.getPatientCode())
-                            .eq(BusPatientEntity::getTenantId,clinic.getTenantId())
-                            .set(BusPatientEntity::getTmpFinished,false)
-                            .set(BusPatientEntity::getMonitorStartTime,infusion.getStartTime()));
+                    clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda()
+                    .eq(BusClinicEntity::getId,clinic.getId())
+                    .set(BusClinicEntity::getFinished,false)
+                    );
                     patientOperator.setFinished(false);
                 }else {
                     //重新计算病人该次临床的开始时间
-                    patientService
-                            .update(new UpdateWrapper<BusPatientEntity>().lambda()
-                                    .eq(BusPatientEntity::getCode,clinic.getPatientCode())
-                                    .eq(BusPatientEntity::getTenantId,clinic.getTenantId())
-                                    .set(BusPatientEntity::getMonitorStartTime,infusion.getStartTime()));
                 }
             }
 

+ 15 - 12
coffee-system/src/main/resources/mapper/bus/BusPatientMapper.xml

@@ -67,7 +67,7 @@
         <result column="ana_type" property="anaType"/>
         <result column="surgery_doctor" property="surgeryDoctor"/>
         <result column="surgery_name" property="surgeryName"/>
-        <result column="tmp_finished" property="clinicFinished"/>
+        <result column="finished" property="clinicFinished"/>
         <result column="monitor_end_time" property="monitorEndTime"/>
         <result column="monitor_start_time" property="monitorStartTime"/>
     </resultMap>
@@ -140,9 +140,6 @@
         p.`code` as patient_code,
         p.gender as gender,
         p.alarm as patient_alarm,
-        p.tmp_finished as tmp_finished,
-        p.monitor_start_time as monitor_start_time,
-        p.monitor_end_time as monitor_end_time,
         i.device_id as device_id,
         i.clinic_id as clinic_id,
         i.ward as ward,
@@ -180,6 +177,9 @@
         i.remark as remark,
         i.type as device_type,
         r.alias as device_alias,
+        c.finished as finished,
+        c.monitor_start_time as monitor_start_time,
+        c.monitor_end_time as monitor_end_time,
         c.ana_doctor as ana_doctor,
         c.patient_age as patient_age,
         c.ana_type as ana_type,
@@ -190,10 +190,7 @@
         (select * from bus_patient
         <where>
             <if test="query.tenantId!=null">
-              and tenant_id=#{query.tenantId}
-            </if>
-            <if test="query.timeRange != null and query.timeRange.size >0">
-                and tmp_finished &gt; #{query.timeRange[0]} and  tmp_finished &lt; #{query.timeRange[1]}
+                and tenant_id=#{query.tenantId}
             </if>
         </where>
         )
@@ -256,7 +253,13 @@
         </where>
         ) as i on p.infusion_id=i.id
         join (select device_id,alias from bus_device_running) as r on r.device_id=i.device_id
-        left join bus_clinic c on i.clinic_id=c.id
+        left join (select * from bus_clinic
+        <where>
+            <if test="query.timeRange != null and query.timeRange.size >0">
+                and monitor_start_time &gt; #{query.timeRange[0]} and  monitor_start_time &lt; #{query.timeRange[1]}
+            </if>
+        </where>
+        ) c on i.clinic_id=c.id
         <if test="query.bedNo!=null || query.name!=null || query.code!=null || query.anaDoctor!=null || query.surgeName!=null ||query.gender!=null ||query.anaType!=null">
             <where>
                 (1=0
@@ -292,9 +295,6 @@
         p.`code` as patient_code,
         p.gender as gender,
         p.alarm as patient_alarm,
-        p.tmp_finished as tmp_finished,
-        p.monitor_start_time as monitor_start_time,
-        p.monitor_end_time as monitor_end_time,
         i.device_id as device_id,
         i.clinic_id as clinic_id,
         i.ward as ward,
@@ -332,6 +332,9 @@
         i.remark as remark,
         i.type as device_type,
         r.alias as device_alias,
+        c.finished as finished,
+        c.monitor_start_time as monitor_start_time,
+        c.monitor_end_time as monitor_end_time,
         c.ana_doctor as ana_doctor,
         c.patient_age as patient_age,
         c.ana_type as ana_type,