Parcourir la source

优化急门诊,费用转入,以及,在违规收费分析中添加查询患者入院间隔。

xiaochan il y a 4 ans
Parent
commit
f0b085e86a

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>9.8.3</version>
+    <version>9.8.4</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 5 - 0
src/main/java/thyyxxk/webserver/controller/reports/IllegalChargesAnalysisController.java

@@ -55,4 +55,9 @@ public class IllegalChargesAnalysisController {
     public ResultVo<List<IllegalChargeData>> analyzeTargetData(@RequestBody IllegalChargeTemplate template) {
         return service.analyzeTargetData(template);
     }
+
+    @PostMapping("/queryHuanZheLiangCiRuYuanRiQi")
+    public ResultVo<List<IllegalChargeData>> queryHuanZheLiangCiRuYuanRiQi(@RequestBody IllegalChargeTemplate param) {
+        return service.queryHuanZheLiangCiRuYuanRiQi(param);
+    }
 }

+ 22 - 4
src/main/java/thyyxxk/webserver/dao/his/reports/IllegalChargesAnalysisDao.java

@@ -57,8 +57,8 @@ public interface IllegalChargesAnalysisDao {
             "where charge_fee>0 and isnull(trans_flag_yb,0)!=2 and charge_date>=#{start} and " +
             "charge_date<=#{end} and charge_code_mx=#{code}")
     List<IllegalChargeData> selectChargeDataForSameTime(@Param("start") String start,
-                                             @Param("end") String end,
-                                             @Param("code") String code);
+                                                        @Param("end") String end,
+                                                        @Param("code") String code);
 
     @Select("select rtrim(inpatient_no) as inpatientNo,admiss_times, " +
             "name=(select rtrim(name) from a_patient_mi where a_patient_mi.inpatient_no=a.inpatient_no), " +
@@ -77,6 +77,24 @@ public interface IllegalChargesAnalysisDao {
             "where charge_fee>0 and isnull(trans_flag_yb,0)!=2 and charge_date>=#{start} and " +
             "charge_date<=#{end} and charge_code_mx=#{code}")
     List<IllegalChargeData> selectChargeDataForOverLimit(@Param("start") String start,
-                                             @Param("end") String end,
-                                             @Param("code") String code);
+                                                         @Param("end") String end,
+                                                         @Param("code") String code);
+
+
+    @Select("<script>" +
+            "select rtrim(inpatient_no) inpatient_no,admiss_times,rtrim(name) name,admiss_date,dis_date,rtrim(responce_type) responce_type from zy_inactpatient where 1=1" +
+            "<if test=\"start !=null and start != '' \">" +
+            "and admiss_date &gt;= #{start} and admiss_date &lt;= #{end} " +
+            "</if>" +
+            "<if test=\"responces.size > 0\" >" +
+            "and responce_type in " +
+            "<foreach collection='responces' item='item' index='index' open='(' close=')' separator=','>" +
+            "#{item}" +
+            "</foreach>" +
+            "</if>" +
+            "order by inpatient_no,name" +
+            "</script>")
+    List<IllegalChargeData> queryHuanZheLiangCiRuYuanRiQi(@Param("start") String start,
+                                                          @Param("end") String end,
+                                                          @Param("responces") List<String> responces);
 }

+ 8 - 4
src/main/java/thyyxxk/webserver/dao/his/yibao/TransferInOfExpensesDao.java

