最近一些修复跟功能更改

debug
李进才 7 months ago
parent 6112832df6
commit 31936567d1
  1. 2
      src/main/java/com/ynxbd/common/action/InHospAction.java
  2. 35
      src/main/java/com/ynxbd/common/action/MeTechnologyReAction.java
  3. 2
      src/main/java/com/ynxbd/common/action/PushAction.java
  4. 84
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  5. 44
      src/main/java/com/ynxbd/common/action/SmsAction.java
  6. 18
      src/main/java/com/ynxbd/common/action/pay/MedicalAction.java
  7. 2
      src/main/java/com/ynxbd/common/action/pay/PayAction.java
  8. 35
      src/main/java/com/ynxbd/common/bean/wxMessage/WaitReg.java
  9. 2
      src/main/java/com/ynxbd/common/dao/InHospPayDao.java
  10. 16
      src/main/java/com/ynxbd/common/dao/RegisterDao.java
  11. 60
      src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java
  12. 11
      src/main/java/com/ynxbd/common/helper/common/JsonHelper.java
  13. 46
      src/main/java/com/ynxbd/common/helper/common/SmsHelper.java
  14. 200
      src/main/java/com/ynxbd/common/helper/common/Test.java
  15. 7
      src/main/java/com/ynxbd/common/helper/his/HisEnum.java
  16. 11
      src/main/java/com/ynxbd/common/helper/his/HisHelper.java
  17. 13
      src/main/java/com/ynxbd/common/result/JsonResult.java
  18. 1
      src/main/java/com/ynxbd/common/result/ResultEnum.java
  19. 2
      src/main/java/com/ynxbd/common/service/MedicalService.java
  20. 4
      src/main/java/com/ynxbd/common/service/RecipeService.java
  21. 35
      src/main/java/com/ynxbd/common/service/RegService.java
  22. 58
      src/main/java/com/ynxbd/wx/config/MeTechnologyReConfig.java
  23. 56
      src/main/java/com/ynxbd/wx/config/MiddleOfficeConfig.java
  24. 5
      src/main/java/com/ynxbd/wx/servlet/QServlet.java
  25. 2
      src/main/java/com/ynxbd/wx/utils/DesEncryptHelper.java
  26. 4
      src/main/java/com/ynxbd/wx/wxfactory/ReqParamHelper.java
  27. 3
      src/main/java/com/ynxbd/wx/wxfactory/WxMedicalHelper.java
  28. 2
      src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
  29. 1
      src/main/java/com/ynxbd/wx/wxfactory/medical/MdConfig.java
  30. 63
      src/main/java/com/ynxbd/wx/wxfactory/utils/WxPassiveReplyHelper.java
  31. 5
      src/main/resources/middle-office.properties
  32. 11
      src/main/resources/xbd.properties

