|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|