@@ -26,7 +26,7 @@ public interface TransferInOfExpensesDao {
      * @param inpatientNo 住院号
      * @return 返回一条信息
      */
-    @Select("select rtrim(inpatient_no) inpatient_no,admiss_times," +
+    @Select("select rtrim(inpatient_no) inpatient_no,admiss_times,rtrim(zk_dept) zk_dept,ward,dept," +
             "rtrim(admiss_ward) wardCode," +
             "rtrim(small_dept) deptCode,zy_serial_no, " +
             "rtrim(isnull(operation, '')) as operation, " +
@@ -177,12 +177,12 @@ public interface TransferInOfExpensesDao {
     @Insert("<script>" +
             "insert into zy_detail_charge (inpatient_no,admiss_times,ledger_sn,detail_sn,charge_date,op_id_code, " +
             "charge_code,infant_flag,charge_status,charge_amount,charge_fee,ward_code,dept_code,order_no,ope_flag, " +
-            "gen_time,charge_code_mx,serial,doctor_code,trans_flag_yb,refer_physician,consult_physician) VALUES " +
+            "gen_time,charge_code_mx,serial,doctor_code,trans_flag_yb,refer_physician,consult_physician,exec_unit,zy_serial_no) VALUES " +
             "<foreach collection='list' item='fee' separator=',' open='' close=''>" +
             "(#{info.inpatientNo}, #{info.admissTimes}, #{info.ledgerSn}, #{fee.detailSn}, getDate(), #{info.staffId}, " +
-            "#{fee.chargeCode}, 0, 2, #{fee.chargeAmount}, cast(#{fee.chargeFee,jdbcType=DECIMAL} as decimal(14,5)), #{info.wardCode}, #{info.deptCode}, 6, " +
+            "#{fee.chargeCode}, 0, 2, #{fee.chargeAmount}, cast(#{fee.chargeFee,jdbcType=DECIMAL} as decimal(14,5)), #{info.ward}, #{info.dept}, 6, " +
             "#{info.operation},getDate(), #{fee.chargeCodeMx},#{fee.serial},#{fee.doctorCode},0,#{info.referPhysician}," +
-            "#{info.consultPhysician})" +
+            "#{info.consultPhysician},#{info.reqExecUnit},#{info.zySerialNo})" +
             "</foreach>" +
             "</script>")
     void insertInfoZyDetailCharge(@Param("info") ZyActpatient info, @Param("list") List<MzChargeDetail> zyFees);
@@ -211,4 +211,8 @@ public interface TransferInOfExpensesDao {
             ") temp")
     List<GetDropdownBox> queryEntryName(@Param("pyCode") String pyCode);
 
+
+//    9498.58,-7498.58,420.00
+
+
 }

+ 2 - 1
src/main/java/thyyxxk/webserver/dao/his/yibao/xiangMuLuRuDao.java

@@ -534,7 +534,8 @@ public interface xiangMuLuRuDao {
             "</script>")
     void huanZheZongFeiYong(@Param("fy") FeiYongLeiXin fy,
                             @Param("inpatientNo") String inpatientNo,
-                            @Param("admissTimes") Integer admissTimes);
+                            @Param("admissTimes") Integer admissTimes,
+                            @Param("tableName") String tableName);
 
 
     @Select("select count(*) from zy_charge_pattern where pattern_name =  #{patternName} and op_id_code <> #{opIdCode} ")

+ 10 - 0
src/main/java/thyyxxk/webserver/entity/reports/illegalchargesanalysis/IllegalChargeData.java

@@ -33,6 +33,16 @@ public class IllegalChargeData {
     private String conflictChargeFee;
     private String conflictChargeAmount;
 
+    /**
+     * 保存上一次 出院日期
+     */
+    private Date lastTimeDisDate;
+
+    private Date admissDate;
+    private Date disDate;
+
+    private long differDate;
+
     public String getResponceTypeName() {
         switch (responceType) {
             case "02":

+ 86 - 79
src/main/java/thyyxxk/webserver/entity/reports/illegalchargesanalysis/IllegalChargeTemplate.java

@@ -1,93 +1,100 @@
 package thyyxxk.webserver.entity.reports.illegalchargesanalysis;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 import thyyxxk.webserver.entity.dictionary.PureCodeName;
 import thyyxxk.webserver.utils.StringUtil;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author dj
  */
 @Data
 public class IllegalChargeTemplate implements Serializable {
 
-	private static final long serialVersionUID =  6293651779985385524L;
-
-	/**
-	 * 模板唯一id,主键
-	 */
-	private String id;
-
-	/**
-	 * 模板名称
-	 */
-	private String label;
-
-	/**
-	 * 模板具体内容
-	 */
-	private String value;
-
-	/**
-	 * 父模板id
-	 */
-	private String parent;
-
-	/**
-	 * 是否属于个人模板:0-公共模板,1-个人模板
-	 */
-	private Integer personal;
-
-	/**
-	 * 模板属性:1-同时收费模板 2-超量收费模板
-	 */
-	private Integer attribute;
-
-	/**
-	 * 项目类型:0-目录,1-项目
-	 * */
-	private Integer type;
-
-	@TableField(exist = false)
-	private List<IllegalChargeTemplate> children = new ArrayList<>();
-
-	@TableField(exist = false)
-	private List<PureCodeName> mainCharges = new ArrayList<>();
-
-	@TableField(exist = false)
-	private List<PureCodeName> conflictCharges = new ArrayList<>();
-
-	@TableField(exist = false)
-	private String start;
-
-	@TableField(exist = false)
-	private String end;
-
-	@TableField(exist = false)
-	private List<String> responces;
-
-	public void analyzeValue() {
-		if (StringUtil.notBlank(value)) {
-			String[] allCharges = value.split("\\$");
-			setMainCharges(genChargeListFromValue(allCharges[0]));
-			if (allCharges.length > 1) {
-				setConflictCharges(genChargeListFromValue(allCharges[1]));
-			}
-		}
-	}
-
-	private List<PureCodeName> genChargeListFromValue(String charge) {
-		List<PureCodeName> list = new ArrayList<>();
-		String[] charges = charge.split("#");
-		for (String s : charges) {
-			String[] item = s.split("\\|");
-			PureCodeName codeName = new PureCodeName(item[0], item[1]);
-			list.add(codeName);
-		}
-		return list;
-	}
+    private static final long serialVersionUID = 6293651779985385524L;
+
+    /**
+     * 模板唯一id,主键
+     */
+    private String id;
+
+    /**
+     * 模板名称
+     */
+    private String label;
+
+    /**
+     * 模板具体内容
+     */
+    private String value;
+
+    /**
+     * 父模板id
+     */
+    private String parent;
+
+    /**
+     * 是否属于个人模板:0-公共模板,1-个人模板
+     */
+    private Integer personal;
+
+    /**
+     * 模板属性:1-同时收费模板 2-超量收费模板
+     */
+    private Integer attribute;
+
+    /**
+     * 项目类型:0-目录,1-项目
+     */
+    private Integer type;
+
+    @TableField(exist = false)
+    private List<IllegalChargeTemplate> children = new ArrayList<>();
+
+    @TableField(exist = false)
+    private List<PureCodeName> mainCharges = new ArrayList<>();
+
+    @TableField(exist = false)
+    private List<PureCodeName> conflictCharges = new ArrayList<>();
+
+    @TableField(exist = false)
+    private String start;
+
+    @TableField(exist = false)
+    private String end;
+
+    @TableField(exist = false)
+    private List<String> responces;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private long currentPage;
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private long pageSize;
+
+    
+    public void analyzeValue() {
+        if (StringUtil.notBlank(value)) {
+            String[] allCharges = value.split("\\$");
+            setMainCharges(genChargeListFromValue(allCharges[0]));
+            if (allCharges.length > 1) {
+                setConflictCharges(genChargeListFromValue(allCharges[1]));
+            }
+        }
+    }
+
+    private List<PureCodeName> genChargeListFromValue(String charge) {
+        List<PureCodeName> list = new ArrayList<>();
+        String[] charges = charge.split("#");
+        for (String s : charges) {
+            String[] item = s.split("\\|");
+            PureCodeName codeName = new PureCodeName(item[0], item[1]);
+            list.add(codeName);
+        }
+        return list;
+    }
 }

+ 2 - 0
src/main/java/thyyxxk/webserver/entity/yibao/ZyActpatient.java

@@ -23,6 +23,8 @@ public class ZyActpatient implements Serializable {
     private Integer maxDetailSn;
     private String staffId;
 
+    private String reqExecUnit;
+
     @TableField(exist = false)
     private List<MzChargeDetail> list;
 

+ 0 - 1
src/main/java/thyyxxk/webserver/scheduled/SiTjToken.java

@@ -37,7 +37,6 @@ public class SiTjToken {
             return;
         }
         token = result.getJSONObject("data").getString("token");
-        log.info("获取token:{}", token);
     }
 
     public String getSiTjToken() {

+ 32 - 2
src/main/java/thyyxxk/webserver/service/reports/IllegalChargesAnalysisService.java

@@ -44,7 +44,7 @@ public class IllegalChargesAnalysisService {
         String code = TokenUtil.getTokenUserId() + "%";
         List<IllegalChargeTemplate> tempList = dao.selectMyTemplates(code);
         List<IllegalChargeTemplate> resultList = new ArrayList<>();
-        Map<String ,IllegalChargeTemplate> treeMap = new HashMap<>(tempList.size());
+        Map<String, IllegalChargeTemplate> treeMap = new HashMap<>(tempList.size());
         for (IllegalChargeTemplate item : tempList) {
             item.analyzeValue();
             treeMap.put(item.getId(), item);
@@ -147,7 +147,7 @@ public class IllegalChargesAnalysisService {
 
     private StringBuilder genTemplateValue(List<PureCodeName> charges) {
         StringBuilder builder = new StringBuilder();
-        for (int i = 0;  i < charges.size(); i ++) {
+        for (int i = 0; i < charges.size(); i++) {
             PureCodeName charge = charges.get(i);
             builder.append(charge.getCode()).append("|").append(charge.getName());
             if (i < charges.size() - 1) {
@@ -236,4 +236,34 @@ public class IllegalChargesAnalysisService {
         }
         return ResultVoUtil.success(resultList);
     }
+
+
+    public ResultVo<List<IllegalChargeData>> queryHuanZheLiangCiRuYuanRiQi(IllegalChargeTemplate param) {
+        List<IllegalChargeData> list = dao.queryHuanZheLiangCiRuYuanRiQi(param.getStart(), param.getEnd(), param.getResponces());
+        List<IllegalChargeData> illegalChargeData = new ArrayList<>();
+        for (int i = 0; i < list.size(); i++) {
+            if (i < list.size() - 1) {
+                if (list.get(i).getInpatientNo().equals(list.get(i + 1).getInpatientNo()) && list.get(i).getName().equals(list.get((i + 1)).getName())) {
+                    long endTime = list.get(i).getDisDate().getTime();
+                    long startTime = list.get(i + 1).getAdmissDate().getTime();
+                    long num = (startTime - endTime) / 24 / 60 / 60 / 1000;
+                    if (num > 2) {
+                        IllegalChargeData pojo = new IllegalChargeData();
+                        pojo.setName(list.get(i + 1).getName());
+                        pojo.setInpatientNo(list.get(i + 1).getInpatientNo());
+                        pojo.setAdmissTimes(list.get(i + 1).getAdmissTimes());
+                        pojo.setAdmissDate(list.get(i + 1).getAdmissDate());
+                        pojo.setDisDate(list.get(i + 1).getDisDate());
+                        // 上一次出院日期
+                        pojo.setLastTimeDisDate(list.get(i).getDisDate());
+                        pojo.setResponceType(list.get(i + 1).getResponceType());
+                        pojo.setDifferDate(num);
+                        illegalChargeData.add(pojo);
+                    }
+                }
+            }
+
+        }
+        return ResultVoUtil.success(illegalChargeData);
+    }
 }

+ 7 - 7
src/main/java/thyyxxk/webserver/service/yibao/TransferInOfExpensesService.java

@@ -1,6 +1,7 @@
 package thyyxxk.webserver.service.yibao;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
@@ -37,6 +38,7 @@ import java.util.Map;
  */
 @Service
 @Slf4j
+@DS("dev")
 public class TransferInOfExpensesService {
 
     private final TransferInOfExpensesDao dao;
@@ -73,7 +75,6 @@ public class TransferInOfExpensesService {
      * @return 返回信息
      */
     public ResultVo<List<MzChargeDetail>> getSerialNo(Integer serialNo, Integer liShiFlag) {
-        log.info("根据机制号查找信息:{},是否查看历史 0:不查看 1:查看 --> {}", serialNo, liShiFlag);
         List<MzChargeDetail> list;
         if (liShiFlag == 0) {
             list = dao.getSerialNo("mz_charge_detail", serialNo);
@@ -96,8 +97,6 @@ public class TransferInOfExpensesService {
      * @return 返回项目
      */
     public ResultVo<Map<String, Object>> getZyJiMenZhenZhuangRuFeiYong(String inpatientNo, String chargeCodeMX, String admissTimes, long currentPage, long pageSize) {
-        log.info("查看患者是通过门急诊转入的费用项目 --> 住院号:{},收费编码:{},住院次数:{},当前页:{},页数:{}",
-                inpatientNo, chargeCodeMX, admissTimes, currentPage, pageSize);
         IPage<ZyDetailCharge> page = new Page<>(currentPage, pageSize);
         List<ZyDetailCharge> list = dao.getZyJiMenZhenZhuangRuFeiYong(page, inpatientNo, chargeCodeMX, admissTimes);
         List<ZyDetailCharge> sumList = dao.sumZyFee(inpatientNo, chargeCodeMX, admissTimes);
@@ -151,6 +150,7 @@ public class TransferInOfExpensesService {
         // 获取 全部的费用
         BigDecimal sum = new BigDecimal(0);
         // 流水号取出这个患者流水值的最大值 在加 1
+        // 同时计算 出患者的总金额 以及 费用的类型
         for (MzChargeDetail mzChargeDetail : list) {
             ZyDetailCharge pojo = new ZyDetailCharge();
             pojo.setChargeAmount(BigDecimal.valueOf(mzChargeDetail.getChargeAmount()));
@@ -162,11 +162,11 @@ public class TransferInOfExpensesService {
         }
         FeiYongLeiXin fy = JiSuanFeiYong.jiSuan(zyDetailCharges, true);
         fy.setTotalCharge(sum);
-        list.forEach(System.out::println);
-        //xiangMuLuRuDao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes());
-        //dao.insertInfoZyDetailCharge(param, list);
+        xiangMuLuRuDao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes(), "zy_ledger_file");
+        xiangMuLuRuDao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes(), "zy_actpatient");
+        dao.insertInfoZyDetailCharge(param, list);
         log.info("急门诊费用插入 --> 操作人:{} , 数据:{}", param.getStaffId(), JSON.toJSONStringWithDateFormat(param, GetDateFormat.DATE_TIME));
-        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "急门诊费用转入成功。");
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "操作成功。");
     }
 
     /**

+ 2 - 2
src/main/java/thyyxxk/webserver/service/yibao/xiangMuLuRuService.java

@@ -112,7 +112,7 @@ public class xiangMuLuRuService {
         try {
             // 执行退费的操作
             dao.xiangMuTuiFei(tuiFeiList);
-            dao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes());
+            dao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes(), "zy_actpatient");
             log.info("操作项目退费 ==》 操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONString(tuiFeiList));
             return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "项目退费操作成功。");
         } catch (Exception e) {
@@ -185,7 +185,7 @@ public class xiangMuLuRuService {
         try {
             // 在此处 插入费用
             dao.chaRuFeiYong(param, param.getList());
-            dao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes());
+            dao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes(), "zy_actpatient");
             log.info("项目录入费用上传 ==》 操作人:{},数据:{}", param.getOpIdCode(), JSON.toJSONString(param));
             return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "费用上传成功。");
         } catch (Exception e) {