You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
319 lines
11 KiB
319 lines
11 KiB
2 years ago
|
package com.ynxbd.common.dao.his;
|
||
|
|
||
|
import com.ynxbd.common.bean.HisRecipe;
|
||
|
import com.ynxbd.common.bean.enums.MerchantEnum;
|
||
|
import com.ynxbd.common.helper.his.HisEnum;
|
||
|
import com.ynxbd.common.helper.his.HisHelper;
|
||
|
import com.ynxbd.common.result.JsonResult;
|
||
|
import com.ynxbd.wx.config.WeChatConfig;
|
||
|
import lombok.extern.slf4j.Slf4j;
|
||
|
import org.apache.commons.lang3.ObjectUtils;
|
||
|
|
||
|
import java.util.*;
|
||
|
|
||
|
/**
|
||
|
* HIS处方调用
|
||
|
*
|
||
|
* @Author wsq
|
||
|
* @Date 2020/11/6 9:56
|
||
|
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
|
||
|
*/
|
||
|
@Slf4j
|
||
|
public class HisRecipeDao {
|
||
|
|
||
|
/**
|
||
|
* HIS处方快速发药
|
||
|
*
|
||
|
* @param windowNo 药方号
|
||
|
* @param groupNo 组号
|
||
|
* @param invoiceTransNo 发票号
|
||
|
*/
|
||
|
public String hisQuickDrug(String windowNo, String groupNo, String invoiceTransNo) {
|
||
|
Map<String, Object> params = new HashMap<>();
|
||
|
params.put("HISTransNo", invoiceTransNo);
|
||
|
params.put("WindowNo", windowNo);
|
||
|
params.put("GroupNo", groupNo);
|
||
|
return HisHelper.getResponseXml(HisEnum.QuickDrugDispense, params);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 根据患者id查询已缴费项目
|
||
|
*
|
||
|
* @param patientId 患者id
|
||
|
* @param begDate 开始日期
|
||
|
* @param endDate 结束日期
|
||
|
* @return 已缴费项目
|
||
|
*/
|
||
|
public List<HisRecipe> getPaidRecipeList(String patientId, String begDate, String endDate) {
|
||
|
List<HisRecipe> resultList = new ArrayList<>();
|
||
|
|
||
|
Map<String, Object> params = new HashMap<>();
|
||
|
params.put("PatientID", patientId);
|
||
|
params.put("RecipeID", "");
|
||
|
params.put("StartTime", begDate);
|
||
|
params.put("EndTime", endDate);
|
||
|
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_OutpatientFee, params);
|
||
|
|
||
|
if (!jsonResult.success()) { // 请求失败
|
||
|
return resultList;
|
||
|
}
|
||
|
|
||
|
List<HisRecipe> hisRecipe = jsonResult.getDataMapList(HisRecipe.class, "Recipe");
|
||
|
if (hisRecipe != null) {
|
||
|
resultList = hisRecipe;
|
||
|
}
|
||
|
return resultList;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 根据患者id查询待付费项目
|
||
|
*
|
||
|
* @param patientId 患者id
|
||
|
* @return 待付费项目
|
||
|
*/
|
||
|
public List<HisRecipe> getUnPayRecipe(String patientId, int days) {
|
||
|
List<HisRecipe> resultList = new ArrayList<>();
|
||
|
|
||
|
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_UnPay_Invoice, params -> {
|
||
|
params.put("PatientID", patientId);
|
||
|
params.put("IsLastWeekFlag", days <= 7 ? "1" : "");
|
||
|
params.put("CallNo",HisHelper.CALL_NO);
|
||
|
});
|
||
|
|
||
|
if (!jsonResult.success()) { // 失败
|
||
|
return resultList;
|
||
|
}
|
||
|
|
||
|
List<HisRecipe> hisRecipe = jsonResult.getDataMapList(HisRecipe.class, "Recipe");
|
||
|
if (hisRecipe != null) {
|
||
|
resultList = hisRecipe;
|
||
|
}
|
||
|
return resultList;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* HIS申请单预缴费
|
||
|
*
|
||
|
* @param patientId 患者ID
|
||
|
* @param treatNum 门诊号
|
||
|
* @param recipeIds 处方单号
|
||
|
* @param payMoney 支付金额
|
||
|
* @param payDate 支付日期
|
||
|
* @param payTime 支付时间
|
||
|
* @param payDeviceId payDeviceID
|
||
|
* @return payInvoiceResponseBean
|
||
|
*/
|
||
|
public static JsonResult prepay(String patientId, String treatNum, List<String> recipeIds, String payMoney,
|
||
|
String payDate, String payTime, String payDeviceId, MerchantEnum merchantEnum) {
|
||
|
|
||
|
|
||
|
StringBuilder recipeIdsXml = new StringBuilder();
|
||
|
for (String id : recipeIds) {
|
||
|
recipeIdsXml.append("<Id>").append(id).append("</Id>");
|
||
|
}
|
||
|
|
||
|
return HisHelper.getJsonResult(HisEnum.AP_PrePay_Invoice_New, params -> {
|
||
|
params.put("Recipe", recipeIdsXml.toString());
|
||
|
|
||
|
params.put("PatientID", patientId);
|
||
|
params.put("MZNum", treatNum);
|
||
|
params.put("PayMoney", payMoney);
|
||
|
params.put("PayDate", payDate);
|
||
|
params.put("PayTime", payTime);
|
||
|
params.put("PayDeviceID", payDeviceId);
|
||
|
|
||
|
params.put("TransNo", UUID.randomUUID().toString().replace("-", ""));
|
||
|
params.put("BankTransNo", UUID.randomUUID().toString().replace("-", ""));
|
||
|
|
||
|
params.put("PayWay", merchantEnum.HIS_PAY_WAY);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 缴费:更新recipeId参数为List,支持多个处方单同时缴费
|
||
|
*
|
||
|
* @param openid openid
|
||
|
* @param patientId 患者ID
|
||
|
* @param treatNum 门诊号
|
||
|
* @param recipeIds 处方单号
|
||
|
* @param payMoney 支付金额
|
||
|
* @param payDate 支付日期
|
||
|
* @param payTime 支付时间
|
||
|
* @param tradeNo HIS交易流水号
|
||
|
* @param payDeviceId payDeviceID
|
||
|
* @param transId 银行流水号
|
||
|
* @return bean
|
||
|
*/
|
||
|
public static JsonResult payInvoice(String openid, String patientId, String treatNum, List<String> recipeIds, String payMoney,
|
||
|
String payDate, String payTime, String tradeNo, String payDeviceId, String transId, MerchantEnum merchantEnum, String feeId, String feeInfo) {
|
||
|
|
||
|
String fpOrderId = (tradeNo != null && tradeNo.indexOf("ORD") == 0 ? tradeNo : transId);
|
||
|
|
||
|
if (ObjectUtils.isNotEmpty(feeId)
|
||
|
&& ObjectUtils.isNotEmpty(feeInfo)){ // 新版本预缴费
|
||
|
log.info("[预结算]回调 feeId={}", feeId);
|
||
|
return HisHelper.getJsonResult(HisEnum.AP_Pay_Invoice_New, params -> {
|
||
|
params.put("PatientID", patientId);
|
||
|
params.put("PayDate", payDate);
|
||
|
params.put("PayTime", payTime);
|
||
|
params.put("TransNo", tradeNo);
|
||
|
params.put("PayDeviceID", payDeviceId);
|
||
|
params.put("BankTransNo", fpOrderId);
|
||
|
// 预结算
|
||
|
params.put("FeeID", feeId);
|
||
|
params.put("FeeInfo", feeInfo);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
StringBuilder recipeIdsXml = new StringBuilder();
|
||
|
for (String id : recipeIds) {
|
||
|
recipeIdsXml.append("<Id>").append(id).append("</Id>");
|
||
|
}
|
||
|
|
||
|
return HisHelper.getJsonResult(HisEnum.AP_Pay_Invoice, params -> {
|
||
|
params.put("Recipe", recipeIdsXml.toString());
|
||
|
|
||
|
params.put("PatientID", patientId);
|
||
|
params.put("MZNum", treatNum);
|
||
|
params.put("PayMoney", payMoney);
|
||
|
params.put("PayDate", payDate);
|
||
|
params.put("PayTime", payTime);
|
||
|
params.put("TransNo", tradeNo);
|
||
|
params.put("PayDeviceID", payDeviceId);
|
||
|
params.put("PayWay", merchantEnum.HIS_PAY_WAY);
|
||
|
params.put("BankTransNo", fpOrderId); // 商户订单号
|
||
|
params.put("OpenId", openid);
|
||
|
params.put("Token", WeChatConfig.TOKEN);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 自助申请单开单
|
||
|
*
|
||
|
* @param patientId 患者id
|
||
|
* @param pageNum 页码 (0 | 1 )
|
||
|
* @param seq 第几条 (从0开始,1:为第二个申请单)
|
||
|
* @return His信息
|
||
|
*/
|
||
|
public JsonResult createSelfHelp(String patientId, String pageNum, String seq, String cardNo) {
|
||
|
Map<String, Object> params = new HashMap<>();
|
||
|
params.put("PatientId", patientId);
|
||
|
params.put("PageFlag", pageNum);
|
||
|
params.put("IDCardNo", cardNo);
|
||
|
if (!"0".equals(seq)) {
|
||
|
params.put("DoubleCollectFlag", seq); // 1
|
||
|
}
|
||
|
return HisHelper.getJsonResult(HisEnum.Create_Self_Help, params);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 获取核酸检测价格
|
||
|
*
|
||
|
* @param pageNum 页码 (0 | 1 )
|
||
|
* @param seq 第几条 (从0开始,1为第二个申请单)
|
||
|
*/
|
||
|
public JsonResult getSelfHelpInfo(String pageNum, String seq) {
|
||
|
Map<String, Object> params = new HashMap<>();
|
||
|
params.put("CallNo", "618484252");
|
||
|
params.put("PageFlag", pageNum); // 页码
|
||
|
|
||
|
if (!"0".equals(seq)) {
|
||
|
params.put("DoubleCollectFlag", seq);
|
||
|
}
|
||
|
return HisHelper.getJsonResult(HisEnum.Query_Self_Help, params);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 查询标准物价
|
||
|
*
|
||
|
* @param pageNum 页号
|
||
|
* @param pageSize 每页数量
|
||
|
* @param pyCode 拼音码
|
||
|
* @param type 类型
|
||
|
* @param groupFlag 组套标识
|
||
|
*/
|
||
|
public static JsonResult getStandardPrice(Integer pageNum, Integer pageSize, String pyCode, String type, String groupFlag) {
|
||
|
return HisHelper.getJsonResult(HisEnum.Recipe_Query_StandardPrice, params -> {
|
||
|
params.put("PageNo", pageNum);
|
||
|
params.put("RowsCount", pageSize);
|
||
|
params.put("PinyinCode", pyCode);
|
||
|
params.put("ItemType", type);
|
||
|
params.put("GroupFlag", groupFlag);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
// public static void main(String[] args) {
|
||
|
// List<String> recipeIds = new ArrayList<>();
|
||
|
// recipeIds.add("1002242374");
|
||
|
//
|
||
|
// new HisRecipeDao().payInvoice(
|
||
|
// null,
|
||
|
// "60148480",
|
||
|
// "616300",
|
||
|
// recipeIds,
|
||
|
// "38.000",
|
||
|
// "2022-01-19",
|
||
|
// "12:08:37",
|
||
|
// "4200001404202201191786257634C001",
|
||
|
// "app",
|
||
|
// "4200001404202201191786257634", MerchantEnum.WX);
|
||
|
// }
|
||
|
|
||
|
|
||
|
// /**
|
||
|
// * 缴费:更新recipeID参数为List,支持多个处方单同时缴费
|
||
|
// *
|
||
|
// * @param patientId 患者ID
|
||
|
// * @param mzNum 门诊号
|
||
|
// * @param recipeIds 处方单号
|
||
|
// * @param payMoney 金额
|
||
|
// * @param payDate 支付时间
|
||
|
// * @param payTime 支付时间
|
||
|
// * @param transNo transNo
|
||
|
// * @param payDeviceID payDeviceID
|
||
|
// * @param bankTransNo 流水号
|
||
|
// * @return payInvoiceResponseBean
|
||
|
// */
|
||
|
// public PayInvoiceResponseBean old_payInvoice(String patientId, String mzNum, List<String> recipeIds, String payMoney,
|
||
|
// String payDate, String payTime, String transNo, String payDeviceID, String bankTransNo) {
|
||
|
// Map<String, Object> input = new HashMap<>();
|
||
|
// input.put("PatientID", patientId);
|
||
|
// input.put("MZNum", mzNum);
|
||
|
// input.put("PayMoney", payMoney);
|
||
|
// input.put("PayDate", payDate);
|
||
|
// input.put("PayTime", payTime);
|
||
|
// input.put("TransNo", transNo);
|
||
|
// input.put("PayDeviceID", payDeviceID);
|
||
|
// input.put("BankTransNo", bankTransNo);
|
||
|
// input.put("Recipe", recipeIds);
|
||
|
//
|
||
|
//// HisTool tool = new HisTool("AP_Pay_Invoice", input);
|
||
|
//// tool.getRespos()
|
||
|
// HisTool.getResponseXml(HisEnum.AP_Pay_Invoice, input);
|
||
|
// PayInvoiceResponseBean payInvoiceResponseBean = (PayInvoiceResponseBean) XMLUtil
|
||
|
// .convertXmlStrToObject(PayInvoiceResponseBean.class, HisTool.getResponseXml(HisEnum.AP_Pay_Invoice, input));
|
||
|
// try {
|
||
|
// String drugInfo = payInvoiceResponseBean.getDrugInfo() == null ? "" : payInvoiceResponseBean.getDrugInfo();
|
||
|
// String invoiceTransNo = payInvoiceResponseBean.getInvoiceTransNo() == null ? "" : payInvoiceResponseBean.getInvoiceTransNo();
|
||
|
// log.info("发票流水号:invoiceTransNo={}", invoiceTransNo);
|
||
|
// if (!drugInfo.equals("") && !invoiceTransNo.equals("")) {
|
||
|
// log.info("调用快速发药:" + invoiceTransNo);
|
||
|
// QuickDrugDispenseHelper.quickDrug(drugInfo, invoiceTransNo);
|
||
|
// }
|
||
|
// } catch (Exception e) {
|
||
|
// log.info("快速发药调用失败:" + e.getMessage());
|
||
|
// e.printStackTrace();
|
||
|
// }
|
||
|
// return payInvoiceResponseBean;
|
||
|
// }
|
||
|
|
||
|
}
|