From 32c117ccbe06fdae936d442545124defce15807b Mon Sep 17 00:00:00 2001 From: wangsq Date: Thu, 20 Aug 2026 11:35:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E5=85=B1=E4=BD=93=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=B1=BB=E5=9E=8B=E5=88=A4=E6=96=AD=EF=BC=8C?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E6=88=B7=E4=B8=8D=E5=9C=A8=E5=AD=90?= =?UTF-8?q?=E5=8C=BB=E9=99=A2=E8=BF=9B=E8=A1=8C=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ynxbd/common/TestA.java | 76 ++++++++++++++----- .../com/ynxbd/common/action/xk/XKAction.java | 37 ++++++++- .../java/com/ynxbd/common/bean/Patient.java | 13 +++- .../com/ynxbd/common/dao/his/HisXKDao.java | 22 ++++++ .../java/com/ynxbd/common/his/HisFactory.java | 32 ++++++++ .../com/ynxbd/common/service/GMCService.java | 21 +++-- 6 files changed, 174 insertions(+), 27 deletions(-) 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(""); + } + } + 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; } /**