package com.ynxbd.common.bean; import com.ynxbd.common.bean.enums.HCardTypeEnum; import com.ynxbd.common.helper.common.ParamHelper; import com.ynxbd.wx.wxfactory.AesWxHelper; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; import org.apache.commons.lang3.ObjectUtils; import java.io.Serializable; /** * @Author wsq * @Date 2020/9/25 14:09 * @Copyright @ 2020 云南新八达科技有限公司 All rights reserved. */ @Setter @Getter @ToString @NoArgsConstructor public class Patient implements Serializable { private static final long serialVersionUID = 9966666612123151L; private Integer id; private String unionId; private String enUnionId; // 唯一id private String openid; private String enOpenId; // 患者id private String patientId; private String enPatientId; private String name; private String sex; private String age; // 证件号码 private String idCardNo; private String enCardNo; private String showCardNo; private String birthday; // 电话 private String tel; private String enTel; private String showTel; private String address; private String bindDate; private String hisTransNo; private String nation; // private String fatherName; private String fatherIdCardNo; private String fatherTel; private String fatherEnTel; private String fatherEnIdCardNo; private String motherName; private String motherIdCardNo; private String motherTel; private String motherEnTel; private String motherEnIdCardNo; private String uuid; // private String healthCardId; // 证件类型,电子健康卡 private String cardType; // 区 private String county; // 支付宝认证令牌 private String accessToken; // private String accessCode; // private String updateTime; // 自己 private Boolean isMyself; // 是否默认 private Boolean isDefault; // 删除状态 private Integer deletedState; // 地区编码 private String areaCode; // 地区 private String areaAddress; // 表内唯一ID private String uniqueId; // 医共体子公众号的AppId private String hospAppId; private String enHospAppId; // 医共体主体认证id private String gmcOpenId; private String enGmcOpenId; // 记录非医共体绑定的HIS患者id private String hisPatientId; // 医共体患者唯一id private String gmcUniqueId; // 是否为医共体绑定[1:是] private Integer gmcBindState; // HIS[BindingFlag:值为1时,说明患者尚未绑定或建档] private String bindingFlag; private HCardTypeEnum cardTypeEnum; // HIS绑定 public boolean hasHisBind() { return "1".equals(this.bindingFlag); } // 清除监护人信息 public void clearGuardianData() { this.fatherName = null; this.fatherIdCardNo = null; this.fatherTel = null; // this.motherName = null; this.motherIdCardNo = null; this.motherTel = null; } /** * 数据过滤 * * @param isClearCardNoAndTel 是否清除证件号和电话 */ public void filterData(boolean isClearCardNoAndTel) { boolean noneCardNo = ObjectUtils.isEmpty(this.idCardNo); // 无证件号 // 患者ID this.enPatientId = AesWxHelper.encode(this.patientId, true); // 电话 this.showTel = ParamHelper.hideTel(this.tel); this.enTel = AesWxHelper.encode(this.tel, true); if (noneCardNo) { // 无证绑定数据显示过滤 this.fatherEnTel = AesWxHelper.encode(this.fatherTel, true); this.fatherEnIdCardNo = AesWxHelper.encode(this.fatherIdCardNo, true); this.fatherIdCardNo = ParamHelper.hideIdCardNo(this.fatherIdCardNo); this.fatherTel = ParamHelper.hideTel(this.fatherTel); this.motherEnTel = AesWxHelper.encode(this.motherTel, true); this.motherEnIdCardNo = AesWxHelper.encode(this.motherIdCardNo, true); this.motherIdCardNo = ParamHelper.hideIdCardNo(this.motherIdCardNo); this.motherTel = ParamHelper.hideTel(this.motherTel); } else { // 身份证过滤 this.idCardNo = this.idCardNo.toUpperCase(); this.showCardNo = ParamHelper.hideIdCardNo(this.idCardNo); this.enCardNo = AesWxHelper.encode(this.idCardNo, true); } if (this.cardType == null) { this.cardType = noneCardNo ? HCardTypeEnum.NO_CARD.WX_CODE : HCardTypeEnum._01.WX_CODE; } if (isClearCardNoAndTel) { this.tel = null; this.idCardNo = null; } } private boolean equalsData(String data1, String data2) { if (data1 == null && data2 == null) { return true; } return data1 != null && data1.equals(data2); } private boolean equalsData(Boolean data1, Boolean data2) { if (data1 == null && data2 == null) { return true; } return data1 != null && data1.equals(data2); } private boolean equalsLog(String log) { // System.out.println("[信息变动]" + log); return false; } public boolean equalsPatient(Patient copy) { if (copy == null) { return false; } if (!equalsData(this.idCardNo, copy.getIdCardNo())) { return equalsLog("idCardNo"); } if (ObjectUtils.isEmpty(this.cardType)) { this.cardType = (ObjectUtils.isEmpty(this.idCardNo) || this.idCardNo.length() >= 32) ? HCardTypeEnum.NO_CARD.WX_CODE : HCardTypeEnum._01.WX_CODE; } if (ObjectUtils.isEmpty(copy.getCardType())) { copy.setCardType((ObjectUtils.isEmpty(copy.getIdCardNo()) || copy.getIdCardNo().length() >= 32) ? HCardTypeEnum.NO_CARD.WX_CODE : HCardTypeEnum._01.WX_CODE); } if (!equalsData(this.cardType, copy.getCardType())) { return equalsLog("cardType"); } if (!equalsData(this.name, copy.getName())) { return equalsLog("name"); } if (!equalsData(this.birthday, copy.getBirthday())) { return equalsLog("birthday"); } if (!equalsData(this.sex, copy.getSex())) { return equalsLog("sex"); } if (!equalsData(this.nation, copy.getNation())) { return equalsLog("nation"); } if (!equalsData(this.tel, copy.getTel())) { return equalsLog("tel"); } if (!equalsData(this.areaCode, copy.getAreaCode())) { return equalsLog("areaCode"); } if (!equalsData(this.address, copy.getAddress())) { return equalsLog("address"); } if (!equalsData(this.isMyself, copy.getIsMyself())) { return equalsLog("isMyself"); } if (!equalsData(this.isDefault, copy.getIsDefault())) { return equalsLog("isDefault"); } return true; } }