Browse Source

完成手术申请

xiaochan 3 years ago
parent
commit
6445fd642f

+ 1 - 1
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/ShouShuShenQingController.java

@@ -70,7 +70,7 @@ public class ShouShuShenQingController {
     }
 
     @PostMapping("/xinZengShouShuShenQing")
-    public ResultVo<String> xinZengShouShuShenQing(XinZengShouShu param) {
+    public ResultVo<String> xinZengShouShuShenQing(@RequestBody XinZengShouShu param) {
         return server.xinZengShouShuShenQing(param);
     }
 }

+ 9 - 0
src/main/java/thyyxxk/webserver/dao/his/PublicDao.java

@@ -292,4 +292,13 @@ public interface PublicDao {
 
     @Update("update ysh_config set tc_no = #{tcNo}")
     void genXingJianYanJianChaXuHao(Integer tcNo);
+
+    @Update("update op_config set op_record_id =op_record_id ")
+    void suoZhuShouShu();
+
+    @Select("select op_record_id from op_config")
+    Integer shouShuXuHao();
+
+    @Update("update op_config set op_record_id =#{code} ")
+    void genXingShouShuXuHao(Integer code);
 }

+ 64 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/ShouShuShenQingDao.java

@@ -2,6 +2,7 @@ package thyyxxk.webserver.dao.his.zhuyuanyisheng;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -114,5 +115,68 @@ public interface ShouShuShenQingDao extends BaseMapper<OpRecord> {
     @Select("select code,name from op_zd_part where (name like #{code} or py_code like #{code} or d_code like #{code})")
     List<GetDropdownBox> huoQuShouShuBuWei(String code);
 
+    @Select("Select isnull(Max(op_times),0) " +
+            "From op_record " +
+            "Where inpatient_no = #{patNo} " +
+            "  And admiss_times = #{times} ")
+    Integer shouShuShenQingCiShu(@Param("patNo") String patNo,
+                                 @Param("times") Integer times);
+
+
+    @Insert("<script>" +
+            "Insert Into op_record_join (record_id, zy_serial_no, op_times, doctor_zd, doctor_wp, doctor_1, doctor_2, doctor_3,nurse_qx, nurse_xh) " +
+            "Values " +
+            "<foreach collection='list' item='item' separator=','>" +
+            "(#{item.recordId}, '', #{item.opTimes}, #{item.doctorZd}, null, #{item.doctor1}, #{item.doctor2}, #{item.doctor3}, #{item.nurseQx}, #{item.nurseXh})" +
+            "</foreach>" +
+            "</script>")
+    void chaRuShouShuYiSheng(@Param("list") List<OpRecord> list);
+
+    @Insert("<script>" +
+            "INSERT INTO op_record (record_id, inpatient_no, patient_name, admiss_times, op_times, dept_code, ward_code, op_code, " +
+            "                       op_datetime, infection_flag, urgent_clinic_flag, isolation_indicator, op_scale, input_id, status, " +
+            "                       input_date, apply_date, apply_doc, op_name, act_order_no, patient_type, req_date, req_id, bed_no, " +
+            "                       ssbc, ssyz_flag, ward_dept,remark,hocus_code,diag_before_op,diag_before_code," +
+            "                       part_code) " +
+            " VALUES " +
+            "<foreach collection='list' item='item' separator=','>" +
+            " (#{item.recordId}, #{patNo}, #{name}, #{times}, #{item.opTimes}, #{dept}, #{ward}, #{item.opCode}, " +
+            "        #{item.opDatetime}, '0', #{item.urgentClinicFlag}, '0', #{item.opScale}, " +
+            "        #{userCode}, '1', getdate(), #{item.applyDate}, #{userCode}, #{item.opName}, #{item.actOrderNo}, '2', " +
+            "        getdate(), #{userCode}, #{bedNo}, #{item.ssbc}, #{item.ssyzFlag}, #{admissWard},#{item.remark},#{item.hocusCode},#{item.diagBeforeOp},#{item.diagBeforeCode}," +
+            "        #{item.partCode})" +
+            "</foreach>" +
+            "</script>")
+    void chaRuShouShu(@Param("list") List<OpRecord> list,
+                      @Param("patNo") String patNo,
+                      @Param("name") String name,
+                      @Param("times") Integer times,
+                      @Param("dept") String dept,
+                      @Param("ward") String ward,
+                      @Param("userCode") String userCode,
+                      @Param("bedNo") String bedNo,
+                      @Param("admissWard") String admissWard);
+
+    @Insert("<script>" +
+            "INSERT INTO yz_act_order (order_code, order_name, frequ_code, infant_flag, order_time, physician, start_time, " +
+            "                          act_order_no, inpatient_no, admiss_times, drug_flag, enter_oper, enter_time, status_flag, " +
+            "                          signer, confirm_time, " +
+            "                          self_buy, pay_self, serial, group_no, doctor_flag, dept_code, ward_code, reg_flag,yb_self_flag,emergency_flag,exec_unit) " +
+            " VALUES " +
+            "<foreach collection='list' item='item' separator=','>" +
+            " (#{item.opCode}, '(手术)' + '${item.opName}', 'ONCE', #{infantFlag}, getdate(), #{userCode}, getdate(), " +
+            "        #{item.actOrderNo}, #{patNo}, " +
+            "        #{times}, 'p', #{userCode}, getdate(), '2', #{userCode}, getdate(), '0', '0', '00', '00', '1', #{dept}, #{ward},'1',#{item.ybSelfFlag},#{item.urgentClinicFlag},#{execUnit})" +
+            "</foreach>" +
+            "</script>")
+    void chaRuYiZhu(@Param("list") List<OpRecord> list,
+                    @Param("infantFlag") Integer infantFlag,
+                    @Param("userCode") String userCode,
+                    @Param("patNo") String patNo,
+                    @Param("times") Integer times,
+                    @Param("dept") String dept,
+                    @Param("ward") String ward,
+                    @Param("execUnit") String execUnit);
+
 
 }