@ -41,6 +41,7 @@ public class InHospAction extends BaseAction {
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = getDecodeString(patientId);
JsonResult resp = new HisInHospDao().getPreMoneyList(patientId);
@ -220,6 +221,7 @@ public class InHospAction extends BaseAction {
log.info("[住院]通过患者ID查询患者所有住院记录, patientId-{}",patientId);
if(patientId==null)
return Result.error(ResultEnum.PARAM_IS_DEFECT);
patientId = getDecodeString(patientId);
JsonResult resp = new HisInHospDao().getAllHospList(patientId);
List<InHospitalList> inHospitalList = resp.getDataMapList(InHospitalList.class, "Items","Item");
return Result.success(inHospitalList);

@ -2,9 +2,12 @@ package com.ynxbd.common.action;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.wx.config.MeTechnologyReConfig;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author 李进才
@ -16,6 +19,8 @@ import org.apache.struts2.convention.annotation.Namespace;
@Namespace("/meTechnologyRe")
public class MeTechnologyReAction extends BaseAction {
private static final Logger log = LoggerFactory.getLogger(MeTechnologyReAction.class);
/**
* 获取可预约的订单
*
@ -26,8 +31,12 @@ public class MeTechnologyReAction extends BaseAction {
*/
@Action("getCanBookOrders")
public Result getCanBookOrders(String patientId, String startDate, String endDate) {
log.info("[天助预约平台接口参数]获取可预约的订单 patientId={},startDate={},endDate={}", patientId, startDate, endDate);
if (startDate == null || endDate == null||patientId==null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = getDecodeString(patientId);
return Result.success(MeTechnologyReConfig.getCanBookOrders(patientId, startDate, endDate));
return MeTechnologyReConfig.getCanBookOrders(patientId, startDate, endDate);
}
/**
@ -42,8 +51,12 @@ public class MeTechnologyReAction extends BaseAction {
*/
@Action("getNumberSourceStatistics")
public Result getNumberSourceStatistics(String patientId, String startDate, String endDate, String docDetailedNo, String intervalTimeType) {
log.info("[天助预约平台接口参数]获取号源统计信息 patientId={},startDate={},endDate={},docDetailedNo={},intervalTimeType={}", patientId, startDate, endDate, docDetailedNo, intervalTimeType);
if(patientId==null||startDate==null||endDate==null||docDetailedNo==null||intervalTimeType==null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = getDecodeString(patientId);
return Result.success(MeTechnologyReConfig.getNumberSourceStatistics(patientId, startDate, endDate, docDetailedNo, intervalTimeType));
return MeTechnologyReConfig.getNumberSourceStatistics(patientId, startDate, endDate, docDetailedNo, intervalTimeType);
}
/**
@ -57,7 +70,11 @@ public class MeTechnologyReAction extends BaseAction {
*/
@Action("getNumberSourceDetails")
public Result getNumberSourceDetails(String examRoomOrQueue, String startDate, String endDate, String appFromID) {
return Result.success(MeTechnologyReConfig.getNumberSourceDetails(examRoomOrQueue, startDate, endDate, appFromID));
log.info("[天助预约平台接口参数]获取号源详细信息 examRoomOrQueue={},startDate={},endDate={},appFromID={}", examRoomOrQueue, startDate, endDate,appFromID);
if(examRoomOrQueue==null||startDate==null||endDate==null||appFromID==null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
return MeTechnologyReConfig.getNumberSourceDetails(examRoomOrQueue, startDate, endDate, appFromID);
}
/**
@ -72,12 +89,16 @@ public class MeTechnologyReAction extends BaseAction {
*/
@Action("lockedBookNo")
public Result lockedBookNo(String appFormID, String examRoomOrQueue, String beginDateTime, String endDateTime, Boolean lockStatus) {
log.info("[天助预约平台接口参数]锁定预约号 appFormID={},examRoomOrQueue={},beginDateTime={},endDateTime={},lockStatus={}", appFormID, examRoomOrQueue, beginDateTime, endDateTime, lockStatus);
if(appFormID==null || examRoomOrQueue == null || beginDateTime == null || endDateTime == null||lockStatus == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
Boolean result = MeTechnologyReConfig.lockedBookNo(appFormID, examRoomOrQueue, beginDateTime, endDateTime, lockStatus);
return result?Result.success():Result.error();
}
/**
* 获取预约信息
* 确定改约
*
* @param appFormID 申请表ID
* @param examRoomOrQueue 检查队列
@ -89,8 +110,12 @@ public class MeTechnologyReAction extends BaseAction {
*/
@Action("getBookedDateTime")
public Result getBookedDateTime(String appFormID, String examRoomOrQueue, String beginDateTime, String endDateTime, String patientId, String patientName) {
log.info("[天助预约平台接口参数]确定改约 appFormId={},examRoomOrQueue={},beginDateTime={},endDateTime={},patientId={},patientName={}", appFormID, examRoomOrQueue, beginDateTime, endDateTime, patientId, patientName);
if(appFormID==null||examRoomOrQueue==null||beginDateTime==null||endDateTime==null||patientId==null||patientName==null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = getDecodeString(patientId);
return Result.success(MeTechnologyReConfig.getBookedDateTime(appFormID, examRoomOrQueue, beginDateTime, endDateTime, patientId, patientName));
return MeTechnologyReConfig.getBookedDateTime(appFormID, examRoomOrQueue, beginDateTime, endDateTime, patientId, patientName);
}
}

@ -27,7 +27,7 @@ public class PushAction extends BaseAction {
RequestBody requestBody = new FormBody.Builder()
.add("name",name)
.build();
String url = MessagePushConfig.HOST_URL+"api/getRedis";
String url = "http://127.0.0.1:8123/MessagePlatform/api/getRedis";
String requestResult = OkHttpHelper.post(url,requestBody);
log.info("[获取推送缓存]requestResult-{},url-{}",requestResult,url);
return Result.success(JsonHelper.parseObject(requestResult));

@ -1,5 +1,7 @@
package com.ynxbd.common.action;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.ali.helper.AliUploadHelper;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.Dept;
@ -20,6 +22,7 @@ import org.apache.struts2.convention.annotation.Action;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -292,6 +295,87 @@ public class RegisterAction extends BaseAction {
return Result.success(new HisRegisterDao().getDoctorSchedule(begDate, endDate, doctCode));
}
/**
* 查询待预约记录
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待预约记录
*/
@Action("getReSignInRecord")
public Result getReSignInRecord(String begDate, String endDate) {
log.info("[查询预约待签到记录] begDate={}, endDate={}", begDate, endDate);
if (begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
return Result.success(new HisRegisterDao().getReSignInRecord(begDate, endDate));
}
/**
* 执行预约签到
* @param transNo 预约时的交易流水号
* @return 预约签到结果
*/
@Action("handleSignIn")
public Result handleSignIn(String transNo) {
log.info("[执行预约签到] transNo={}", transNo);
if (transNo == null || transNo.isEmpty()) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
return Result.success(new HisRegisterDao().handleSignIn(transNo));
}
/**
* 查询待预约记录
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待预约记录
*/
@Action("getReLineSignInRecord")
public Result getReLineSignInRecord(String patientId,String begDate, String endDate) {
log.info("[查询预约待签到记录(包含今日挂号)]patientId-{} begDate={}, endDate={}",patientId, begDate, endDate);
if (patientId ==null||begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if(getDecodeString(patientId)==null){
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
JSONArray reLineSignInRecord= new HisRegisterDao().getReLineSignInRecord(begDate, endDate);
if(reLineSignInRecord == null){
return Result.success();
}
return Result.success(reLineSignInRecord.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), getDecodeString(patientId))).collect(Collectors.toList ()));
}
/**
* 执行预约签到
* @param treatNum 门诊号
* @return 预约签到结果
*/
@Action("handleLineSignIn")
public Result handleLineSignIn(String treatNum) {
log.info("[执行预约签到(只进行分诊叫号)] treatNum={}", treatNum);
if (treatNum == null || treatNum.isEmpty()) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
return Result.success(new HisRegisterDao().handleLineSignIn(treatNum));
}
/**
* 查询预约今天号源的患者信息用以推送候诊信息
* @param startTime 开始时间范围
* @param endTime 结束时间范围
* @return 候诊人群
*/
@Action("getTodayRegRecord")
public Result getTodayRegRecord(String startTime, String endTime) {
log.info("[候诊推送信息] begTime={}, endTime={}", startTime, endTime);
if (startTime == null || endTime == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
return Result.success(new RegisterDao().selectTodayRegRecord(startTime, endTime));
}
// /**
// * [预约挂号]获取指定科室医生信息

@ -3,6 +3,8 @@ package com.ynxbd.common.action;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.sms.SmsTemplate;
import com.ynxbd.common.bean.wxMessage.WaitReg;
import com.ynxbd.common.dao.RegisterDao;
import com.ynxbd.common.helper.common.CodeHelper;
import com.ynxbd.common.helper.common.SmsHelper;
import com.ynxbd.common.result.Result;
@ -13,6 +15,8 @@ import org.apache.struts2.convention.annotation.Namespace;
import java.sql.Array;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -165,4 +169,44 @@ public class SmsAction extends BaseAction {
}
return Result.change(isFlag);
}
/**
* 德宏州中医院每日候诊推送
* @param startTime 检索推送开始时间
* @param endTime 检索推送结束时间
* @return 推送结果
*/
@Action("todayRegSmS")
public Result TodayRegSms(String startTime, String endTime) {
log.info("[候诊推送短信] begTime={}, endTime={}", startTime, endTime);
List<WaitReg> waitRegs = new RegisterDao().selectTodayRegRecord(startTime, endTime);
for (WaitReg waitReg : waitRegs) {
Map<String,String> sms = new HashMap<>();
sms.put("time",waitReg.getRegDate()+" "+waitReg.getBegTime()+"-"+waitReg.getEndTime());
sms.put("deptName",waitReg.getDeptName());
sms.put("doctorName",waitReg.getDoctName());
sms.put("address",waitReg.getAddress());
sms.put("minute","15");
sms.put("signView","个人中心");
sms.put("hospTel","0692-2991794");
log.info("[候诊推送短信]sendResult-{},tel-{},sms-{}",SmsHelper.send("SMS_475780750",waitReg.getTel(),sms),waitReg.getTel(),sms);
}
return Result.success();
}
/**
* 天助平台短信推送
* @param tel 电话号码
* @param content 内容
* @return 返回发送结果
*/
@Action("danMiSms")
public Result DanMiSms(String tel, String content) {
log.info("[天助平台短信]url-{},content={}", tel, content);
if (tel == null || content == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
return Result.success(SmsHelper.sendDanMi("1000000002608", tel, content));
}
}

@ -17,11 +17,9 @@ import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.MedicalService;
import com.ynxbd.common.service.PatientService;
import com.ynxbd.common.service.params.RegParams;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
import com.ynxbd.wx.wxfactory.WxCacheHelper;
import com.ynxbd.wx.wxfactory.WxMedicalHelper;
import com.ynxbd.wx.wxfactory.WxPayHelper;
import com.ynxbd.wx.wxfactory.*;
import com.ynxbd.wx.wxfactory.bean.*;
import com.ynxbd.wx.wxfactory.medical.MdConfig;
import com.ynxbd.wx.wxfactory.utils.MdRespHelper;
@ -112,6 +110,15 @@ public class MedicalAction extends BaseAction {
return Result.success(respJson);
}
@Action("medicalAuth")
public Result medicalAuth(String openid,String qrCode) {
log.info("[医保建档] openid-{},qrCode={}", openid, qrCode);
MedicalUserInfo info = WxFactory.Medical.Common().getUserInfo(MdConfig.PARTNER_URL, openid, qrCode);
log.info("[医保建档获取用户信息] resp-{}",info);
return Result.success(info);
}
@Action("getMedicalAuthUrl")
public Result getMedicalAuthUrl(String url) {
JSONObject respJson = WxMedicalHelper.getMdAuthUrl(url, null);
@ -328,7 +335,8 @@ public class MedicalAction extends BaseAction {
String notifyType = notifyInfo.getAttach();
log.info("【医保】[{}] 收到通知 outTradeNo={}, bankTransNo={}, notifyType={}", notifyType, outTradeNo, bankTransNo, notifyType);
log.info("【医保】[{}] 收到通知" +
" outTradeNo={}, bankTransNo={}, notifyType={}", notifyType, outTradeNo, bankTransNo, notifyType);
switch (PEnum.toEnum(notifyType)) {
case RECIPE:

@ -943,7 +943,7 @@ public class PayAction extends BaseAction {
// casebook.setApplyName(applyName);
// casebook.setApplyTime(applyTime);
//
// casebook.setDeptCode(deptCode);
// casebook.setDeptCode(deptCode);r
// casebook.setDeptName(deptName);
// casebook.setAddress(address);
// casebook.setDx(dx);

@ -0,0 +1,35 @@
package com.ynxbd.common.bean.wxMessage;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class WaitReg implements Serializable {
private static final long serialVersionUID = 1L;
// openId
public String openId;
// 患者姓名
public String name;
// 医生姓名
private String doctName;
//电弧号码
private String tel;
//科室名称
private String deptName;
//挂号日期
private String regDate;
//开始时间
private String begTime;
//结束时间
private String endTime;
//就诊地址
private String address;
}

@ -144,7 +144,7 @@ public class InHospPayDao {
* @param invoiceTransNo HIS交易流水号
*/
public PayInHosp selectRefundByInvoiceTransNo(String invoiceTransNo, String patientId) {
String sql = "select * from pay_in_hosp where invoiceTransNo= ? and patientId= ? and hisStatus= 0 and payStatus= 0 and authCode is not null and tradeNo is null and (refundResult is null or refundResult != 'OK')";
String sql = "select * from pay_in_hosp where invoiceTransNo= ? and patientId= ? and hisStatus= 0 and payStatus= 0 and authCode is not null and (refundResult is null or refundResult != 'OK')";
List<PayInHosp> resultList = DataBase.select(sql, PayInHosp.class, ps -> {
ps.setString(1, invoiceTransNo);
ps.setString(2, patientId);

@ -4,6 +4,7 @@ import com.ynxbd.common.bean.Dept;
import com.ynxbd.common.bean.Doctor;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.bean.wxMessage.WaitReg;
import com.ynxbd.common.config.db.DataBase;
import com.ynxbd.common.dao.his.HisRegisterDao;
import com.ynxbd.common.helper.common.DateHelper;
@ -682,6 +683,7 @@ public class RegisterDao {
}
/**
* 退费列表
*/
@ -701,4 +703,18 @@ public class RegisterDao {
ps.setString(3, outTradeNo);
}) > 0;
}
/**
* 查询当天挂号的人用来推送候诊提醒
* @param startDate 开始时间
* @param endDate 结束时间
* @return 候诊人群
*/
public List<WaitReg> selectTodayRegRecord(String startDate, String endDate) {
String sql = "select a.*,b.`Name` from register a left join patientBase b on a.patientId = b.patientId and a.openId = b.openId where regDate = CURDATE() and begTime >= ? and endTime <= ? and refundResult is null and payStatus = 0 and hisStatus = 0";
return DataBase.select(sql, WaitReg.class, ps -> {
ps.setString(1, startDate);
ps.setString(2, endDate);
});
}
}

@ -1,12 +1,10 @@
package com.ynxbd.common.dao.his;
import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.bean.Dept;
import com.ynxbd.common.bean.Doctor;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.his.HisTreat;
import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.dao.RegisterDao;
import com.ynxbd.common.helper.common.*;
@ -971,4 +969,62 @@ public class HisRegisterDao {
return null;
}
/**
* 查询预约待签到记录不包含今日挂号的
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待签到记录
*/
public JSONArray getReSignInRecord(String begDate, String endDate){
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_SignIn, params -> {
params.put("BegDate", begDate);
params.put("EndDate", endDate);
});
if(jsonResult.success()){
return jsonResult.getJsonArray("Items");
}
return null;
}
/**
* 执行预约签到(即执行转入号源又执行分时段)
* @param transNo 预约时的交易流水号
* @return 预约签到结果
*/
public JsonResult handleSignIn(String transNo){
Map<String, Object> params = new HashMap<>();
params.put("TransNo", transNo);
return HisHelper.getJsonResult(HisEnum.AP_SignIN, params);
}
/**
* 查询预约待签到记录包含今日挂号的
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待签到记录
*/
public JSONArray getReLineSignInRecord(String begDate, String endDate){
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Line_SignIn, params -> {
params.put("BegDate", begDate);
params.put("EndDate", endDate);
});
if(jsonResult.success()){
return jsonResult.getJsonArray("Items","Item");
}
return null;
}
/**
* 执行预约签到(只执行分时段)
* @param treatNum 门诊号
* @return 预约签到结果1
*/
public JsonResult handleLineSignIn(String treatNum){
Map<String, Object> params = new HashMap<>();
params.put("MZNum", treatNum);
return HisHelper.getJsonResult(HisEnum.AP_Line_SignIN, params);
}
}

@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.PascalNameFilter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.ynxbd.common.bean.xbd.MRHistory;
import java.util.List;
@ -18,6 +20,15 @@ public class JsonHelper {
return JSON.toJSONString(data);
}
/**
* 支持返回大写json
* @param data 需要转换实体
* @return string
*/
public static String toProJsonString(Object data){
return JSONObject.toJSONString(data, new PascalNameFilter(), SerializerFeature.WriteMapNullValue);
}
public static JSONObject parseObject(String data) {
return JSON.parseObject(data);
}

@ -11,9 +11,13 @@ import com.ynxbd.common.bean.sms.SmsRegTem;
import com.ynxbd.common.bean.sms.SmsTemplate;
import com.ynxbd.common.config.EhCacheConfig;
import com.ynxbd.common.helper.ProperHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.wx.config.WeChatConfig;
import lombok.extern.slf4j.Slf4j;
import okhttp3.FormBody;
import okhttp3.RequestBody;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.ehcache.Cache;
@ -188,6 +192,26 @@ public class SmsHelper {
}
public static String sendDanMi(String templateId, String tel, String content) {
String accountSid = "301d69a6ea6ed34b0827a4dec3ca1ff8";
String authToken = "94f37caeddeb36a8400ad0ecc9b04ece";
String timestamp = String.valueOf(new Date().getTime());
RequestBody requestBody = new FormBody.Builder()
.add("accountSid",accountSid)
.add("templateid",templateId)
.add("to",tel)
.add("timestamp",timestamp)
.add("param",content)
.add("sig", DigestUtils.md5Hex(accountSid+authToken+timestamp))
.build();
String result = OkHttpHelper.post("https://openapi.danmi.com/textSMS/sendSMS/V1",requestBody, headers -> {
headers.add("content-type","application/x-www-form-urlencoded");
});
log.info("[天助平台] 短信发送 result-{},tel-{},templateId-{},content-{}",result,tel,templateId,content);
return result;
}
/**
* 是否重复发送
*
@ -269,10 +293,24 @@ public class SmsHelper {
// send("SMS_462460638","18206787486",sms);
Map<String,String> sms = new HashMap<>();
sms.put("name","李进才");
sms.put("item_name","胃镜");
send("SMS_462460638","18206787486",sms);
// Map<String,String> sms = new HashMap<>();
// sms.put("name","李进才");
// sms.put("item_name","胃镜");
// send("SMS_462460638","18206787486",sms);
// Map<String,String> sms = new HashMap<>();
// sms.put("address", "四号楼2楼6号诊室骨伤科(脊柱)");
// sms.put("deptName", "骨伤科-骨伤科专家门诊");
// sms.put("doctorName", "陈应东");
// sms.put("hosp_tel", "0692-2991794");
// sms.put("hosp_tip", "提前15分钟到医院门诊各导医服务台签到后排队候诊");
// sms.put("seq", "41");
// sms.put("time", "2024-12-05 10:00:00-10:03:00");
// send("SMS_475980406","18206787486",sms);
sendDanMi("1000000002608","13608818101","影像报告已经出,请及时到医院自助机进行报告打印或点击链接 https://wx.hhzyy.com/smsPacs?token=A88A6D089&inHosNum=1579733");

@ -5,14 +5,208 @@ package com.ynxbd.common.helper.common;
//import com.mascloud.sdkclient.Client;
//import com.mascloud.util.JsonUtil;
import com.ynxbd.common.bean.HisRecipe;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.JsonResultEnum;
import org.apache.commons.codec.digest.DigestUtils;
import java.util.List;
public class Test {
public static void main(String[] args) {
String piMd5 = "9444144" + "T2005" + "xbd";
piMd5 = DigestUtils.md5Hex(piMd5).toUpperCase();
System.out.println(piMd5);
// String piMd5 = "9444144" + "T2005" + "xbd";
// piMd5 = DigestUtils.md5Hex(piMd5).toUpperCase();
// System.out.println(piMd5);
JsonResult jsonResult = JsonResult.xmlToBean("<Response>\n" +
" <TransactionCode>4001</TransactionCode>\n" +
" <ResponseCode>0</ResponseCode>\n" +
" <ResponseMessage>成功</ResponseMessage>\n" +
" <Recipe>\n" +
" <PatientName/>\n" +
" <ID>85735</ID>\n" +
" <Name>体检费用</Name>\n" +
" <DeptCode>3001</DeptCode>\n" +
" <DeptName>医学检验科</DeptName>\n" +
" <DoctDeptCode>0141</DoctDeptCode>\n" +
" <DoctDeptName>健康管理中心/治未病</DoctDeptName>\n" +
" <DoctCode>0513</DoctCode>\n" +
" <DoctName>赵翠回</DoctName>\n" +
" <Date>2024-07-03 07:15:29</Date>\n" +
" <ExecDate/>\n" +
" <MZNum>81365</MZNum>\n" +
" <Amount>308.7</Amount>\n" +
" <Address/>\n" +
" <Note/>\n" +
" <FJJFFlag/>\n" +
" <YBJSFlag/>\n" +
" <Item>\n" +
" <ItemID>0135</ItemID>\n" +
" <ItemName>空腹血糖</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>4</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>0139</ItemID>\n" +
" <ItemName>肝功Ⅰ号</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>项</Unit>\n" +
" <Price>27</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>0166</ItemID>\n" +
" <ItemName>尿常规(门诊专用)</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>10</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>0167</ItemID>\n" +
" <ItemName>血常规</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>项</Unit>\n" +
" <Price>19</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>0305</ItemID>\n" +
" <ItemName>胸部后前位片(体检)</ItemName>\n" +
" <ItemType>检查</ItemType>\n" +
" <Specs/>\n" +
" <Unit>套</Unit>\n" +
" <Price>27</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>0624</ItemID>\n" +
" <ItemName>腹部全套(女 含:肝.胆.胰.脾.肾.膀胱.输尿管.子宫.附件)</ItemName>\n" +
" <ItemType>检查</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>118.8</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>110500001A</ItemID>\n" +
" <ItemName>体检费(一般体检)</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>人次</Unit>\n" +
" <Price>14</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>120400002C</ItemID>\n" +
" <ItemName>静脉采血器采血</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>4</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>1552</ItemID>\n" +
" <ItemName>肾功两项(体检专用)</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>套</Unit>\n" +
" <Price>13</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>1635</ItemID>\n" +
" <ItemName>梅毒螺旋体抗体(体检专用TPHA)</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>套</Unit>\n" +
" <Price>10</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>250403019B</ItemID>\n" +
" <ItemName>人免疫缺陷病毒抗体测定</ItemName>\n" +
" <ItemType>检验</ItemType>\n" +
" <Specs/>\n" +
" <Unit>项</Unit>\n" +
" <Price>30</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>310701001C</ItemID>\n" +
" <ItemName>十二通道心电图检查</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>25</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>Z1055</ItemID>\n" +
" <ItemName>一次性定量真空采血管(普通)3根</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>套</Unit>\n" +
" <Price>6</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>Z1056</ItemID>\n" +
" <ItemName>一次性定量真空采血管(抗凝)1根</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>支</Unit>\n" +
" <Price>0.9</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>Z1061</ItemID>\n" +
" <ItemName>内科检查</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>0</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>Z1062</ItemID>\n" +
" <ItemName>外科检查</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>0</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>Z1063</ItemID>\n" +
" <ItemName>五官科检查</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>0</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" <Item>\n" +
" <ItemID>Z1064</ItemID>\n" +
" <ItemName>口腔科检查</ItemName>\n" +
" <ItemType>普通</ItemType>\n" +
" <Specs/>\n" +
" <Unit>次</Unit>\n" +
" <Price>0</Price>\n" +
" <Quantity>1</Quantity>\n" +
" </Item>\n" +
" </Recipe>\n" +
"</Response>", JsonResultEnum.SYS_HIS);
List<HisRecipe> recipes = jsonResult.getDataMapList(HisRecipe.class, "Recipe");
System.out.println(recipes);
}
// public static void main( String[] args ) {
// Client client = Client.getInstance( );

@ -100,6 +100,13 @@ public enum HisEnum {
XK_QUERY_RE_REGISTER("[互联网医院]查询复诊挂号费","13008","UniversalInterface",true),
// 在线签到
AP_Query_SignIn("[在线签到]查询预约待签到记录","7007","AP_Query_SignIn",true),
AP_SignIN("[在线签到]执行预约签到","7008","AP_SignIn",true),
AP_Query_Line_SignIn("[在线签到]查询已挂号未签到记录","7009","AP_Query_LineSignIn",true),
AP_Line_SignIN("[在线签到]执行挂号患者签到","7010","AP_LineSignIn",true),
;

@ -1,6 +1,7 @@
package com.ynxbd.common.helper.his;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.enums.HospEnum;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.helper.ProperHelper;
@ -20,6 +21,7 @@ import org.dom4j.Node;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
public class HisHelper {
@ -253,8 +255,13 @@ public class HisHelper {
}
}
if(MiddleOfficeConfig.MIDDLE_OFFICE_URL!=null){ //平台数据上传
MiddleOfficeConfig.run(soapUrl,"<Request>" + SoapHelper.requestParams("HIS", params) + "</Request>",HIS_SOAP_MD_URL,transactionCode,result);
if(HospEnum.isHosp(HospEnum.红河州人民医院)){
if(MiddleOfficeConfig.MIDDLE_OFFICE_URL!=null){ //平台数据上传
MiddleOfficeConfig.run(soapUrl,"<Request>" + SoapHelper.requestParams("HIS", params) + "</Request>",HIS_SOAP_MD_URL,transactionCode,result);
if("7004".equals(transactionCode)&&JsonResult.xmlToBean(result, JsonResultEnum.SYS_HIS)!=null){
MiddleOfficeConfig.uploadTreatNum("JH0104", Objects.requireNonNull(JsonResult.xmlToBean(result, JsonResultEnum.SYS_HIS)).getDataMapString("MZNum"));
}
}
}
} catch (DocumentException e) {

@ -16,10 +16,8 @@ import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Getter
@ -465,4 +463,11 @@ public class JsonResult {
return JsonHelper.parseObject(result);
}
// public static void main(String[] args) {
// String test = "<?xml version=\"1.0\" encoding=\"GB2312\"?><Response><TransactionCode>7009</TransactionCode><ResponseCode>0</ResponseCode><ResponseMessage>成功</ResponseMessage><Items><Item><MZNum>3605059</MZNum><PatientId>297520</PatientId><PatientName>余艳聪</PatientName><DeptCode>0312</DeptCode><DeptName>心病科</DeptName><DoctCode>0721</DoctCode><DoctName>李曰富</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>14:42:00</BegTime><EndTime>14:45:00</EndTime><RegistDate>2024-12-10 12:36:20</RegistDate></Item><Item><MZNum>3605213</MZNum><PatientId>411671</PatientId><PatientName>杨丽麟</PatientName><DeptCode>2101</DeptCode><DeptName>精神科(神志病科)</DeptName><DoctCode>0970</DoctCode><DoctName>付丽娜</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>15:57:00</BegTime><EndTime>16:00:00</EndTime><RegistDate>2024-12-10 14:55:11</RegistDate></Item><Item><MZNum>3605216</MZNum><PatientId>821300</PatientId><PatientName>段贵成</PatientName><DeptCode>1201</DeptCode><DeptName>口腔科</DeptName><DoctCode></DoctCode><DoctName>任意医师</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>14:51:00</BegTime><EndTime>14:58:00</EndTime><RegistDate>2024-12-10 14:56:29</RegistDate></Item><Item><MZNum>3605336</MZNum><PatientId>679882</PatientId><PatientName>段李情</PatientName><DeptCode>1201</DeptCode><DeptName>口腔科</DeptName><DoctCode>1599</DoctCode><DoctName>唐德芝</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>15:42:00</BegTime><EndTime>15:45:00</EndTime><RegistDate>2024-12-10 15:42:31</RegistDate></Item><Item><MZNum>3605339</MZNum><PatientId>509469</PatientId><PatientName>李进才</PatientName><DeptCode>0403</DeptCode><DeptName>骨伤科</DeptName><DoctCode>1272</DoctCode><DoctName>沈自启</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>17:27:00</BegTime><EndTime>17:30:00</EndTime><RegistDate>2024-12-10 15:44:00</RegistDate></Item><Item><MZNum>3605381</MZNum><PatientId>372552</PatientId><PatientName>思安翠</PatientName><DeptCode>0403</DeptCode><DeptName>骨伤科</DeptName><DoctCode>1272</DoctCode><DoctName>沈自启</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>16:03:00</BegTime><EndTime>16:06:00</EndTime><RegistDate>2024-12-10 16:00:41</RegistDate></Item><Item><MZNum>3605454</MZNum><PatientId>811419</PatientId><PatientName>胡铭城</PatientName><DeptCode>1102</DeptCode><DeptName>眼耳鼻喉科</DeptName><DoctCode>1254</DoctCode><DoctName>安兴有</DoctName><ScheduleDate>2024-12-10</ScheduleDate><BegTime>16:33:26</BegTime><EndTime>16:36:00</EndTime><RegistDate>2024-12-10 16:35:04</RegistDate></Item></Items></Response>";
// JsonResult jsonResult = JsonResult.xmlToBean(test,JsonResultEnum.SYS_HIS);
// JSONArray jsonArray = jsonResult.getJsonArray("Items","Item");
// System.out.println(jsonArray.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), "509469")).collect(Collectors.toList ()));
// }
}

@ -94,6 +94,7 @@ public enum ResultEnum {
// 挂号
REG_TODAY_HAS(38100, "[挂号]同一天,同一科室,已挂过号"),
REG_OCCUPY_SOURCE(38101, "[挂号]号源已被占用"),
REG_NOT_FIND(38102,"[退号]未查询到挂号支付信息;若是医保支付则不允许线上退号,请到窗口进行退费"),
SELF_HELP_EXCEED_MAX(38190, "[自助申请单]今日检测数量已达最大限制"),
// 处方
RECIPE_REPEAT_BILL(38200, "[处方]重复开单"), // 核酸重复开单提示-不要动

@ -406,7 +406,7 @@ public class MedicalService {
}
if (recipeDao.updateMerPaidByTradeNo(tradeNo, bankTransNo)) {
log.info("{} [处方]更新商户信息失败 outTradeNo={}, bankTransNo={}", merchantEnum.NAME, outTradeNo, bankTransNo);
log.info("{} [处方]更新商户信息成功 outTradeNo={}, bankTransNo={}", merchantEnum.NAME, outTradeNo, bankTransNo);
}
JsonResult jsonResult = HisMedicalDao.mdPay(mdUserId, payDate, payTime, tradeNo, bankTransNo, cashFee);

@ -322,6 +322,10 @@ public class RecipeService {
// 体检缴费失败的所有费用进行退回
if (recipeInfo.isRefund()) {
failedList = recipeList;
for (Recipe failed : failedList){
failed.setErrorCode(recipeInfo.getErrorCode());
failed.setErrorMsg(recipeInfo.getErrorMsg());
}
}
break;
}

@ -20,11 +20,9 @@ import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.common.SmsHelper;
import com.ynxbd.common.helper.his.HisHelper;
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 com.ynxbd.common.result.*;
import com.ynxbd.wx.config.MessagePushConfig;
import com.ynxbd.wx.config.MiddleOfficeConfig;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.utils.DateGenerate;
import com.ynxbd.wx.wxfactory.WxMedicalHelper;
@ -37,6 +35,7 @@ import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* 挂号业务层
@ -175,6 +174,7 @@ public class RegService {
jsonResult = new HisRegisterDao().handleTimeReg(reg, merchantEnum);
if (jsonResult.success()) {
hisTransNo = jsonResult.getDataMapString("HISTransNo");
treatNum = jsonResult.getDataMapString("MZNum"); // 门诊号
hisQueueNo = jsonResult.getDataMapString("QueueNo"); // 排队号
invoiceTransNo = jsonResult.getDataMapString("InvoiceTransNo"); // 发票流水号
@ -361,20 +361,21 @@ public class RegService {
log.info("[挂号]短信通知:openid为空");
}
SmsRegTem sms = new SmsRegTem();
sms.setTime(date + " " + begTime + "-" + endTime);
sms.setAddress(reg.getAddress());
sms.setDeptName(reg.getDeptName());
sms.setDoctorName(reg.getDoctName());
sms.setSeq(reg.getQueueNum());
boolean isResult = false;
if (HospEnum.isHosp(HospEnum.德宏州中医医院)) {
SmsRegTem sms = new SmsRegTem();
sms.setHosp_tel("0692-2991794");
sms.setTime(date + " " + begTime + "-" + endTime);
sms.setAddress(reg.getAddress()==null?"":reg.getAddress().replace(" ","").replace("(","(").replace(")",")"));
sms.setDeptName(reg.getDeptName());
sms.setDoctorName(reg.getDoctName());
sms.setSeq(reg.getQueueNum());
sms.setHosp_tip("提前15分钟到医院门诊各导医服务台签到后排队候诊");
log.info("[挂号]发送预约短信通知 sms={}, appId={}, tel-{}", JsonHelper.toJsonString(sms), WeChatConfig.APP_ID, tel);
isResult = SmsHelper.send("SMS_262510249", tel, sms);
isResult = SmsHelper.send("SMS_475980406", tel, sms);
}
return isResult;
}
@ -472,9 +473,11 @@ public class RegService {
Register reg = new RegisterDao().selectRegByHisTransNo(hisTransNo);
if (reg == null) {
log.info("[今日挂号][取消预约]失败, 未查询到挂号支付信息;若是医保支付不允许线上退费,请到窗口进行退费");
return Result.error(ResultEnum.DATA_NOT_FOUND);
log.info("[今日挂号][取消预约]失败, 未查询到挂号支付信息;若是医保支付则不允许线上退号,请到窗口进行退费");
return Result.error(ResultEnum.REG_NOT_FIND);
}
String tradeNo = reg.getTradeNo();
String outTradeNo = reg.getOutTradeNo();
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
@ -501,6 +504,12 @@ public class RegService {
return Result.error("支付方式未匹配 outTradeNo=" + outTradeNo);
}
if(HospEnum.isHosp(HospEnum.红河州人民医院)) {
if (MiddleOfficeConfig.MIDDLE_OFFICE_URL != null) {
MiddleOfficeConfig.uploadTreatNum("JH0105", reg.getTreatNum());
}
}
log.info("{}[今日挂号][取消预约]开始退款:outTradeNo={}, dbTradeNo={}, payMoney={}", merchantEnum.NAME, outTradeNo, dbTradeNo, payMoney);
String pushInfo = "取消预约 科室:" + reg.getDeptName();

@ -10,10 +10,12 @@ import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.JsonResultEnum;
import com.ynxbd.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -36,12 +38,19 @@ public class MeTechnologyReConfig {
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
static {
ProperHelper config = new ProperHelper().read("medical-technology-reserve.properties");
MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = config.getString("medical_technology_reserve_webservice_url");
MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = config.getString("medical_technology_reserve_terminal_no");
MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = config.getString("medical_technology_reserve_test_patientId");
MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = config.getString("medical_technology_reserve_json_url");
if (config ==null){
MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = null;
MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = null;
MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = null;
MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = null;
}
else {
MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = config.getString("medical_technology_reserve_webservice_url");
MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = config.getString("medical_technology_reserve_terminal_no");
MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = config.getString("medical_technology_reserve_test_patientId");
MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = config.getString("medical_technology_reserve_json_url");
}
}
public static void reserveRun(String patientId){
@ -93,7 +102,7 @@ public class MeTechnologyReConfig {
* 预约平台提供终端调用主要用来获取患者申请单列表用于预约改约
* @return 根据患者身份获得开立检查单情况
*/
public static List<BookOrder> getCanBookOrders(String patientId,String startDate,String endDate){
public static Result getCanBookOrders(String patientId,String startDate,String endDate){
Map<String, String> params = new HashMap<>();
params.put("PatientId", patientId);
params.put("StartDate", startDate);
@ -108,13 +117,13 @@ public class MeTechnologyReConfig {
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] patientId-{},startDate-{},endDate-{} 获取患者申请信息失败,result-{}",patientId,startDate,endDate,result);
return null;
return Result.error();
}
if(!"0".equals(jsonObject.getString("ResultCode"))){
log.info("[天助预约平台] 获取患者申请信息失败,失败原因-{}",jsonObject.getString("ResultContent"));
return null;
return Result.error(jsonObject.getString("ResultCode"));
}
return jsonObject.getJSONArray("OrderLists").toJavaList(BookOrder.class);
return Result.success(jsonObject.getJSONArray("OrderLists").toJavaList(BookOrder.class));
}
/**
@ -126,7 +135,7 @@ public class MeTechnologyReConfig {
* @param intervalTimeType 上午或者下午
* @return 日期范围获得可使用资源概况
*/
public static List<NumberSourceStatistics> getNumberSourceStatistics(String patientId, String startDate, String endDate, String docDetailedNo, String intervalTimeType){
public static Result getNumberSourceStatistics(String patientId, String startDate, String endDate, String docDetailedNo, String intervalTimeType){
Map<String, String> params = new HashMap<>();
params.put("PatientId", patientId);
params.put("StartDate", startDate);
@ -142,13 +151,13 @@ public class MeTechnologyReConfig {
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] patientId-{},startDate-{},endDate-{},docDetailedNo-{},intervalTimeType-{} 根据日期范围获得可使用资源概况失败,result-{}",patientId,startDate,endDate,docDetailedNo,intervalTimeType,result);
return null;
return Result.error();
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 根据日期范围获得可使用资源概况失败,失败原因-{}",jsonObject.getString("resultContent"));
return null;
return Result.error(jsonObject.getString("resultCode"));
}
return jsonObject.getJSONArray("numberSourceStatisticsApplyDTO").toJavaList(NumberSourceStatistics.class);
return Result.success(jsonObject.getJSONArray("numberSourceStatisticsApplyDTO").toJavaList(NumberSourceStatistics.class));
}
/**
@ -159,7 +168,7 @@ public class MeTechnologyReConfig {
* @param appFromID 医嘱申请单号
* @return 号池明细信息
*/
public static List<NumberSourceDetails> getNumberSourceDetails(String examRoomOrQueue, String startDate, String endDate, String appFromID){
public static Result getNumberSourceDetails(String examRoomOrQueue, String startDate, String endDate, String appFromID){
JSONObject jsonParams = new JSONObject();
jsonParams.put("examRoomOrQueue",examRoomOrQueue);
@ -174,13 +183,13 @@ public class MeTechnologyReConfig {
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, 获取号池明细失败,result-{}",examRoomOrQueue,startDate,endDate,appFromID,result);
return null;
return Result.error();
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 获取号池明细失败,失败原因-{}",jsonObject.getString("resultContent"));
return null;
return Result.error(jsonObject.getString("resultCode"));
}
return jsonObject.getJSONArray("numPoolDetailsDTOList").toJavaList(NumberSourceDetails.class);
return Result.success(jsonObject.getJSONArray("numPoolDetailsDTOList").toJavaList(NumberSourceDetails.class));
}
/**
@ -215,30 +224,33 @@ public class MeTechnologyReConfig {
return true;
}
public static BookedInfo getBookedDateTime(String appFormID,String examRoomOrQueue,String beginDateTime,String endDateTime,String patientId,String patientName){
public static Result getBookedDateTime(String appFormID, String examRoomOrQueue, String beginDateTime, String endDateTime, String patientId, String patientName){
Map<String,String> param = new HashMap<>();
param.put("AppFormID",appFormID);
param.put("ExamRoomOrQueue",examRoomOrQueue);
param.put("BeginDateTime",beginDateTime);
param.put("EndDateTime",endDateTime);
List<Map<String,String>> paramList = new ArrayList<>();
paramList.add(param);
Map<String,Object> params = new HashMap<>();
params.put("BookedDateTimeDTOList",param);
params.put("BookedDateTimeDTOList",paramList);
params.put("ScheduleUserId",patientId);
params.put("ScheduleUser",patientName);
RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params));
log.info("[天助预约平台] 确定预约json={}",JsonHelper.toProJsonString(params));
RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toProJsonString(params));
String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetBookedDateTime",requestBody,headers -> {
headers.add("token",getToken());
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, patientId-{},patientName-{}, 提交预约具体时间失败,result-{}",examRoomOrQueue,beginDateTime,endDateTime,appFormID,patientId,patientName,result);
return null;
return Result.error();
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 提交预约具体时间失败,失败原因-{}",jsonObject.getString("resultContent"));
return null;
return Result.error(jsonObject.getString("resultCode"));
}
return jsonObject.getJSONArray("bookedInfos").toJavaList(BookedInfo.class).get(0);
return Result.success(jsonObject.getJSONArray("bookedInfos").toJavaList(BookedInfo.class).get(0));
}

@ -24,6 +24,7 @@ public class MiddleOfficeConfig {
}
// 佳禾美康数据上传链接
public static final String MIDDLE_OFFICE_URL;
public static final String MIDDLE_OFFICE_URL_ESB;
public static final String MIDDLE_OFFICE_HOSPITAL;
public static final String MIDDLE_OFFICE_ITEM_NAME;
@ -33,6 +34,7 @@ public class MiddleOfficeConfig {
ProperHelper config = new ProperHelper().read("middle-office.properties");
MIDDLE_OFFICE_URL = config.getString("middle_office_url");
MIDDLE_OFFICE_HOSPITAL = config.getString("middle_office_hospital");
MIDDLE_OFFICE_URL_ESB = config.getString("middle_office_url_esb");
MIDDLE_OFFICE_ITEM_NAME = config.getString("middle_office_item_name");
}
@ -68,7 +70,6 @@ public class MiddleOfficeConfig {
interfaceName=isMD?"JH1420R":"JH1409R";
break;
case "3006":
case "4007":
interfaceName = "JH1410R";
break;
case "10":
@ -88,7 +89,7 @@ public class MiddleOfficeConfig {
public static void upload(String interfaceName,String jsonData){
try {
log.info("[平台数据上传]开始,interfaceName:{},jsonData:{}",interfaceName,jsonData);
// log.info("[平台数据上传]开始,interfaceName:{},jsonData:{}",interfaceName,jsonData);
if("".equals(interfaceName)||"".equals(jsonData)||interfaceName==null||jsonData==null){
return;
}
@ -127,7 +128,7 @@ public class MiddleOfficeConfig {
@Override
public void onResponse(Call call, Response response) { //不在ui线程
log.info("[平台数据上传]成功 状态码:{},interfaceName:{},jsonData:{}",response.code(),interfaceName,jsonData);
// log.info("[平台数据上传]成功 状态码:{},interfaceName:{},jsonData:{}",response.code(),interfaceName,jsonData);
}
});
}
@ -136,4 +137,53 @@ public class MiddleOfficeConfig {
}
}
public static void uploadTreatNum(String interfaceName,String treatNum){
try {
log.info("[平台数据上传]开始,interfaceName:{},treatNum:{}",interfaceName,treatNum);
if("".equals(interfaceName)||"".equals(treatNum)||interfaceName==null||treatNum==null){
return;
}
JSONObject json = new JSONObject();
JSONObject head = new JSONObject();
JSONObject body = new JSONObject();
head.put("hospital",MIDDLE_OFFICE_HOSPITAL);
head.put("itemName","微信");
head.put("interface",interfaceName);
body.put("opc_id",treatNum);
json.put("head",head);
json.put("body",body);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), String.valueOf(json));
Headers headers = new Headers.Builder()
.add("Content-Type", "application/json")
.build();
Request request = new Request.Builder()
.url(MIDDLE_OFFICE_URL_ESB)
.post(requestBody)
.headers(headers)
.build();
OkHttpClient okHttpClient = new OkHttpClient();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
log.error("[平台数据上传]上传失败,head:{},body:{},url:{}",head,body,MIDDLE_OFFICE_URL_ESB);
}
@Override
public void onResponse(Call call, Response response) { //不在ui线程
log.info("[平台数据上传]成功 状态码:{},head:{},body:{},url:{}",response.code(),head,body,MIDDLE_OFFICE_URL_ESB);
}
});
}
catch (Exception e){
log.error("[平台数据上传]执行失败,interfaceName:{},treatNum:{},error:{}",interfaceName,treatNum,e.toString());
}
}
}

@ -63,6 +63,11 @@ public class QServlet extends HttpServlet {
patientId = "0"; //patientId 赋值0
}
if (patientId.contains(".") || patientId.contains("/") || patientId.contains("http")) {
log.info("[支付] 多张扫码请求 参数无效");
return;
}
if (MerchantEnum.WX.equals(merchantEnum)) {
response.sendRedirect(WeChatConfig.getWebUrl() + "pay-qr-recipe.html?p=" + patientId + "&enp=" + ReqParamHelper.encode(patientId)+ "&ent=" + request.getParameter("t"));
}

@ -20,7 +20,7 @@ public class DesEncryptHelper {
public static void main(String[] args) {
String s = enCode("oeso-t62kkoRwLVVkSkwmmjPfUXk");
String a= deCode("0F458085FBA567B4D3DD765FBE368DF9C2CD2F13C9166A2584728882EE9C8121DC394566C048C31C08411BEBFF000B4D58BCCD6B36FB6089ED5313608851AF7CD0D296DD7C67F6517668E1E6217B5F26DD44D9B0A548C6160D457F507F7443C15C33D6AA8241FEE9B32C081570BFB6DE1B94F00DA5DDB0B3BB9F1BB619CB1952180BA3FAA56BE470");
String a= deCode("2235AE2E1563DF971CBF4C3F2D4DC06F1D0AA3BF5EA65B865C5DF0E0694DF3FFBA5360D9607A60F80CC71F9C7D7E8F241E00310C63D5C5B414D5FEB43A0B2E7A2AA335CD601DB3727BAF0DFEDB48388CFEA7A8301CDEAA42817F7316E6CBF0B7AC2671148FCA0E2DA337CF664C0C4FD85F7D799D496125D2186D82889E6B81D25107616591DDC46D");
System.out.println(a);
}

@ -21,7 +21,7 @@ public class ReqParamHelper {
}
public static void main(String[] args) {
System.out.println(encode("472760"));
System.out.println(decode("0F458085FBA567B4D3DD765FBE368DF9C2CD2F13C9166A2584728882EE9C8121DC394566C048C31C08411BEBFF000B4D58BCCD6B36FB6089ED5313608851AF7CD0D296DD7C67F6517668E1E6217B5F26DD44D9B0A548C6160D457F507F7443C15C33D6AA8241FEE9B32C081570BFB6DE1B94F00DA5DDB0B3BB9F1BB619CB1952180BA3FAA56BE470"));
System.out.println(encode("164649"));
System.out.println(decode("1D9BD9BA3A6DC0A9B40BE40234497596"));
}
}

@ -42,7 +42,7 @@ public class WxMedicalHelper {
if (cardNo != null) {
String meCardNo = info.getCardNo();
if (meCardNo != null && !cardNo.equals(meCardNo)) {
if (meCardNo != null && !cardNo.equalsIgnoreCase(meCardNo)) {
String tip = null;
if (realName != null) {
String userName = info.getUserName();
@ -236,6 +236,7 @@ public class WxMedicalHelper {
}
/**
* [医保]获取授权链接
*/

@ -35,6 +35,8 @@ public class Client {
return MdConfig.getConfigUrl(url);
}
/**
* 微信医保下单
*

@ -85,6 +85,7 @@ public class MdConfig {
}
private static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {

@ -345,33 +345,42 @@ public class WxPassiveReplyHelper {
respInfo = "您好,您可以拨打投诉电话:0888-5112778或行政值班电话:0888-5115602进行投诉";
} else if (content.contains("电话")) {
respInfo = "玉龙县人民医院行政值班电话:0888-5115602\n" +
"外一科(泌尿外科):0888-5156546\n" +
"外二科(普通外科、乳腺外科):0888-5172791\n" +
"外三科(骨科、神经外科):0888-5129570\n" +
"外四科(胸心血管外科):0888-5172632\n" +
"内一科(神经内分泌科):0888-5123615\n" +
"内二科(心血管内科):0888-5163257\n" +
"内三科(消化内科):0888-5179785\n" +
"内四科(感染性疾病科):0888-5102655\n" +
"内五科(呼吸与危重症医学科):0888-5390632\n" +
"中医科:0888-5110125\n" +
"妇产科:0888-5180763\n" +
"儿科:0888-5110667\n" +
"麻醉手术科:0888-5186925\n" +
"重症医学科:0888-5108252\n" +
"康复科:0888-5169002\n" +
"老年医学科:0888-5169002\n" +
"眼耳鼻喉科:0888-5186747\n" +
"急诊科:0888-5186934\n" +
"口腔科:0888-5179715\n" +
"体检科:0888-5182024\n" +
"医学检验科:0888-5180762\n" +
"超声医学科:0888-5116254\n" +
"医学影像科:0888-5187393\n" +
"药学部:0888-5122672\n" +
"内镜中心:0888-5304137\n" +
"临床营养科:0888-5135525\n";
respInfo =
"玉龙县人民医院行政值班电话:0888-5115602\n" +
"神经内科、内分泌科、血液内科、风湿免疫科(内一科):0888-5123615\n" +
"心血管内科、心电图室(内二科):0888-5163257\n" +
"消化内科、肿瘤科(内三科):0888-5179785\n" +
"感染性疾病科(内四科):0888-5102655\n" +
"呼吸与危重症医学科(内五科):0888-5390632\n" +
"泌尿外科(外一科):0888-5156546\n" +
"普通外科(外二科):0888-5172791\n" +
"骨科、神经外科(外三科):0888-5129570\n" +
"胸外科、心脏大血管外科、乳腺外科(外四科):0888-5172632\n" +
"急诊医学科:0888-5186934\n" +
"麻醉科、手术室(手术麻醉科):0888-5186925\n" +
"妇产科:0888-5180763\n" +
"儿科:0888-5110667\n" +
"眼科、耳鼻咽喉科:0888-5186747\n" +
"口腔科(门诊):0888-5179715\n" +
"健康体检管理中心咨询电话:0888-5182024\n" +
"中医科:0888-5110125\n" +
"康复医学科(高压氧治疗室):0888-5169002\n" +
"重症医学科:0888-5108252\n" +
"老年医学科、肾内科:0888-5169002\n" +
"医学检验科:0888-5180762\n" +
"临床营养科:0888-5135525\n" +
"病理科:0888-5127597\n" +
"医学影像科:0888-5187393\n" +
"超声医学科:0888-5116254\n" +
"内镜中心:0888-5304137\n" +
"药剂科:0888-5122672\n" +
"党委办公室:0888-5110767\n" +
"行政办公室:0888-5112778\n" +
"医疗事务部:0888-5109120\n" +
"护理部:0888-5122871\n" +
"感染管理部:0888-5115466\n" +
"采购管理部:0888-5307952\n" +
"后勤保障部:0888-5107111";
} else if (content.contains("体检")) {
respInfo = "您好,您可以拨打体检科电话:0888-5182024进行详细咨询";

@ -1,3 +1,4 @@
middle_office_url= http://10.255.248.20:9095/proxy/
middle_office_hospital = 红河州第一人民医院
middle_office_item_name = 嘉和美康
middle_office_url_esb= http://10.255.248.20:8082/api/esb/
middle_office_hospital = \u7ea2\u6cb3\u5dde\u7b2c\u4e00\u4eba\u6c11\u533b\u9662
middle_office_item_name = \u5609\u548c\u7f8e\u5eb7

@ -1,3 +1,14 @@
xbd.out_team_cloud_film_link= http://192.168.10.43:3307/wx3307
xbd.medical_record_remake_url = http://192.168.12.66:8081
xbd.peis = http://192.168.12.102:3000/peisReserve
#location /wx3303{
#proxy_pass http://10.20.11.60:3303;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header Host $host;
#proxy_set_header Upgrade-Insecure-Requests 1;
#proxy_set_header X-Forwarded-Proto https;
#}
Loading…
Cancel
Save