Explorar o código

详情增加分组信息

lihong %!s(int64=2) %!d(string=hai) anos
pai
achega
6c121fe5bd

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/UpIdCollectionDao.java

@@ -953,7 +953,7 @@ public interface UpIdCollectionDao extends BaseMapper<SetlinfoUpld> {
     Integer qualityPass(@Param("patNo") String patNo, @Param("times") Integer times);
     @Select(" select count(*) from  zy_inactpatient where inpatient_no=#{patNo} and  admiss_times=#{times} ")
     Integer isInHospital(@Param("patNo")String patNo, @Param("times") Integer times);
-    @Select("     select       rtrim(a.pat_no) pat_no,a.times,ledger_sn,psn_name,gend,brdy,insutype,psn_type,mdtrt_id,setl_id,setl_time,  \n" +
+    @Select("     select       rtrim(a.pat_no) pat_no,a.times,ledger_sn,psn_name,gend,brdy,insutype,psn_type,mdtrt_id,setl_id,setl_time,a.age,  \n" +
             "                   a.med_type,medfee_sumamt,fund_pay_sumamt,  \n" +
             "                   acct_pay,psn_cash_pay,clr_optins,clr_optins_name = (select name from t_region where code=clr_optins),  \n" +
             "                   outDeptName=(select rtrim(name) from zd_unit_code where code=isnull(zk_ward,small_dept)), \n" +

+ 6 - 0
src/main/java/thyyxxk/webserver/entity/medicalinsurance/inpatient/ZyInactpatient.java

@@ -2,6 +2,7 @@ package thyyxxk.webserver.entity.medicalinsurance.inpatient;
 
 import lombok.Data;
 import thyyxxk.webserver.entity.medicalinsurance.setllistupld.PatientBldInfo;
+import thyyxxk.webserver.entity.querydata.TUploadDrgGroup;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -888,4 +889,9 @@ public class ZyInactpatient implements Serializable {
      * 患者输血量节点
      */
     private List<PatientBldInfo> patientBldInfos;
+
+    /**
+     * 分组信息
+     */
+     private TUploadDrgGroup drgGroupInfo;
 }

+ 50 - 0
src/main/java/thyyxxk/webserver/entity/querydata/TUploadDrgGroup.java

@@ -117,4 +117,54 @@ public class TUploadDrgGroup implements Serializable {
     @TableField(exist = false)
     private String outDeptName;
 
+    /**病例类型查询条件
+     * 1	未入组病例
+     2	高倍率病例(按DRG)
+     3	低倍率病例
+     4	正常病例
+     7	住院天数小于等于2天
+     11	QY组
+     12	不稳定病组
+       */
+    @TableField(exist = false)
+    private Integer blType;
+
+
+    public  enum BlTypeEnum {
+        WRZ(1,"未入组病例"),
+        GBL(2,"高倍率病例(按DRG)"),
+        DBL(3,"低倍率病例"),
+        ZC(4,"正常病例"),
+        TSXY2(7,"住院天数小于等于2天"),
+        QY(11,"QY组"),
+        BWD(12,"不稳定病组");
+        private final int code;
+        private final String name;
+
+        BlTypeEnum(int code, String name) {
+            this.code = code;
+            this.name = name;
+        }
+
+        public int getCode() {
+            return code;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public static String getNameByCode(Integer code) {
+            if(code == null){
+                return null;
+            }
+            for (BlTypeEnum item : BlTypeEnum.values()) {
+                if (item.getCode()==code) {
+                    return item.getName();
+                }
+            }
+            return null;
+        }
+    }
+
 }

+ 79 - 5
src/main/java/thyyxxk/webserver/service/medicalinsurance/SetlListUpldService.java

@@ -6,6 +6,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -41,6 +42,9 @@ import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.TYbSetModifyTime;
 import thyyxxk.webserver.entity.datamodify.TYbSetlModifyReq;
 import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.drg.BaseInfo;
+import thyyxxk.webserver.entity.drg.DiseInfoList;
+import thyyxxk.webserver.entity.drg.OprtInfoList;
 import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.entity.medicalinsurance.inpatient.BatjBa4;
 import thyyxxk.webserver.entity.medicalinsurance.inpatient.YbZyDisDiag;
@@ -1499,16 +1503,86 @@ public class SetlListUpldService {
 
         zy.setPatientBldInfos(dao.shuXueXinXi(patNo, times));
 
-        for (YbZyDisDiag item : zy.getYbZyDisDiag()) {
-            item.setSsfz(caseFrontSheetMainService.fetchSsfz(item.getDisDiag().trim(), patNo, times).getData());
+        setDrgInfo(zy,setlinfoUpld.getAdmTime(),patNo,times,ledgerSn);
+        return ResultVoUtil.success(zy);
+    }
+
+    private void setDrgInfo(ZyInactpatient zy,Date admTime,String patNo, Integer times, Integer ledgerSn) {
+        SiSetlinfoTemp siSetlinfoTemp = dao.getJieSuanDetail(patNo, times, ledgerSn);
+        BaseInfo bf = new BaseInfo();
+        String visitId = StrUtil.format("{}_{}_{}",patNo,times,ledgerSn);
+        bf.setVisitId(visitId)
+                .setGend(siSetlinfoTemp.getGend())
+                .setBrdy(DateUtil.formatDatetime(siSetlinfoTemp.getBrdy(),"yyyy-MM-dd"))
+                .setAge(siSetlinfoTemp.getAge()==null ? "" : String.valueOf(siSetlinfoTemp.getAge().intValue()))
+                .setNwbAge("")
+                .setNwbBirWt("")
+                .setNwbAdmWt("")
+                .setAdmTime(admTime)
+                .setActIptDays(siSetlinfoTemp.getActIptDays())
+                .setTotalFee(siSetlinfoTemp.getMedfeeSumamt())
+                .setCdntnPay("")
+                .setIllPay("");
+        JSONObject upload = new JSONObject();
+        upload.put("base_info", bf);
+        upload.put("dise_info_list", getDrgDisList(CollUtil.isNotEmpty(zy.getNewYbZyDisDiag()) ? zy.getNewYbZyDisDiag() : zy.getYbZyDisDiag(),visitId));
+        upload.put("oprt_info_list", getOprtInfoList(siSetlinfoTemp.getAuditFlag()==null ? zy.getBatjBa4() : zy.getNewBatjBa4(),visitId));
+        try {
+            log.info("drg分组传参:{}",JSON.toJSONString(upload));
+            JSONObject res = drgWebServices.getDrgCaseQualityControlGroup(upload);
+            log.info("drg分组结果:{}",JSON.toJSONString(res));
+            if (res.getInteger("code") == 0) {
+                if (res.getJSONObject("result") != null) {
+                    JSONArray groupInfo = res.getJSONObject("result").getJSONArray("group_info");
+                    if (groupInfo != null) {
+                        JSONObject item = groupInfo.getJSONObject(0);
+                        TUploadDrgGroup drgGroupInfo = new TUploadDrgGroup();
+                        drgGroupInfo.setCode(item.getString("code"));
+                        drgGroupInfo.setName(item.getString("name"));
+                        drgGroupInfo.setWeight(item.getBigDecimal("weight"));
+                        drgGroupInfo.setBl(item.getString("bl"));
+                        drgGroupInfo.setProfit(item.getBigDecimal("profit"));
+                        drgGroupInfo.setFeeStand(item.getBigDecimal("fee_stand"));
+                        zy.setDrgGroupInfo(drgGroupInfo);
+                    }
+                }
+            }
+        }catch (Exception e){
+            log.error("调用创智分组期报错", e);
         }
+    }
 
-        for (YbZyDisDiag item : zy.getNewYbZyDisDiag()) {
-            item.setSsfz(caseFrontSheetMainService.fetchSsfz(item.getDisDiag().trim(), patNo, times).getData());
+    private List<OprtInfoList> getOprtInfoList(List<BatjBa4> batjBa4s,String visitId) {
+        List<OprtInfoList>  oprtInfoList =new ArrayList<>();
+        if(CollUtil.isEmpty(batjBa4s)) return oprtInfoList;
+        for (int i = 0; i < batjBa4s.size(); i++) {
+            OprtInfoList oprtInfo = new OprtInfoList();
+            oprtInfo.setSortNo(String.valueOf(i+1));
+            oprtInfo.setVisitId(visitId);
+            oprtInfo.setOprnOprtCode(batjBa4s.get(i).getSsbm());
+            oprtInfo.setOprnOprtName(batjBa4s.get(i).getSsmc());
+            oprtInfo.setOprnOprtType(i == 0 ? "1":"2");
+            oprtInfoList.add(oprtInfo);
         }
+        return oprtInfoList;
+    }
 
-        return ResultVoUtil.success(zy);
+    private List<DiseInfoList> getDrgDisList(List<YbZyDisDiag> ybZyDisDiagList,String visitId) {
+        List<DiseInfoList> diseInfoListList = new ArrayList<DiseInfoList>();
+        if(CollUtil.isEmpty(ybZyDisDiagList)) return diseInfoListList;
+        for (int i = 0; i < ybZyDisDiagList.size(); i++) {
+            DiseInfoList diseInfo = new DiseInfoList();
+            diseInfo.setMaindiagFlag(i == 0 ? "1" : "0");
+            diseInfo.setDiagCode(ybZyDisDiagList.get(i).getDisDiag());
+            diseInfo.setDiagName(ybZyDisDiagList.get(i).getDisDiagComment());
+            diseInfo.setVisitId(visitId);
+            diseInfo.setSortNo(String.valueOf(i+1));
+            diseInfoListList.add(diseInfo);
+        }
+        return diseInfoListList;
     }
+
+
     /**
      * @description:取病案首页的诊断
      * @author: lihong

+ 1 - 0
src/main/java/thyyxxk/webserver/service/medicalinsurance/TUploadDrgGroupService.java

@@ -45,6 +45,7 @@ public class TUploadDrgGroupService extends ServiceImpl<TUploadDrgGroupDao, TUpl
         query.eq(uploadDrgGroup.getLedgerSn() !=null,"ledger_sn", uploadDrgGroup.getLedgerSn());
         query.ge(StringUtil.notBlank(uploadDrgGroup.getSetlStartTime()), "setl_time", uploadDrgGroup.getSetlStartTime());
         query.le(StringUtil.notBlank(uploadDrgGroup.getSetlEndTime()), "setl_time", uploadDrgGroup.getSetlEndTime());
+        query.likeRight(uploadDrgGroup.getBlType() != null && uploadDrgGroup.getBlType() != 0,"bl", TUploadDrgGroup.BlTypeEnum.getNameByCode(uploadDrgGroup.getBlType()));
         return query;
     }