+ 14 - 1
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/shoushu/OpRecord.java

@@ -3,6 +3,7 @@ package thyyxxk.webserver.entity.zhuyuanyisheng.shoushu;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
@@ -80,7 +81,7 @@ public class OpRecord implements Serializable {
      * 医嘱号:0-手术室录入、1-医生工作站录入、
      * 大于1医嘱传入
      */
-    private Integer actOrderNo;
+    private BigDecimal actOrderNo;
 
     /**
      * 手术代码
@@ -312,11 +313,15 @@ public class OpRecord implements Serializable {
     /**
      * 主刀医生
      */
+    private String doctorZd;
     private String doctorZdName;
 
     /**
      * 第一助手
      */
+    private String doctor1;
+    private String doctor2;
+    private String doctor3;
     private String doctor1Name;
     private String doctor2Name;
     private String doctor3Name;
@@ -324,16 +329,19 @@ public class OpRecord implements Serializable {
     /**
      * 麻醉医生
      */
+    private String doctorMz;
     private String doctorMzName;
 
     /**
      * 器械护士
      */
+    private String nurseQx;
     private String nurseQxName;
 
     /**
      * 巡回护士
      */
+    private String nurseXh;
     private String nurseXhName;
 
     /**
@@ -351,6 +359,11 @@ public class OpRecord implements Serializable {
      */
     private String sex;
 
+    /**
+     * 医保自费
+     */
+    private Integer ybSelfFlag;
+
     /**
      * 出生日期
      */

+ 34 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/shoushu/XinZengShouShu.java

@@ -2,6 +2,8 @@ package thyyxxk.webserver.entity.zhuyuanyisheng.shoushu;
 
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -14,7 +16,39 @@ import java.util.List;
  */
 @Data
 public class XinZengShouShu {
+    /**
+     * 住院号
+     */
+    @NotNull(message = "住院号不能为空")
+    @NotBlank(message = "住院号不能为空")
     private String inpatientNo;
+    /**
+     * 住院次数
+     */
+    @NotNull(message = "住院次数不能为空")
     private Integer admissTimes;
+    /**
+     * 患者当前在的科室
+     */
+    @NotNull(message = "病房信息不能为空")
+    @NotBlank(message = "病房信息不能为空")
+    private String admissWard;
+    /**
+     * 患者姓名
+     */
+    @NotNull(message = "患者姓名不能为空")
+    @NotBlank(message = "患者姓名不能为空")
+    private String name;
+
+    /**
+     * 执行科室
+     */
+    @NotNull(message = "执行科室不能为空")
+    @NotBlank(message = "执行科室不能为空")
+    private String execDept;
+
+    @NotNull(message = "床位不能为空")
+    @NotBlank(message = "床位不能为空")
+    private String bedNo;
     private List<OpRecord> list;
 }

+ 7 - 0
src/main/java/thyyxxk/webserver/service/PublicServer.java

@@ -395,5 +395,12 @@ public class PublicServer {
         return xuHao;
     }
 
+    public Integer huoQuShouShuHao() {
+        dao.suoZhuShouShu();
+        Integer index = dao.shouShuXuHao() + 1;
+        dao.genXingShouShuXuHao(index);
+        return index;
+    }
+
 }
 

+ 38 - 6
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/ShouShuShenQingServer.java

@@ -6,20 +6,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.GetDateFormat;
 import thyyxxk.webserver.dao.his.zhuyuanyisheng.ShouShuShenQingDao;
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuLuRuDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.zhuyuanyisheng.query.ChaXunJianChaHeJianYan;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.OpRecord;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.ShouShuFanHui;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.XinZengShouShu;
-import thyyxxk.webserver.utils.DateUtil;
-import thyyxxk.webserver.utils.EntityCopy;
-import thyyxxk.webserver.utils.ResultVoUtil;
-import thyyxxk.webserver.utils.StringUtil;
+import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYiZhu;
+import thyyxxk.webserver.service.PublicServer;
+import thyyxxk.webserver.utils.*;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -35,9 +38,13 @@ import java.util.Map;
 @Slf4j
 public class ShouShuShenQingServer {
     private final ShouShuShenQingDao dao;
+    private final PublicServer publicServer;
+    private final YiZhuLuRuDao yiZhuLuRuDao;
 
-    public ShouShuShenQingServer(ShouShuShenQingDao dao) {
+    public ShouShuShenQingServer(ShouShuShenQingDao dao, PublicServer publicServer, YiZhuLuRuDao yiZhuLuRuDao) {
         this.dao = dao;
+        this.publicServer = publicServer;
+        this.yiZhuLuRuDao = yiZhuLuRuDao;
     }
 
     public ResultVo<List<GetDropdownBox>> shouShuShenQingCeBianLan() {
@@ -96,8 +103,33 @@ public class ShouShuShenQingServer {
         return ResultVoUtil.success(dao.huoQuShouShuBuWei(StringUtil.isContainChinese(name)));
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public ResultVo<String> xinZengShouShuShenQing(XinZengShouShu param) {
         log.info("上传数据:{}", JSON.toJSONString(param));
-        return ResultVoUtil.success();
+        if (ListUtil.isBlank(param.getList())) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请先选择需要上传的数据。");
+        }
+        String userCode = TokenUtil.getTokenUserId();
+        Integer shenQingCiShu = dao.shouShuShenQingCiShu(param.getInpatientNo(), param.getAdmissTimes());
+        List<OpRecord> shenChengYiZhu = new ArrayList<>();
+        for (OpRecord item : param.getList()) {
+            item.setRecordId(publicServer.huoQuShouShuHao());
+            item.setActOrderNo(BigDecimal.valueOf(publicServer.getActOrderNo()));
+            item.setOpTimes(shenQingCiShu += 1);
+            // 是否生成医嘱
+            if (item.getSsyzFlag().equals("1")) {
+                shenChengYiZhu.add(item);
+            }
+        }
+        XinZhenYiZhu huanZheXinXi = yiZhuLuRuDao.huoQuHuanZheXinXi(param.getInpatientNo(), param.getAdmissTimes());
+        dao.chaRuShouShuYiSheng(param.getList());
+        dao.chaRuShouShu(param.getList(), param.getInpatientNo(), param.getName(), param.getAdmissTimes(),
+                huanZheXinXi.getDeptCode(), huanZheXinXi.getWardCode(), userCode, param.getBedNo(), param.getAdmissWard());
+
+        if (ListUtil.notBlank(shenChengYiZhu)) {
+            dao.chaRuYiZhu(shenChengYiZhu, publicServer.getInfantFlag(param.getInpatientNo()),
+                    userCode, param.getInpatientNo(), param.getAdmissTimes(), huanZheXinXi.getDeptCode(), huanZheXinXi.getWardCode(), param.getExecDept());
+        }
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
     }
 }

+ 4 - 4
src/main/resources/application.yml

@@ -8,7 +8,7 @@ spring:
     cache: false
   datasource:
     dynamic:
-      primary: his
+      primary: dev
       strict: false
       datasource:
         his:
@@ -73,6 +73,6 @@ si-secret-key: SK3Oip3a2R3NLz2xm58Mpmi69oFu96KrdKNRKglN
 
 execute-scheduled: false
 
-#logging:
-#  level:
-#    thyyxxk.webserver.dao: debug
+logging:
+  level:
+    thyyxxk.webserver.dao: debug