|
@@ -1,8 +1,6 @@
|
|
|
package thyyxxk.webserver.service.medicalinsurance;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -10,22 +8,13 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
import thyyxxk.webserver.config.exception.ExceptionEnum;
|
|
|
import thyyxxk.webserver.constants.Capacity;
|
|
|
-import thyyxxk.webserver.constants.sidicts.ClrType;
|
|
|
-import thyyxxk.webserver.constants.sidicts.SiFunction;
|
|
|
-import thyyxxk.webserver.constants.YesOrNo;
|
|
|
-import thyyxxk.webserver.constants.sidicts.MdtrtCertType;
|
|
|
-import thyyxxk.webserver.constants.sidicts.PsnSetlWay;
|
|
|
import thyyxxk.webserver.dao.his.medicalinsurance.SiMzDao;
|
|
|
import thyyxxk.webserver.dao.his.medicalinsurance.SiQueryDao;
|
|
|
-import thyyxxk.webserver.dao.his.medicalinsurance.SiSetldetailDao;
|
|
|
-import thyyxxk.webserver.dao.his.medicalinsurance.SiSetlinfoDao;
|
|
|
import thyyxxk.webserver.entity.ResultVo;
|
|
|
import thyyxxk.webserver.entity.markmtfees.*;
|
|
|
import thyyxxk.webserver.entity.medicalinsurance.outpatient.*;
|
|
|
import thyyxxk.webserver.entity.medicalinsurance.query.SiPatInfo;
|
|
|
import thyyxxk.webserver.entity.medicalinsurance.setlinfo.FundDetail;
|
|
|
-import thyyxxk.webserver.entity.medicalinsurance.setlinfo.SiSetldetail;
|
|
|
-import thyyxxk.webserver.entity.medicalinsurance.setlinfo.SiSetlinfo;
|
|
|
import thyyxxk.webserver.utils.*;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
@@ -45,82 +34,80 @@ import java.util.Map;
|
|
|
public class SiMzService {
|
|
|
private final SiMzDao dao;
|
|
|
private final SiQueryDao queryDao;
|
|
|
- private final SiSetlinfoDao setlinfoDao;
|
|
|
- private final SiSetldetailDao setldetailDao;
|
|
|
- private final ExecService exec;
|
|
|
- private static final String RESULT_CODE = "infcode";
|
|
|
- private static final String ERROR_MESSAGE = "err_msg";
|
|
|
- private static final String OUTPUT = "output";
|
|
|
@Value("${hrg-api-url}")
|
|
|
private String hrgApiUrl;
|
|
|
+ @Value("${si-fee-url}")
|
|
|
+ private String siFeeUrl;
|
|
|
|
|
|
@Autowired
|
|
|
- public SiMzService(SiMzDao dao, SiQueryDao queryDao, SiSetlinfoDao setlinfoDao,
|
|
|
- SiSetldetailDao setldetailDao, ExecService exec) {
|
|
|
+ public SiMzService(SiMzDao dao, SiQueryDao queryDao) {
|
|
|
this.dao = dao;
|
|
|
this.queryDao = queryDao;
|
|
|
- this.setlinfoDao = setlinfoDao;
|
|
|
- this.setldetailDao = setldetailDao;
|
|
|
- this.exec = exec;
|
|
|
}
|
|
|
|
|
|
public ResultVo<String> outpatientRegistration(MzPatientInfo p) {
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.OUTPATIENT_REGISTRATION, p.getInsuplcAdmdvs());
|
|
|
- Regstrtn regstrtn = dao.selectRegstrtn(p.getPatNo(), p.getTimes());
|
|
|
- if (null == regstrtn) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "mz_visit_table患者信息为空,请联系医生重开处方。");
|
|
|
- }
|
|
|
- regstrtn.setInsutype(p.getInsutype());
|
|
|
- regstrtn.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
|
|
|
- regstrtn.setPsnType(p.getPsnType());
|
|
|
- regstrtn.setIptOtpNo(p.getPatNo());
|
|
|
- String ref = JSONObject.toJSONStringWithDateFormat(regstrtn, "yyyy-MM-dd HH:mm:ss");
|
|
|
- input.getJSONObject("input").put("data", JSONObject.parseObject(ref));
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.OUTPATIENT_REGISTRATION);
|
|
|
- log.info("【操作员:{}】,门诊挂号:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- JSONObject output = result.getJSONObject(OUTPUT).getJSONObject("data");
|
|
|
- p.setMdtrtId(output.getString("mdtrt_id"));
|
|
|
- p.setVisitDate(regstrtn.getBegntime());
|
|
|
- dao.afterRegistrtn(p);
|
|
|
- return ResultVoUtil.success("挂号成功。");
|
|
|
- }
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
+ p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/outpatientRegistration", p, ResultVo.class);
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.OUTPATIENT_REGISTRATION, p.getInsuplcAdmdvs());
|
|
|
+// Regstrtn regstrtn = dao.selectRegstrtn(p.getPatNo(), p.getTimes());
|
|
|
+// if (null == regstrtn) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "mz_visit_table患者信息为空,请联系医生重开处方。");
|
|
|
+// }
|
|
|
+// regstrtn.setInsutype(p.getInsutype());
|
|
|
+// regstrtn.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
|
|
|
+// regstrtn.setPsnType(p.getPsnType());
|
|
|
+// regstrtn.setIptOtpNo(p.getPatNo());
|
|
|
+// String ref = JSONObject.toJSONStringWithDateFormat(regstrtn, "yyyy-MM-dd HH:mm:ss");
|
|
|
+// input.getJSONObject("input").put("data", JSONObject.parseObject(ref));
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.OUTPATIENT_REGISTRATION);
|
|
|
+// log.info("【操作员:{}】,门诊挂号:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// JSONObject output = result.getJSONObject(OUTPUT).getJSONObject("data");
|
|
|
+// p.setMdtrtId(output.getString("mdtrt_id"));
|
|
|
+// p.setVisitDate(regstrtn.getBegntime());
|
|
|
+// dao.afterRegistrtn(p);
|
|
|
+// return ResultVoUtil.success("挂号成功。");
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
|
|
|
public ResultVo<String> revokeOutpatientRegistration(MzPatientInfo p) {
|
|
|
- if (null == p.getTimes()) {
|
|
|
- p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
- }
|
|
|
- SiPatInfo siPatInfo = queryDao.selectSiPatInfoForMz(p.getPatNo(), p.getTimes());
|
|
|
- if (null == siPatInfo || StringUtil.isBlank(siPatInfo.getMdtrtId())) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有有效的医保挂号信息。");
|
|
|
- }
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.REVOKE_OUTPATIENT_REGISTRATION, siPatInfo.getInsuplcAdmdvs());
|
|
|
- JSONObject data = new JSONObject();
|
|
|
- data.put("psn_no", siPatInfo.getPsnNo());
|
|
|
- data.put("mdtrt_id", siPatInfo.getMdtrtId());
|
|
|
- data.put("ipt_otp_no", p.getPatNo());
|
|
|
- input.getJSONObject("input").put("data", data);
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.REVOKE_OUTPATIENT_REGISTRATION);
|
|
|
- log.info("【操作员:{}】,取消门诊挂号:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- queryDao.clearMdtrtIdForMz(p.getPatNo(), p.getTimes(), null);
|
|
|
- return ResultVoUtil.success("取消门诊挂号成功。");
|
|
|
- }
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
+ p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/revokeOutpatientRegistration", p, ResultVo.class);
|
|
|
+// if (null == p.getTimes()) {
|
|
|
+// p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
+// }
|
|
|
+// SiPatInfo siPatInfo = queryDao.selectSiPatInfoForMz(p.getPatNo(), p.getTimes());
|
|
|
+// if (null == siPatInfo || StringUtil.isBlank(siPatInfo.getMdtrtId())) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有有效的医保挂号信息。");
|
|
|
+// }
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.REVOKE_OUTPATIENT_REGISTRATION, siPatInfo.getInsuplcAdmdvs());
|
|
|
+// JSONObject data = new JSONObject();
|
|
|
+// data.put("psn_no", siPatInfo.getPsnNo());
|
|
|
+// data.put("mdtrt_id", siPatInfo.getMdtrtId());
|
|
|
+// data.put("ipt_otp_no", p.getPatNo());
|
|
|
+// input.getJSONObject("input").put("data", data);
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.REVOKE_OUTPATIENT_REGISTRATION);
|
|
|
+// log.info("【操作员:{}】,取消门诊挂号:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// queryDao.clearMdtrtIdForMz(p.getPatNo(), p.getTimes(), null);
|
|
|
+// return ResultVoUtil.success("取消门诊挂号成功。");
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
|
|
|
public ResultVo<List<Map<String, Object>>> getMzReceipts(MzPatientInfo p) {
|
|
@@ -320,291 +307,312 @@ public class SiMzService {
|
|
|
return ResultVoUtil.success("删除成功。");
|
|
|
}
|
|
|
|
|
|
- private ResultVo<String> uploadOutpatientInfo(SpcChrDiseAcct p, SiPatInfo siPatInfo) {
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.UPLOAD_OUTPATIENT_INFO, siPatInfo.getInsuplcAdmdvs());
|
|
|
- JSONObject mdtrtinfo = new JSONObject();
|
|
|
- Diseinfo diag = dao.selectDiseinfo(p.getPatNo(), p.getTimes());
|
|
|
- if (StringUtil.notBlank(p.getOpspDiseCode())) {
|
|
|
- diag.setDiagCode(p.getOpspDiseCode());
|
|
|
- diag.setDiagName(p.getOpspDiseName());
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(diag.getDiagCode())) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者的门诊诊断为空,请联系医生填写!");
|
|
|
- }
|
|
|
- dao.updatePatDiseinfo(siPatInfo.getPatNo(), siPatInfo.getTimes(), diag.getDiagCode(), diag.getDiagName());
|
|
|
- mdtrtinfo.put("mdtrt_id", siPatInfo.getMdtrtId());
|
|
|
- mdtrtinfo.put("psn_no", siPatInfo.getPsnNo());
|
|
|
- mdtrtinfo.put("med_type", siPatInfo.getMedType());
|
|
|
- mdtrtinfo.put("begntime", DateUtil.formatDatetime(siPatInfo.getVisitDatetime()));
|
|
|
- mdtrtinfo.put("main_cond_dscr", p.getOpspDiseName());
|
|
|
- mdtrtinfo.put("dise_codg", p.getOpspDiseCode());
|
|
|
- mdtrtinfo.put("dise_name", p.getOpspDiseName());
|
|
|
- mdtrtinfo.put("birctrl_type", "");
|
|
|
- mdtrtinfo.put("birctrl_matn_date", "");
|
|
|
- List<Diseinfo> diseinfo = new ArrayList<>();
|
|
|
- diseinfo.add(diag);
|
|
|
- String ref = JSONObject.toJSONString(diseinfo);
|
|
|
- input.getJSONObject("input").put("mdtrtinfo", mdtrtinfo);
|
|
|
- input.getJSONObject("input").put("diseinfo", JSONArray.parse(ref));
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.UPLOAD_OUTPATIENT_INFO);
|
|
|
- log.info("【操作员:{}】门诊就诊信息上传:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
- return SiUtil.makeReturnWithoutOutput(result, "门诊就诊信息上传成功。");
|
|
|
- }
|
|
|
+// private ResultVo<String> uploadOutpatientInfo(SpcChrDiseAcct p, SiPatInfo siPatInfo) {
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.UPLOAD_OUTPATIENT_INFO, siPatInfo.getInsuplcAdmdvs());
|
|
|
+// JSONObject mdtrtinfo = new JSONObject();
|
|
|
+// Diseinfo diag = dao.selectDiseinfo(p.getPatNo(), p.getTimes());
|
|
|
+// if (StringUtil.notBlank(p.getOpspDiseCode())) {
|
|
|
+// diag.setDiagCode(p.getOpspDiseCode());
|
|
|
+// diag.setDiagName(p.getOpspDiseName());
|
|
|
+// }
|
|
|
+// if (StringUtil.isBlank(diag.getDiagCode())) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者的门诊诊断为空,请联系医生填写!");
|
|
|
+// }
|
|
|
+// dao.updatePatDiseinfo(siPatInfo.getPatNo(), siPatInfo.getTimes(), diag.getDiagCode(), diag.getDiagName());
|
|
|
+// mdtrtinfo.put("mdtrt_id", siPatInfo.getMdtrtId());
|
|
|
+// mdtrtinfo.put("psn_no", siPatInfo.getPsnNo());
|
|
|
+// mdtrtinfo.put("med_type", siPatInfo.getMedType());
|
|
|
+// mdtrtinfo.put("begntime", DateUtil.formatDatetime(siPatInfo.getVisitDatetime()));
|
|
|
+// mdtrtinfo.put("main_cond_dscr", p.getOpspDiseName());
|
|
|
+// mdtrtinfo.put("dise_codg", p.getOpspDiseCode());
|
|
|
+// mdtrtinfo.put("dise_name", p.getOpspDiseName());
|
|
|
+// mdtrtinfo.put("birctrl_type", "");
|
|
|
+// mdtrtinfo.put("birctrl_matn_date", "");
|
|
|
+// List<Diseinfo> diseinfo = new ArrayList<>();
|
|
|
+// diseinfo.add(diag);
|
|
|
+// String ref = JSONObject.toJSONString(diseinfo);
|
|
|
+// input.getJSONObject("input").put("mdtrtinfo", mdtrtinfo);
|
|
|
+// input.getJSONObject("input").put("diseinfo", JSONArray.parse(ref));
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.UPLOAD_OUTPATIENT_INFO);
|
|
|
+// log.info("【操作员:{}】门诊就诊信息上传:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
+// return SiUtil.makeReturnWithoutOutput(result, "门诊就诊信息上传成功。");
|
|
|
+// }
|
|
|
|
|
|
public ResultVo<SiPatInfo> uploadOutpatientFeeDetails(SpcChrDiseAcct p) {
|
|
|
- String patNo = p.getPatNo();
|
|
|
- if (null == p.getTimes()) {
|
|
|
- p.setTimes(dao.selectMaxTimes(patNo));
|
|
|
- }
|
|
|
- SiPatInfo siPatInfo = queryDao.selectSiPatInfoForMz(patNo, p.getTimes());
|
|
|
- if (null == siPatInfo || StringUtil.isBlank(siPatInfo.getMdtrtId())) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【门诊号:" + patNo +
|
|
|
- "】未找到此患者的医保挂号信息,请核实。");
|
|
|
- }
|
|
|
- ResultVo<String> uplRes = uploadOutpatientInfo(p, siPatInfo);
|
|
|
- if (null != uplRes && uplRes.getCode() != ExceptionEnum.SUCCESS.getCode()) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, uplRes.getMessage());
|
|
|
- }
|
|
|
- List<FeeDetail> feeDetails = dao.selectOutpatientFees(patNo, p.getTimes());
|
|
|
- if (null == feeDetails || feeDetails.isEmpty()) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有需要上传的费用。");
|
|
|
- }
|
|
|
- String batchNo = patNo + "_" + p.getTimes();
|
|
|
- feeDetails.forEach(item -> {
|
|
|
- item.setMdtrtId(siPatInfo.getMdtrtId());
|
|
|
- item.setPsnNo(siPatInfo.getPsnNo());
|
|
|
- item.setChrgBchno(batchNo);
|
|
|
- item.setRxCircFlag(YesOrNo.NO.getCodeStr());
|
|
|
- item.setHospApprFlag(YesOrNo.YES.getCodeStr());
|
|
|
- });
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.UPLOAD_OUTPATIENT_FEE_DETAILS, siPatInfo.getInsuplcAdmdvs());
|
|
|
- String ref = JSONArray.toJSONString(feeDetails);
|
|
|
- JSONArray feedetail = JSONArray.parseArray(ref);
|
|
|
- input.getJSONObject("input").put("feedetail", feedetail);
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.UPLOAD_OUTPATIENT_FEE_DETAILS);
|
|
|
- log.info("【操作员:{}】门诊费用明细信息上传:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- JSONArray feeRes = result.getJSONObject(OUTPUT).getJSONArray("result");
|
|
|
- double fulamtOwnpayAmt = 0d;
|
|
|
- double overlmtAmt = 0d;
|
|
|
- double preselfpayAmt = 0d;
|
|
|
- double inscpScpAmt = 0d;
|
|
|
- for (int i = 0; i < feeRes.size(); i++) {
|
|
|
- JSONObject fee = feeRes.getJSONObject(i);
|
|
|
- fulamtOwnpayAmt += fee.getDoubleValue("fulamt_ownpay_amt");
|
|
|
- overlmtAmt += fee.getDoubleValue("overlmt_amt");
|
|
|
- preselfpayAmt += fee.getDoubleValue("preselfpay_amt");
|
|
|
- inscpScpAmt += fee.getDoubleValue("inscp_scp_amt");
|
|
|
-
|
|
|
- String detlSn = fee.getString("feedetl_sn");
|
|
|
- String chrgLv = fee.getString("chrgitm_lv");
|
|
|
- String chrgType = fee.getString("med_chrgitm_type");
|
|
|
- String[] sns = detlSn.split("_");
|
|
|
- int times = Integer.parseInt(sns[1]);
|
|
|
- int recNo = Integer.parseInt(sns[2]);
|
|
|
- int odrNo = Integer.parseInt(sns[3]);
|
|
|
- int itmNo = Integer.parseInt(sns[4]);
|
|
|
- dao.afterUploadFees(patNo, times, recNo, odrNo, itmNo, chrgLv, chrgType);
|
|
|
- }
|
|
|
- siPatInfo.setFulamtOwnpayAmt(fulamtOwnpayAmt);
|
|
|
- siPatInfo.setOverlmtAmt(overlmtAmt);
|
|
|
- siPatInfo.setPreselfpayAmt(preselfpayAmt);
|
|
|
- siPatInfo.setInscpScpAmt(inscpScpAmt);
|
|
|
- dao.updateSortOfAmt(siPatInfo);
|
|
|
- return ResultVoUtil.success(siPatInfo);
|
|
|
- }
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
+ p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/uploadOutpatientFeeDetails", p, ResultVo.class);
|
|
|
+// String patNo = p.getPatNo();
|
|
|
+// if (null == p.getTimes()) {
|
|
|
+// p.setTimes(dao.selectMaxTimes(patNo));
|
|
|
+// }
|
|
|
+// SiPatInfo siPatInfo = queryDao.selectSiPatInfoForMz(patNo, p.getTimes());
|
|
|
+// if (null == siPatInfo || StringUtil.isBlank(siPatInfo.getMdtrtId())) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【门诊号:" + patNo +
|
|
|
+// "】未找到此患者的医保挂号信息,请核实。");
|
|
|
+// }
|
|
|
+// ResultVo<String> uplRes = uploadOutpatientInfo(p, siPatInfo);
|
|
|
+// if (null != uplRes && uplRes.getCode() != ExceptionEnum.SUCCESS.getCode()) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, uplRes.getMessage());
|
|
|
+// }
|
|
|
+// List<FeeDetail> feeDetails = dao.selectOutpatientFees(patNo, p.getTimes());
|
|
|
+// if (null == feeDetails || feeDetails.isEmpty()) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有需要上传的费用。");
|
|
|
+// }
|
|
|
+// String batchNo = patNo + "_" + p.getTimes();
|
|
|
+// feeDetails.forEach(item -> {
|
|
|
+// item.setMdtrtId(siPatInfo.getMdtrtId());
|
|
|
+// item.setPsnNo(siPatInfo.getPsnNo());
|
|
|
+// item.setChrgBchno(batchNo);
|
|
|
+// item.setRxCircFlag(YesOrNo.NO.getCodeStr());
|
|
|
+// item.setHospApprFlag(YesOrNo.YES.getCodeStr());
|
|
|
+// });
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.UPLOAD_OUTPATIENT_FEE_DETAILS, siPatInfo.getInsuplcAdmdvs());
|
|
|
+// String ref = JSONArray.toJSONString(feeDetails);
|
|
|
+// JSONArray feedetail = JSONArray.parseArray(ref);
|
|
|
+// input.getJSONObject("input").put("feedetail", feedetail);
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.UPLOAD_OUTPATIENT_FEE_DETAILS);
|
|
|
+// log.info("【操作员:{}】门诊费用明细信息上传:\n参数:{},\n结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// JSONArray feeRes = result.getJSONObject(OUTPUT).getJSONArray("result");
|
|
|
+// double fulamtOwnpayAmt = 0d;
|
|
|
+// double overlmtAmt = 0d;
|
|
|
+// double preselfpayAmt = 0d;
|
|
|
+// double inscpScpAmt = 0d;
|
|
|
+// for (int i = 0; i < feeRes.size(); i++) {
|
|
|
+// JSONObject fee = feeRes.getJSONObject(i);
|
|
|
+// fulamtOwnpayAmt += fee.getDoubleValue("fulamt_ownpay_amt");
|
|
|
+// overlmtAmt += fee.getDoubleValue("overlmt_amt");
|
|
|
+// preselfpayAmt += fee.getDoubleValue("preselfpay_amt");
|
|
|
+// inscpScpAmt += fee.getDoubleValue("inscp_scp_amt");
|
|
|
+//
|
|
|
+// String detlSn = fee.getString("feedetl_sn");
|
|
|
+// String chrgLv = fee.getString("chrgitm_lv");
|
|
|
+// String chrgType = fee.getString("med_chrgitm_type");
|
|
|
+// String[] sns = detlSn.split("_");
|
|
|
+// int times = Integer.parseInt(sns[1]);
|
|
|
+// int recNo = Integer.parseInt(sns[2]);
|
|
|
+// int odrNo = Integer.parseInt(sns[3]);
|
|
|
+// int itmNo = Integer.parseInt(sns[4]);
|
|
|
+// dao.afterUploadFees(patNo, times, recNo, odrNo, itmNo, chrgLv, chrgType);
|
|
|
+// }
|
|
|
+// siPatInfo.setFulamtOwnpayAmt(fulamtOwnpayAmt);
|
|
|
+// siPatInfo.setOverlmtAmt(overlmtAmt);
|
|
|
+// siPatInfo.setPreselfpayAmt(preselfpayAmt);
|
|
|
+// siPatInfo.setInscpScpAmt(inscpScpAmt);
|
|
|
+// dao.updateSortOfAmt(siPatInfo);
|
|
|
+// return ResultVoUtil.success(siPatInfo);
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
|
|
|
public ResultVo<String> revokeOutpatientFeeDetails(MzPatientInfo p) {
|
|
|
- if (null == p.getTimes()) {
|
|
|
- p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
- }
|
|
|
- SiPatInfo siPatInfo = queryDao.selectSiPatInfoForMz(p.getPatNo(), p.getTimes());
|
|
|
- log.info("patNo: {}, times: {}, sipatinfo: {}", p.getPatNo(), p.getTimes(), siPatInfo);
|
|
|
- if (null == siPatInfo || StringUtil.isBlank(siPatInfo.getMdtrtId())) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有此患者的医保挂号信息!");
|
|
|
- }
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.REVOKE_OUTPATIENT_FEE_DETAILS, siPatInfo.getInsuplcAdmdvs());
|
|
|
- JSONObject data = new JSONObject();
|
|
|
- data.put("mdtrt_id", siPatInfo.getMdtrtId());
|
|
|
- data.put("psn_no", siPatInfo.getPsnNo());
|
|
|
- data.put("chrg_bchno", "0000");
|
|
|
- input.getJSONObject("input").put("data", data);
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.REVOKE_OUTPATIENT_FEE_DETAILS);
|
|
|
- log.info("【操作员:{}】门诊费用明细信息撤销,参数:{},结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- dao.afterRevokeFees(p.getPatNo(), p.getTimes());
|
|
|
- return ResultVoUtil.success("门诊费用明细信息撤销成功。");
|
|
|
- }
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
+ p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/revokeOutpatientFeeDetails", p, ResultVo.class);
|
|
|
+// if (null == p.getTimes()) {
|
|
|
+// p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
+// }
|
|
|
+// SiPatInfo siPatInfo = queryDao.selectSiPatInfoForMz(p.getPatNo(), p.getTimes());
|
|
|
+// log.info("patNo: {}, times: {}, sipatinfo: {}", p.getPatNo(), p.getTimes(), siPatInfo);
|
|
|
+// if (null == siPatInfo || StringUtil.isBlank(siPatInfo.getMdtrtId())) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有此患者的医保挂号信息!");
|
|
|
+// }
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.REVOKE_OUTPATIENT_FEE_DETAILS, siPatInfo.getInsuplcAdmdvs());
|
|
|
+// JSONObject data = new JSONObject();
|
|
|
+// data.put("mdtrt_id", siPatInfo.getMdtrtId());
|
|
|
+// data.put("psn_no", siPatInfo.getPsnNo());
|
|
|
+// data.put("chrg_bchno", "0000");
|
|
|
+// input.getJSONObject("input").put("data", data);
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.REVOKE_OUTPATIENT_FEE_DETAILS);
|
|
|
+// log.info("【操作员:{}】门诊费用明细信息撤销,参数:{},结果:{}", TokenUtil.getTokenUserId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// dao.afterRevokeFees(p.getPatNo(), p.getTimes());
|
|
|
+// return ResultVoUtil.success("门诊费用明细信息撤销成功。");
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
|
|
|
public ResultVo<FundDetail> outpatientPreSettlement(MzPatientInfo p) {
|
|
|
- if (null == p.getTimes()) {
|
|
|
- p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
- }
|
|
|
- ResultVo<FundDetail> fundDetail1 = getFundDetailResultVo(p);
|
|
|
- if (fundDetail1 != null) return fundDetail1;
|
|
|
- PreSetlmt preSetlmt = dao.selectPreSetlmt(p.getPatNo(), p.getTimes());
|
|
|
- preSetlmt.setMedfeeSumamt(preSetlmt.getMedfeeSumamt().setScale(2, RoundingMode.HALF_UP));
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.OUTPATIENT_PRE_SETTLEMENT, preSetlmt.getInsuplcAdmdvs());
|
|
|
- preSetlmt.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
|
|
|
- preSetlmt.setPsnSetlway(PsnSetlWay.SETTLE_BY_ITEMS.getCode());
|
|
|
- preSetlmt.setAcctUsedFlag(YesOrNo.NO.getCodeStr());
|
|
|
- preSetlmt.setChrgBchno(p.getPatNo() + "_" + p.getTimes());
|
|
|
- String ref = JSONObject.toJSONString(preSetlmt);
|
|
|
- input.getJSONObject("input").put("data", JSONObject.parseObject(ref));
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.OUTPATIENT_PRE_SETTLEMENT);
|
|
|
- log.info("【操作员:{}】门诊预结算:\n参数:{},\n结果:{}", p.getStaffId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- int mtPartCount = dao.selectMtPartCount(p.getPatNo(), p.getTimes());
|
|
|
- if (mtPartCount == 0) {
|
|
|
- CssybApplyInfo applyInfo = new CssybApplyInfo();
|
|
|
- applyInfo.setPatientId(p.getPatNo());
|
|
|
- applyInfo.setTimes(p.getTimes());
|
|
|
- applyInfo.setHicNo(preSetlmt.getPsnNo());
|
|
|
- applyInfo.setBizType(preSetlmt.getMedType());
|
|
|
- applyInfo.setIcdCode("");
|
|
|
- applyInfo.setIcdName("");
|
|
|
- applyInfo.setMzSerialNo(preSetlmt.getMdtrtId());
|
|
|
- dao.insertMtPartInfo(applyInfo);
|
|
|
- }
|
|
|
- JSONObject setlinfo = result.getJSONObject(OUTPUT).getJSONObject("setlinfo");
|
|
|
- FundDetail fundDetail = new FundDetail();
|
|
|
- fundDetail.setTotalCost(setlinfo.getString("medfee_sumamt"));
|
|
|
- fundDetail.setFundPay(setlinfo.getString("fund_pay_sumamt"));
|
|
|
- fundDetail.setCashPay(setlinfo.getString("psn_cash_pay"));
|
|
|
- fundDetail.setAcctPay(setlinfo.getString("acct_pay"));
|
|
|
- fundDetail.setSelfPay(setlinfo.getString("psn_part_amt"));
|
|
|
- return ResultVoUtil.success(fundDetail);
|
|
|
- }
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
- }
|
|
|
-
|
|
|
- private ResultVo<FundDetail> getFundDetailResultVo(MzPatientInfo p) {
|
|
|
- SiSetlinfo sisetl = dao.selectSettledInfo(p.getPatNo(), p.getTimes());
|
|
|
- if (null != sisetl && null != sisetl.getSetlId()) {
|
|
|
- FundDetail fundDetail = new FundDetail();
|
|
|
- fundDetail.setTotalCost(String.valueOf(sisetl.getMedfeeSumamt()));
|
|
|
- fundDetail.setFundPay(String.valueOf(sisetl.getFundPaySumamt()));
|
|
|
- fundDetail.setCashPay(String.valueOf(sisetl.getPsnCashPay()));
|
|
|
- fundDetail.setAcctPay(String.valueOf(sisetl.getAcctPay()));
|
|
|
- fundDetail.setSelfPay(String.valueOf(sisetl.getPsnPartAmt()));
|
|
|
- return ResultVoUtil.success(fundDetail);
|
|
|
- }
|
|
|
if (null == p.getStaffId()) {
|
|
|
p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
}
|
|
|
- return null;
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/outpatientPreSettlement", p, ResultVo.class);
|
|
|
+// if (null == p.getTimes()) {
|
|
|
+// p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
+// }
|
|
|
+// ResultVo<FundDetail> fundDetail1 = getFundDetailResultVo(p);
|
|
|
+// if (fundDetail1 != null) return fundDetail1;
|
|
|
+// PreSetlmt preSetlmt = dao.selectPreSetlmt(p.getPatNo(), p.getTimes());
|
|
|
+// preSetlmt.setMedfeeSumamt(preSetlmt.getMedfeeSumamt().setScale(2, RoundingMode.HALF_UP));
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.OUTPATIENT_PRE_SETTLEMENT, preSetlmt.getInsuplcAdmdvs());
|
|
|
+// preSetlmt.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
|
|
|
+// preSetlmt.setPsnSetlway(PsnSetlWay.SETTLE_BY_ITEMS.getCode());
|
|
|
+// preSetlmt.setAcctUsedFlag(YesOrNo.NO.getCodeStr());
|
|
|
+// preSetlmt.setChrgBchno(p.getPatNo() + "_" + p.getTimes());
|
|
|
+// String ref = JSONObject.toJSONString(preSetlmt);
|
|
|
+// input.getJSONObject("input").put("data", JSONObject.parseObject(ref));
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.OUTPATIENT_PRE_SETTLEMENT);
|
|
|
+// log.info("【操作员:{}】门诊预结算:\n参数:{},\n结果:{}", p.getStaffId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// int mtPartCount = dao.selectMtPartCount(p.getPatNo(), p.getTimes());
|
|
|
+// if (mtPartCount == 0) {
|
|
|
+// CssybApplyInfo applyInfo = new CssybApplyInfo();
|
|
|
+// applyInfo.setPatientId(p.getPatNo());
|
|
|
+// applyInfo.setTimes(p.getTimes());
|
|
|
+// applyInfo.setHicNo(preSetlmt.getPsnNo());
|
|
|
+// applyInfo.setBizType(preSetlmt.getMedType());
|
|
|
+// applyInfo.setIcdCode("");
|
|
|
+// applyInfo.setIcdName("");
|
|
|
+// applyInfo.setMzSerialNo(preSetlmt.getMdtrtId());
|
|
|
+// dao.insertMtPartInfo(applyInfo);
|
|
|
+// }
|
|
|
+// JSONObject setlinfo = result.getJSONObject(OUTPUT).getJSONObject("setlinfo");
|
|
|
+// FundDetail fundDetail = new FundDetail();
|
|
|
+// fundDetail.setTotalCost(setlinfo.getString("medfee_sumamt"));
|
|
|
+// fundDetail.setFundPay(setlinfo.getString("fund_pay_sumamt"));
|
|
|
+// fundDetail.setCashPay(setlinfo.getString("psn_cash_pay"));
|
|
|
+// fundDetail.setAcctPay(setlinfo.getString("acct_pay"));
|
|
|
+// fundDetail.setSelfPay(setlinfo.getString("psn_part_amt"));
|
|
|
+// return ResultVoUtil.success(fundDetail);
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
|
|
|
+// private ResultVo<FundDetail> getFundDetailResultVo(MzPatientInfo p) {
|
|
|
+// SiSetlinfo sisetl = dao.selectSettledInfo(p.getPatNo(), p.getTimes());
|
|
|
+// if (null != sisetl && null != sisetl.getSetlId()) {
|
|
|
+// FundDetail fundDetail = new FundDetail();
|
|
|
+// fundDetail.setTotalCost(String.valueOf(sisetl.getMedfeeSumamt()));
|
|
|
+// fundDetail.setFundPay(String.valueOf(sisetl.getFundPaySumamt()));
|
|
|
+// fundDetail.setCashPay(String.valueOf(sisetl.getPsnCashPay()));
|
|
|
+// fundDetail.setAcctPay(String.valueOf(sisetl.getAcctPay()));
|
|
|
+// fundDetail.setSelfPay(String.valueOf(sisetl.getPsnPartAmt()));
|
|
|
+// return ResultVoUtil.success(fundDetail);
|
|
|
+// }
|
|
|
+// if (null == p.getStaffId()) {
|
|
|
+// p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
+// }
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+
|
|
|
public ResultVo<FundDetail> outpatientSettlement(MzPatientInfo p) {
|
|
|
- ResultVo<FundDetail> fundDetail1 = getFundDetailResultVo(p);
|
|
|
- if (fundDetail1 != null) return fundDetail1;
|
|
|
- Setlmt setlmt = dao.selectSetlmt(p.getPatNo(), p.getTimes());
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.OUTPATIENT_SETTLEMENT, setlmt.getInsuplcAdmdvs());
|
|
|
- setlmt.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
|
|
|
- setlmt.setMedfeeSumamt(setlmt.getMedfeeSumamt().setScale(2, RoundingMode.HALF_UP));
|
|
|
- setlmt.setPsnSetlway(PsnSetlWay.SETTLE_BY_ITEMS.getCode());
|
|
|
- setlmt.setChrgBchno(p.getPatNo() + "_" + p.getTimes());
|
|
|
- setlmt.setAcctUsedFlag(YesOrNo.NO.getCodeStr());
|
|
|
- setlmt.setInvono(SnowFlakeId.instance().nextId());
|
|
|
- String ref = JSONObject.toJSONString(setlmt);
|
|
|
- input.getJSONObject("input").put("data", JSONObject.parseObject(ref));
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.OUTPATIENT_SETTLEMENT);
|
|
|
- log.info("【操作员:{}】门诊结算:\n参数:{},\n结果:{}", p.getStaffId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR, "与医保中心的连接出现网络异常!");
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- JSONObject setlinfo = result.getJSONObject(OUTPUT).getJSONObject("setlinfo");
|
|
|
- SiSetlinfo setlEntity = JSONObject.parseObject(setlinfo.toJSONString(), SiSetlinfo.class);
|
|
|
- setlEntity.setPatNo(p.getPatNo());
|
|
|
- setlEntity.setTimes(p.getTimes());
|
|
|
- setlEntity.setLedgerSn(0);
|
|
|
- setlEntity.setStaffId(p.getStaffId());
|
|
|
- setlEntity.setRevoked(YesOrNo.NO.getCode());
|
|
|
- setlEntity.setSetlType(ClrType.OUTPATIENT.getCode());
|
|
|
- setlinfoDao.insert(setlEntity);
|
|
|
- setlinfoDao.updateSiZyInfoSetlId(p.getPatNo(), p.getTimes(), 0, setlEntity.getSetlId(),
|
|
|
- setlEntity.getMedinsSetlId(), input.getString("msgid"));
|
|
|
- JSONArray setldetail = result.getJSONObject(OUTPUT).getJSONArray("setldetail");
|
|
|
- for (int i = 0; i < setldetail.size(); i++) {
|
|
|
- SiSetldetail setldetailEntity = JSONObject.parseObject(setldetail.getJSONObject(i).toJSONString(), SiSetldetail.class);
|
|
|
- setldetailEntity.setPatNo(p.getPatNo());
|
|
|
- setldetailEntity.setTimes(p.getTimes());
|
|
|
- setldetailEntity.setLedgerSn(0);
|
|
|
- setldetailDao.insert(setldetailEntity);
|
|
|
- }
|
|
|
- FundDetail fundDetail = new FundDetail();
|
|
|
- fundDetail.setTotalCost(String.valueOf(setlEntity.getMedfeeSumamt()));
|
|
|
- fundDetail.setFundPay(String.valueOf(setlEntity.getFundPaySumamt()));
|
|
|
- fundDetail.setCashPay(String.valueOf(setlEntity.getPsnCashPay()));
|
|
|
- fundDetail.setAcctPay(String.valueOf(setlEntity.getAcctPay()));
|
|
|
- fundDetail.setSelfPay(String.valueOf(setlEntity.getPsnPartAmt()));
|
|
|
- return ResultVoUtil.success(fundDetail);
|
|
|
+ if (null == p.getStaffId()) {
|
|
|
+ p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
}
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/outpatientSettlement", p, ResultVo.class);
|
|
|
+// ResultVo<FundDetail> fundDetail1 = getFundDetailResultVo(p);
|
|
|
+// if (fundDetail1 != null) return fundDetail1;
|
|
|
+// Setlmt setlmt = dao.selectSetlmt(p.getPatNo(), p.getTimes());
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.OUTPATIENT_SETTLEMENT, setlmt.getInsuplcAdmdvs());
|
|
|
+// setlmt.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
|
|
|
+// setlmt.setMedfeeSumamt(setlmt.getMedfeeSumamt().setScale(2, RoundingMode.HALF_UP));
|
|
|
+// setlmt.setPsnSetlway(PsnSetlWay.SETTLE_BY_ITEMS.getCode());
|
|
|
+// setlmt.setChrgBchno(p.getPatNo() + "_" + p.getTimes());
|
|
|
+// setlmt.setAcctUsedFlag(YesOrNo.NO.getCodeStr());
|
|
|
+// setlmt.setInvono(SnowFlakeId.instance().nextId());
|
|
|
+// String ref = JSONObject.toJSONString(setlmt);
|
|
|
+// input.getJSONObject("input").put("data", JSONObject.parseObject(ref));
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.OUTPATIENT_SETTLEMENT);
|
|
|
+// log.info("【操作员:{}】门诊结算:\n参数:{},\n结果:{}", p.getStaffId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR, "与医保中心的连接出现网络异常!");
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// JSONObject setlinfo = result.getJSONObject(OUTPUT).getJSONObject("setlinfo");
|
|
|
+// SiSetlinfo setlEntity = JSONObject.parseObject(setlinfo.toJSONString(), SiSetlinfo.class);
|
|
|
+// setlEntity.setPatNo(p.getPatNo());
|
|
|
+// setlEntity.setTimes(p.getTimes());
|
|
|
+// setlEntity.setLedgerSn(0);
|
|
|
+// setlEntity.setStaffId(p.getStaffId());
|
|
|
+// setlEntity.setRevoked(YesOrNo.NO.getCode());
|
|
|
+// setlEntity.setSetlType(ClrType.OUTPATIENT.getCode());
|
|
|
+// setlinfoDao.insert(setlEntity);
|
|
|
+// setlinfoDao.updateSiZyInfoSetlId(p.getPatNo(), p.getTimes(), 0, setlEntity.getSetlId(),
|
|
|
+// setlEntity.getMedinsSetlId(), input.getString("msgid"));
|
|
|
+// JSONArray setldetail = result.getJSONObject(OUTPUT).getJSONArray("setldetail");
|
|
|
+// for (int i = 0; i < setldetail.size(); i++) {
|
|
|
+// SiSetldetail setldetailEntity = JSONObject.parseObject(setldetail.getJSONObject(i).toJSONString(), SiSetldetail.class);
|
|
|
+// setldetailEntity.setPatNo(p.getPatNo());
|
|
|
+// setldetailEntity.setTimes(p.getTimes());
|
|
|
+// setldetailEntity.setLedgerSn(0);
|
|
|
+// setldetailDao.insert(setldetailEntity);
|
|
|
+// }
|
|
|
+// FundDetail fundDetail = new FundDetail();
|
|
|
+// fundDetail.setTotalCost(String.valueOf(setlEntity.getMedfeeSumamt()));
|
|
|
+// fundDetail.setFundPay(String.valueOf(setlEntity.getFundPaySumamt()));
|
|
|
+// fundDetail.setCashPay(String.valueOf(setlEntity.getPsnCashPay()));
|
|
|
+// fundDetail.setAcctPay(String.valueOf(setlEntity.getAcctPay()));
|
|
|
+// fundDetail.setSelfPay(String.valueOf(setlEntity.getPsnPartAmt()));
|
|
|
+// return ResultVoUtil.success(fundDetail);
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
|
|
|
public ResultVo<String> revokeOutpatientSettlement(MzPatientInfo p) {
|
|
|
- if (null == p.getTimes()) {
|
|
|
- p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
- }
|
|
|
if (null == p.getStaffId()) {
|
|
|
p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
}
|
|
|
- QueryWrapper<SiSetlinfo> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("pat_no", p.getPatNo());
|
|
|
- wrapper.eq("times", p.getTimes());
|
|
|
- wrapper.eq("revoked", 0);
|
|
|
- SiSetlinfo setlinfo = setlinfoDao.selectOne(wrapper);
|
|
|
- if (null == setlinfo) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有有效的结算信息。");
|
|
|
- }
|
|
|
- JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.REVOKE_OUTPATIENT_SETTLEMENT,
|
|
|
- dao.selectAdmdvs(setlinfo.getPatNo(), setlinfo.getTimes(), setlinfo.getLedgerSn()));
|
|
|
- JSONObject data = new JSONObject();
|
|
|
- data.put("setl_id", setlinfo.getSetlId());
|
|
|
- data.put("mdtrt_id", setlinfo.getMdtrtId());
|
|
|
- data.put("psn_no", setlinfo.getPsnNo());
|
|
|
- input.getJSONObject("input").put("data", data);
|
|
|
- JSONObject result = exec.executeTrade(input, SiFunction.REVOKE_OUTPATIENT_SETTLEMENT);
|
|
|
- log.info("【操作员:{}】门诊结算撤销:\n参数:{},\n结果:{}", p.getStaffId(), input, result);
|
|
|
- if (null == result) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
- }
|
|
|
- if (null == result.getInteger(RESULT_CODE)) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
- }
|
|
|
- if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
- dao.deleteSetlInfo(p.getPatNo(), p.getTimes());
|
|
|
- dao.deleteSetlDetail(p.getPatNo(), p.getTimes());
|
|
|
- dao.updateRvkSetlMsgid(p.getPatNo(), p.getTimes(), input.getString("msgid"));
|
|
|
- return ResultVoUtil.success("门诊结算撤销成功。");
|
|
|
- }
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ return restTemplate.postForObject(siFeeUrl + "/mzFee/revokeOutpatientSettlement", p, ResultVo.class);
|
|
|
+// if (null == p.getTimes()) {
|
|
|
+// p.setTimes(dao.selectMaxTimes(p.getPatNo()));
|
|
|
+// }
|
|
|
+// if (null == p.getStaffId()) {
|
|
|
+// p.setStaffId(TokenUtil.getTokenUserId());
|
|
|
+// }
|
|
|
+// QueryWrapper<SiSetlinfo> wrapper = new QueryWrapper<>();
|
|
|
+// wrapper.eq("pat_no", p.getPatNo());
|
|
|
+// wrapper.eq("times", p.getTimes());
|
|
|
+// wrapper.eq("revoked", 0);
|
|
|
+// SiSetlinfo setlinfo = setlinfoDao.selectOne(wrapper);
|
|
|
+// if (null == setlinfo) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有有效的结算信息。");
|
|
|
+// }
|
|
|
+// JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.REVOKE_OUTPATIENT_SETTLEMENT,
|
|
|
+// dao.selectAdmdvs(setlinfo.getPatNo(), setlinfo.getTimes(), setlinfo.getLedgerSn()));
|
|
|
+// JSONObject data = new JSONObject();
|
|
|
+// data.put("setl_id", setlinfo.getSetlId());
|
|
|
+// data.put("mdtrt_id", setlinfo.getMdtrtId());
|
|
|
+// data.put("psn_no", setlinfo.getPsnNo());
|
|
|
+// input.getJSONObject("input").put("data", data);
|
|
|
+// JSONObject result = exec.executeTrade(input, SiFunction.REVOKE_OUTPATIENT_SETTLEMENT);
|
|
|
+// log.info("【操作员:{}】门诊结算撤销:\n参数:{},\n结果:{}", p.getStaffId(), input, result);
|
|
|
+// if (null == result) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
|
|
|
+// }
|
|
|
+// if (null == result.getInteger(RESULT_CODE)) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保中心报错:" + result.getString("message"));
|
|
|
+// }
|
|
|
+// if (result.getIntValue(RESULT_CODE) == 0) {
|
|
|
+// dao.deleteSetlInfo(p.getPatNo(), p.getTimes());
|
|
|
+// dao.deleteSetlDetail(p.getPatNo(), p.getTimes());
|
|
|
+// dao.updateRvkSetlMsgid(p.getPatNo(), p.getTimes(), input.getString("msgid"));
|
|
|
+// return ResultVoUtil.success("门诊结算撤销成功。");
|
|
|
+// }
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, result.getString(ERROR_MESSAGE));
|
|
|
}
|
|
|
}
|