diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java
index 5d266ce..e18a66c 100644
--- a/src/main/java/com/ynxbd/common/TestA.java
+++ b/src/main/java/com/ynxbd/common/TestA.java
@@ -1,6 +1,7 @@
package com.ynxbd.common;
import com.alibaba.fastjson.JSONObject;
+import com.ynxbd.common.bean.Patient;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.JsonResult;
@@ -12,27 +13,29 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
@Slf4j
public class TestA {
- public static void main(String[] args) throws Exception {
-// System.out.println(AesWxHelper.encode("om5HqvlWTys3Bqls6YV-o4iA3Zqg"));
-// System.out.println(AesWxHelper.encode("192970"));
-// System.out.println(AesWxHelper.encode("533103200008164016"));
-
- System.out.println(DesEncryptHelper.enCode("oeso-t62kkoRwLVVkSkwmmjPfUXk"));
-
- System.out.println(MessagePushConfig.REG_NAVIGATE_API);
-// OkHttpHelper.getAsync(REG_NAVIGATE_API, params -> {
-// params.put("patientName", "小王");
-// params.put("content", "就诊时间:2026-08-13 12:12:12");
-// params.put("deptName", "科室");
-// params.put("deptCode", "0001");
-// params.put("openId", "32EBE22EF6C9437575AB7A043E456D25704583EFA5E6BE1B5CB899A6F3B7075A");
-// });
- test();
- }
+// public static void main(String[] args) throws Exception {
+//// System.out.println(AesWxHelper.encode("om5HqvlWTys3Bqls6YV-o4iA3Zqg"));
+//// System.out.println(AesWxHelper.encode("192970"));
+//// System.out.println(AesWxHelper.encode("533103200008164016"));
+//
+// System.out.println(DesEncryptHelper.enCode("oeso-t62kkoRwLVVkSkwmmjPfUXk"));
+//
+// System.out.println(MessagePushConfig.REG_NAVIGATE_API);
+//// OkHttpHelper.getAsync(REG_NAVIGATE_API, params -> {
+//// params.put("patientName", "小王");
+//// params.put("content", "就诊时间:2026-08-13 12:12:12");
+//// params.put("deptName", "科室");
+//// params.put("deptCode", "0001");
+//// 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}]}";
@@ -95,4 +98,43 @@ public class TestA {
// String encrypt = RSAHelper.enPKCS1Padding(content, PUB_KEY);
// System.out.println(HexUtil.encodeHexStr(encrypt));
// }
+
+
+// public static void main(String[] args) {
+// List dbPatients = JsonHelper.parseArray("[{\"address\":\"地球\",\"areaAddress\":\"云南省/楚雄彝族自治州/禄丰市\",\"areaCode\":\"532302\",\"bindDate\":\"2026-07-01 11:05:32.0\",\"birthday\":\"1996-10-05\",\"cardType\":\"01\",\"deletedState\":0,\"empiId\":\"300322832\",\"gmcBindState\":1,\"gmcCheckTime\":\"2026-07-01T11:05:32\",\"gmcUniqueId\":\"f4ad749526fe4fcc853287228e8fd7a1\",\"id\":13,\"idCardNo\":\"532331199610053810\",\"isDefault\":false,\"isMyself\":false,\"name\":\"王绍全\",\"nation\":\"汉族\",\"openid\":\"op82q6EPqEtfV-WRq1yagQiz0ecI\",\"patientId\":\"40031886\",\"sex\":\"男\",\"tel\":\"15559603353\",\"uniqueId\":\"df4b3763f2af48d1a8a9d3873b5b01fa\"},{\"address\":\"地球\",\"areaAddress\":\"云南省/楚雄彝族自治州/禄丰市\",\"areaCode\":\"532302\",\"bindDate\":\"2026-07-23 10:17:55.0\",\"birthday\":\"1996-10-05\",\"cardType\":\"01\",\"deletedState\":0,\"empiId\":\"300322832\",\"gmcBindState\":1,\"gmcCheckTime\":\"2026-07-23T10:17:55\",\"gmcUniqueId\":\"f4ad749526fe4fcc853287228e8fd7a1-1\",\"id\":40,\"idCardNo\":\"532331199610053810\",\"isDefault\":false,\"isMyself\":false,\"name\":\"鲁惠琼\",\"nation\":\"汉族\",\"openid\":\"op82q6EPqEtfV-WRq1yagQiz0ecI\",\"patientId\":\"40031886\",\"sex\":\"男\",\"tel\":\"15559603353\",\"uniqueId\":\"95881c158b154b96a8cb98b01217f724\"}]", Patient.class);
+// List gmcPatients = JsonHelper.parseArray("[{\"address\":\"地球\",\"areaAddress\":\"云南省/楚雄彝族自治州/禄丰市\",\"areaCode\":\"532302\",\"bindDate\":\"2026-08-11 15:15:14.0\",\"birthday\":\"1996-10-05\",\"cardType\":\"01\",\"deletedState\":0,\"empiId\":\"300322832\",\"enCardNo\":\"C3F3BB247B0BC2716CE699F0AA235DB6572088229044B5D3931F0AB1A61DA704\",\"enEmpiId\":\"6260F538F5730DCDF2C76EAC6ADDCAA4\",\"enTel\":\"3806267E84D1FF06A6C17FCA60FAFD22\",\"gmcBindState\":1,\"gmcCheckTime\":\"2026-08-19T15:22:00\",\"gmcUniqueId\":\"f4ad749526fe4fcc853287228e8fd7a1\",\"healthCardId\":\"9D6F4C5571E59DF0E347B18F6B1AA7E5E0E70A9B4C1829966C8B3241926D193E\",\"idCardNo\":\"532331199610053810\",\"isDefault\":false,\"isMyself\":false,\"name\":\"王绍全\",\"nation\":\"汉族\",\"sex\":\"男\",\"showCardNo\":\"5323**********3810\",\"showTel\":\"155*****353\",\"tel\":\"15559603353\",\"uniqueId\":\"b76c365080564612bf6c8b9d2160db29\"},{\"address\":\"地球\",\"areaAddress\":\"云南省/楚雄彝族自治州/禄丰市\",\"areaCode\":\"532302\",\"bindDate\":\"2026-07-01 11:05:29.0\",\"birthday\":\"1996-10-05\",\"cardType\":\"01\",\"deletedState\":0,\"empiId\":\"300324678\",\"enCardNo\":\"C3F3BB247B0BC2716CE699F0AA235DB6572088229044B5D3931F0AB1A61DA704\",\"enEmpiId\":\"CA9A11E1A6EC8D1C824C1EBDD1FB0F52\",\"enTel\":\"3806267E84D1FF06A6C17FCA60FAFD22\",\"gmcBindState\":1,\"gmcCheckTime\":\"2026-08-19T15:22:00\",\"gmcUniqueId\":\"f4ad749526fe4fcc853287228e8fd7a1-1\",\"idCardNo\":\"532331199610053810\",\"isDefault\":false,\"isMyself\":false,\"name\":\"鲁惠琼\",\"nation\":\"汉族\",\"sex\":\"男\",\"showCardNo\":\"5323**********3810\",\"showTel\":\"155*****353\",\"tel\":\"15559603353\",\"uniqueId\":\"b76c365080564612bf6c8b9d2160db29-1\"}]\n", Patient.class);
+//
+// List addList = new ArrayList<>();
+// List removeIds = new ArrayList<>(); // 需删除用户ids
+//
+// for (Patient item : gmcPatients) {
+// log.info("[gmc-1]{}", item.getEmpiId());
+// log.info("[gmc-2]{}", item.getIdCardNo());
+//
+// for (Patient dbPatient : dbPatients) {
+// log.info("[db-1]{}", dbPatient.getEmpiId());
+// log.info("[db-2]{}", dbPatient.getIdCardNo());
+// }
+//
+// Patient findDBItem = dbPatients.isEmpty() ? null : dbPatients.stream().filter(o -> (
+// (!ObjectUtils.isEmpty(o.getEmpiId()) && o.getEmpiId().equals(item.getEmpiId())
+// && !ObjectUtils.isEmpty(o.getIdCardNo()) && o.getIdCardNo().equals(item.getIdCardNo())
+// ) || (!ObjectUtils.isEmpty(o.getGmcUniqueId()) && o.getGmcUniqueId().equals(item.getGmcUniqueId()))
+// )).findFirst().orElse(null);
+// System.out.println(findDBItem);
+//
+// if (findDBItem == null) { // 需新增
+// addList.add(item);
+// } else { // 比对数据
+// item.setId(findDBItem.getId());
+// if (!findDBItem.equalsPatient(item)) { // 数据不同->需修改本地数据
+// removeIds.add(findDBItem.getId());
+// addList.add(item);
+// }
+// }
+// }
+//
+// System.out.println(addList);
+// System.out.println(removeIds);
+// }
}
\ No newline at end of file
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 25ef2dc..bbef57d 100644
--- a/src/main/java/com/ynxbd/common/action/xk/XKAction.java
+++ b/src/main/java/com/ynxbd/common/action/xk/XKAction.java
@@ -1,5 +1,7 @@
package com.ynxbd.common.action.xk;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.dao.his.HisXKDao;
import com.ynxbd.common.result.Result;
@@ -16,8 +18,8 @@ import java.util.List;
public class XKAction extends BaseAction {
- @Action("queryDict")
- public Result queryDict(String callNo, String type) {
+ @Action("getRxDict")
+ public Result getRxDict(String callNo, String type) {
if (!"xbd2026".equals(callNo)) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
@@ -30,4 +32,35 @@ public class XKAction extends BaseAction {
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");
+ JSONArray rxJsonArr = body.getJSONArray("rxJsonArr");
+
+ log.info("[开方] doctCode={}, treatNum={}", doctCode, treatNum);
+ if (doctCode == null || treatNum == null) {
+ return Result.error(ResultEnum.PARAM_IS_DEFECT);
+ }
+
+ System.out.println(rxJsonArr);
+
+ if (rxJsonArr == null) {
+ return Result.error(ResultEnum.PARAM_IS_DEFECT);
+ }
+ new HisXKDao().createHisRx(doctCode, treatNum, rxType, diagnose, weight, note, ybAttrib, bzCode, bzName, rxJsonArr);
+ return Result.success();
+ }
+
}
diff --git a/src/main/java/com/ynxbd/common/bean/Patient.java b/src/main/java/com/ynxbd/common/bean/Patient.java
index 990b0fc..b6a9882 100644
--- a/src/main/java/com/ynxbd/common/bean/Patient.java
+++ b/src/main/java/com/ynxbd/common/bean/Patient.java
@@ -89,6 +89,8 @@ public class Patient implements Serializable {
private Boolean isDefault;
// 删除状态
private Integer deletedState;
+ // 类型:-1测试账号
+ private Integer typeState;
// 地区编码
private String areaCode;
@@ -133,6 +135,11 @@ public class Patient implements Serializable {
this.motherTel = null;
}
+ // 是测试用户
+ public boolean isTestUser() {
+ return this.typeState != null && this.typeState == -1;
+ }
+
/**
* [医共体]数据过滤
*
@@ -204,7 +211,7 @@ public class Patient implements Serializable {
}
private boolean equalsLog(String log) {
-// System.out.println("[信息变动]" + log);
+ System.out.println("[信息变动]" + log);
return false;
}
@@ -213,6 +220,10 @@ public class Patient implements Serializable {
return false;
}
+ if (!equalsData(this.empiId, copy.getEmpiId())) {
+ return equalsLog("empiId");
+ }
+
if (!equalsData(this.idCardNo, copy.getIdCardNo())) {
return equalsLog("idCardNo");
}
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 7f39d1f..44b7329 100644
--- a/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java
+++ b/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java
@@ -1,16 +1,22 @@
package com.ynxbd.common.dao.his;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
import com.ynxbd.common.bean.xk.HisRxAdmRoute;
import com.ynxbd.common.bean.xk.HisRxDrug;
import com.ynxbd.common.bean.xk.HisRxPharmDict;
import com.ynxbd.common.bean.xk.HisRxUseCount;
+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 lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
@Slf4j
public class HisXKDao {
@@ -34,4 +40,20 @@ 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, JSONArray rxJsonArr) {
+ 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("Note", note); // 备注
+ params.put("YBAttrib", ybAttrib); // 医保类别
+ params.put("BZCode", bzCode); // 病种编码
+ params.put("BZName", bzName); // 病种名称
+ params.put("Jarray", HisFactory.jsonArrayToXml(rxJsonArr));
+ });
+ log.info("[开方]返回 resp={}", JsonHelper.toJsonString(jsonResult.getDataMap()));
+ return null;
+ }
}
diff --git a/src/main/java/com/ynxbd/common/his/HisFactory.java b/src/main/java/com/ynxbd/common/his/HisFactory.java
index e8eecab..5ed136c 100644
--- a/src/main/java/com/ynxbd/common/his/HisFactory.java
+++ b/src/main/java/com/ynxbd/common/his/HisFactory.java
@@ -1,12 +1,17 @@
package com.ynxbd.common.his;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.helper.common.CodeHelper;
+import com.ynxbd.common.helper.common.JsonHelper;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
import java.util.List;
+import java.util.Set;
@Slf4j
public class HisFactory {
@@ -89,4 +94,31 @@ public class HisFactory {
}
return sb.toString();
}
+
+ /**
+ * 字符串集转xml
+ *
+ * @return xml
+ */
+ public static String jsonArrayToXml(JSONArray dataJsonArr) {
+ if (dataJsonArr == null) {
+ return null;
+ }
+ StringBuilder sb = new StringBuilder();
+ String val;
+ JSONObject item;
+ Set keySet;
+ for (int i = 0; i < dataJsonArr.size(); i++) {
+ item = dataJsonArr.getJSONObject(i);
+ keySet = item.keySet();
+ for (String key : keySet) {
+ val = item.getString(key);
+ if (ObjectUtils.isEmpty(val)) {
+ val = "";
+ }
+ sb.append("<").append(key).append(">").append(val).append("").append(key).append(">");
+ }
+ }
+ return sb.toString();
+ }
}
diff --git a/src/main/java/com/ynxbd/common/service/GMCService.java b/src/main/java/com/ynxbd/common/service/GMCService.java
index 8887056..1e1a61b 100644
--- a/src/main/java/com/ynxbd/common/service/GMCService.java
+++ b/src/main/java/com/ynxbd/common/service/GMCService.java
@@ -38,7 +38,7 @@ public class GMCService {
* @return list
*/
public List syncPatientData(HttpServletRequest request, String wxOpenId, String gmcOpenId, String unionId) throws ServiceException {
- log.error("[医共体-数据同步]wxOpenId={}, gmcOpenId={}", wxOpenId, gmcOpenId);
+ log.info("[医共体-数据同步]wxOpenId={}, gmcOpenId={}", wxOpenId, gmcOpenId);
if (ObjectUtils.isEmpty(wxOpenId) || ObjectUtils.isEmpty(gmcOpenId)) {
return new ArrayList<>();
}
@@ -66,12 +66,19 @@ public class GMCService {
item.setBirthday(AesWxHelper.decode(item.getBirthday()));
item.setHealthCardId(AesWxHelper.decode(item.getHealthCardId()));
}
+ List dbPatients = new PatientService().queryGmcCachePatientsByOpenId(wxOpenId, unionId);
List addList = new ArrayList<>(); // 需添加用户
List removeIds = new ArrayList<>(); // 需删除用户ids
-
- List dbPatients = new PatientService().queryGmcCachePatientsByOpenId(wxOpenId, unionId);
+ List patientList = new ArrayList<>();// 返回的数据
for (Patient item : gmcPatients) {
+ if (item.isTestUser()) {
+ System.out.println("[测试账号]");
+ continue;
+ }
+
+ patientList.add(item);
+
item.setId(null);
item.setOpenid(wxOpenId);
if (HCardTypeEnum.NO_CARD.WX_CODE.equals(item.getCardType()) || ObjectUtils.isEmpty(item.getIdCardNo())) { // 无证绑定->不做处理
@@ -95,7 +102,7 @@ public class GMCService {
}
for (Patient item : dbPatients) {
- Patient findItem = gmcPatients.stream().filter(o -> (
+ Patient findItem = patientList.stream().filter(o -> (
!ObjectUtils.isEmpty(o.getEmpiId()) && o.getEmpiId().equals(item.getEmpiId()))
&& !ObjectUtils.isEmpty(o.getIdCardNo()) && o.getIdCardNo().equals(item.getIdCardNo())
).findFirst().orElse(null);
@@ -123,7 +130,7 @@ public class GMCService {
log.error("[医共体]同步用户数据,修改医共体绑定状态失败 id:{}", item.getId());
item.setEmpiId(empiId);
item.setGmcUniqueId(gmcUniqueId);
- gmcPatients.add(item);
+ patientList.add(item);
}
} else { // 已校验过=>多余数据=>移除
removeIds.add(item.getId());
@@ -145,8 +152,8 @@ public class GMCService {
long endTime = System.currentTimeMillis();
String takeTime = (endTime - begTime) + "ms"; // 耗时
- log.info("[医共体-数据同步][{}]][耗时:{}]-共[{}]条数据, 删除:[{}]条, 同步:[{}]条", wxOpenId, takeTime, gmcPatients.size(), delRows, addRows);
- return gmcPatients;
+ log.info("[医共体-数据同步][{}]][耗时:{}]-共[{}]条数据, 删除:[{}]条, 同步:[{}]条", wxOpenId, takeTime, patientList.size(), delRows, addRows);
+ return patientList;
}
/**