Procházet zdrojové kódy

急门诊费用录入中可以查看负数的,以及优化报表

xiaochan před 4 roky
rodič
revize
89852e01dc

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/querydata/QueryDrugsAndProjectsDao.java

@@ -218,7 +218,7 @@ public interface QueryDrugsAndProjectsDao {
      * @param pyCode    拼音码
      * @return 首字母
      */
-    @Select("select rtrim(code) code,rtrim(name) name from ${tableName} where py_code like #{pyCode}")
+    @Select("select rtrim(code) code,rtrim(name) name from ${tableName} where py_code like #{pyCode} or code like #{pyCode}")
     List<GetDropdownBox> chaXunXiangMuhuoYaoPinCode(@Param("tableName") String tableName,
                                                     @Param("pyCode") String pyCode);
 

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

@@ -78,19 +78,37 @@ public interface IllegalChargesAnalysisDao {
 
 
     @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" +
+            "select rtrim(a.inpatient_no) inpatient_no,rtrim(a.name) name,a.admiss_times,a.admiss_date,b.dis_date,DATEDIFF(day,b.dis_date,a.admiss_date) differ_date," +
+            "       (select name from zd_unit_code where code=isnull(a.small_dept,a.admiss_dept)) dept_name," +
+            "       a.responce_type " +
+            "from zy_inactpatient a ,zy_inactpatient b " +
+            "where a.inpatient_no=b.inpatient_no" +
+            "  and a.admiss_times=b.admiss_times+1" +
+            "  and a.inpatient_no not like 'JT%'" +
+            "  and DATEDIFF(day,b.dis_date,a.admiss_date)&lt;2 " +
             "<if test=\"start !=null and start != '' \">" +
-            "and admiss_date &gt;= #{start} and admiss_date &lt;= #{end} " +
+            " and a.admiss_date &gt;= #{start} and a.admiss_date &lt;= #{end} " +
             "</if>" +
             "<if test=\"responces.size > 0\" >" +
-            "and responce_type in " +
+            "and a.responce_type in " +
             "<foreach collection='responces' item='item' index='index' open='(' close=')' separator=','>" +
             "#{item}" +
             "</foreach>" +
             "</if>" +
-            "order by inpatient_no,name" +
+            "order by a.inpatient_no,a.admiss_times" +
             "</script>")
     List<IllegalChargeData> queryHuanZheLiangCiRuYuanRiQi(@Param("start") String start,
                                                           @Param("end") String end,
                                                           @Param("responces") List<String> responces);
+
+
+    @Select("<script>" +
+            "select rtrim(inpatient_no) inpatient_no,admiss_times,dis_diag_comment,dis_diag from ba_first_page1 where " +
+            "inpatient_no in  " +
+            "<foreach collection='inpatientNoList' item='item' index='index' open='(' close=')' separator=','>" +
+            "#{item.inpatientNo}" +
+            "</foreach>" +
+            "and dis_diag_no = 1" +
+            "</script>")
+    List<IllegalChargeData> queryZhenDuan(@Param("inpatientNoList") List<IllegalChargeData> inpatientNoList);
 }

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

