Jelajahi Sumber

drg测算调用诊断辅助填报

lihong 2 tahun lalu
induk
melakukan
7b6974e4a0

+ 6 - 0
pom.xml

@@ -17,6 +17,12 @@
         <java.version>1.8</java.version>
     </properties>
     <dependencies>
+        <!--工具类        -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.10</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>

+ 17 - 2
src/main/java/thyyxxk/webserver/controller/medicalinsurance/SetlListUpldController.java

@@ -2,7 +2,12 @@ package thyyxxk.webserver.controller.medicalinsurance;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
@@ -15,7 +20,6 @@ import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.UpldCollection
 import thyyxxk.webserver.entity.querydata.ConsumablesStatistics;
 import thyyxxk.webserver.entity.querydata.JieSuanDanChaXun;
 import thyyxxk.webserver.entity.querydata.SiSetlinfoTemp;
-import thyyxxk.webserver.service.LoginService;
 import thyyxxk.webserver.service.medicalinsurance.SetlListUpldService;
 
 import javax.servlet.http.HttpServletResponse;
@@ -112,6 +116,17 @@ public class SetlListUpldController {
     public ResultVo<String> setlModifyReq(@RequestBody ZyInactpatient param) {
         return service.setlModifyReq(param);
     }
+    /**
+     * @description:drg分组测算
+     * @author: lihong 
+     * @date: 2022/12/8 11:12 
+     * @param: param 
+     * @return: thyyxxk.webserver.entity.ResultVo<java.lang.String>
+     **/
+    @PostMapping("/drgGroupTest")
+    public ResultVo<String> drgGroupTest(@RequestBody ZyInactpatient param) {
+        return service.drgGroupTest(param);
+    }
 
     @PostMapping("/setlUploadAudit")
     public ResultVo<String> setlUploadAudit(@RequestBody TYbSetlModifyReq param) {

+ 54 - 0
src/main/java/thyyxxk/webserver/entity/vo/DrgGroupTestVO.java

@@ -0,0 +1,54 @@
+package thyyxxk.webserver.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @Author:lihong drg测算调用诊断辅助填报vo
+ * @Date: 2022/12/8
+ * @Description:
+ */
+@Data
+public class DrgGroupTestVO {
+
+    private String visit_id;    //就诊ID
+    private String xm;    //姓名
+    private String bah;    //病案号
+    private String cysj;    //出院时间
+    private String xb;    //性别
+    private String nl;    //年龄
+    private String zfy;    //总费用
+    private String sjzyts;    //实际住院天数
+    private String rybq;//入院病情
+    private String rytj;    //入院途径
+    private String lyfs;    //	离院方式
+    private String insur_type_id;    //	病人险种
+    private String xsecstz;    //	新生儿出生体重(克)
+    private String xserytz;    //新生儿入院体重(克)
+    private String bzyzsnl;    //不足一周岁年龄(天)
+    private String zyzd;    //主要诊断名称
+    private String jbdm;    //主要诊断代码
+    private String jbdm1;    //其他诊断(1)
+    private String jbdm2;    //其他诊断(2)
+    private String jbdm3;    //其他诊断(3)
+    private String jbdm4;    //其他诊断(4)
+    private String jbdm5;    //其他诊断(5)
+    private String jbdm6;    //其他诊断(6)
+    private String jbdm7;    //其他诊断(7)
+    private String jbdm8;    //其他诊断(8)
+    private String jbdm9;    //其他诊断(9)
+    private String jbdm10;    //其他诊断(10)
+    private String jbdm11;    //其他诊断(11)
+    private String jbdm12;    //其他诊断(12)
+    private String jbdm13;    //其他诊断(13)
+    private String jbdm14;    //其他诊断(14)
+    private String jbdm15;    //其他诊断(15)
+    private String ssjczbm1;    //主要手术
+    private String ssjczmc1;    //主要手术名称
+    private String ssjczbm2;    //其他手术(1)
+    private String ssjczbm3;    //其他手术(2)
+    private String ssjczbm4;    //其他手术(3)
+    private String ssjczbm5;    //其他手术(4)
+    private String ssjczbm6;    //其他手术(5)
+
+
+}

+ 16 - 0
src/main/java/thyyxxk/webserver/service/externalhttp/DrgWebServices.java

@@ -0,0 +1,16 @@
+package thyyxxk.webserver.service.externalhttp;
+
+import com.dtflys.forest.annotation.PostRequest;
+import com.dtflys.forest.annotation.Query;
+import thyyxxk.webserver.entity.vo.DrgGroupTestVO;
+
+/**
+ * @Author:lihong 调用创智 drg第三方接口
+ * @Date: 2022/12/8
+ * @Description:
+ */
+public interface DrgWebServices {
+
+    @PostRequest(url = "http://172.16.32.126:8080/drg_web/localHelp/drg_dagns/list.action")
+    String localHelpDrgDagns(@Query DrgGroupTestVO drgGroupTestVO);
+}

+ 2 - 1
src/main/java/thyyxxk/webserver/service/inpatient/DictionaryService.java

@@ -10,6 +10,7 @@ import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.dictionary.SearchDataParam;
 import thyyxxk.webserver.entity.medicalinsurance.inpatient.SpecialDiag;
+import thyyxxk.webserver.utils.ListUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.StringUtil;
 
@@ -143,7 +144,7 @@ public class DictionaryService {
         if (res.getCode() != ExceptionEnum.SUCCESS.getCode()) {
             return res;
         }
-        return ResultVoUtil.success(res.getData().subList((param.getPage() - 1) * 10,
+        return  ListUtil.isBlank(res.getData())? res : ResultVoUtil.success(res.getData().subList((param.getPage() - 1) * 10,
                 Math.min(res.getData().size(), param.getPage() * 10)));
     }
 }

+ 115 - 4
src/main/java/thyyxxk/webserver/service/medicalinsurance/SetlListUpldService.java

@@ -1,5 +1,7 @@
 package thyyxxk.webserver.service.medicalinsurance;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -12,12 +14,18 @@ import org.apache.commons.collections4.ListUtils;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import springfox.documentation.spring.web.json.Json;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.GetDateFormat;
 import thyyxxk.webserver.constants.Message;
-import thyyxxk.webserver.constants.sidicts.*;
+import thyyxxk.webserver.constants.sidicts.FundPayType;
+import thyyxxk.webserver.constants.sidicts.Insutype;
+import thyyxxk.webserver.constants.sidicts.MdcsType;
+import thyyxxk.webserver.constants.sidicts.MedChrgitmType;
+import thyyxxk.webserver.constants.sidicts.MedType;
+import thyyxxk.webserver.constants.sidicts.PsnIdetType;
+import thyyxxk.webserver.constants.sidicts.PsnType;
+import thyyxxk.webserver.constants.sidicts.SiFunction;
 import thyyxxk.webserver.dao.his.inpatient.DismissDao;
 import thyyxxk.webserver.dao.his.medicalinsurance.SiLogDao;
 import thyyxxk.webserver.dao.his.medicalinsurance.SiQueryDao;
@@ -33,13 +41,22 @@ import thyyxxk.webserver.entity.medicalinsurance.inpatient.ZyInactpatient;
 import thyyxxk.webserver.entity.medicalinsurance.log.SiLog;
 import thyyxxk.webserver.entity.medicalinsurance.query.SiSetlFeeDetl;
 import thyyxxk.webserver.entity.medicalinsurance.setllistupld.*;
-import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.*;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.DiseinfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.IcuinfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.IteminfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.OprninfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.OpspdiseinfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.PayinfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.SetlinfoUpldTemp;
+import thyyxxk.webserver.entity.medicalinsurance.setllistupldTemp.UpldCollectionTemp;
 import thyyxxk.webserver.entity.querydata.JieSuanDanChaXun;
 import thyyxxk.webserver.entity.querydata.SiSetlinfoTemp;
 import thyyxxk.webserver.entity.querydata.TAutoUploadBill;
+import thyyxxk.webserver.entity.vo.DrgGroupTestVO;
 import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.service.casefrontsheet.CaseFrontSheetMainService;
 import thyyxxk.webserver.service.casefrontsheet.VerifyCaseFrontSheet;
+import thyyxxk.webserver.service.externalhttp.DrgWebServices;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.service.wxapi.SendWxInfoService;
 import thyyxxk.webserver.utils.*;
@@ -78,8 +95,12 @@ public class SetlListUpldService {
     private final SiLogDao logDao;
     private final CaseFrontSheetMainService caseFrontSheetMainService;
     private final RedisLikeService redisLikeService;
+    private DrgWebServices drgWebServices;
 
-    public SetlListUpldService(ExecService exec, SiQueryDao queryDao, UpIdCollectionDao upIdCollectionDao, DismissDao dismissDao, PublicServer publicServer, SendWxInfoService sendWxInfoService, SiLogDao logDao, CaseFrontSheetMainService caseFrontSheetMainService, RedisLikeService redisLikeService) {
+    public SetlListUpldService(ExecService exec, SiQueryDao queryDao, UpIdCollectionDao upIdCollectionDao,
+                               DismissDao dismissDao, PublicServer publicServer, SendWxInfoService sendWxInfoService,
+                               SiLogDao logDao, CaseFrontSheetMainService caseFrontSheetMainService,
+                               RedisLikeService redisLikeService,DrgWebServices drgWebServices) {
         this.exec = exec;
         this.queryDao = queryDao;
         this.dao = upIdCollectionDao;
@@ -89,6 +110,7 @@ public class SetlListUpldService {
         this.logDao = logDao;
         this.caseFrontSheetMainService = caseFrontSheetMainService;
         this.redisLikeService = redisLikeService;
+        this.drgWebServices = drgWebServices;
     }
 
 
@@ -1409,5 +1431,94 @@ public class SetlListUpldService {
         ExcelUtil.exportExcel(response, title, content);
     }
 
+    /**
+     * @description:drg分组测算
+     * @author: lihong
+     * @date: 2022/12/8 11:13
+     * @param: param
+     * @return: thyyxxk.webserver.entity.ResultVo<java.lang.String>
+     **/
+    public ResultVo<String> drgGroupTest(ZyInactpatient param) {
+        param.setLedgerSn(publicServer.getLedgerSn(param.getInpatientNo(), param.getAdmissTimes()));
+        SetlinfoUpld setlinfo1 = dao.setlinfo1(param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn());
+        SetlinfoUpld setlinfo2 = dao.setlinfo2(param.getInpatientNo(), param.getAdmissTimes());
+        SetlinfoUpld setlinfo5 = dao.setlinfo5(param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn());
+        BeanUtil.copyProperties(setlinfo2, setlinfo1);
+        BeanUtil.copyProperties(setlinfo5, setlinfo1);
+        DrgGroupTestVO drgGroupTestVO = createDrgGroupTestVO(param, setlinfo1);
+        log.info("调用诊断辅助入参:{}",JSON.toJSONString(drgGroupTestVO));
+        String url = "http://172.16.32.126:8080";
+        try {
+            String result = drgWebServices.localHelpDrgDagns(drgGroupTestVO);
+            log.info("调用诊断辅助返回结果:{}",result);
+            url +=result;
+        } catch (Exception e) {
+            log.error( "调用诊断辅助填报接口报错",e);
+            throw new BizException(ExceptionEnum.LOGICAL_ERROR,"调用诊断辅助填报接口报错");
+        }
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS,ExceptionEnum.SUCCESS.getMessage(),url);
+    }
+
+    private DrgGroupTestVO createDrgGroupTestVO(ZyInactpatient param,SetlinfoUpld setlinfoUpld) {
+        DrgGroupTestVO drgGroupTestVO = new DrgGroupTestVO();
+        drgGroupTestVO.setVisit_id(param.getInpatientNo()+"_"+param.getAdmissTimes());    //就诊ID
+        drgGroupTestVO.setXm(param.getName());    //姓名
+        drgGroupTestVO.setBah(param.getInpatientNo());    //病案号
+        drgGroupTestVO.setCysj(DateUtil.formatDatetime(setlinfoUpld.getDscgTime(),"yyyy-MM-dd"));    //出院时间
+        drgGroupTestVO.setXb(param.getSex());    //性别
+        drgGroupTestVO.setNl(setlinfoUpld.getAge());    //年龄
+        drgGroupTestVO.setZfy(param.getMedfeeSumamt().toString());   //总费用
+        drgGroupTestVO.setSjzyts(param.getActIptDays());    //实际住院天数
+
+        drgGroupTestVO.setRytj(setlinfoUpld.getAdmWay());    //入院途径
+        drgGroupTestVO.setLyfs(setlinfoUpld.getDscgWay());    //	离院方式
+        drgGroupTestVO.setInsur_type_id(StringUtil.isBlank(setlinfoUpld.getHiType())?"":!"310".equals(setlinfoUpld.getHiType())&&!"390".equals(setlinfoUpld.getHiType())?"390":setlinfoUpld.getHiType());    //	病人险种
+        drgGroupTestVO.setXsecstz(setlinfoUpld.getNwbBirWt());    //	新生儿出生体重(克)
+        drgGroupTestVO.setXserytz(setlinfoUpld.getNwbAdmWt());    //新生儿入院体重(克)
+        drgGroupTestVO.setBzyzsnl(setlinfoUpld.getNwbAge());    //不足一周岁年龄(天)
+       // 封装诊断
+        if(ListUtil.notBlank(param.getNewYbZyDisDiag())){
+            drgGroupTestVO.setRybq(param.getNewYbZyDisDiag().get(0).getAdmissCond()==null?"":param.getNewYbZyDisDiag().get(0).getAdmissCond().toString());//入院病情
+            drgGroupTestVO.setJbdm(param.getNewYbZyDisDiag().get(0).getDisDiag());
+            drgGroupTestVO.setZyzd(param.getNewYbZyDisDiag().get(0).getDisDiagComment());
+            setFieldValue(drgGroupTestVO,"jbdm","disDiag",param.getNewYbZyDisDiag(),1,16);
+        }
+        else {
+            if(ListUtil.notBlank(param.getYbZyDisDiag())){
+            drgGroupTestVO.setRybq(param.getYbZyDisDiag().get(0).getAdmissCond()==null?"":param.getYbZyDisDiag().get(0).getAdmissCond().toString());//入院病情
+            drgGroupTestVO.setJbdm(param.getYbZyDisDiag().get(0).getDisDiag());
+            drgGroupTestVO.setZyzd(param.getYbZyDisDiag().get(0).getDisDiagComment());
+            setFieldValue(drgGroupTestVO,"jbdm","disDiag",param.getYbZyDisDiag(),1,16);
+            }
+        }
+       // 封装手术
+        if(ListUtil.notBlank(param.getNewBatjBa4())){
+            drgGroupTestVO.setSsjczbm1(param.getNewBatjBa4().get(0).getSsbm());
+            drgGroupTestVO.setSsjczmc1(param.getNewBatjBa4().get(0).getSsmc());
+            setFieldValue(drgGroupTestVO,"ssjczbm","ssbm",param.getNewBatjBa4(),2,7);
+        }
+        else {
+            if(ListUtil.notBlank(param.getBatjBa4())){
+                drgGroupTestVO.setSsjczbm1(param.getBatjBa4().get(0).getSsbm());
+                drgGroupTestVO.setSsjczmc1(param.getBatjBa4().get(0).getSsmc());
+                setFieldValue(drgGroupTestVO,"ssjczbm","ssbm",param.getBatjBa4(),2,7);
+            }
+        }
+       return drgGroupTestVO;
+    }
 
+    private <T> void setFieldValue(DrgGroupTestVO drgGroupTestVO, String fieldName, String targetFieldName, List<T> classList, Integer initSize,int maxSize){
+        if (ListUtil.isBlank(classList)) return;
+        if(initSize==null){
+            initSize=0;
+        }
+        for (int i = 1; i < classList.size(); i++) {
+            if(i >=maxSize){
+                break;
+            }
+            Object fieldValue = ReflectUtil.getFieldValue(classList.get(i), targetFieldName);
+            ReflectUtil.setFieldValue(drgGroupTestVO, fieldName+initSize, fieldValue);
+            ++initSize;
+        }
+    }
 }