电子健康卡逻辑合并,接口调整

debug
王绍全 5 days ago
parent a7ff76d890
commit 6134677d20
  1. 2
      src/main/java/com/ynxbd/ali/helper/AliHelper.java
  2. 124
      src/main/java/com/ynxbd/common/action/HealthCardAction.java
  3. 248
      src/main/java/com/ynxbd/common/action/HealthCodeAction.java
  4. 50
      src/main/java/com/ynxbd/common/action/PatientAction.java
  5. 16
      src/main/java/com/ynxbd/common/bean/enums/HCardTypeEnum.java
  6. 64
      src/main/java/com/ynxbd/common/config/EhCacheConfig.java
  7. 18
      src/main/java/com/ynxbd/common/config/HealthCardConfig.java
  8. 2
      src/main/java/com/ynxbd/common/dao/his/HisPatientDao.java
  9. 465
      src/main/java/com/ynxbd/common/helper/HealthCardHelper.java
  10. 11
      src/main/java/com/ynxbd/common/service/GMCService.java
  11. 58
      src/main/java/com/ynxbd/common/service/HCodeService.java
  12. 30
      src/main/java/com/ynxbd/common/service/HealthUploadService.java

@ -110,7 +110,7 @@ public class AliHelper {
user.setNickName(response.getNickName());
user.setCity(response.getCity());
user.setIdCardNo(response.getCertNo());
HCardTypeEnum cardTypeEnum = HCardTypeEnum.toTypeByAliCode(response.getCertType());
HCardTypeEnum cardTypeEnum = HCardTypeEnum.findByAliCode(response.getCertType());
user.setCardTypeEnum(cardTypeEnum);
user.setTel(response.getMobile());

@ -3,27 +3,20 @@ package com.ynxbd.common.action;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.Patient;
import com.ynxbd.common.bean.User;
import com.ynxbd.common.bean.enums.HCardTypeEnum;
import com.ynxbd.common.bean.enums.HealthCardEnum;
import com.ynxbd.common.bean.enums.HealthCardRespCodeEnum;
import com.ynxbd.common.bean.enums.HealthCardSceneEnum;
import com.ynxbd.common.config.interceptor.AesDecode;
import com.ynxbd.common.dao.PatientDao;
import com.ynxbd.common.helper.HealthCardHelper;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.IDNumberHelper;
import com.ynxbd.common.helper.common.ValidHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.service.PatientService;
import com.ynxbd.wx.wxfactory.AesWxHelper;
import com.ynxbd.wx.wxfactory.WxCacheHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.ehcache.Cache;
@Slf4j
@Namespace("/health_card")
@ -33,10 +26,10 @@ public class HealthCardAction extends BaseAction {
* [电子健康卡]绑卡验证授权
*/
@Action("registerHealthCardPreAuth")
public Result registerHealthCardPreAuth(Boolean isMiniApp, Integer patientType, String wechatCode, String enHisPatientId) {
public Result registerHealthCardPreAuth(Boolean isMiniApp, @AesDecode String openid, Integer patientType, String wechatCode, String enHisPatientId) {
try {
log.info("[电子健康卡]绑卡验证授权 isMiniApp={}, patientType={}, wechatCode={}, enHisPatientId={}", isMiniApp, patientType, wechatCode, enHisPatientId);
if (wechatCode == null) {
log.info("[电子健康卡]绑卡验证授权 isMiniApp={}, openid={}, patientType={}, wechatCode={}, enHisPatientId={}", isMiniApp, openid, patientType, wechatCode, enHisPatientId);
if (wechatCode == null || openid == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (!ObjectUtils.isEmpty(enHisPatientId)) {
@ -45,7 +38,7 @@ public class HealthCardAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
}
JSONObject result = HealthCardHelper.registerHealthCardPreAuth(isMiniApp, false, patientType, wechatCode, enHisPatientId);
JSONObject result = HealthCardHelper.registerHealthCardPreAuth(isMiniApp, openid, false, patientType, wechatCode, enHisPatientId);
return Result.success(result);
} catch (Exception e) {
return Result.error(e);
@ -58,9 +51,15 @@ public class HealthCardAction extends BaseAction {
*/
@Action("registerHealthCardPreFill")
public Result registerHealthCardPreFill(Boolean isMiniApp, @AesDecode String openid, String authCode, String name, String gender, String nation, String birthday, String idNumber, String phone) {
log.info("[电子健康卡]验证注册/绑卡接口 isMiniApp={}, authCode={}, name={}, openid={}", isMiniApp, authCode, name, openid);
JSONObject result = HealthCardHelper.registerHealthCardPreFill(isMiniApp, authCode, name, gender, nation, birthday,
idNumber, HCardTypeEnum._01, phone);
log.info("[电子健康卡]验证注册/绑卡接口 isMiniApp={}, openid={}, authCode={}, name={}", isMiniApp, openid, authCode, name);
if (openid == null || authCode == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (name == null || gender == null || nation == null || birthday == null || idNumber == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
JSONObject result = HealthCardHelper.registerHealthCardPreFill(isMiniApp, openid, authCode, name, gender, nation, birthday, idNumber, HCardTypeEnum._01, phone);
if (result == null) {
return Result.error();
}
@ -74,7 +73,7 @@ public class HealthCardAction extends BaseAction {
public Result getHealthCardByHealthCode(Boolean isMiniApp, @AesDecode String openid, String healthCode) {
try {
log.info("[电子健康卡]健康卡授权码获取健康卡信息 isMiniApp={}, openid={}, 健康卡授权码={}", isMiniApp, openid, healthCode);
Patient patient = HealthCardHelper.getHealthCardByHealthCode(isMiniApp, healthCode);
Patient patient = HealthCardHelper.getHealthCardByHealthCode(isMiniApp, openid, healthCode);
return Result.success(patient);
} catch (Exception e) {
return Result.error(e);
@ -82,13 +81,13 @@ public class HealthCardAction extends BaseAction {
}
/**
* [电子健康卡]获取建档信息接口[]
* [电子健康卡]获取建档信息接口
*/
@Action("getRegInfoByCode")
public Result getRegInfoByCode(Boolean isMiniApp, @AesDecode String openid, String regInfoCode) {
try {
log.info("[电子健康卡]获取建档信息接口 isMiniApp={}, openid={}, 建档授权码={}", isMiniApp, openid, regInfoCode);
Patient patient = HealthCardHelper.getRegInfoByCode(isMiniApp, regInfoCode);
Patient patient = HealthCardHelper.getRegInfoByCode(isMiniApp, openid, regInfoCode);
return Result.success(patient);
} catch (Exception e) {
return Result.error(e);
@ -105,7 +104,7 @@ public class HealthCardAction extends BaseAction {
if (image == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
Patient patient = HealthCardHelper.orcInfo(image);
Patient patient = HealthCardHelper.orcInfo(openid, image);
return Result.success(patient);
} catch (Exception e) {
return Result.error(e);
@ -121,14 +120,15 @@ public class HealthCardAction extends BaseAction {
* @param healthCardId 健康卡ID
*/
@Action("getDynamicQRCode")
public Result getDynamicQRCode(Boolean isMiniApp, @AesDecode String idCardNo, String healthCardId) {
log.info("[电子健康卡]获取二维码 healthCardId={}", healthCardId);
if (healthCardId == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数缺失
}
public Result getDynamicQRCode(Boolean isMiniApp, @AesDecode String openid, @AesDecode String idCardNo, String healthCardId) {
try {
log.info("[电子健康卡]获取二维码 isMiniApp={}, openid={}, healthCardId={}", isMiniApp, openid, healthCardId);
JSONObject result = HealthCardHelper.getDynamicQRCode(isMiniApp, healthCardId, idCardNo, "0");
return result == null ? Result.error() : Result.success(result);
JSONObject result = HealthCardHelper.getDynamicQRCode(isMiniApp, openid, healthCardId, idCardNo, "0");
return Result.success(result);
} catch (Exception e) {
return Result.error(e);
}
}
/**
@ -151,8 +151,7 @@ public class HealthCardAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
if (cardType == null) cardType = HCardTypeEnum._01.WX_CODE;
HCardTypeEnum cardTypeEnum = HCardTypeEnum.toTypeByWxCode(cardType);
HCardTypeEnum cardTypeEnum = HCardTypeEnum.findByWxCode(cardType, HCardTypeEnum._01);
if (cardTypeEnum == null) {
return Result.error(ResultEnum.CARD_TYPE_NOT_FOUNT);
}
@ -195,51 +194,45 @@ public class HealthCardAction extends BaseAction {
}
@Action("getCardOrderId")
public Result getCardOrderId(Boolean isMiniApp, @AesDecode String idCardNo, String healthCardId) {
log.info("[电子健康卡]获取卡包订单ID healthCardId={}, idCardNo={}", healthCardId, idCardNo);
if (healthCardId == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数缺失
}
String qrCodeText = HealthCardHelper.getQRCodeText(isMiniApp, healthCardId, idCardNo);
if (qrCodeText == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // qrCodeText参数缺失
}
JSONObject result = HealthCardHelper.getOrderIdByOutAppId(isMiniApp, qrCodeText);
if (result == null) {
return Result.error();
public Result getCardOrderId(Boolean isMiniApp, @AesDecode String openid, @AesDecode String idCardNo, String healthCardId) {
try {
log.info("[电子健康卡]获取卡包订单ID openid={}, healthCardId={}, idCardNo={}", openid, healthCardId, idCardNo);
String qrCodeText = HealthCardHelper.getQRCodeText(isMiniApp, openid, healthCardId, idCardNo);
JSONObject result = HealthCardHelper.getOrderIdByOutAppId(isMiniApp, openid, qrCodeText);
return Result.success(result);
} catch (Exception e) {
return Result.error(e);
}
return Result.success(result);
}
@Action("registerUniformVerifyOrder")
public Result registerUniformVerifyOrder(Boolean isMiniApp, String wechatCode, String sceneCode, String name, String idCardNo) {
log.info("[电子健康卡]实人认证生成orderId isMiniApp={}, wechatCode={}, sceneCode={}, name={}, idCardNo={}", isMiniApp, wechatCode, sceneCode, name, idCardNo);
if (idCardNo == null || name == null || wechatCode == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
}
HealthCardSceneEnum sceneEnum = HealthCardSceneEnum.findEnum(sceneCode);
if (sceneEnum == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
public Result registerUniformVerifyOrder(Boolean isMiniApp, @AesDecode String openid, String wechatCode, String sceneCode, String name, String idCardNo, String redirectPage, String redirectHash) {
try {
log.info("[电子健康卡]实人认证生成orderId isMiniApp={}, openid={}, wechatCode={}, sceneCode={}, name={}, idCardNo={}, redirectPage={}, redirectHash={}", isMiniApp, openid, wechatCode, sceneCode, name, idCardNo, redirectPage, redirectHash);
if (wechatCode == null || name == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
}
HealthCardSceneEnum sceneEnum = HealthCardSceneEnum.findEnum(sceneCode);
if (sceneEnum == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
JSONObject dataJson = HealthCardHelper.registerUniformVerifyOrder(isMiniApp, wechatCode, sceneEnum, name, idCardNo);
if (ObjectUtils.isEmpty(dataJson)) {
return Result.error();
JSONObject dataJson = HealthCardHelper.registerUniformVerifyOrder(isMiniApp, openid, wechatCode, sceneEnum, name, idCardNo, redirectPage, redirectHash);
return Result.success(dataJson);
} catch (Exception e) {
return Result.error(e);
}
return Result.success(dataJson);
}
@Action("checkUniformVerifyResult")
public Result checkUniformVerifyResult(Boolean isMiniApp, String orderId, String registerOrderId) {
log.info("[电子健康卡]实人认证结果查询 isMiniApp={}, orderId={}, registerOrderId={}", isMiniApp, orderId, registerOrderId);
if (orderId == null || registerOrderId == null) {
public Result checkUniformVerifyResult(Boolean isMiniApp, @AesDecode String openid, String orderId, String registerOrderId) {
log.info("[电子健康卡]实人认证结果查询 isMiniApp={}, openid={}, orderId={}, registerOrderId={}", isMiniApp, openid, orderId, registerOrderId);
if (openid == null || orderId == null || registerOrderId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
}
return Result.isOK(HealthCardHelper.checkUniformVerifyResult(isMiniApp, orderId, registerOrderId));
return Result.isOK(HealthCardHelper.checkUniformVerifyResult(isMiniApp, openid, orderId, registerOrderId));
}
/**
@ -251,17 +244,8 @@ public class HealthCardAction extends BaseAction {
* @param healthCardId 健康卡id
*/
@Action("reportHISData")
public Result reportHISData(String scene, @AesDecode String openid, @AesDecode String idCardNo, String healthCardId) {
if (scene == null || openid == null || healthCardId == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
String qrCodeText = HealthCardHelper.getQRCodeText(false, healthCardId, idCardNo);
if (qrCodeText == null) {
return Result.error(ResultEnum.INTERFACE_OUTER_INVOKE_ERROR);
}
JSONObject dataJson = HealthCardHelper.reportHISData(qrCodeText, null, scene, HealthCardEnum.CARD_TYPE_HEALTH_CARD.STATUS, null);
public Result reportHISData(@AesDecode String openid, @AesDecode String idCardNo, String healthCardId, String scene, String deptName) {
JSONObject dataJson = HealthCardHelper.reportHISData(openid, healthCardId, idCardNo, scene, deptName, null);
if (dataJson == null) {
return Result.error();
}

@ -6,12 +6,10 @@ import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.Patient;
import com.ynxbd.common.bean.User;
import com.ynxbd.common.bean.enums.HCardTypeEnum;
import com.ynxbd.common.bean.enums.HealthCardEnum;
import com.ynxbd.common.bean.enums.HealthCardRespCodeEnum;
import com.ynxbd.common.config.HealthCardConfig;
import com.ynxbd.common.config.interceptor.AesDecode;
import com.ynxbd.common.dao.PatientDao;
import com.ynxbd.common.dao.his.HisPatientDao;
import com.ynxbd.common.helper.HealthCardHelper;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.IDNumberHelper;
@ -41,149 +39,6 @@ import java.util.TimerTask;
@Namespace("/healthCode")
public class HealthCodeAction extends BaseAction {
/**
* [患者]查询信息
*/
@Action("getPatientByIdCardNo")
public Result getPatientByIdCardNo(@AesDecode String openid, @AesDecode String idCardNo) {
log.info("[电子健康卡]根据身份证和openId查询患者信息 openid={}, idCardNo={}", openid, idCardNo);
if (openid == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
Patient patient = new PatientDao().selectByIdCardNo(openid, idCardNo);
return Result.success(patient);
}
/**
* [电子健康卡]查询患者集
*/
@Action("getHealthCardList")
public Result getHealthCardList(@AesDecode String openid) {
log.info("[电子健康卡]查询患者集 openid={}", openid);
if (openid == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Patient> patients = new PatientDao().selectHealthCardListByOpenid(openid);
return Result.success(patients);
}
// @Action("appBindHealthCard")
// public Result appBindHealthCard(String openid, String healthCode) {
// log.info("[新版电子健康卡]H5嵌入链接绑卡-通过healthCode获取健康卡数据 healthCode={}, openid={}", healthCode, openid);
// if (healthCode == null || openid == null) return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
//
// Patient patient = HCodeService.appBindHealthCard(healthCode); // 通过健康卡授权码获取健康卡的用户信息
// if (patient == null) {
// log.info("[新版电子健康卡]H5嵌入链接绑卡 获取用户信息失败");
// return Result.error("[新版电子健康卡]H5嵌入链接绑卡 获取用户信息失败");
// }
// return Result.success(patient);
// }
/**
* 获取HIS地区编码信息
*/
@Action("getArea")
public Result getArea(Integer level, String areaCode) {
try {
return Result.success(new HisPatientDao().getArea(level, areaCode));
} catch (Exception e) {
return Result.error(e);
}
}
/**
* 获取token用于绑卡
*/
@Action("getAppToken")
public Result getAppToken(Boolean isMiniApp) {
String appToken = HealthCardConfig.getAppToken(isMiniApp, true);
return appToken == null ? Result.error() : Result.success();
}
/**
* [电子健康卡]通过二维码获取健康卡数据
*
* @param qrCode 二维码
*/
@Action("getHealthCardByQrCode")
public Result getHealthCardByQrCode(Boolean isMiniApp, String qrCode) {
log.info("[电子健康卡]通过二维码获取健康卡数据 isMiniApp={}, qrCode={}", isMiniApp, qrCode);
if (qrCode == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
Patient patient = HCodeService.getHealthCardByQrCode(isMiniApp, qrCode);
return patient == null ? Result.error() : Result.success(patient);
}
/**
* 获取健康卡二维码
*
* @param isMiniApp isMiniApp
* @param idCardNo 证件号码
* @param healthCardId 健康卡ID
* @return result
*/
@Action("getDynamicQRCode")
public Result getDynamicQRCode(Boolean isMiniApp, @AesDecode String idCardNo, String healthCardId) {
log.info("[电子健康卡]获取二维码 healthCardId={}, idCardNo={}", healthCardId, idCardNo);
if (healthCardId == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数缺失
}
JSONObject result = HealthCardHelper.getDynamicQRCode(isMiniApp, healthCardId, idCardNo, "0");
return result == null ? Result.error() : Result.success(result);
}
/**
* 获取卡包订单ID
*/
@Action("getCardOrderId")
public Result getCardOrderId(Boolean isMiniApp, @AesDecode String idCardNo, String healthCardId) {
log.info("[电子健康卡]获取卡包订单ID healthCardId={}, idCardNo={}", healthCardId, idCardNo);
if (healthCardId == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数缺失
}
String qrCodeText = HealthCardHelper.getQRCodeText(isMiniApp, healthCardId, idCardNo);
if (qrCodeText == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // qrCodeText参数缺失
}
JSONObject result = HealthCardHelper.getOrderIdByOutAppId(isMiniApp, qrCodeText);
return result == null ? Result.error() : Result.success(result);
}
/**
* 健康卡[上报数据]
*
* @param scene 上报类型编码
* @param openid openid -->1.前端可以利用openid来操作是否上报 2.防止非法调用
* @param idCardNo 身份证
* @param healthCardId 健康卡id
*/
@Action("reportHISData")
public Result reportHISData(String scene, String openid, @AesDecode String idCardNo, String healthCardId) {
if (scene == null || openid == null || healthCardId == null || idCardNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
String qrCodeText = HealthCardHelper.getQRCodeText(false, healthCardId, idCardNo);
if (qrCodeText == null) {
return Result.error(ResultEnum.INTERFACE_OUTER_INVOKE_ERROR);
}
JSONObject jsonObject = HealthCardHelper.reportHISData(qrCodeText, null, scene, HealthCardEnum.CARD_TYPE_HEALTH_CARD.STATUS, null);
if (jsonObject == null) {
return Result.error();
}
return Result.success();
}
/**
* [电子健康卡]患者绑定成人
@ -202,13 +57,13 @@ public class HealthCodeAction extends BaseAction {
}
if (isHealthCard && isFace) { // 实名认证
if (!HealthCardHelper.checkUniformVerifyResult(isMiniApp, orderId, registerOrderId)) {
if (!HealthCardHelper.checkUniformVerifyResult(isMiniApp, openid, orderId, registerOrderId)) {
return Result.error(ResultEnum.FACE_VERIFY_ERROR);
}
}
if (cardType == null) cardType = HCardTypeEnum._01.WX_CODE;
HCardTypeEnum cardTypeEnum = HCardTypeEnum.toTypeByWxCode(cardType);
HCardTypeEnum cardTypeEnum = HCardTypeEnum.findByWxCode(cardType);
if (cardTypeEnum == null) {
return Result.error(ResultEnum.CARD_TYPE_NOT_FOUNT);
}
@ -300,21 +155,8 @@ public class HealthCodeAction extends BaseAction {
}
@Action("getHealthCardInfo")
public Result getHealthCardInfo(Boolean isMiniApp, String openid, String healthCode) {
try {
log.info("[电子健康卡]健康卡授权码获取健康卡信息 isMiniApp={}, openid={}, 健康卡授权码={}", isMiniApp, openid, healthCode);
Patient patient = HealthCardHelper.getHealthCardByHealthCode(isMiniApp, healthCode);
return Result.success(patient);
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [升级绑定]-->已在HIS绑定-->注册健康卡
*
* [升级绑定]旧版-->已在HIS绑定-->注册健康卡
*/
@Action("upBind")
public Result upBind(String wechatCode, Integer id, @AesDecode String openid, @AesDecode String idCardNo, @AesDecode String hisPatientId, @AesDecode String epId, String cardType, String tel, String name, String nation, String address) {
@ -323,8 +165,7 @@ public class HealthCodeAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (cardType == null) cardType = HCardTypeEnum._01.WX_CODE;
HCardTypeEnum cardTypeEnum = HCardTypeEnum.toTypeByWxCode(cardType);
HCardTypeEnum cardTypeEnum = HCardTypeEnum.findByWxCode(cardType, HCardTypeEnum._01);
if (cardTypeEnum == null) {
return Result.error(ResultEnum.CARD_TYPE_NOT_FOUNT);
}
@ -379,24 +220,7 @@ public class HealthCodeAction extends BaseAction {
}
/**
* 身份证识别
*/
@Action("orcInfo")
public Result orcInfo(String image) {
try {
log.info("身份证识别");
if (image == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
Patient patient = HealthCardHelper.orcInfo(image);
return Result.success(patient);
} catch (Exception e) {
return Result.error(e);
}
}
// 旧版:实名认证
@Action("registerUniformVerifyOrder")
public Result registerUniformVerifyOrder(String wechatCode, String name, String idCardNo) {
log.info("[电子健康卡]实人认证生成orderId wechatCode={}, name={}, idCardNo={}", wechatCode, name, idCardNo);
@ -408,13 +232,14 @@ public class HealthCodeAction extends BaseAction {
}
// 旧版:实名认证
@Action("checkUniformVerifyResult")
public Result checkUniformVerifyResult(Boolean isMiniApp, String orderId, String registerOrderId) {
log.info("[电子健康卡]实人认证结果查询 orderId={}, registerOrderId={}", orderId, registerOrderId);
if (orderId == null || registerOrderId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
}
return Result.isOK(HealthCardHelper.checkUniformVerifyResult(isMiniApp, orderId, registerOrderId));
return Result.isOK(HealthCardHelper.checkUniformVerifyResult(isMiniApp, null, orderId, registerOrderId));
}
@ -445,6 +270,65 @@ public class HealthCodeAction extends BaseAction {
}
// /**
// * [患者]查询信息
// */
// @Action("getPatientByIdCardNo")
// public Result getPatientByIdCardNo(@AesDecode String openid, @AesDecode String idCardNo) {
// log.info("[电子健康卡]根据身份证和openId查询患者信息 openid={}, idCardNo={}", openid, idCardNo);
// if (openid == null || idCardNo == null) {
// return Result.error(ResultEnum.PARAM_IS_DEFECT);
// }
//
// Patient patient = new PatientDao().selectByIdCardNo(openid, idCardNo);
// return Result.success(patient);
// }
// /**
// * [电子健康卡]通过二维码获取健康卡数据
// *
// * @param qrCode 二维码
// */
// @Action("getHealthCardByQrCode")
// public Result getHealthCardByQrCode(Boolean isMiniApp, String qrCode) {
// log.info("[电子健康卡]通过二维码获取健康卡数据 isMiniApp={}, qrCode={}", isMiniApp, qrCode);
// if (qrCode == null) {
// return Result.error(ResultEnum.PARAM_IS_DEFECT);
// }
//
// Patient patient = HCodeService.getHealthCardByQrCode(isMiniApp, qrCode);
// return patient == null ? Result.error() : Result.success(patient);
// }
// /**
// * [电子健康卡]查询患者集
// */
// @Action("getHealthCardList")
// public Result getHealthCardList(@AesDecode String openid) {
// log.info("[电子健康卡]查询患者集 openid={}", openid);
// if (openid == null) {
// return Result.error(ResultEnum.PARAM_IS_DEFECT);
// }
// List<Patient> patients = new PatientDao().selectHealthCardListByOpenid(openid);
// return Result.success(patients);
// }
// @Action("appBindHealthCard")
// public Result appBindHealthCard(String openid, String healthCode) {
// log.info("[新版电子健康卡]H5嵌入链接绑卡-通过healthCode获取健康卡数据 healthCode={}, openid={}", healthCode, openid);
// if (healthCode == null || openid == null) return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
//
// Patient patient = HCodeService.appBindHealthCard(healthCode); // 通过健康卡授权码获取健康卡的用户信息
// if (patient == null) {
// log.info("[新版电子健康卡]H5嵌入链接绑卡 获取用户信息失败");
// return Result.error("[新版电子健康卡]H5嵌入链接绑卡 获取用户信息失败");
// }
// return Result.success(patient);
// }
// /**
// * [电子健康卡]绑卡验证授权
// */

@ -16,6 +16,7 @@ import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.GMCService;
import com.ynxbd.common.service.PatientService;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.AesWxHelper;
import com.ynxbd.wx.wxfactory.WxCacheHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -212,26 +213,30 @@ public class PatientAction extends BaseAction {
return new PatientService().toOpenIds(dataList, algorithm, isLastBind, isEncryptComma);
}
/**
* [查询]HIS地区编码信息
*/
@Action("getHisArea")
public Result getHisArea(Integer level, String areaCode) {
try {
return Result.success(new HisPatientDao().getHisArea(level, areaCode));
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [无证|有证绑定]绑定新患者不通过电子健康卡
*/
@Action("bind")
public Result bind(boolean isVerifyCode, String tel, String smsCode, String address, String areaCode, String areaAddress, String idCardNo, String openid, String sex, String name, String nation, String birthday, String cardType, String enUnionId, String enOpenId, String enGmcOpenId, String enHospAppId) {
log.info("[身份绑定] openid={}, name={}, address={}, areaCode={}, areaAddress={}, nation={}, sex={}, birthday={}, cardType={}", openid, name, address, areaCode, areaAddress, nation, sex, birthday, cardType);
if (openid == null || sex == null || birthday == null || name == null || nation == null) {
public Result bind(boolean isVerifyCode, String tel, String smsCode, String address, String areaCode, String areaAddress, String idCardNo, String sex, String name, String nation, String birthday, String cardType, String enOpenId, String enGmcOpenId, String enUnionId, String enHospAppId) {
log.info("[身份绑定] enOpenId={}, name={}, address={}, areaCode={}, areaAddress={}, nation={}, sex={}, birthday={}, cardType={}", enOpenId, name, address, areaCode, areaAddress, nation, sex, birthday, cardType);
if (enOpenId == null || name == null || sex == null || birthday == null || nation == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (isVerifyCode) {
if (ObjectUtils.isEmpty(smsCode) || smsCode.length() > 6 || smsCode.length() < 4) {
return Result.error(ResultEnum.SMS_CODE_ERROR);
}
if (ObjectUtils.isEmpty(tel) || tel.length() != 11) {
return Result.error(ResultEnum.SMS_TEL_ERROR);
}
if (!SmsHelper.codeVerify(tel, smsCode, false)) {
return Result.error(ResultEnum.SMS_CODE_VERIFY_ERROR); // 短信验证码失效或错误
}
String openid = AesWxHelper.decode(enOpenId);
if (ObjectUtils.isEmpty(openid)) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
if (address == null || areaCode == null) {
@ -246,11 +251,24 @@ public class PatientAction extends BaseAction {
return Result.error(ResultEnum.PARAM_DATE_ERROR);
}
if (isVerifyCode) {
if (ObjectUtils.isEmpty(smsCode) || smsCode.length() > 6 || smsCode.length() < 4) {
return Result.error(ResultEnum.SMS_CODE_ERROR);
}
if (ObjectUtils.isEmpty(tel) || tel.length() != 11) {
return Result.error(ResultEnum.SMS_TEL_ERROR);
}
if (!SmsHelper.codeVerify(tel, smsCode, false)) {
return Result.error(ResultEnum.SMS_CODE_VERIFY_ERROR); // 短信验证码失效或错误
}
}
String fName = null, fTel = null, fIDCardNo = null;
String mName = null, mTel = null, mIDCardNo = null;
if (cardType == null) cardType = HCardTypeEnum._01.WX_CODE;
HCardTypeEnum cardTypeEnum = HCardTypeEnum.toTypeByWxCode(cardType);
HCardTypeEnum cardTypeEnum = HCardTypeEnum.findByWxCode(cardType, HCardTypeEnum._01);
if (cardTypeEnum == null) {
return Result.error(ResultEnum.CARD_TYPE_NOT_FOUNT);
}

@ -35,20 +35,24 @@ public enum HCardTypeEnum {
this.HIS_CODE = HIS_CODE;
}
public static HCardTypeEnum toTypeByWxCode(String wxCode) {
if (ObjectUtils.isEmpty(wxCode)) {
return null;
public static HCardTypeEnum findByWxCode(String code, HCardTypeEnum defaultEnum) {
if (ObjectUtils.isEmpty(code)) {
return defaultEnum;
}
for (HCardTypeEnum item : HCardTypeEnum.values()) {
if (wxCode.equals(item.WX_CODE)) {
if (code.equals(item.WX_CODE)) {
return item;
}
}
return null;
return defaultEnum;
}
public static HCardTypeEnum findByWxCode(String code) {
return findByWxCode(code, null);
}
public static HCardTypeEnum toTypeByAliCode(String aliCode) {
public static HCardTypeEnum findByAliCode(String aliCode) {
if (ObjectUtils.isEmpty(aliCode)) {
return null;
}

@ -1,6 +1,8 @@
package com.ynxbd.common.config;
import com.ynxbd.common.helper.common.ErrorHelper;
import lombok.extern.slf4j.Slf4j;
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.ResourcePools;
@ -10,6 +12,8 @@ import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ExpiryPolicyBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.config.units.MemoryUnit;
import org.ehcache.impl.internal.resilience.RobustResilienceStrategy;
import org.ehcache.spi.resilience.ResilienceStrategy;
import org.ehcache.xml.XmlConfiguration;
import java.net.URL;
@ -20,6 +24,7 @@ import java.time.Duration;
* @Date 2020/12/7 16:06
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
*/
@Slf4j
public class EhCacheConfig {
private EhCacheConfig() {
}
@ -94,40 +99,41 @@ public class EhCacheConfig {
* @return 缓存对象
*/
public synchronized static <K, V> Cache<K, V> createCache(Class<K> K, Class<V> V, String cacheName, Long heap, Long offHeap, Long disk, boolean isPersistent, Long timeToLiveExpiration, Long timeToIdleExpiration) {
if (timeToLiveExpiration != null && timeToIdleExpiration != null) {
timeToIdleExpiration = null;
}
try {
if (timeToLiveExpiration != null && timeToIdleExpiration != null) {
timeToIdleExpiration = null;
}
if (cacheManager == null) {
initCacheManager();
}
if (cacheManager == null) {
initCacheManager();
}
if (heap == null || offHeap == null || disk == null) {
// 读取xml配置
ResourcePools resourcePools = cache.getRuntimeConfiguration().getResourcePools();
heap = resourcePools.getPoolForResource(ResourceType.Core.HEAP).getSize();
offHeap = resourcePools.getPoolForResource(ResourceType.Core.OFFHEAP).getSize();
disk = resourcePools.getPoolForResource(ResourceType.Core.DISK).getSize();
}
if (heap == null || offHeap == null || disk == null) {
// 读取xml配置
ResourcePools resourcePools = cache.getRuntimeConfiguration().getResourcePools();
heap = resourcePools.getPoolForResource(ResourceType.Core.HEAP).getSize();
offHeap = resourcePools.getPoolForResource(ResourceType.Core.OFFHEAP).getSize();
disk = resourcePools.getPoolForResource(ResourceType.Core.DISK).getSize();
}
Cache<K, V> cache = cacheManager.getCache(cacheName, K, V);
if (cache != null) {
return cache;
}
Cache<K, V> cache = cacheManager.getCache(cacheName, K, V);
if (cache != null) {
return cache;
cacheManager.removeCache(cacheName);
return cacheManager.createCache(cacheName,
CacheConfigurationBuilder.newCacheConfigurationBuilder(K, V, ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(heap, MemoryUnit.MB)
.offheap(offHeap, MemoryUnit.MB)
.disk(disk, MemoryUnit.MB, isPersistent))
.withExpiry(timeToLiveExpiration == null ? ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(timeToIdleExpiration)) : ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(timeToLiveExpiration)))
);
} catch (Exception e) {
log.error("[EHCache]创建缓存异常 {}", e.getMessage());
ErrorHelper.println(e);
return null;
}
cacheManager.removeCache(cacheName);
return cacheManager.createCache(cacheName,
CacheConfigurationBuilder.newCacheConfigurationBuilder(K, V,
ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(heap, MemoryUnit.MB)
.offheap(offHeap, MemoryUnit.MB)
.disk(disk, MemoryUnit.MB, isPersistent)).withExpiry(
timeToLiveExpiration == null
? ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(timeToIdleExpiration))
: ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(timeToLiveExpiration))
)
);
}
public static void close() {

@ -92,11 +92,19 @@ public class HealthCardConfig {
return new HealthCardServerImpl(HealthCardConfig.H_APP_SECRET);
}
public static CommonIn createCommonIn(Boolean isMiniApp) {
return createCommonIn(isMiniApp, getAppToken(isMiniApp, true));
public static CommonIn createCommonIn() {
return createCommonIn(false, null);
}
public static CommonIn createCommonIn(Boolean isMiniApp, String appToken) {
public static CommonIn createCommonIn(Boolean isMiniApp, String openid) {
return createCommonIn(isMiniApp, getAppToken(isMiniApp, true), openid);
}
public static CommonIn createCommonInOrcInfo(Boolean isMiniApp, String openid) {
return createCommonIn(isMiniApp, getAppToken(false, false), openid);
}
public static CommonIn createCommonIn(Boolean isMiniApp, String appToken, String openid) {
if (appToken == null) { // 此处不判断空字符串
log.info("[电子健康卡]appToken为空");
return null;
@ -108,7 +116,7 @@ public class HealthCardConfig {
String hospId = (isMiniApp ? H_MINI_HOSPITAL_ID : H_HOSPITAL_ID);
String requestId = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
String appId = (isMiniApp ? H_MINI_APP_ID : WeChatConfig.APP_ID);
return new CommonIn(appToken, requestId, hospId, channelNum, appId, null);
return new CommonIn(appToken, requestId, hospId, channelNum, appId, openid);
}
/**
@ -138,7 +146,7 @@ public class HealthCardConfig {
}
try {
CommonIn commonIn = createCommonIn(isMiniApp, "");
CommonIn commonIn = createCommonIn(isMiniApp, "", null);
if (commonIn == null) {
return null;
}

@ -255,7 +255,7 @@ public class HisPatientDao {
return null;
}
public JSONArray getArea(Integer level, String areaCode) throws ServiceException {
public JSONArray getHisArea(Integer level, String areaCode) throws ServiceException {
if (level == null) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}

@ -12,6 +12,7 @@ import com.ynxbd.common.config.HealthCardConfig;
import com.ynxbd.common.helper.common.ErrorHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.common.URLHelper;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.wx.config.WeChatConfig;
import lombok.extern.slf4j.Slf4j;
@ -19,7 +20,6 @@ import org.apache.commons.lang3.ObjectUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
@Slf4j
public class HealthCardHelper {
@ -29,13 +29,13 @@ public class HealthCardHelper {
*
* @param wechatCode 微信身份码
*/
public static JSONObject registerHealthCardPreAuth(Boolean isMiniApp, Boolean isHCBindUI, Integer patientType, String wechatCode, String enHisPatientId) throws ServiceException {
public static JSONObject registerHealthCardPreAuth(Boolean isMiniApp, String openid, Boolean isHCBindUI, Integer patientType, String wechatCode, String enHisPatientId) throws ServiceException {
if (isMiniApp == null) {
isMiniApp = false;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]健康卡授权码获取健康卡信息-请求参数缺失");
throw new ServiceException("[电子健康卡]健康卡授权码获取健康卡信息-请求体CommonIn缺失");
}
String domain = WeChatConfig.getDomain(false);
@ -57,19 +57,21 @@ public class HealthCardHelper {
* 小程序内嵌仍以 mini 协议开头且需要UrlEncode编码
*/
String hcBindUIUrl = String.format("%s/h5/tencent/open/card/regist?hospitalId=%s&redirect_uri=%s&fail_redirect_uri=%s&authCode=%s",
(isMiniApp ? domain : "https://h5-health.tengmed.com"),
HealthCardConfig.H_HOSPITAL_ID,
URLHelper.encodeURL(successRedirectUrl),
URLHelper.encodeURL(failRedirectUrl),
wechatCode);
enHisPatientId = ObjectUtils.isEmpty(enHisPatientId) ? "" : "&enHisPatientId=" + enHisPatientId;
String userFormPageUrl;
if (isHCBindUI) { // 服务商页面
userFormPageUrl = String.format("%s/h5/tencent/open/card/regist?hospitalId=%s&redirect_uri=%s&fail_redirect_uri=%s&authCode=%s",
(isMiniApp ? ("mini:" + domain) : "https://h5-health.tengmed.com"),
HealthCardConfig.H_HOSPITAL_ID,
URLHelper.encodeURL(successRedirectUrl),
URLHelper.encodeURL(failRedirectUrl),
wechatCode);
} else {
userFormPageUrl = isMiniApp
? "mini:/path/to/isvpage?authCode=${authCode}"
: (webURL + "health-card-form.html?authCode=${authCode}" + (ObjectUtils.isEmpty(enHisPatientId) ? "" : "&enHisPatientId=" + enHisPatientId));
}
String userFormPageUrl = isHCBindUI
? hcBindUIUrl
: (webURL + "health-card-form.html?authCode=${authCode}" + enHisPatientId);
System.out.println("[userFormPageUrl]=" + userFormPageUrl);
// 小程序内嵌必传(固定为小程序路径,不需要加“mini:”前缀)示例: /path/to/facePage
String faceUrl = isMiniApp ? "/path/to/facePage" : null;
@ -102,13 +104,13 @@ public class HealthCardHelper {
* 验证注册/绑卡接口
*
*/
public static JSONObject registerHealthCardPreFill(Boolean isMiniApp, String authCode, String name, String gender, String nation, String birthday,
public static JSONObject registerHealthCardPreFill(Boolean isMiniApp, String openid, String authCode, String name, String gender, String nation, String birthday,
String idNumber, HCardTypeEnum cardTypeEnum, String phone1) {
try {
if (isMiniApp == null) {
isMiniApp = false;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
return null;
}
@ -160,15 +162,66 @@ public class HealthCardHelper {
}
/**
* [电子健康卡]通过二维码获取健康卡数据
*
* @param qrCode 二维码
*/
public static Patient getHealthCardByQrCode(Boolean isMiniApp, String openid, String qrCode) {
try {
log.info("[电子健康卡]查询健康卡信息 qrCode={}", qrCode);
if (ObjectUtils.isEmpty(qrCode)) {
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
return null;
}
JSONObject resultJson = HealthCardConfig.createHealthCardService().getHealthCardByQRCode(commonIn, qrCode);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
log.info("[电子健康卡]二维码获取健康卡失败: {}", resultJson);
return null;
}
JSONObject respJson = result.getRsp();
if (respJson == null) {
return null;
}
JSONObject cardJson = respJson.getJSONObject("card");
if (cardJson == null) {
return null;
}
Patient patient = new Patient();
patient.setSex(cardJson.getString("gender")); // 性别
patient.setName(cardJson.getString("name"));
patient.setNation(cardJson.getString("nation"));
patient.setCardType(cardJson.getString("idType"));
patient.setIdCardNo(cardJson.getString("idNumber"));
patient.setBirthday(cardJson.getString("birthday"));
patient.setAddress(cardJson.getString("address"));
String phone1 = cardJson.getString("phone1");
String phone2 = cardJson.getString("phone2");
patient.setTel(ObjectUtils.isEmpty(phone1) ? phone2 : phone1);
return patient;
} catch (Exception e) {
ErrorHelper.println(e);
}
return null;
}
/**
* 健康卡授权码获取健康卡信息
*
* @param healthCode 健康卡授权码
*/
public static Patient getHealthCardByHealthCode(Boolean isMiniApp, String healthCode) throws ServiceException {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
public static Patient getHealthCardByHealthCode(Boolean isMiniApp, String openid, String healthCode) throws ServiceException {
if (ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(healthCode)) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]健康卡授权码获取健康卡信息-请求参数缺失");
throw new ServiceException("[电子健康卡]健康卡授权码获取健康卡信息-请求体CommonIn缺失");
}
JSONObject resultJson = HealthCardConfig.createHealthCardService().getHealthCardByHealthCode(commonIn, healthCode);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
@ -207,7 +260,7 @@ public class HealthCardHelper {
* @param imageContent 身份证正面照片的base64编码数据头部信息需要删除如image/png;base64image/jpeg/png;base64等并且数据量建议压缩到百K级别上传
* @return 身份证信息
*/
public static Patient orcInfo(String imageContent) throws ServiceException {
public static Patient orcInfo(String openid, String imageContent) throws ServiceException {
if (ObjectUtils.isEmpty(imageContent)) {
throw new ServiceException("[电子健康卡]图片数据不能为空");
}
@ -221,8 +274,12 @@ public class HealthCardHelper {
if (!HealthCardConfig.isEnable()) { // 判断是否禁用电子健康卡
throw new ServiceException("[电子健康卡]功能未开启");
}
CommonIn commonIn = new CommonIn(HealthCardConfig.getAppToken(false, false), UUID.randomUUID().toString().replaceAll("-", ""), HealthCardConfig.H_HOSPITAL_ID, 0, null, null);
JSONObject resultJson = HealthCardConfig.createHealthCardService().ocrInfo(commonIn, imageContent);
CommonIn commonIn = HealthCardConfig.createCommonInOrcInfo(false, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]身份证识别-请求体CommonIn缺失");
}
JSONObject resultJson = HealthCardConfig.createHealthCardService().ocrInfo(commonIn, imageContent, 15, 15, false); // 禁止打印日志
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
throw new ServiceException("[电子健康卡]身份证识别-失败: " + JsonHelper.toJsonString(resultJson));
@ -251,72 +308,20 @@ public class HealthCardHelper {
return patient;
}
/**
* 注册健康卡
*
* @param wechatCode 微信身份码
* @param birthday 出生年月日
* @param cardTypeEnum 证件类型01-居民身份证其他参考证件类型表
* @param areaAddress 区域地址
* @param address 地址
* @param sex 性别
* @param nation 民族
* @param name 姓名
* @param idCardNo 证件号码
* @param phone1 联系方式1
*/
public static JSONObject registerHealthCard(Boolean isMiniApp, String patientId, String wechatCode,
String birthday, HCardTypeEnum cardTypeEnum, String address, String areaAddress,
String sex, String nation, String name, String idCardNo, String phone1) {
try {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
if (commonIn == null) {
return null;
}
if (cardTypeEnum == null) {
cardTypeEnum = HCardTypeEnum._01; // 居民身份证
}
if (ObjectUtils.isEmpty(areaAddress)) {
areaAddress = "";
}
HealthCardInfo req = new HealthCardInfo();
req.setAddress(areaAddress + address);
req.setBirthday(birthday);
req.setGender(sex);
req.setIdNumber(idCardNo);
req.setIdType(cardTypeEnum.WX_CODE);
req.setNation(nation);
req.setName(name);
req.setPhone1(phone1);
req.setWechatCode(wechatCode);
req.setPatid(patientId);
JSONObject resultJson = HealthCardConfig.createHealthCardService().registerHealthCard(commonIn, req);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
log.info("[电子健康卡]注册失败: {}", resultJson);
return result.getCommonOut();
}
return result.getRsp();
} catch (Exception e) {
ErrorHelper.println(e);
}
return null;
}
/**
* 获取建档信息
* [电子健康卡]获取建档信息
*
* @param regInfoCode 建档授权码
*/
public static Patient getRegInfoByCode(Boolean isMiniApp, String regInfoCode) throws ServiceException {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
public static Patient getRegInfoByCode(Boolean isMiniApp, String openid, String regInfoCode) throws ServiceException {
if (ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(regInfoCode)) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]获取建档信息-请求参数缺失");
throw new ServiceException("[电子健康卡]获取建档信息-请求体CommonIn缺失");
}
JSONObject resultJson = HealthCardConfig.createHealthCardService().getRegInfoByCode(commonIn, regInfoCode);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
@ -356,29 +361,27 @@ public class HealthCardHelper {
* @param idCardNo 证件号码
* @param codeType 传0或者10返回动态码1返回静态码
*/
public static JSONObject getDynamicQRCode(Boolean isMiniApp, String healthCardId, String idCardNo, String codeType) {
if (healthCardId == null || idCardNo == null || codeType == null) {
log.info("[电子健康卡]获取健康卡二维码-参数缺失 healthCardId={}, idCardNo={}, codeType={}", healthCardId, idCardNo, codeType);
return null;
public static JSONObject getDynamicQRCode(Boolean isMiniApp, String openid, String healthCardId, String idCardNo, String codeType) throws ServiceException {
if (openid == null || healthCardId == null || idCardNo == null || codeType == null) {
throw new ServiceException(ResultEnum.PARAM_IS_INVALID);
}
try {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
if (commonIn == null) {
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]获取健康卡二维码-请求体CommonIn缺失");
}
JSONObject resultJson = HealthCardConfig.createHealthCardService().getDynamicQRCode(commonIn, healthCardId, "01", idCardNo, codeType);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
log.info("[电子健康卡]获取健康卡二维码失败: {}", resultJson);
return null;
}
return result.getRsp();
} catch (Exception e) {
ErrorHelper.println(e);
JSONObject resultJson = HealthCardConfig.createHealthCardService().getDynamicQRCode(commonIn, healthCardId, "01", idCardNo, codeType);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
throw new ServiceException("[电子健康卡]获取健康卡二维码-失败" + result.getJsonCommon());
}
return null;
JSONObject data = result.getRsp();
if (data == null) {
throw new ServiceException("[电子健康卡]获取健康卡二维码-返回数据为空");
}
return data;
}
/**
@ -388,17 +391,15 @@ public class HealthCardHelper {
* @param idCardNo 身份证号
* @return 动态二维码
*/
public static String getQRCodeText(Boolean isMiniApp, String healthCardId, String idCardNo) {
JSONObject QRResult = getDynamicQRCode(isMiniApp, healthCardId, idCardNo, "0");
if (QRResult == null) {
log.info("[电子健康卡]用卡数据监测接口-获取二维码失败");
return null;
public static String getQRCodeText(Boolean isMiniApp, String openid, String healthCardId, String idCardNo) throws ServiceException {
if (healthCardId == null || idCardNo == null) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
JSONObject QRResult = getDynamicQRCode(isMiniApp, openid, healthCardId, idCardNo, "0");
String qrCodeText = QRResult.getString("qrCodeText");
if (ObjectUtils.isEmpty(qrCodeText)) {
log.info("[电子健康卡]用卡数据监测接口-获取qrCodeText失败");
return null;
throw new ServiceException("[电子健康卡]根据健康卡ID获取动态二维码-获取qrCodeText失败");
}
return qrCodeText;
}
@ -408,86 +409,84 @@ public class HealthCardHelper {
*
* @param qrCodeText 二维码编码
*/
public static JSONObject getOrderIdByOutAppId(Boolean isMiniApp, String qrCodeText) {
try {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
if (commonIn == null) {
return null;
}
//调用接口
JSONObject resultJson = HealthCardConfig.createHealthCardService().getOrderIdByOutAppId(commonIn, WeChatConfig.APP_ID, qrCodeText);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
log.info("[电子健康卡]获取卡包订单ID 失败: {}", result.getJsonCommon());
return null;
}
return result.getRsp();
} catch (Exception e) {
ErrorHelper.println(e);
public static JSONObject getOrderIdByOutAppId(Boolean isMiniApp, String openid, String qrCodeText) throws ServiceException {
if (ObjectUtils.isEmpty(qrCodeText)) {
throw new ServiceException("[电子健康卡]获取卡包订单ID-qrCodeText获取失败");
}
return null;
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]获取卡包订单ID-请求体CommonIn缺失");
}
//调用接口
JSONObject resultJson = HealthCardConfig.createHealthCardService().getOrderIdByOutAppId(commonIn, WeChatConfig.APP_ID, qrCodeText);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
throw new ServiceException("[电子健康卡]获取卡包订单ID-失败" + result.getJsonCommon());
}
return result.getRsp();
}
/**
* 实人认证生成orderId
*/
public static JSONObject registerUniformVerifyOrder(Boolean isMiniApp, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo) {
try {
log.info("[电子健康卡]实人认证生成orderId idCardNo={}, name={}", idCardNo, name);
if (ObjectUtils.isEmpty(idCardNo) || ObjectUtils.isEmpty(name)) {
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
if (commonIn == null) {
return null;
}
public static JSONObject registerUniformVerifyOrder(Boolean isMiniApp, String openid, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo, String redirectPage, String redirectHash) throws ServiceException {
if (ObjectUtils.isEmpty(name) || ObjectUtils.isEmpty(idCardNo)) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
String webURL = WeChatConfig.getWebReqURL();
String verifySuccessRedirectUrl = webURL + "hc-ok.html?registerOrderId=${registerOrderId}";
String verifyFailRedirectUrl = webURL + "health-card-fail.html?code=-3";
JSONObject resultJson = HealthCardConfig.createHealthCardService().registerUniformVerifyOrder(commonIn,
idCardNo,
"01",
name,
wechatCode,
null,
(sceneEnum == null ? null : sceneEnum.CODE),
null,
HealthCardEnum.CARD_TYPE_ID_CARD.STATUS,
null,
verifySuccessRedirectUrl,
verifyFailRedirectUrl,
null,
0);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
// JSONObject resultJson = new HealthCardServerImpl(H_APP_SECRET).registerUniformVerifyOrder(commonIn, idCardNo, "01", name, wechatCode);
if (!result.isOk) {
log.info("[电子健康卡]实人认证生成orderId接口失败: {}", resultJson);
return null;
}
JSONObject respJson = result.getRsp();
if (respJson == null) {
return null;
}
return respJson;
} catch (Exception e) {
ErrorHelper.println(e);
if (ObjectUtils.isEmpty(redirectPage) || !redirectPage.contains(".html")) {
throw new ServiceException(ResultEnum.PARAM_IS_INVALID);
}
return null;
if (ObjectUtils.isEmpty(redirectHash)) {
redirectHash = "";
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
throw new ServiceException("[电子健康卡]实人认证生成orderId-请求体CommonIn缺失");
}
String webURL = WeChatConfig.getWebReqURL();
String verifySuccessRedirectUrl = webURL + redirectPage + "?registerOrderId=${registerOrderId}" + redirectHash;
String verifyFailRedirectUrl = webURL + "health-card-fail.html?code=-3";
JSONObject resultJson = HealthCardConfig.createHealthCardService().registerUniformVerifyOrder(commonIn,
idCardNo,
"01",
name,
wechatCode,
null,
(sceneEnum == null ? null : sceneEnum.CODE),
null,
HealthCardEnum.CARD_TYPE_ID_CARD.STATUS,
null,
verifySuccessRedirectUrl,
verifyFailRedirectUrl,
null,
0);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
log.info("[电子健康卡]实人认证生成orderId resp: {}", JsonHelper.toJsonString(resultJson));
if (!result.isOk) {
throw new ServiceException("[电子健康卡]实人认证生成orderId-失败:" + result.getJsonCommon());
}
JSONObject respJson = result.getRsp();
if (respJson == null) {
throw new ServiceException("[电子健康卡]实人认证生成orderId-响应数据为空");
}
return respJson;
}
/**
* [电子健康卡]实人认证结果查询
*/
public static boolean checkUniformVerifyResult(Boolean isMiniApp, String verifyOrderId, String registerOrderId) {
public static boolean checkUniformVerifyResult(Boolean isMiniApp, String openid, String verifyOrderId, String registerOrderId) {
try {
log.info("[电子健康卡]实人认证结果查询 verifyOrderId={}, registerOrderId={}", verifyOrderId, registerOrderId);
if (ObjectUtils.isEmpty(verifyOrderId) || ObjectUtils.isEmpty(registerOrderId)) {
log.info("[电子健康卡]实人认证结果查询 openid={}, verifyOrderId={}, registerOrderId={}", openid, verifyOrderId, registerOrderId);
if (ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(verifyOrderId) || ObjectUtils.isEmpty(registerOrderId)) {
return false;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, openid);
if (commonIn == null) {
return false;
}
@ -509,27 +508,41 @@ public class HealthCardHelper {
return false;
}
/**
* 电子健康卡用卡数据监测接口
* [电子健康卡]用卡数据监测接口
*
* @param qrCodeText 动态二维码
* @param deptName 科室名
* @param scene 上报类型 scene
* @param cardType 卡类型
* @return JSONObject
* @param openid openid
* @param healthCardId 健康卡id
* @param idCardNo 证件号
* @param scene 场景
* @param deptName 科室名
* @param cardCostType 费用类别
* @return json
*/
public static JSONObject reportHISData(String qrCodeText, String deptName, String scene, String cardType, String cardCostType) {
if (!HealthCardConfig.IS_UPLOAD_DATA) { // 禁止数据上传
return null;
}
public static JSONObject reportHISData(String openid, String healthCardId, String idCardNo, String scene, String deptName, HealthCardEnum cardCostType) {
try {
log.info("[电子健康卡]用卡数据监测接口 scene={}", scene);
if (!HealthCardConfig.IS_UPLOAD_DATA) { // 禁止数据上传
return null;
}
if (ObjectUtils.isEmpty(qrCodeText) || scene == null || cardType == null) {
log.info("[电子健康卡]用卡数据监测接口,参数为空");
return null;
}
if (ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(healthCardId) || ObjectUtils.isEmpty(idCardNo) || ObjectUtils.isEmpty(scene)) {
log.error("[电子健康卡]用卡数据监测,参数为空");
return null;
}
try {
CommonIn commonIn = HealthCardConfig.createCommonIn(false);
String qrCodeText = HealthCardHelper.getQRCodeText(false, openid, healthCardId, idCardNo);
if (qrCodeText == null) {
return null;
}
if (ObjectUtils.isEmpty(qrCodeText)) {
log.error("[电子健康卡]用卡数据监测,qrCodeText为空");
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(false, openid);
if (commonIn == null) {
return null;
}
@ -542,28 +555,86 @@ public class HealthCardHelper {
req.setHospitalCode(HealthCardConfig.H_HOSPITAL_ID);
// 010101 挂号
req.setScene(scene);
req.setDepartment(deptName); // 科室代码
req.setDepartment(ObjectUtils.isEmpty(deptName) ? null : deptName); // 科室代码
req.setCardChannel(HealthCardEnum.CARD_CHANNEL_WX_CHANNEL.STATUS); // 微信渠道
req.setCardType(cardType);
req.setCardType(HealthCardEnum.CARD_TYPE_HEALTH_CARD.STATUS); // 电子健康卡
// 自费:0100,医保:0200,公费:0300,其他:0000
req.setCardCostTypes(cardCostType);
//调用接口
req.setCardCostTypes(cardCostType == null ? null : cardCostType.STATUS);
JSONObject resultJson = HealthCardConfig.createHealthCardService().reportHISData(commonIn, req);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (HealthCardConfig.IS_LOG_REPORT) {
log.info("[电子健康卡]用卡数据监测接口 req={}, resp={}", JsonHelper.toJsonString(req), JsonHelper.toJsonString(resultJson));
log.info("[电子健康卡]用卡数据监测 req={}, resp={}", JsonHelper.toJsonString(req), JsonHelper.toJsonString(resultJson));
}
if (!result.isOk) {
log.info("[电子健康卡]用卡数据监测接口 {}", resultJson);
log.error("[电子健康卡]用卡数据监测-上传失败 {}", result.getJsonCommon());
return null;
}
return result.getRsp();
} catch (Exception e) {
ErrorHelper.println(e);
log.error("[电子健康卡]用卡数据监测-上传异常 {}", e.getMessage());
}
return null;
}
// /**
// * 电子健康卡用卡数据监测接口
// *
// * @param qrCodeText 动态二维码
// * @param deptName 科室名
// * @param scene 上报类型 scene
// * @param cardType 卡类型
// * @return JSONObject
// */
// public static JSONObject reportHISData(String qrCodeText, String deptName, String scene, String cardType, String cardCostType) {
// if (!HealthCardConfig.IS_UPLOAD_DATA) { // 禁止数据上传
// return null;
// }
//
// if (ObjectUtils.isEmpty(qrCodeText) || scene == null || cardType == null) {
// log.info("[电子健康卡]用卡数据监测接口,参数为空");
// return null;
// }
//
// try {
// CommonIn commonIn = HealthCardConfig.createCommonIn(false);
// if (commonIn == null) {
// return null;
// }
//
// ReportHISData req = new ReportHISData();
// req.setQrCodeText(qrCodeText);
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// req.setTime(format.format(new Date()));
//
// req.setHospitalCode(HealthCardConfig.H_HOSPITAL_ID);
// // 010101 挂号
// req.setScene(scene);
// req.setDepartment(deptName); // 科室代码
// req.setCardChannel(HealthCardEnum.CARD_CHANNEL_WX_CHANNEL.STATUS); // 微信渠道
//
// req.setCardType(cardType);
//
// // 自费:0100,医保:0200,公费:0300,其他:0000
// req.setCardCostTypes(cardCostType);
// //调用接口
// JSONObject resultJson = HealthCardConfig.createHealthCardService().reportHISData(commonIn, req);
// HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
// if (HealthCardConfig.IS_LOG_REPORT) {
// log.info("[电子健康卡]用卡数据监测接口 req={}, resp={}", JsonHelper.toJsonString(req), JsonHelper.toJsonString(resultJson));
// }
// if (!result.isOk) {
// log.info("[电子健康卡]用卡数据监测接口 {}", resultJson);
// return null;
// }
// return result.getRsp();
// } catch (Exception e) {
// ErrorHelper.println(e);
// }
// return null;
// }
}

@ -197,7 +197,6 @@ public class GMCService {
params.put("isFace", false);
params.put("isHealthCard", false);
params.put("openid", gmcOpenId); // 主服务器的openId
params.put("address", bindInfo.getAddress());
params.put("areaCode", finalAreaCode);
params.put("areaAddress", bindInfo.getAreaAddress());
@ -207,7 +206,7 @@ public class GMCService {
params.put("nation", bindInfo.getNation());
params.put("birthday", bindInfo.getBirthday());
params.put("idCardNo", bindInfo.getIdCardNo());
params.put("enOpenId", enGmcOpenId);
params.put("enOpenId", enGmcOpenId); // 主服务器的openId
params.put("enUnionId", bindInfo.getEnUnionId());
params.put("hospAppId", WeChatConfig.APP_ID);
}, null);
@ -255,9 +254,9 @@ public class GMCService {
*
* @param request request
*/
public boolean unBindGmcServer(HttpServletRequest request, String openId, String patientId) throws ServiceException {
log.info("[医共体解绑-转发]openId={}, patientId={}", openId, patientId);
if (ObjectUtils.isEmpty(openId) || ObjectUtils.isEmpty(patientId)) {
public boolean unBindGmcServer(HttpServletRequest request, String openId, String epId) throws ServiceException {
log.info("[医共体解绑-转发]openId={}, epId={}", openId, epId);
if (ObjectUtils.isEmpty(openId) || ObjectUtils.isEmpty(epId)) {
throw new ServiceException("[医共体解绑-转发]参数缺失");
}
@ -269,7 +268,7 @@ public class GMCService {
JsonResult jsonResult = postFormGMC(request, "/patient/unBind", params -> {
params.put("openid", gmcOpenId);
params.put("patientId", patientId);
params.put("epId", epId);
params.put("hospAppId", WeChatConfig.APP_ID);
}, null);
if (!jsonResult.success()) {

@ -9,9 +9,7 @@ import com.ynxbd.common.bean.enums.HCardTypeEnum;
import com.ynxbd.common.bean.enums.HealthCardEnum;
import com.ynxbd.common.bean.enums.HealthCardSceneEnum;
import com.ynxbd.common.config.HealthCardConfig;
import com.ynxbd.common.helper.HealthCardHelper;
import com.ynxbd.common.helper.common.ErrorHelper;
import com.ynxbd.wx.config.WeChatConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -39,7 +37,7 @@ public class HCodeService {
String birthday, HCardTypeEnum cardTypeEnum, String address, String areaAddress,
String sex, String nation, String name, String idCardNo, String phone1) {
try {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, null);
if (commonIn == null) {
return null;
}
@ -77,53 +75,7 @@ public class HCodeService {
return null;
}
/**
* [电子健康卡]通过二维码获取健康卡数据
*
* @param qrCode 二维码
*/
public static Patient getHealthCardByQrCode(Boolean isMiniApp, String qrCode) {
try {
log.info("[电子健康卡]查询健康卡信息 qrCode={}", qrCode);
if (ObjectUtils.isEmpty(qrCode)) {
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
if (commonIn == null) {
return null;
}
JSONObject resultJson = HealthCardConfig.createHealthCardService().getHealthCardByQRCode(commonIn, qrCode);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
log.info("[电子健康卡]二维码获取健康卡失败: {}", resultJson);
return null;
}
JSONObject respJson = result.getRsp();
if (respJson == null) {
return null;
}
JSONObject cardJson = respJson.getJSONObject("card");
if (cardJson == null) {
return null;
}
Patient patient = new Patient();
patient.setSex(cardJson.getString("gender")); // 性别
patient.setName(cardJson.getString("name"));
patient.setNation(cardJson.getString("nation"));
patient.setCardType(cardJson.getString("idType"));
patient.setIdCardNo(cardJson.getString("idNumber"));
patient.setBirthday(cardJson.getString("birthday"));
patient.setAddress(cardJson.getString("address"));
String phone1 = cardJson.getString("phone1");
String phone2 = cardJson.getString("phone2");
patient.setTel(ObjectUtils.isEmpty(phone1) ? phone2 : phone1);
return patient;
} catch (Exception e) {
ErrorHelper.println(e);
}
return null;
}
public static String bindUniformVerifyOrder(String wechatCode, String name, String idCardNo) {
@ -133,13 +85,13 @@ public class HCodeService {
/**
* [旧版]实人认证生成orderId接口
*/
public static String registerUniformVerifyOrder(Boolean isMiniApp, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo) {
public static String registerUniformVerifyOrder(Boolean isMiniApp, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo) {
try {
log.info("[电子健康卡]实人认证生成orderId idCardNo={}, name={}", idCardNo, name);
if (ObjectUtils.isEmpty(idCardNo) || ObjectUtils.isEmpty(name)) {
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, null);
if (commonIn == null) {
return null;
}
@ -188,7 +140,7 @@ public class HCodeService {
return null;
}
try {
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp);
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, null);
if (commonIn == null) {
return null;
}
@ -211,7 +163,7 @@ public class HCodeService {
*/
public static JSONArray batchUpdate(List<Patient> lstPatient) {
//构造公共输入参数commonIn
CommonIn commonIn = HealthCardConfig.createCommonIn(false);
CommonIn commonIn = HealthCardConfig.createCommonIn(false, null);
if (commonIn == null) {
return null;
}

@ -38,7 +38,6 @@ public class HealthUploadService {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String today = format.format(new Date());
String scene = regDate.equals(today) ? HealthCardEnum.SCENE_REGISTER_SITE.STATUS : HealthCardEnum.SCENE_REGISTER_RESERVE.STATUS;
Patient patient = new PatientDao().selectByOpenidAndEPId(openid, patientId);
if (patient == null) {
@ -47,19 +46,12 @@ public class HealthUploadService {
String healthCardId = patient.getHealthCardId();
String idCardNo = patient.getIdCardNo();
if (healthCardId == null || idCardNo == null) {
return;
}
String qrCodeText = HealthCardHelper.getQRCodeText(false, healthCardId, idCardNo);
if (qrCodeText == null) {
return;
}
String scene = regDate.equals(today)
? HealthCardEnum.SCENE_REGISTER_SITE.STATUS
: HealthCardEnum.SCENE_REGISTER_RESERVE.STATUS;
JSONObject jsonObject = HealthCardHelper.reportHISData(qrCodeText, deptName, scene, HealthCardEnum.CARD_TYPE_HEALTH_CARD.STATUS, HealthCardEnum.CARD_COST_TYPE_OWN_EXPENSE.STATUS);
if (jsonObject == null) {
log.info("[电子健康卡][挂号缴费]数据上报失败");
}
HealthCardHelper.reportHISData(openid, healthCardId, idCardNo, scene, deptName, HealthCardEnum.CARD_COST_TYPE_OWN_EXPENSE);
} catch (Exception e) {
log.error(e.getMessage());
}
@ -92,19 +84,7 @@ public class HealthUploadService {
String healthCardId = patient.getHealthCardId();
String idCardNo = patient.getIdCardNo();
if (healthCardId == null || idCardNo == null) {
return;
}
String qrCodeText = HealthCardHelper.getQRCodeText(false, healthCardId, idCardNo);
if (qrCodeText == null) {
return;
}
JSONObject jsonObject = HealthCardHelper.reportHISData(qrCodeText, null, HealthCardEnum.SCENE_TOLL_OUTPATIENT_PAYMENT.STATUS, HealthCardEnum.CARD_TYPE_HEALTH_CARD.STATUS, HealthCardEnum.CARD_COST_TYPE_OWN_EXPENSE.STATUS);
if (jsonObject == null) {
log.info("[电子健康卡][门诊缴费]数据上报失败");
}
HealthCardHelper.reportHISData(openid, healthCardId, idCardNo, HealthCardEnum.SCENE_TOLL_OUTPATIENT_PAYMENT.STATUS, null, HealthCardEnum.CARD_COST_TYPE_OWN_EXPENSE);
} catch (Exception e) {
log.error(e.getMessage());
}

Loading…
Cancel
Save