@@ -119,7 +119,7 @@ public interface TransferInOfExpensesDao {
             "charge_date,charge_code,charge_fee,a.charge_amount,charge_code_mx,(b.name)charge_code_name,gen_time,  " +
             "zy_serial_no " +
             "from zy_detail_charge a,zd_charge_item b  where (code =charge_code) and order_no=6 and inpatient_no = #{inpatientNo} " +
-            "and admiss_times = #{admissTimes} and a.charge_amount not like '-%'  and a.charge_fee not like '-%' " +
+            "and admiss_times = #{admissTimes} AND (a.charge_amount !&lt; 0 or charge_code_mx = 'BILL99') " +
             "<if test=\"chargeCodeMX!=null and chargeCodeMX!=''\"> " +
             "and (charge_code_mx = #{chargeCodeMX} or charge_code = #{chargeCodeMX}) " +
             "</if> " +
@@ -128,7 +128,7 @@ public interface TransferInOfExpensesDao {
             "charge_date,charge_code,charge_fee,a.charge_amount,charge_code_mx,(b.name)charge_code_name,gen_time, " +
             "zy_serial_no " +
             "from zy_detail_charge a,yp_zd_dict b where (code=charge_code) and order_no=6 and inpatient_no = #{inpatientNo} " +
-            "and admiss_times = #{admissTimes} and a.charge_amount not like '-%'  and a.charge_fee not like '-%' " +
+            "and admiss_times = #{admissTimes} AND (a.charge_amount !&lt; 0 or charge_code_mx = 'BILL99') " +
             "<if test=\"chargeCodeMX!=null and chargeCodeMX!=''\"> " +
             "and (charge_code_mx = #{chargeCodeMX} or charge_code = #{chargeCodeMX}) " +
             "</if>" +

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

@@ -52,6 +52,10 @@ public class IllegalChargeData {
 
     private BigDecimal jianYanFei;
 
+    private String disDiag;
+
+    private String disDiagComment;
+
     public String getResponceTypeName() {
         switch (responceType) {
             case "02":

+ 2 - 3
src/main/java/thyyxxk/webserver/service/querydata/QueryDrugsAndProjectsService.java

@@ -89,7 +89,6 @@ public class QueryDrugsAndProjectsService {
         List<QueryDrugsAndProjects> zhenDuanList = new ArrayList<>();
 
         // 因为在 sql 中的 in 最长只能是有 2100 个 所以我需要 拆分来查询
-
         if (xiangMuList.size() > 2100) {
             for (QueryDrugsAndProjects projects : xiangMuList) {
                 if (patientList.size() < 2000) {
@@ -104,7 +103,7 @@ public class QueryDrugsAndProjectsService {
         } else {
             // 如果 没有大于 2100 就这样
             for (QueryDrugsAndProjects projects : xiangMuList) {
-                // 一处重复的元素
+                // 移除重复的元素
                 if (!patientList.contains(projects.getPatient())) {
                     patientList.add(projects.getPatient());
                 }
@@ -150,7 +149,7 @@ public class QueryDrugsAndProjectsService {
             QueryDrugsAndProjects pojo = list.get(i);
             content[i][0] = pojo.getName();
             content[i][1] = pojo.getCode();
-            content[i][2] = pojo.getTimes().toString();
+            content[i][2] = pojo.getTimes();
             content[i][3] = DateUtil.formatDatetime(pojo.getChargeDate());
             content[i][4] = String.valueOf(pojo.getNumber());
             content[i][5] = String.valueOf(pojo.getAmountOfMoney());

+ 9 - 22
src/main/java/thyyxxk/webserver/service/reports/IllegalChargesAnalysisService.java

@@ -240,30 +240,17 @@ public class IllegalChargesAnalysisService {
 
     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);
-                    }
+        List<IllegalChargeData> illegalChargeData = dao.queryZhenDuan(list);
+        for (IllegalChargeData chargeData : list) {
+            for (IllegalChargeData illegalChargeDatum : illegalChargeData) {
+                if (chargeData.getInpatientNo().equals(illegalChargeDatum.getInpatientNo()) && chargeData.getAdmissTimes().equals(illegalChargeDatum.getAdmissTimes())) {
+                    chargeData.setDisDiag(illegalChargeDatum.getDisDiag());
+                    chargeData.setDisDiagComment(illegalChargeDatum.getDisDiagComment());
+                    break;
                 }
             }
-
         }
-        return ResultVoUtil.success(illegalChargeData);
+
+        return ResultVoUtil.success(list);
     }
 }

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

@@ -96,6 +96,7 @@ public class TransferInOfExpensesService {
      */
     public ResultVo<Map<String, Object>> getZyJiMenZhenZhuangRuFeiYong(String inpatientNo, String chargeCodeMX, String admissTimes, long currentPage, long 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);
         Map<String, Object> map = new HashMap<>(Capacity.TWO);