Browse Source

add 临床管理接口

A17404李放 3 years ago
parent
commit
a06b5ceb7f

+ 12 - 1
coffee-admin/src/test/java/com/coffee/admin/BusClinicTest.java

@@ -1,5 +1,6 @@
 package com.coffee.admin;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.coffee.bus.controller.vo.ClinicStatsVo;
 import com.coffee.bus.entity.BusDeviceRunningEntity;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
@@ -14,6 +15,9 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Author longsanlang
  * @Date 2022-04-06 17:55:44
@@ -28,6 +32,8 @@ public class BusClinicTest {
     private LocalBusClinicService clinicService;
 
 
+    @Autowired
+    private LocalBusInfusionHistoryService infusionHistoryService;
 
     @Test
     public void stats(){
@@ -44,7 +50,12 @@ public class BusClinicTest {
 
     @Test
     public void save(){
-
+        List<Map<String, Object>> mapList = infusionHistoryService
+                .listMaps(new QueryWrapper<BusInfusionHistoryEntity>()
+                        .select("clinic_id","count(1) as c")
+                        .lambda()
+                        .groupBy(BusInfusionHistoryEntity::getClinicId));
+        System.out.println(mapList);
     }
 
 

+ 6 - 2
coffee-system/src/main/java/com/coffee/bus/controller/BusClinicController.java

@@ -2,9 +2,13 @@ package com.coffee.bus.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
+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.service.LocalBusClinicService;
+import com.coffee.bus.service.dto.ClinicQuery;
+import com.coffee.bus.service.dto.ClinicResult;
 import com.coffee.bus.service.dto.ClinicStatsReturnResult;
 import com.coffee.common.crud.BaseService;
 import com.coffee.common.crud.controller.BaseCrudController;
@@ -38,7 +42,7 @@ public class BusClinicController {
     @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));
+    public R<IPage<ClinicResult>> page(@RequestBody ClinicQuery query) {
+        return R.success(clinicService.pageQuery(query));
     }
 }

+ 3 - 2
coffee-system/src/main/java/com/coffee/bus/service/LocalBusClinicService.java

@@ -9,6 +9,7 @@ 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.ClinicQuery;
 import com.coffee.bus.service.dto.ClinicResult;
 import com.coffee.bus.service.dto.ClinicStatsQueryResult;
 import com.coffee.bus.service.dto.ClinicStatsReturnResult;
@@ -107,7 +108,7 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
         return ClinicStatsReturnResult.of(this.baseMapper.stats(statsVo));
     }
 
-    public IPage<ClinicResult> pageQuery(Page<ClinicResult> page){
-        return this.baseMapper.pageQuery(page);
+    public IPage<ClinicResult> pageQuery(ClinicQuery query){
+        return this.baseMapper.pageQuery(query.getPage());
     }
 }

+ 3 - 2
coffee-system/src/main/java/com/coffee/bus/service/LocalBusDeviceManualService.java

