Ver código fonte

手术安排添加手术统计

lighter 1 ano atrás
pai
commit
fce24567dd

+ 15 - 2
src/main/java/thyyxxk/webserver/controller/surgicalmanagement/SurgeryArrangementController.java

@@ -1,11 +1,15 @@
 package thyyxxk.webserver.controller.surgicalmanagement;
 
 import org.springframework.web.bind.annotation.*;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.surgeryarrangement.QuerySurgeryParams;
+import thyyxxk.webserver.entity.surgeryarrangement.request.StatisticsInquiry;
+import thyyxxk.webserver.entity.surgeryarrangement.response.SurgeryStatistics;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.OpRecord;
 import thyyxxk.webserver.service.surgicalmanagement.SurgeryArrangementService;
+import thyyxxk.webserver.utils.ResultVoUtil;
 
 import java.util.List;
 import java.util.Map;
@@ -15,8 +19,8 @@ import java.util.Map;
 public class SurgeryArrangementController {
     private final SurgeryArrangementService service;
 
-    public SurgeryArrangementController(SurgeryArrangementService server) {
-        this.service = server;
+    public SurgeryArrangementController(SurgeryArrangementService service) {
+        this.service = service;
     }
 
     @GetMapping("/getDicList")
@@ -51,4 +55,13 @@ public class SurgeryArrangementController {
     public ResultVo<String> notifyDoctor(@RequestBody OpRecord record) {
         return service.notifyDoctor(record);
     }
+
+    @PostMapping("/queryStatistics")
+    public ResultVo<SurgeryStatistics> queryStatistics(@RequestBody StatisticsInquiry inquiry) {
+        SurgeryStatistics response = service.queryStatistics(inquiry);
+        if (null == response) {
+            return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
+        }
+        return ResultVoUtil.success(response);
+    }
 }

+ 16 - 0
src/main/java/thyyxxk/webserver/dao/his/surgicalmanagement/SurgeryArrangementDao.java

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Update;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.OpRecord;
 
+import java.util.Date;
 import java.util.List;
 
 @Mapper
@@ -69,4 +70,19 @@ public interface SurgeryArrangementDao {
 
     @Select("select name from op_zd_room where code=#{code}")
     String selectRoomName(String code);
+
+    @Select("select a.record_id,a.patient_name,a.dept_code,a.op_scale,a.urgent_clinic_flag, " +
+            "deptName=(select rtrim(d.name) from zd_unit_code d where d.code=a.dept_code), " +
+            "a.apply_date,a.inpatient_no,a.admiss_times,b.doctor_zd,b.doctor_mz,b.nurse_qx,b.nurse_xh, " +
+            "doctorZdName=(select rtrim(d.name) from a_employee_mi d where d.code=b.doctor_zd), " +
+            "doctorMzName=(select rtrim(d.name) from a_employee_mi d where d.code=b.doctor_mz), " +
+            "nurseXhName=(select rtrim(d.name) from a_employee_mi d where d.code=b.nurse_xh), " +
+            "nurseQxName=(select rtrim(d.name) from a_employee_mi d where d.code=b.nurse_qx), " +
+            "applyDocName=(select rtrim(d.name) from a_employee_mi d where d.code=a.apply_doc), " +
+            "a.status,a.patient_type,a.op_code,a.op_name,a.op_datetime,a.hocus_code, " +
+            "hocusName=(select rtrim(d.name) from zd_anaesthesia d where d.code=a.hocus_code) " +
+            "from op_record a,op_record_join b " +
+            "where a.op_datetime>=#{start} and a.op_datetime<=#{end} and a.record_id=b.record_id " +
+            "order by a.op_datetime")
+    List<OpRecord> selectOpRecordStatistics(Date start, Date end);
 }

+ 17 - 0
src/main/java/thyyxxk/webserver/entity/surgeryarrangement/request/StatisticsInquiry.java

@@ -0,0 +1,17 @@
+package thyyxxk.webserver.entity.surgeryarrangement.request;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class StatisticsInquiry {
+    private Date startDate;
+    private Date endDate;
+    private Label statisticsLabel;
+
+    public enum Label {
+        BY_DEPARTMENT,
+        BY_SURGERY
+    }
+}

+ 13 - 0
src/main/java/thyyxxk/webserver/entity/surgeryarrangement/response/SurgeryStatistics.java

@@ -0,0 +1,13 @@
+package thyyxxk.webserver.entity.surgeryarrangement.response;
+
+import lombok.Data;
+import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.OpRecord;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class SurgeryStatistics {
+    private Integer total;
+    private Map<String, List<OpRecord>> surgeryMap;
+}

+ 19 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/shoushu/OpRecord.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
+import thyyxxk.webserver.utils.StringUtil;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -39,6 +40,7 @@ public class OpRecord implements Serializable {
      * 科室
      */
     private String deptCode;
+    private String deptName;
     private String deptCodeName;
 
     /**
@@ -77,10 +79,12 @@ public class OpRecord implements Serializable {
      * 状态:1-申请、2-安排、3-确认、d-删除
      */
     private String status;
+    private String statusName;
     /**
      * 手术类别:1-门诊手术、2-住院手术
      */
     private String patientType;
+    private String patientTypeName;
     /**
      * 医嘱号:0-手术室录入、1-医生工作站录入、
      * 大于1医嘱传入
@@ -126,6 +130,7 @@ public class OpRecord implements Serializable {
      * 急诊标志:1-是、0-否
      */
     private String urgentClinicFlag;
+    private String urgentClinicName;
     /**
      * avocationFlag
      */
@@ -386,6 +391,20 @@ public class OpRecord implements Serializable {
      */
     private String orderName;
 
+    public String getPatientTypeName() {
+        if (StringUtil.isBlank(this.patientType)) {
+            return null;
+        }
+        switch (this.patientType) {
+            case "1":
+                return "门诊手术";
+            case "2":
+                return "住院手术";
+            default:
+                return null;
+        }
+    }
+
     public String getStatusName() {
         if (this.status == null) {
             return "";

+ 34 - 0
src/main/java/thyyxxk/webserver/service/surgicalmanagement/SurgeryArrangementService.java

@@ -10,6 +10,8 @@ import thyyxxk.webserver.dao.his.surgicalmanagement.SurgeryArrangementDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.surgeryarrangement.QuerySurgeryParams;
+import thyyxxk.webserver.entity.surgeryarrangement.request.StatisticsInquiry;
+import thyyxxk.webserver.entity.surgeryarrangement.response.SurgeryStatistics;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.OpRecord;
 import thyyxxk.webserver.service.outpatient.wxapi.SendWxInfoService;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
@@ -149,4 +151,36 @@ public class SurgeryArrangementService {
         String message = "推送失败。" + response.getString("errmsg");
         return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, message);
     }
+
+    public SurgeryStatistics queryStatistics(StatisticsInquiry inquiry) {
+        List<OpRecord> opRecordList = dao.selectOpRecordStatistics(inquiry.getStartDate(), inquiry.getEndDate());
+        if (opRecordList.isEmpty()) {
+            return null;
+        }
+
+        SurgeryStatistics response = new SurgeryStatistics();
+        response.setTotal(opRecordList.size());
+        Map<String, List<OpRecord>> map = new HashMap<>();
+
+        for (OpRecord record : opRecordList) {
+            String key;
+            if (inquiry.getStatisticsLabel() == StatisticsInquiry.Label.BY_DEPARTMENT) {
+                key = record.getDeptName();
+            } else {
+                key = record.getOpName();
+            }
+            if (StringUtil.isBlank(key)) {
+                continue;
+            }
+            if (map.containsKey(key)) {
+                map.get(key).add(record);
+            } else {
+                List<OpRecord> tempList = new ArrayList<>();
+                tempList.add(record);
+                map.put(key, tempList);
+            }
+        }
+        response.setSurgeryMap(map);
+        return response;
+    }
 }