diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java
index 6acbd6c..7c9f73a 100644
--- a/src/main/java/com/ynxbd/common/TestA.java
+++ b/src/main/java/com/ynxbd/common/TestA.java
@@ -1,6 +1,6 @@
package com.ynxbd.common;
-import cn.hutool.core.util.IdcardUtil;
+import com.ynxbd.wx.wxfactory.AesWxHelper;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@@ -23,7 +23,8 @@ public class TestA {
/// / params.put("openId", "32EBE22EF6C9437575AB7A043E456D25704583EFA5E6BE1B5CB899A6F3B7075A");
/// / });
// test();
-// }
+// }
+
public static void test() {
// String xml = "40090成功0.00ORD530100202608121122576630746TSN5301002026081211225734038313119968898754003081656516118908900{\"setlinfo\":{\"psnCashPay\":0,\"inscpScpAmt\":81,\"medinsSetlId\":\"H53310300023202608121122583668\",\"medType\":\"21\",\"age\":25,\"acctPay\":89,\"psnType\":\"11\",\"psnName\":\"王晨宇\",\"mdtrtCertNo\":\"530000ocvpvqk10ujb26a3720a00009bfc99ea\",\"insuAdmdvs\":\"533199\",\"hifobPay\":0,\"psnCertType\":\"01\",\"mdtrtCertType\":\"01\",\"actPayDedc\":81,\"psnPay\":89,\"psnInsuRltsId\":\"53000000300121343792\",\"overlmtSelfpay\":5,\"ownpayHospPart\":0,\"medfeeSumamt\":89,\"mdtrtId\":\"311996889875\",\"hifmiPay\":0,\"certno\":\"533103200008164016\",\"crtDedc\":81,\"hifpPay\":0,\"poolPropSelfpay\":0,\"clrType\":\"21\",\"mafPay\":0,\"cvlservPay\":0,\"setlTime\":\"2026-08-12 11:22:59\",\"hospPartAmt\":0,\"expContent\":\"{\\\"unif_pay_std\\\":0,\\\"unif_pay_blnc\\\":0,\\\"bkst_safeg_amt\\\":0,\\\"fin_subs\\\":null,\\\"care_subs\\\":null,\\\"insu_cmpy_name\\\":\\\"\\\",\\\"comp_sum_amt\\\":null,\\\"comp_dscr\\\":\\\"\\\",\\\"comp_fail_rea\\\":\\\"\\\",\\\"bas_sec_pool_lmt\\\":0,\\\"mihisec_pool_lmt\\\":0,\\\"cvlserv_acct_pay\\\":0,\\\"oth_subs\\\":null,\\\"bas_sev_inpool_amt\\\":0,\\\"mihisec_inpool_amt\\\":0,\\\"third_pay_list\\\":[],\\\"sp_psn_type\\\":\\\"95341\\\",\\\"cvlserv_lmt_rm\\\":0,\\\"wlt_acct_pay\\\":0,\\\"hosp_payf_amt\\\":0,\\\"cla_trt_flag\\\":\\\"1\\\"}\",\"othPay\":0,\"dedcStd\":600,\"othfundPay\":0,\"preselfpayAmt\":3,\"cashPayamt\":0,\"fulamtOwnpayAmt\":0,\"fundPaySumamt\":0,\"cvlservFlag\":\"0\",\"insutype\":\"310\",\"acctMulaidPay\":0,\"psnPartAmt\":89,\"enddate\":1785838099000,\"hifesPay\":0,\"naty\":\"01\",\"gend\":\"1\",\"brdy\":\"2000-08-16\",\"balc\":242.38,\"inscpAmt\":81,\"hifdmPay\":0,\"begndate\":1785813000000,\"psnNo\":\"DH5310062846\"},\"SETLINFO\":{\"psn_part_amt\":89,\"hifob_pay\":0,\"age\":25,\"psn_pay\":89,\"preselfpay_amt\":3,\"oth_pay\":0,\"hifp_pay\":0,\"overlmt_selfpay\":5,\"hifes_pay\":0,\"psn_cash_pay\":0,\"maf_pay\":0,\"dedc_std\":600,\"act_pay_dedc\":81,\"inscp_amt\":81,\"mdtrt_id\":\"311996889875\",\"hifmi_pay\":0,\"crt_dedc\":81,\"psn_no\":\"DH5310062846\",\"medins_setl_id\":\"H53310300023202608121122583668\",\"certno\":\"533103200008164016\",\"psn_cert_type\":\"01\",\"exp_content\":\"{\\\"unif_pay_std\\\":0,\\\"unif_pay_blnc\\\":0,\\\"bkst_safeg_amt\\\":0,\\\"fin_subs\\\":null,\\\"care_subs\\\":null,\\\"insu_cmpy_name\\\":\\\"\\\",\\\"comp_sum_amt\\\":null,\\\"comp_dscr\\\":\\\"\\\",\\\"comp_fail_rea\\\":\\\"\\\",\\\"bas_sec_pool_lmt\\\":0,\\\"mihisec_pool_lmt\\\":0,\\\"cvlserv_acct_pay\\\":0,\\\"oth_subs\\\":null,\\\"bas_sev_inpool_amt\\\":0,\\\"mihisec_inpool_amt\\\":0,\\\"third_pay_list\\\":[],\\\"sp_psn_type\\\":\\\"95341\\\",\\\"cvlserv_lmt_rm\\\":0,\\\"wlt_acct_pay\\\":0,\\\"hosp_payf_amt\\\":0,\\\"cla_trt_flag\\\":\\\"1\\\"}\",\"setl_time\":\"2026-08-12 11:22:59\",\"acct_mulaid_pay\":0,\"psn_type\":\"11\",\"psn_name\":\"王晨宇\",\"clr_type\":\"21\",\"fulamt_ownpay_amt\":0,\"med_type\":\"21\",\"cashPayamt\":0,\"mdtrt_cert_no\":\"530000ocvpvqk10ujb26a3720a00009bfc99ea\",\"cvlserv_flag\":\"0\",\"cvlserv_pay\":0,\"insutype\":\"310\",\"enddate\":1785838099000,\"ownpay_hosp_part\":0,\"hosp_part_amt\":0,\"mdtrt_cert_type\":\"01\",\"pool_prop_selfpay\":0,\"naty\":\"01\",\"gend\":\"1\",\"brdy\":\"2000-08-16\",\"balc\":242.38,\"hifdm_pay\":0,\"medfee_sumamt\":89,\"othfund_pay\":0,\"psn_insu_rlts_id\":\"53000000300121343792\",\"insu_admdvs\":\"533199\",\"acct_pay\":89,\"inscp_scp_amt\":81,\"begndate\":1785813000000,\"fund_pay_sumamt\":0},\"originalResult\":{\"respondTime\":\"20260812112259839\",\"infRefmsgid\":\"530000202608121122598204425853\",\"output\":{\"setlinfo\":{\"psn_part_amt\":89,\"hifob_pay\":0,\"age\":25,\"psn_pay\":89,\"preselfpay_amt\":3,\"oth_pay\":0,\"hifp_pay\":0,\"overlmt_selfpay\":5,\"hifes_pay\":0,\"psn_cash_pay\":0,\"maf_pay\":0,\"dedc_std\":600,\"act_pay_dedc\":81,\"inscp_amt\":81,\"mdtrt_id\":\"311996889875\",\"hifmi_pay\":0,\"crt_dedc\":81,\"psn_no\":\"DH5310062846\",\"medins_setl_id\":\"H53310300023202608121122583668\",\"certno\":\"533103200008164016\",\"psn_cert_type\":\"01\",\"exp_content\":\"{\\\"unif_pay_std\\\":0,\\\"unif_pay_blnc\\\":0,\\\"bkst_safeg_amt\\\":0,\\\"fin_subs\\\":null,\\\"care_subs\\\":null,\\\"insu_cmpy_name\\\":\\\"\\\",\\\"comp_sum_amt\\\":null,\\\"comp_dscr\\\":\\\"\\\",\\\"comp_fail_rea\\\":\\\"\\\",\\\"bas_sec_pool_lmt\\\":0,\\\"mihisec_pool_lmt\\\":0,\\\"cvlserv_acct_pay\\\":0,\\\"oth_subs\\\":null,\\\"bas_sev_inpool_amt\\\":0,\\\"mihisec_inpool_amt\\\":0,\\\"third_pay_list\\\":[],\\\"sp_psn_type\\\":\\\"95341\\\",\\\"cvlserv_lmt_rm\\\":0,\\\"wlt_acct_pay\\\":0,\\\"hosp_payf_amt\\\":0,\\\"cla_trt_flag\\\":\\\"1\\\"}\",\"setl_time\":\"2026-08-12 11:22:59\",\"acct_mulaid_pay\":0,\"psn_type\":\"11\",\"psn_name\":\"王晨宇\",\"clr_type\":\"21\",\"fulamt_ownpay_amt\":0,\"med_type\":\"21\",\"cashPayamt\":0,\"mdtrt_cert_no\":\"530000ocvpvqk10ujb26a3720a00009bfc99ea\",\"cvlserv_flag\":\"0\",\"cvlserv_pay\":0,\"insutype\":\"310\",\"enddate\":1785838099000,\"ownpay_hosp_part\":0,\"hosp_part_amt\":0,\"mdtrt_cert_type\":\"01\",\"pool_prop_selfpay\":0,\"naty\":\"01\",\"gend\":\"1\",\"brdy\":\"2000-08-16\",\"balc\":242.38,\"hifdm_pay\":0,\"medfee_sumamt\":89,\"othfund_pay\":0,\"psn_insu_rlts_id\":\"53000000300121343792\",\"insu_admdvs\":\"533199\",\"acct_pay\":89,\"inscp_scp_amt\":81,\"begndate\":1785813000000,\"fund_pay_sumamt\":0},\"setldetail\":[{\"fund_pay_type_name\":\"城镇职工基本医疗保险统筹基金(住院)\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"310100\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"职工大病保险基金\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"99999702\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"城镇职工基本医疗保险个人账户基金\",\"crt_payb_lmt_amt\":89,\"fund_pay_type\":\"310200\",\"inscp_scp_amt\":89,\"fund_payamt\":89}]},\"refmsgTime\":\"20260812112258087\",\"infcode\":0},\"setldetail\":[{\"fund_pay_type_name\":\"城镇职工基本医疗保险统筹基金(住院)\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"310100\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"职工大病保险基金\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"99999702\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"城镇职工基本医疗保险个人账户基金\",\"crt_payb_lmt_amt\":89,\"fund_pay_type\":\"310200\",\"inscp_scp_amt\":89,\"fund_payamt\":89}]}";
// JsonResult result = JsonResult.xmlToBean(xml, JsonResultEnum.SYS_HIS);
@@ -125,5 +126,9 @@ public class TestA {
// System.out.println(removeIds);
// }
-
+ public static void main(String[] args) {
+ System.out.println(AesWxHelper.encode("1"));
+ System.out.println(AesWxHelper.encode("100004220302"));
+ System.out.println(AesWxHelper.encode("100004219291"));
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/ynxbd/common/action/TreatAction.java b/src/main/java/com/ynxbd/common/action/TreatAction.java
index 8ef473e..d9a8d11 100644
--- a/src/main/java/com/ynxbd/common/action/TreatAction.java
+++ b/src/main/java/com/ynxbd/common/action/TreatAction.java
@@ -110,16 +110,12 @@ public class TreatAction extends BaseAction {
}
@Action("getInfoByTreatNum")
- public Result getInfoByTreatNum(@AesDecode String treatNum) {
+ public Result getInfoByTreatNum(@AesDecode(AesClass = AesMicroHelper.class) String treatNum) {
try {
- if (treatNum == null) {
- return Result.error(ResultEnum.PARAM_IS_BLANK);
- }
- treatNum = AesMicroHelper.decode(treatNum);
+ log.info("[就诊记录]查询信息 treatNum={}", treatNum);
if (ObjectUtils.isEmpty(treatNum)) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
- log.info("[就诊记录]查询信息 treatNum={}", treatNum);
List daatList = new HisTreatDao().getInfoByTreatNum(treatNum);
return Result.success(daatList);
} catch (ServiceException e) {
diff --git a/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java b/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java
index f92e231..6d69579 100644
--- a/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java
+++ b/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java
@@ -182,7 +182,7 @@ public class HCPreConsultAction extends BaseAction {
item.setUpdateTime(register.getUpdateTime());
item.setRegDate(register.getRegDate());
item.setOutTradeNo(register.getOutTradeNo());
- item.setUrl(HCPreConsultHelper.getH5Online(register.getOutTradeNo()));
+ item.setUrl(HCPreConsultHelper.getH5Online(register.getOutTradeNo(), isHttpsWithProxy()));
dataList.add(register);
}
@@ -198,7 +198,7 @@ public class HCPreConsultAction extends BaseAction {
if (ObjectUtils.isEmpty(openId) || ObjectUtils.isEmpty(registerId)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
- String url = HCPreConsultHelper.getH5Online(registerId);
+ String url = HCPreConsultHelper.getH5Online(registerId, isHttpsWithProxy());
if (ObjectUtils.isEmpty(url)) {
return Result.error();
}
diff --git a/src/main/java/com/ynxbd/common/action/xk/XKAction.java b/src/main/java/com/ynxbd/common/action/xk/XKAction.java
index 1bffd40..44af4ee 100644
--- a/src/main/java/com/ynxbd/common/action/xk/XKAction.java
+++ b/src/main/java/com/ynxbd/common/action/xk/XKAction.java
@@ -3,20 +3,21 @@ package com.ynxbd.common.action.xk;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.his.HisTreat;
-import com.ynxbd.common.bean.xk.HisRxItem;
import com.ynxbd.common.config.interceptor.AesDecode;
import com.ynxbd.common.dao.his.HisTreatDao;
import com.ynxbd.common.dao.his.HisXKDao;
-import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
+import com.ynxbd.wx.wxfactory.AesWxHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@Slf4j
@@ -24,74 +25,104 @@ import java.util.List;
public class XKAction extends BaseAction {
@Action("getRxDict")
- public Result getRxDict(String callNo, String type) {
+ public Result getRxDict(String callNo, String type, String key, String yfCode) {
if (!"xbd2026".equals(callNo)) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
- log.info("[开方]字典查询 type={}", type);
+ log.info("[开方]字典查询 type={}, yfCode={}", type, yfCode);
if (type == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
- List> dataList = new HisXKDao().queryHisRxDict(type);
+ List> dataList = new HisXKDao().queryHisRxDict(type, key, yfCode);
return Result.success(dataList);
}
@Action("createHisRx")
public Result createHisRx() {
- JSONObject body = getBody();
- if (body == null) {
- return Result.error(ResultEnum.PARAM_IS_DEFECT);
- }
- String doctCode = body.getString("doctCode");
- String treatNum = body.getString("treatNum");
- String rxType = body.getString("rxType");
- String diagnose = body.getString("diagnose");
- String weight = body.getString("weight");
- String note = body.getString("note");
- String ybAttrib = body.getString("ybAttrib");
- String bzCode = body.getString("bzCode");
- String bzName = body.getString("bzName");
- String rxJson = body.getString("rxJsonArr");
-
- log.info("[开方]doctCode={}, treatNum={}, rxType={}", doctCode, treatNum, rxType);
- if (ObjectUtils.isEmpty(doctCode) || ObjectUtils.isEmpty(treatNum) || ObjectUtils.isEmpty(rxType)) {
- return Result.error(ResultEnum.PARAM_IS_DEFECT);
- }
-
- List hisRxItems = JsonHelper.parseArray(rxJson, HisRxItem.class);
- if (hisRxItems.isEmpty()) {
- return Result.error(ResultEnum.PARAM_IS_DEFECT);
- }
+ try {
+ JSONObject body = getBody();
+ if (body == null) {
+ return Result.error(ResultEnum.PARAM_IS_DEFECT);
+ }
+ String doctCode = body.getString("doctCode");
+ String treatNum = body.getString("treatNum");
+ String rxDrugType = body.getString("rxDrugType"); // 处方药品类型
+ String rxTypeCode = body.getString("rxTypeCode");
+ String rxDiagnose = body.getString("rxDiagnose");
+ String weight = body.getString("weight");
+ String note = body.getString("note");
+ String ybAttrib = body.getString("ybAttrib");
+ String bzCode = body.getString("bzCode");
+ String bzName = body.getString("bzName");
+ String items = body.getString("items");
+ // 中药=============================================
+ String tcmTtName = body.getString("tcmTtName");
+ String tcmUseName = body.getString("tcmUseName");
+ String tcmCFCount = body.getString("tcmCFCount");
+ String tcmCFUseCount = body.getString("tcmCFUseCount");
+ String tcmUseCountForDay = body.getString("tcmUseCountForDay");
+
+ log.info("[处方开立]doctCode={}, treatNum={}, rxDrugType={}, weight={}, items={}", doctCode, treatNum, rxDrugType, weight, items);
+ if (ObjectUtils.isEmpty(doctCode) || ObjectUtils.isEmpty(treatNum) || ObjectUtils.isEmpty(rxDrugType) || ObjectUtils.isEmpty(weight) || ObjectUtils.isEmpty(items)) {
+ return Result.error(ResultEnum.PARAM_IS_DEFECT);
+ }
- JsonResult resp = new HisXKDao().createHisRx(doctCode, treatNum, rxType, diagnose, weight, note, ybAttrib, bzCode, bzName, hisRxItems);
- if (!resp.success()) {
- return Result.error(resp.getMessage());
+ JsonResult resp = new HisXKDao().createHisRx(items, doctCode, treatNum, rxDrugType, rxTypeCode, rxDiagnose, weight, note, ybAttrib, bzCode, bzName,
+ tcmTtName, tcmUseName, tcmCFCount, tcmCFUseCount, tcmUseCountForDay);
+ if (!resp.success()) {
+ return Result.error(resp.getMessage());
+ }
+ String rxCode = resp.getDataMapString("CFNum");
+ String amount = resp.getDataMapString("Amount");
+ if (ObjectUtils.isEmpty(rxCode) || ObjectUtils.isEmpty(amount)) {
+ return Result.error("处方开立未返回处方号或金额");
+ }
+ Map data = new HashMap<>();
+ data.put("rxCode", rxCode);
+ data.put("enRxCode", AesWxHelper.encode(rxCode));
+ data.put("enAmount", AesWxHelper.encode(amount));
+ return Result.success(data);
+ } catch (Exception e) {
+ return Result.error(e);
}
- return Result.success();
}
@Action("updateHisTreat")
public Result updateHisTreat(@AesDecode String openId, @AesDecode String treatNum, String symptom, String subjComplaint, String disDescription, String treatMeas,
String tcmDdCode, String tcmDdName, String tcmSdCode, String tcmSdName, String mdDisCode, String mdDisName,
- String pastHistory, String presentHistory, String alleHist, String disCode1, String disName1, String disCode2, String disName2) {
+ String pastHist, String presentHist, String alleHist, String disCode1, String disName1, String disCode2, String disName2) {
try {
- log.info("[HIS更新就诊记录] treatNum={}, symptom={}, subjComplaint={}, disDescription={}, treatMeas={}, tcmDdCode={}, tcmDdName={}, tcmSdCode={}, tcmSdName={}, mdDisCode={}, mdDisName={}",
- treatNum, symptom, subjComplaint, disDescription, treatMeas, tcmDdCode, tcmDdName, tcmSdCode, tcmSdName, mdDisCode, mdDisName);
+ log.info("[HIS更新就诊记录] openId={}, treatNum={}, symptom={}, subjComplaint={}, disDescription={}, treatMeas={}, tcmDdCode={}, tcmDdName={}, tcmSdCode={}, tcmSdName={}, mdDisCode={}, mdDisName={}",
+ openId, treatNum, symptom, subjComplaint, disDescription, treatMeas, tcmDdCode, tcmDdName, tcmSdCode, tcmSdName, mdDisCode, mdDisName);
if (ObjectUtils.isEmpty(openId) || ObjectUtils.isEmpty(treatNum)) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
- if (ObjectUtils.isEmpty(symptom) || ObjectUtils.isEmpty(subjComplaint) || ObjectUtils.isEmpty(disDescription) || ObjectUtils.isEmpty(treatMeas)
- || ObjectUtils.isEmpty(tcmDdCode) || ObjectUtils.isEmpty(tcmDdName) || ObjectUtils.isEmpty(tcmSdCode) || ObjectUtils.isEmpty(tcmSdName)
- || ObjectUtils.isEmpty(mdDisCode) || ObjectUtils.isEmpty(mdDisName)
- ) {
+ if (ObjectUtils.isEmpty(subjComplaint) || ObjectUtils.isEmpty(disDescription) || ObjectUtils.isEmpty(treatMeas)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
+ if (ObjectUtils.isEmpty(tcmDdCode) && ObjectUtils.isEmpty(mdDisCode)) {
+ return Result.error("请选择中医或西医诊断");
+ }
+
+ if (!ObjectUtils.isEmpty(tcmDdCode)) {
+ if (ObjectUtils.isEmpty(tcmSdName)) {
+ return Result.error("中医诊断名称[tcmSdName]缺失");
+ }
+
+ if (ObjectUtils.isEmpty(tcmSdCode) || ObjectUtils.isEmpty(tcmSdName)) {
+ return Result.error("中医证侯诊断[tcmSdCode]缺失");
+ }
+ }
+
+ if (!ObjectUtils.isEmpty(mdDisCode) && ObjectUtils.isEmpty(mdDisName)) {
+ return Result.error("西医诊断名称[mdDisName]缺失");
+ }
- HisTreat data = new HisTreatDao().updateHisTreat(treatNum, symptom, subjComplaint, disDescription, treatMeas, tcmDdCode, tcmDdName, tcmSdCode, tcmSdName, mdDisCode, mdDisName, pastHistory, presentHistory, alleHist, disCode1, disName1, disCode2, disName2);
+ HisTreat data = new HisTreatDao().updateHisTreat(treatNum, symptom, subjComplaint, disDescription, treatMeas, tcmDdCode, tcmDdName, tcmSdCode, tcmSdName, mdDisCode, mdDisName, pastHist, presentHist, alleHist, disCode1, disName1, disCode2, disName2);
if (data == null) {
return Result.error();
}
diff --git a/src/main/java/com/ynxbd/common/action/xk/XK_WMFrequencyEnum.java b/src/main/java/com/ynxbd/common/action/xk/XK_WMFrequencyEnum.java
new file mode 100644
index 0000000..e12c6d0
--- /dev/null
+++ b/src/main/java/com/ynxbd/common/action/xk/XK_WMFrequencyEnum.java
@@ -0,0 +1,44 @@
+package com.ynxbd.common.action.xk;
+
+
+import org.apache.commons.lang3.ObjectUtils;
+
+public enum XK_WMFrequencyEnum {
+ CODE_BID(1, "bid", "2 次/天"),
+ CODE_BIW(2, "biw", "2 次/周"),
+ CODE_HS(3, "Hs", "睡前服用"),
+ CODE_Q12H(4, "q12h", "1 次/12h"),
+ CODE_Q1H(5, "q1h", "1 次/h"),
+ CODE_Q3H(6, "q3h", "1 次/3h"),
+ CODE_Q6H(7, "q6h", "1 次/6h"),
+ CODE_Q8H(8, "q8h", "1 次/8h"),
+ CODE_QD(9, "qd", "1 次/d"),
+ CODE_QID(10, "qid", "4 次/d"),
+ CODE_QOD(11, "qod", "隔天 1 次"),
+ CODE_QW(12, "qw", "1 次/周"),
+ CODE_ST(13, "st", "立即服用"),
+ CODE_OTH(14, "oth", "其他");
+
+ public final int SEQ;
+ public final String CODE;
+ public final String NAME;
+
+ XK_WMFrequencyEnum(int SEQ, String CODE, String NAME) {
+ this.SEQ = SEQ;
+ this.CODE = CODE;
+ this.NAME = NAME;
+ }
+
+
+ public static XK_WMFrequencyEnum findEnum(String code) {
+ if (ObjectUtils.isEmpty(code)) {
+ return null;
+ }
+ for (XK_WMFrequencyEnum item : XK_WMFrequencyEnum.values()) {
+ if (item.CODE.equals(code)) {
+ return item;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/ynxbd/common/action/xk/XK_WMUseWayEnum.java b/src/main/java/com/ynxbd/common/action/xk/XK_WMUseWayEnum.java
new file mode 100644
index 0000000..f4c5c25
--- /dev/null
+++ b/src/main/java/com/ynxbd/common/action/xk/XK_WMUseWayEnum.java
@@ -0,0 +1,89 @@
+package com.ynxbd.common.action.xk;
+
+
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.util.List;
+
+// 用药途径
+public enum XK_WMUseWayEnum {
+ _1("1", "口服", "经口吞服药物"),
+ _2("2", "直肠用药", "将药物经肛门塞入或注入直肠"),
+ _3("3", "舌下用药", "将药物置于舌下/颊部的给药方法"),
+ _4("4", "注射用药", "将药物经过表皮注入体内"),
+ _401("401", "皮下注射", "将药物注射入皮下组织"),
+ _402("402", "皮内注射", "将药物注射入皮内组织"),
+ _403("403", "肌肉注射", "将药物注射入肌肉组织内"),
+ _404("404", "静脉注射或静脉滴注", "将药物注入静脉血管内"),
+ _5("5", "吸入用药", "将药物化为气雾状而后由呼吸道吸入"),
+ _6("6", "局部用药", "主要发挥局部作用的给药方法"),
+ _601("601", "椎管内用药", "将药物注入椎管内"),
+ _602("602", "关节腔内用药", "将药物注入关节腔内"),
+ _603("603", "胸腔膜用药", "将药物注入胸膜腔内"),
+ _604("604", "腹腔用药", "将药物注入腹腔内"),
+ _605("605", "阴道用药", "将药物置于阴道中"),
+ _606("606", "气管内用药", "将药物注入气管内"),
+ _607("607", "滴眼", "将药物经眼滴入"),
+ _608("608", "滴鼻", "将药物经鼻滴入"),
+ _609("609", "喷喉", "将药物喷于喉部黏膜表面"),
+ _610("610", "含化", "将药物置于口腔内含化"),
+ _611("611", "敷伤口", "将药物直接敷于伤口表面"),
+ _612("612", "擦皮肤", "用药物擦拭皮肤"),
+ _699("699", "其他局部用药途径", "其他局部用药途径"),
+ _9("9", "其他用药途径", "其他用药途径");
+
+
+ public final String CODE;
+ public final String NAME;
+ public final String REMARK;
+
+ XK_WMUseWayEnum(String CODE, String NAME, String REMARK) {
+ this.CODE = CODE;
+ this.NAME = NAME;
+ this.REMARK = REMARK;
+ }
+
+ /**
+ * 根据code匹配枚举
+ *
+ * @param code 编码
+ * @return enum
+ */
+ public static XK_WMUseWayEnum findEnum(String code) {
+ if (ObjectUtils.isEmpty(code)) {
+ return null;
+ }
+ for (XK_WMUseWayEnum item : XK_WMUseWayEnum.values()) {
+ if (item.CODE.equals(code)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 根据名称匹配枚举
+ *
+ * @param name 名称
+ * @return enum
+ */
+ public static XK_WMUseWayEnum findEnumByName(String name) {
+ if (ObjectUtils.isEmpty(name)) {
+ return null;
+ }
+ for (XK_WMUseWayEnum item : XK_WMUseWayEnum.values()) {
+ if (item.NAME.equals(name)) {
+ return item;
+ }
+ }
+ for (XK_WMUseWayEnum item : XK_WMUseWayEnum.values()) {
+ if (item.NAME.contains(name)) {
+ return item;
+ }
+ if (name.contains(item.NAME)) {
+ return item;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/ynxbd/common/bean/his/HisTreat.java b/src/main/java/com/ynxbd/common/bean/his/HisTreat.java
index 75bb4ac..e27b614 100644
--- a/src/main/java/com/ynxbd/common/bean/his/HisTreat.java
+++ b/src/main/java/com/ynxbd/common/bean/his/HisTreat.java
@@ -15,8 +15,16 @@ public class HisTreat {
private String treatNum;
private String registerDate;
+
private String patientId;
private String patientName;
+ // 患者就诊卡证号码
+ private String patientIdCardNo;
+ // 患者性别代码
+ private String patientGenderCode;
+ // 患者出生日期
+ private String patientBirthdate;
+
private String deptCode;
private String deptName;
// 挂号医生
diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisRxDict.java b/src/main/java/com/ynxbd/common/bean/xk/HisRxDict.java
index 2c86a38..d5ea0e5 100644
--- a/src/main/java/com/ynxbd/common/bean/xk/HisRxDict.java
+++ b/src/main/java/com/ynxbd/common/bean/xk/HisRxDict.java
@@ -18,4 +18,9 @@ public class HisRxDict {
private String name;
// PYM 拼音码
private String pym;
+ // 监管平台显示名称
+ private String xkName;
+ private String xkCode;
+ private String xkSeq;
+ private String xkSeq2;
}
diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisRxItem.java b/src/main/java/com/ynxbd/common/bean/xk/HisRxItem.java
deleted file mode 100644
index 847ada0..0000000
--- a/src/main/java/com/ynxbd/common/bean/xk/HisRxItem.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.ynxbd.common.bean.xk;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
-
-import java.io.Serializable;
-
-@Setter
-@Getter
-@ToString
-@NoArgsConstructor
-public class HisRxItem implements Serializable {
- private static final long serialVersionUID = 2026082712724000001L;
-
- // 项目编码
- @JSONField(ordinal = 1)
- private String xmCode;
- // 项目名称
- @JSONField(ordinal = 2)
- private String xmName;
- // 科目编码
- @JSONField(ordinal = 3)
- private String kmCode;
- // 科目名称
- @JSONField(ordinal = 4)
- private String kmName;
- // 项目单位
- @JSONField(ordinal = 5)
- private String xmUnit;
- // 项目单价
- @JSONField(ordinal = 6)
- private String xmPrice;
- // 项目数量
- @JSONField(ordinal = 7)
- private String xmCount;
- // 项目金额
- @JSONField(ordinal = 8)
- private String xmMoney;
- // 项目标识
- @JSONField(ordinal = 9)
- private Integer xmFlag;
- // 药品剂量
- @JSONField(ordinal = 10)
- private String ypJl;
- // 药品剂量单位
- @JSONField(ordinal = 11)
- private String ypJlUnit;
- // 用法频次 qd/bid等
- @JSONField(ordinal = 12)
- private String yzUsedMethod;
- // 每日次数
- @JSONField(ordinal = 13)
- private String yzCountForDay;
- // 每周次数
- @JSONField(ordinal = 14)
- private String yzCountForWeek;
- // 用药途径:口服
- @JSONField(ordinal = 15)
- private String ypPath;
- // 药房编码
- @JSONField(ordinal = 16)
- private String yfCode;
- // 药房名称
- @JSONField(ordinal = 17)
- private String yfName;
- // 医保类别编码
- @JSONField(ordinal = 18)
- private String yblb;
- // 医保类别名称
- @JSONField(ordinal = 19)
- private String yblbName;
- // 总数量
- @JSONField(ordinal = 20)
- private String totCount;
- // 备注
- @JSONField(ordinal = 21)
- private String note;
-
-}
diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisRxUseCount.java b/src/main/java/com/ynxbd/common/bean/xk/HisRxUseCount.java
index f7e2c2f..5b216a7 100644
--- a/src/main/java/com/ynxbd/common/bean/xk/HisRxUseCount.java
+++ b/src/main/java/com/ynxbd/common/bean/xk/HisRxUseCount.java
@@ -20,4 +20,11 @@ public class HisRxUseCount {
private Integer countForWeek;
// PYM 拼音码
private String pym;
+ // 监管显示的名称
+ private String xkName;
+
+ private String xkCode;
+
+ private Integer xkSeq;
+
}
diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java b/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java
new file mode 100644
index 0000000..4bf69b0
--- /dev/null
+++ b/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java
@@ -0,0 +1,34 @@
+package com.ynxbd.common.bean.xk;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class HisTCMRxItem implements Serializable {
+ private static final long serialVersionUID = 2026082712724000001L;
+
+ // 药品编码
+ @JSONField(ordinal = 1, name = "GOODSNO")
+ private String goodsNo;
+ // 药品数量
+ @JSONField(ordinal = 2, name = "YPCOUNT")
+ private String ypCount;
+ // 药房编码
+ @JSONField(ordinal = 3, name = "YFCODE")
+ private String yfCode;
+ // 药房名称
+ @JSONField(ordinal = 4, name = "YFNAME")
+ private String yfName;
+ // 备注
+ @JSONField(ordinal = 5, name = "NOTE")
+ private String note;
+
+}
diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java b/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java
new file mode 100644
index 0000000..44d3f23
--- /dev/null
+++ b/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java
@@ -0,0 +1,56 @@
+package com.ynxbd.common.bean.xk;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@Setter
+@Getter
+@ToString
+@NoArgsConstructor
+public class HisWMRxItem implements Serializable {
+ private static final long serialVersionUID = 2026082712724000001L;
+
+ // 项目编码
+ @JSONField(ordinal = 1, name = "XMCODE")
+ private String xmCode;
+ // 项目数量
+ @JSONField(ordinal = 2, name = "XMCOUNT")
+ private String xmCount;
+ // 项目标识
+ @JSONField(ordinal = 3, name = "XMFLAG")
+ private Integer xmFlag;
+ // 药品剂量
+ @JSONField(ordinal = 4, name = "YPJL")
+ private String ypJl;
+
+ // 用法频次 qd/bid等
+ @JSONField(ordinal = 5, name = "YZUSEDMETHOD")
+ private String yzUsedMethod;
+ // 每日次数
+ @JSONField(ordinal = 6, name = "YZCOUNTFORDAY")
+ private String yzCountForDay;
+ // 每周次数
+ @JSONField(ordinal = 7, name = "YZCOUNTFORWEEK")
+ private String yzCountForWeek;
+ // 用药途径:口服
+ @JSONField(ordinal = 8, name = "YPPATH")
+ private String ypPath;
+ // 药房编码
+ @JSONField(ordinal = 9, name = "YFCODE")
+ private String yfCode;
+ // 药房名称
+ @JSONField(ordinal = 10, name = "YFNAME")
+ private String yfName;
+ // 总数量
+ @JSONField(ordinal = 11, name = "TOTCOUNT")
+ private String totCount;
+ // 备注
+ @JSONField(ordinal = 12, name = "NOTE")
+ private String note;
+
+}
diff --git a/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java b/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java
index e010616..02567ba 100644
--- a/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java
+++ b/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java
@@ -8,9 +8,12 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-@Target({ElementType.PARAMETER})
+@Target({
+ ElementType.PARAMETER,
+ ElementType.ANNOTATION_TYPE // 允许注解打在@interface上
+})
@Retention(RetentionPolicy.RUNTIME)
public @interface AesDecode {
- Class extends AesHelper> respAesClass() default AesWxHelper.class;
-}
+ Class extends AesHelper> AesClass() default AesWxHelper.class;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java b/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java
index a0382e2..851e539 100644
--- a/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java
+++ b/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java
@@ -60,7 +60,7 @@ public class MethodInterceptor extends org.apache.struts2.interceptor.AbstractIn
}
try {
- Class extends AesHelper> response = annoAesDecode.respAesClass();
+ Class extends AesHelper> response = annoAesDecode.AesClass();
if (response == null) {
value = null;
} else {
diff --git a/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java b/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java
index 77bbeb7..626c8de 100644
--- a/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java
+++ b/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java
@@ -188,7 +188,7 @@ public class HisTreatDao {
*/
public HisTreat updateHisTreat(String treatNum, String symptom, String subjComplaint, String disDescription, String treatMeas,
String tcmDdCode, String tcmDdName, String tcmSdCode, String tcmSdName, String mdDisCode, String mdDisName,
- String pastHistory, String presentHistory, String alleHist, String disCode1, String disName1, String disCode2, String disName2) throws ServiceException {
+ String pastHist, String presentHist, String alleHist, String disCode1, String disName1, String disCode2, String disName2) throws ServiceException {
JsonResult jsonResult = HisFactory.His().getJsonResult(HisEnum.XK_UPDATE_TREAT, params -> {
params.put("MZNum", treatNum); // 门诊号
params.put("Symptom", symptom); // 症状和体征=[T:x℃]
@@ -203,8 +203,8 @@ public class HisTreatDao {
params.put("MdDisCode", mdDisCode); // 西医诊断疾病代码
params.put("MdDisName", mdDisName); // 西医诊断疾病名称
//
- params.put("PastHistory", pastHistory); // 既往病史
- params.put("PresentHistory", presentHistory); // 现病史
+ params.put("PastHistory", pastHist); // 既往病史
+ params.put("PresentHistory", presentHist); // 现病史
params.put("AlleHist", alleHist); // 过敏史
//
params.put("DisCode1", disCode1); // 其他诊断①疾病代码
diff --git a/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java b/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java
index 5b866dc..26c66cc 100644
--- a/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java
+++ b/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java
@@ -1,28 +1,84 @@
package com.ynxbd.common.dao.his;
+import com.ynxbd.common.action.xk.XK_WMFrequencyEnum;
+import com.ynxbd.common.action.xk.XK_WMUseWayEnum;
import com.ynxbd.common.bean.xk.*;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.his.HisEnum;
import com.ynxbd.common.his.HisFactory;
import com.ynxbd.common.result.JsonResult;
+import com.ynxbd.common.result.Result;
+import com.ynxbd.common.result.ResultEnum;
+import com.ynxbd.common.result.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
+import java.util.stream.Collectors;
@Slf4j
public class HisXKDao {
- public List> queryHisRxDict(String type) {
+ public List> queryHisRxDict(String type, String key, String yfCode) {
JsonResult jsonResult = HisFactory.His().getJsonResult(HisEnum.HIS_XK_RX_DICT, params -> {
- params.put("Flag", type); // 1:用药频次字典; 2:给要途径字典; 3:药房字典; 4:药品
+ params.put("Flag", type); // 1:用药频次字典; 2:给要途径字典; 3:药房字典; 4:药品
+ params.put("YFCode", yfCode); // 药房编码
});
if ("1".equals(type)) { // 用药频次字典
- return jsonResult.getDataMapList(HisRxUseCount.class, "Items", "Item");
+ List dictList = jsonResult.getDataMapList(HisRxUseCount.class, "Items", "Item");
+
+ for (HisRxUseCount item : dictList) {
+ if (ObjectUtils.isEmpty(item.getCode())) {
+ continue;
+ }
+ XK_WMFrequencyEnum findEnum = XK_WMFrequencyEnum.findEnum(item.getCode());
+ if (findEnum != null) {
+ item.setXkCode(findEnum.CODE);
+ item.setXkName(findEnum.NAME);
+ item.setXkSeq(findEnum.SEQ);
+ } else {
+ item.setXkCode(XK_WMFrequencyEnum.CODE_OTH.CODE);
+ item.setXkName(XK_WMFrequencyEnum.CODE_OTH.NAME);
+ item.setXkSeq(XK_WMFrequencyEnum.CODE_OTH.SEQ);
+ }
+ }
+
+ return dictList.stream().sorted(Comparator.comparingInt(HisRxUseCount::getXkSeq)).collect(Collectors.toList());
}
if ("2".equals(type)) { // 给要途径字典
- return jsonResult.getDataMapList(HisRxDict.class, "Items", "Item");
+ List dictList = jsonResult.getDataMapList(HisRxDict.class, "Items", "Item");
+
+ for (HisRxDict item : dictList) {
+ if (ObjectUtils.isEmpty(item.getCode())) {
+ continue;
+ }
+ XK_WMUseWayEnum findEnum = XK_WMUseWayEnum.findEnumByName(item.getName());
+ if (findEnum != null) {
+ item.setXkCode(findEnum.CODE);
+ item.setXkName(findEnum.NAME);
+ item.setXkSeq(findEnum.CODE.substring(0, 1));
+ item.setXkSeq2(findEnum.CODE.substring(0, 1));
+ } else {
+ item.setXkCode(XK_WMUseWayEnum._9.CODE);
+ item.setXkName(XK_WMUseWayEnum._9.NAME);
+ item.setXkSeq(XK_WMUseWayEnum._9.CODE);
+ item.setXkSeq2("0");
+ }
+ }
+
+ dictList.sort((o1, o2) -> {
+ // 第一条件:seq升序,null放末尾
+ int cmp = Comparator.nullsLast(String::compareTo).compare(o1.getXkSeq(), o2.getXkSeq());
+ if (cmp != 0) {
+ return cmp;
+ }
+ // seq相同,按seq2字典序,null放前面
+ return Comparator.nullsFirst(String::compareTo).compare(o1.getXkSeq2(), o2.getXkSeq2());
+ });
+
+ return dictList;
}
if ("3".equals(type)) { // 药房字典
return jsonResult.getDataMapList(HisRxDict.class, "Items", "Item");
@@ -42,18 +98,46 @@ public class HisXKDao {
return new ArrayList<>();
}
- public JsonResult createHisRx(String doctCode, String treatNum, String rxType, String diagnose, String weight, String note, String ybAttrib, String bzCode, String bzName, List hisRxItems) {
+ public JsonResult createHisRx(String items, String doctCode, String treatNum, String rxDrugType, String rxTypeCode, String rxDiagnose, String weight, String note, String ybAttrib, String bzCode, String bzName,
+ String tcmTtName, String tcmUseName, String tcmCFCount, String tcmCFUseCount, String tcmUseCountForDay) throws ServiceException {
+ Object rxList;
+ if ("1".equals(rxDrugType)) { // 西药
+ List hisWMRxItems = JsonHelper.parseArray(items, HisWMRxItem.class);
+ if (hisWMRxItems.isEmpty()) {
+ throw new ServiceException(ResultEnum.PARAM_IS_INVALID);
+ }
+ rxList = hisWMRxItems;
+ } else {
+ log.info("[中药-处方开立]tcmTtName={}, tcmUseName={}, tcmCFCount={}, tcmCFUseCount={}, tcmUseCountForDay={}", tcmTtName, tcmUseName, tcmCFCount, tcmCFUseCount, tcmUseCountForDay);
+ if (ObjectUtils.isEmpty(tcmTtName) || ObjectUtils.isEmpty(tcmUseName) || ObjectUtils.isEmpty(tcmCFCount) || ObjectUtils.isEmpty(tcmCFUseCount) || ObjectUtils.isEmpty(tcmUseCountForDay)) {
+ throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
+ }
+
+ List hisTCMRxItems = JsonHelper.parseArray(items, HisTCMRxItem.class);
+ if (hisTCMRxItems.isEmpty()) {
+ throw new ServiceException(ResultEnum.PARAM_IS_INVALID);
+ }
+ rxList = hisTCMRxItems;
+ }
+
JsonResult jsonResult = HisFactory.His().getJsonResult(HisEnum.HIS_XK_RX_CREATE, params -> {
- params.put("YSCode", doctCode); // 开单医生编码
- params.put("MZNum", treatNum); // 门诊号
- params.put("CFType", rxType); // 处方类型 [1:西药]
- params.put("MZDiagnose", diagnose); // 处方诊断
- params.put("Weight", weight); // 体重
+ params.put("MZNum", treatNum); // 门诊号
+ params.put("CFFlag", rxDrugType); // 处方药品类别[1:西药处方;2:中药处方]
+ params.put("CFType", ObjectUtils.isEmpty(rxTypeCode) ? "0" : rxTypeCode); // 处方类型[0:普通处方 (默认值) 1:急诊处方 2:儿科处方....]
+ params.put("MZDiagnose", ObjectUtils.isEmpty(rxDiagnose) ? "无" : rxDiagnose); // 处方诊断
+ params.put("Weight", weight); // 体重
params.put("Note", ObjectUtils.isEmpty(note) ? "" : note); // 备注
- params.put("YBAttrib", ybAttrib); // 医保类别
- params.put("BZCode", bzCode); // 病种编码
- params.put("BZName", bzName); // 病种名称
- params.put("Jarray", JsonHelper.toJsonStringEmpty(hisRxItems));
+ params.put("YBAttrib", ybAttrib); // 医保类别
+ params.put("BZCode", bzCode); // 病种编码
+ params.put("BZName", bzName); // 病种名称
+ params.put("YSCode", doctCode); // 开单医生编码
+ // 中药===========================================================
+ params.put("TT_Name", tcmTtName); // 汤头名称
+ params.put("UsedName", tcmUseName); // 用法
+ params.put("CFCount", tcmCFCount); // 处方付数
+ params.put("CFUseCount", tcmCFUseCount); // 处方单付使用次数
+ params.put("UseCountForDay", tcmUseCountForDay); // 每日使用次数
+ params.put("Jarray", JsonHelper.toJsonStringEmpty(rxList));
});
log.info("[开方]返回 resp={}", JsonHelper.toJsonString(jsonResult.getDataMap()));
return jsonResult;
diff --git a/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java b/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java
index 9497d7b..2179c89 100644
--- a/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java
+++ b/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java
@@ -8,6 +8,7 @@ import com.ynxbd.common.healthcard.config.HCPreConsultConfig;
import com.ynxbd.common.healthcard.config.HCReportConfig;
import com.ynxbd.common.helper.common.CodeHelper;
import com.ynxbd.common.helper.common.JsonHelper;
+import com.ynxbd.common.helper.common.URLHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.PatientService;
@@ -60,7 +61,7 @@ public class HCPreConsultHelper {
String deptCode = order.getDeptCode();
if (!ObjectUtils.isEmpty(HCPreConsultConfig.DEV_OPEN_IDS) && !HCPreConsultConfig.hasDevOpenId(openid)) {
- System.out.println("[[预问诊]上传挂号数据-不是测试账号");
+ System.out.println("[预问诊]上传挂号数据-不是测试账号");
return;
}
@@ -104,7 +105,7 @@ public class HCPreConsultHelper {
sceneData.put("encounterDate", regDate + " " + begTime); // yyyy-MM-dd HH:mm:ss
sceneData.put("partnerAppId", HCPreConsultConfig.APP_ID); // 开发者ID(AppID),在管理>开发商接入 下查询
sceneData.put("partnerId", HCPreConsultConfig.PARTNER_ID);
-
+ String uuid = CodeHelper.get32UUID();
// partnerId:注意这里使用的是报告配置的-PARTNER_ID
JSONObject respJson = post(url + HCReportConfig.PARTNER_ID, req -> {
req.put("reqHead", reqHead);
@@ -121,7 +122,7 @@ public class HCPreConsultHelper {
req.put("department", deptCode); // 科室代码
req.put("scene", "0101015");
req.put("sceneData", JsonHelper.toJsonString(sceneData));
- log.info("[预问诊]req={}", JsonHelper.toJsonString(req));
+ log.info("[预问诊][{}] req={}", uuid, JsonHelper.toJsonString(req));
}, headers -> {
headers.add("Content-Type", "application/json");
headers.add("god-portal-signature", config.getSignature());
@@ -129,27 +130,28 @@ public class HCPreConsultHelper {
headers.add("god-portal-request-id", requestId);
});
- log.warn("[预问诊]上传挂号数据 resp={}", JsonHelper.toJsonString(respJson));
+ log.warn("[预问诊][{}]上传挂号数据 resp={}", uuid, JsonHelper.toJsonString(respJson));
String code = respJson.getString("code");
String message = respJson.getString("msg");
if (!"0".equals(code)) {
- log.error("[预问诊]上传挂号数据-失败:{}", message);
+ log.error("[预问诊][{}]上传挂号数据-失败:{}", uuid, message);
} else {
- log.info("[预问诊]上传挂号数据-成功");
+ log.info("[预问诊][{}]上传挂号数据-成功", uuid);
}
}
// 5.1.1 线上挂号场景(微信h5页面)
- public static String getH5Online(String registerId) {
+ public static String getH5Online(String registerId, boolean isHttps) {
try {
if (ObjectUtils.isEmpty(registerId)) {
return null;
}
String url = HCPreConsultConfig.IS_DEV
- ? "https://dev-prediagnosis.wecity.qq.com/guide-h5-prediagnosis/pages/prediagnosis?partnerId=${partnerId}&hospitalId=${hospitalId}®isterId=${registerId}&subHospitalId=${subHospitalId}®isterIdSign={registerIdSign}"
- : "https://miying.qq.com/guide-h5-prediagnosis/pages/prediagnosis?partnerId=${partnerId}&hospitalId=${hospitalId}®isterId=${registerId}&subHospitalId=${subHospitalId}®isterIdSign={registerIdSign}";
+ ? "https://dev-prediagnosis.wecity.qq.com/guide-h5-prediagnosis/pages/prediagnosis?partnerId=${partnerId}&hospitalId=${hospitalId}®isterId=${registerId}&subHospitalId=${subHospitalId}®isterIdSign={registerIdSign}&redirectPath="
+ : "https://miying.qq.com/guide-h5-prediagnosis/pages/prediagnosis?partnerId=${partnerId}&hospitalId=${hospitalId}®isterId=${registerId}&subHospitalId=${subHospitalId}®isterIdSign={registerIdSign}&redirectPath=";
+ url = url + URLHelper.encodeURL(WeChatConfig.getWebReqURL(isHttps) + "my-info.html");
String registerIdSign = HCPreConsultConfig.toHmacSha256Example(HCPreConsultConfig.SECRET_KEY, HCPreConsultConfig.HOSP_ID + registerId);
return url.replace("${partnerId}", HCPreConsultConfig.PARTNER_ID)
.replace("${hospitalId}", HCPreConsultConfig.HOSP_ID)
diff --git a/src/main/java/com/ynxbd/common/helper/common/AesHelper.java b/src/main/java/com/ynxbd/common/helper/common/AesHelper.java
index 352575b..192d8c4 100644
--- a/src/main/java/com/ynxbd/common/helper/common/AesHelper.java
+++ b/src/main/java/com/ynxbd/common/helper/common/AesHelper.java
@@ -31,7 +31,7 @@ public class AesHelper {
return new String(cipher.doFinal(Hex.decodeHex(data.toCharArray())));
} catch (Exception e) {
- log.warn(e.getMessage());
+ log.warn("[AES-DE]{}", e.getMessage());
return null;
}
}
@@ -54,7 +54,7 @@ public class AesHelper {
byte[] encrypted = cipher.doFinal(data.getBytes());
return Hex.encodeHexString(encrypted).toUpperCase();
} catch (Exception e) {
- log.warn(e.getMessage());
+ log.warn("[AES-EN]{}", e.getMessage());
return null;
}
}
diff --git a/src/main/java/com/ynxbd/common/service/CasebookService.java b/src/main/java/com/ynxbd/common/service/CasebookService.java
index 3150248..40e1f7a 100644
--- a/src/main/java/com/ynxbd/common/service/CasebookService.java
+++ b/src/main/java/com/ynxbd/common/service/CasebookService.java
@@ -194,26 +194,26 @@ public class CasebookService {
}
try {
- log.info("[病历复印]调用HIS接口开始... borrowNo-{}", applyId);
+ log.info("[病历复印]调用接口开始... borrowNo-{}", applyId);
String respJson = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetISPay.NAME, params -> {
params.put("borrowNo", applyId);
params.put("payDateTime", DateHelper.getCurDateTime());
params.put("tradeNo", tradeNo);
});
- log.info("[病历复印]HIS接口返回 resp={}", respJson);
+ log.info("[病历复印]接口返回 resp={}", respJson);
String code = JsonHelper.parseObject(respJson).getString("Code");
if (code == null) {
if (!casebookDao.updateNotifyOk(outTradeNo)) {
- log.info("[病历复印]更新HIS订单信息失败 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId);
+ log.info("[病历复印]更新订单信息失败 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId);
}
return;
}
String message = JsonHelper.parseObject(respJson).getString("Msg");
- log.error("[病历复印]HIS接口调用失败 code={}, message={}, outTradeNo={}, applyId={}", code, message, outTradeNo, applyId);
+ log.error("[病历复印]接口调用失败 code={}, message={}, outTradeNo={}, applyId={}", code, message, outTradeNo, applyId);
if (!casebookDao.updateNotifyErr(outTradeNo, message)) {
- log.info("[病历复印]更新HIS订单错误信息失败 outTradeNo={}, code={}, message={}, outTradeNo={}, applyId={}", outTradeNo, code, message, outTradeNo, applyId);
+ log.info("[病历复印]更新订单错误信息失败 outTradeNo={}, code={}, message={}, outTradeNo={}, applyId={}", outTradeNo, code, message, outTradeNo, applyId);
}
} catch (Exception e) {
log.error(e.getMessage());
diff --git a/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java b/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java
index c57ae6c..9b4ddb2 100644
--- a/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java
+++ b/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java
@@ -245,7 +245,7 @@ public class MessagePushConfig {
log.warn("[推送]预问诊完成通知-失败:参数缺失 openId={}, patientName={}, outTradeNo={}", openId, patientName, outTradeNo);
return;
}
- String url = HCPreConsultHelper.getH5Online(outTradeNo);
+ String url = HCPreConsultHelper.getH5Online(outTradeNo, false);
if (ObjectUtils.isEmpty(url)) {
log.warn("[推送]预问诊完成通知-失败:链接为空[outTradeNo:{}]", outTradeNo);
return;
diff --git a/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java b/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java
index fb2c7fb..7dfe10e 100644
--- a/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java
+++ b/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java
@@ -1,6 +1,7 @@
package com.ynxbd.wx.wxfactory;
import com.ynxbd.common.helper.common.AesHelper;
+import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
@@ -62,7 +63,8 @@ public class AesWxHelper extends AesHelper {
}
public static void main(String[] args) {
- System.out.println(encode("162423"));
+// System.out.println(encode("162423"));
+ System.out.println(DigestUtils.md5Hex("4500000488202609203820674636G001" + "xbd" + "0704" + "xbd" + "*").toUpperCase());
// System.out.println(decode("E6835E243069406F53EC8464898B37C0"));
}
}
diff --git a/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java b/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
index 99a9a84..ad0eddb 100644
--- a/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
+++ b/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
@@ -89,7 +89,7 @@ public class Client {
log.error("[医保]金额转换异常: {}", e.getMessage());
return null;
}
-
+
try {
BigDecimal finalCashFee = cashFee;
JsonResult jsonResult = WxRequestHelper.postMdXml(("https://api.weixin.qq.com/payinsurance/unifiedorder?access_token=" + accessToken), params -> {