@@ -76,9 +76,10 @@ public class LocalBusDeviceManualService extends BaseService<BusDeviceManualMapp
     @Transactional(rollbackFor = Exception.class)
     public void save(BusDeviceManualEntity manual, BusClinicEntity clinic) {
         //将临床设置为无泵监控临床
+        Date now = new Date();
         clinic.setMonitorType(false);
-        if(clinic.getStartTime()==null){
-            clinic.setStartTime(new Date());
+        if(clinic.getMonitorStartTime()==null){
+            clinic.setMonitorStartTime(now);
         }
         clinicService.save(clinic);
         if(manual!=null){

+ 4 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusPatientService.java

@@ -14,6 +14,7 @@ import com.coffee.bus.entity.BusPatientEntity;
 import com.coffee.bus.entity.PatientDeviceRepeatDomain;
 import com.coffee.bus.enums.DeviceAlarmEnum;
 import com.coffee.bus.enums.DeviceStatusEnum;
+import com.coffee.bus.enums.PatientAlarmEnum;
 import com.coffee.bus.service.dto.*;
 import com.coffee.bus.mapper.BusPatientMapper;
 import com.coffee.bus.registry.patient.PatientOperator;
@@ -69,6 +70,9 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
         if(entity.getGender()==null){
             entity.setGender(SexEnum.UNKNOW);
         }
+        if(entity.getAlarm()==null){
+            entity.setAlarm(PatientAlarmEnum.NONE);
+        }
     }
 
     @Override

+ 46 - 0
coffee-system/src/main/java/com/coffee/bus/service/dto/ClinicQuery.java

@@ -0,0 +1,46 @@
+package com.coffee.bus.service.dto;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.*;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName ClinicQuery.java
+ * @Description TODO
+ * @createTime 2022年05月11日 08:30:00
+ */
+@ApiModel("临床管理查询")
+@Data
+public class ClinicQuery {
+    @ApiModelProperty("患者类型, 0、其他监控 1、输注监控")
+    private Integer monitorType;
+
+    @ApiModelProperty("手术名称")
+    private String surgeryName;
+
+    @ApiModelProperty("患者名称")
+    private String patientName;
+
+    @ApiModelProperty("住院号")
+    private String patientCode;
+
+    @ApiModelProperty("病区")
+    private String ward;
+
+    @ApiModelProperty("床号")
+    private String bedNo;
+
+    @ApiModelProperty("开始时间区间")
+    private List<Date>  timeRange;
+
+    @ApiModelProperty("分页查询参数")
+    @NotNull(message = "分页查询参数不可为空")
+    private Page<ClinicResult> page;
+}

+ 8 - 6
coffee-system/src/main/java/com/coffee/bus/service/dto/ClinicResult.java

@@ -1,5 +1,6 @@
 package com.coffee.bus.service.dto;
 
+import com.coffee.bus.entity.BusClinicEntity;
 import com.coffee.bus.enums.PatientAlarmEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -44,24 +45,25 @@ public class ClinicResult {
     @ApiModelProperty("是否为无泵监控 0、(无泵)其他监控 1、输注监控")
     private Boolean monitorType;
 
-    @ApiModelProperty("手术开始时间")
-    private Date clinicStartTime;
-
     @ApiModelProperty("临床是否结束")
     private Boolean finished;
 
+    @ApiModelProperty("手术开始时间")
+    private Date clinicStartTime;
+
     @ApiModelProperty("监控开始时间")
     private Date monitorStartTime;
 
     @ApiModelProperty("监控结束时间")
     private Date monitorEndTime;
 
-    @ApiModelProperty("监控报警状态")
+    @ApiModelProperty("监控报警状态 0、正常无报警信息 1、病人绑定多个设备 2、病人未绑定设备")
     private PatientAlarmEnum monitorAlarm;
 
     @ApiModelProperty("输注次数")
-    private Integer infusionCount;
+    private int infusionCount;
 
     @ApiModelProperty("评价信息")
-    private Integer evalCount;
+    private int evalCount;
+
 }

+ 3 - 0
coffee-system/src/main/java/com/coffee/bus/service/dto/ManualMonitorResult.java

@@ -35,6 +35,9 @@ public class ManualMonitorResult {
     @ApiModelProperty(value = "手术开始时间")
     private Date startTime;
 
+    @ApiModelProperty(value = "监控开始时间")
+    private Date monitorStartTime;
+
     @ApiModelProperty(value = "患者姓名")
     private String patientName;
 

+ 72 - 30
coffee-system/src/main/resources/mapper/bus/BusClinicMapper.xml

@@ -11,39 +11,81 @@
         <result column="upload_time" property="uploadTime"/>
     </resultMap>
 
+    <resultMap id="queryResult" type="com.coffee.bus.service.dto.ClinicResult">
+        <result column="clinic_id" property="clinicId"/>
+        <result column="patient_code" property="patientCode"/>
+        <result column="patient_name" property="patientName"/>
+        <result column="ward" property="ward"/>
+        <result column="bed_no" property="bedNo"/>
+        <result column="surgery_name" property="surgeryName"/>
+        <result column="surgery_doctor" property="surgeryDoctor"/>
+        <result column="ana_doctor" property="anaDoctor"/>
+        <result column="monitor_type" property="monitorType"/>
+        <result column="finished" property="finished"/>
+        <result column="clinic_start_time" property="clinicStartTime"/>
+        <result column="monitor_start_time" property="monitorStartTime"/>
+        <result column="monitor_end_time" property="monitorEndTime"/>
+        <result column="monitor_alarm" property="monitorAlarm"/>
+        <result column="infusion_count" property="infusionCount"/>
+        <result column="eval_count" property="evalCount"/>
+
+    </resultMap>
     <select id="stats" resultMap="stats">
-            SELECT
-            <if test="query.continueDose!=false">
-                h.continue_dose as continue_dose,
-            </if>
-            <if test="query.appendDose!=false">
-                h.append_dose as append_dose,
+        SELECT
+        <if test="query.continueDose!=false">
+            h.continue_dose as continue_dose,
+        </if>
+        <if test="query.appendDose!=false">
+            h.append_dose as append_dose,
+        </if>
+        <if test="query.inputDose!=false">
+            h.input_dose as input_dose,
+        </if>
+        <if test="query.validCount!=false">
+            h.pca_valid_count as valid_count,
+        </if>
+        <if test="query.inValidCount!=false">
+            h.pca_invalid_count as invalid_count,
+        </if>
+        h.upload_time
+        FROM
+        (select id from bus_infusion_history
+        <where>
+            <if test="query.clinicId!=null">
+                and clinic_id = #{query.clinicId}
             </if>
-            <if test="query.inputDose!=false">
-                h.input_dose as input_dose,
+            <if test="query.infusionId!=null">
+                and id = #{query.infusionId}
             </if>
-            <if test="query.validCount!=false">
-                h.pca_valid_count as valid_count,
+            <if test="query.deviceId!=null">
+                and device_id = #{query.deviceId}
             </if>
-            <if test="query.inValidCount!=false">
-                h.pca_invalid_count as invalid_count,
-            </if>
-            h.upload_time
-            FROM
-            (select id from bus_infusion_history
-             <where>
-                 <if test="query.clinicId!=null">
-                     and clinic_id = #{query.clinicId}
-                 </if>
-                 <if test="query.infusionId!=null">
-                     and id = #{query.infusionId}
-                 </if>
-                 <if test="query.deviceId!=null">
-                     and device_id = #{query.deviceId}
-                 </if>
-             </where>)
-              as i
-             left JOIN (select * from bus_device_history) as h on h.infusion_id=i.id
-             order by h.upload_time asc
+        </where>)
+        as i
+        left JOIN (select * from bus_device_history) as h on h.infusion_id=i.id
+        order by h.upload_time asc
+    </select>
+
+    <select id="pageQuery" resultMap="queryResult">
+        select
+            c.id as clinic_id,
+            c.patient_code as patient_code,
+            c.patient_name as patient_name,
+            c.ward as ward,
+            c.bed_no as bed_no,
+            c.`name` as surgery_name,
+            c.surgery_doctor as surgery_doctor,
+            c.ana_doctor as ana_doctor,
+            c.monitor_type as monitor_type,
+            c.finished as finished,
+            c.start_time as clinic_start_time,
+            c.monitor_start_time as monitor_start_time,
+            c.end_time as monitor_end_time,
+            i.infusion_count as infusion_count,
+            eval.eval_count as eval_count
+            from bus_clinic as c
+            left join  bus_patient  as p on c.id=p.clinic_id
+            left join  (select clinic_id,count(1) as infusion_count from bus_infusion_history GROUP BY clinic_id) as i on i.clinic_id=c.id
+            left join (select clinic_id,count(1) as eval_count from bus_evaluation  GROUP BY clinic_id) as eval on eval.clinic_id=c.id
     </select>
 </mapper>

+ 2 - 0
coffee-system/src/main/resources/mapper/bus/BusDeviceManualMapper.xml

@@ -13,6 +13,7 @@
         <result column="surgery_name" property="surgeryName"/>
         <result column="ana_doctor" property="anaDoctor"/>
         <result column="start_time" property="startTime"/>
+        <result column="monitor_start_time" property="monitorStartTime"/>
         <result column="device_type" property="deviceType"/>
         <result column="clinic_id" property="clinicId"/>
     </resultMap>
@@ -23,6 +24,7 @@
         c.patient_name as patient_name,
         c.patient_gender as patient_gender,
         c.patient_age as patient_age,
+        c.monitor_start_time as monitor_start_time,
         c.id as clinic_id,
         c.ward as ward,
         c.bed_no as bed_no,