医共体新增用户类型判断,测试用户不在子医院进行绑定

debug
王绍全 2 weeks ago
parent fe2bd5a904
commit 32c117ccbe
  1. 76
      src/main/java/com/ynxbd/common/TestA.java
  2. 37
      src/main/java/com/ynxbd/common/action/xk/XKAction.java
  3. 13
      src/main/java/com/ynxbd/common/bean/Patient.java
  4. 22
      src/main/java/com/ynxbd/common/dao/his/HisXKDao.java
  5. 32
      src/main/java/com/ynxbd/common/his/HisFactory.java
  6. 21
      src/main/java/com/ynxbd/common/service/GMCService.java

File diff suppressed because one or more lines are too long

@ -1,5 +1,7 @@
package com.ynxbd.common.action.xk; package com.ynxbd.common.action.xk;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction; import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.dao.his.HisXKDao; import com.ynxbd.common.dao.his.HisXKDao;
import com.ynxbd.common.result.Result; import com.ynxbd.common.result.Result;
@ -16,8 +18,8 @@ import java.util.List;
public class XKAction extends BaseAction { public class XKAction extends BaseAction {
@Action("queryDict") @Action("getRxDict")
public Result queryDict(String callNo, String type) { public Result getRxDict(String callNo, String type) {
if (!"xbd2026".equals(callNo)) { if (!"xbd2026".equals(callNo)) {
return Result.error(ResultEnum.PARAM_IS_INVALID); return Result.error(ResultEnum.PARAM_IS_INVALID);
} }
@ -30,4 +32,35 @@ public class XKAction extends BaseAction {
return Result.success(dataList); return Result.success(dataList);
} }
@Action("createHisRx")
public Result createHisRx() {
JSONObject body = getBody();
if (body == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
String doctCode = body.getString("doctCode");
String treatNum = body.getString("treatNum");
String rxType = body.getString("rxType");
String diagnose = body.getString("diagnose");
String weight = body.getString("weight");
String note = body.getString("note");
String ybAttrib = body.getString("ybAttrib");
String bzCode = body.getString("bzCode");
String bzName = body.getString("bzName");
JSONArray rxJsonArr = body.getJSONArray("rxJsonArr");
log.info("[开方] doctCode={}, treatNum={}", doctCode, treatNum);
if (doctCode == null || treatNum == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
System.out.println(rxJsonArr);
if (rxJsonArr == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
new HisXKDao().createHisRx(doctCode, treatNum, rxType, diagnose, weight, note, ybAttrib, bzCode, bzName, rxJsonArr);
return Result.success();
}
} }

@ -89,6 +89,8 @@ public class Patient implements Serializable {
private Boolean isDefault; private Boolean isDefault;
// 删除状态 // 删除状态
private Integer deletedState; private Integer deletedState;
// 类型:-1测试账号
private Integer typeState;
// 地区编码 // 地区编码
private String areaCode; private String areaCode;
@ -133,6 +135,11 @@ public class Patient implements Serializable {
this.motherTel = null; this.motherTel = null;
} }
// 是测试用户
public boolean isTestUser() {
return this.typeState != null && this.typeState == -1;
}
/** /**
* [医共体]数据过滤 * [医共体]数据过滤
* *
@ -204,7 +211,7 @@ public class Patient implements Serializable {
} }
private boolean equalsLog(String log) { private boolean equalsLog(String log) {
// System.out.println("[信息变动]" + log); System.out.println("[信息变动]" + log);
return false; return false;
} }
@ -213,6 +220,10 @@ public class Patient implements Serializable {
return false; return false;
} }
if (!equalsData(this.empiId, copy.getEmpiId())) {
return equalsLog("empiId");
}
if (!equalsData(this.idCardNo, copy.getIdCardNo())) { if (!equalsData(this.idCardNo, copy.getIdCardNo())) {
return equalsLog("idCardNo"); return equalsLog("idCardNo");
} }

@ -1,16 +1,22 @@
package com.ynxbd.common.dao.his; package com.ynxbd.common.dao.his;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonArray;
import com.ynxbd.common.bean.xk.HisRxAdmRoute; import com.ynxbd.common.bean.xk.HisRxAdmRoute;
import com.ynxbd.common.bean.xk.HisRxDrug; import com.ynxbd.common.bean.xk.HisRxDrug;
import com.ynxbd.common.bean.xk.HisRxPharmDict; import com.ynxbd.common.bean.xk.HisRxPharmDict;
import com.ynxbd.common.bean.xk.HisRxUseCount; import com.ynxbd.common.bean.xk.HisRxUseCount;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.his.HisEnum; import com.ynxbd.common.his.HisEnum;
import com.ynxbd.common.his.HisFactory; import com.ynxbd.common.his.HisFactory;
import com.ynxbd.common.result.JsonResult; import com.ynxbd.common.result.JsonResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
@Slf4j @Slf4j
public class HisXKDao { public class HisXKDao {
@ -34,4 +40,20 @@ public class HisXKDao {
return new ArrayList<>(); return new ArrayList<>();
} }
public JsonResult createHisRx(String doctCode, String treatNum, String rxType, String diagnose, String weight, String note, String ybAttrib, String bzCode, String bzName, JSONArray rxJsonArr) {
JsonResult jsonResult = HisFactory.His().getJsonResult(HisEnum.HIS_XK_RX_CREATE, params -> {
params.put("YSCode", doctCode); // 开单医生编码
params.put("MZNum", treatNum); // 门诊号
params.put("CFType", rxType); // 处方类型 [1:西药]
params.put("MZDiagnose", diagnose); // 处方诊断
params.put("Weight", weight); // 体重
params.put("Note", note); // 备注
params.put("YBAttrib", ybAttrib); // 医保类别
params.put("BZCode", bzCode); // 病种编码
params.put("BZName", bzName); // 病种名称
params.put("Jarray", HisFactory.jsonArrayToXml(rxJsonArr));
});
log.info("[开方]返回 resp={}", JsonHelper.toJsonString(jsonResult.getDataMap()));
return null;
}
} }

@ -1,12 +1,17 @@
package com.ynxbd.common.his; package com.ynxbd.common.his;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.pay.PEnum; import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order; import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.helper.common.CodeHelper; import com.ynxbd.common.helper.common.CodeHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.util.List; import java.util.List;
import java.util.Set;
@Slf4j @Slf4j
public class HisFactory { public class HisFactory {
@ -89,4 +94,31 @@ public class HisFactory {
} }
return sb.toString(); return sb.toString();
} }
/**
* 字符串集转xml
*
* @return xml
*/
public static String jsonArrayToXml(JSONArray dataJsonArr) {
if (dataJsonArr == null) {
return null;
}
StringBuilder sb = new StringBuilder();
String val;
JSONObject item;
Set<String> keySet;
for (int i = 0; i < dataJsonArr.size(); i++) {
item = dataJsonArr.getJSONObject(i);
keySet = item.keySet();
for (String key : keySet) {
val = item.getString(key);
if (ObjectUtils.isEmpty(val)) {
val = "";
}
sb.append("<").append(key).append(">").append(val).append("</").append(key).append(">");
}
}
return sb.toString();
}
} }

@ -38,7 +38,7 @@ public class GMCService {
* @return list * @return list
*/ */
public List<Patient> syncPatientData(HttpServletRequest request, String wxOpenId, String gmcOpenId, String unionId) throws ServiceException { public List<Patient> syncPatientData(HttpServletRequest request, String wxOpenId, String gmcOpenId, String unionId) throws ServiceException {
log.error("[医共体-数据同步]wxOpenId={}, gmcOpenId={}", wxOpenId, gmcOpenId); log.info("[医共体-数据同步]wxOpenId={}, gmcOpenId={}", wxOpenId, gmcOpenId);
if (ObjectUtils.isEmpty(wxOpenId) || ObjectUtils.isEmpty(gmcOpenId)) { if (ObjectUtils.isEmpty(wxOpenId) || ObjectUtils.isEmpty(gmcOpenId)) {
return new ArrayList<>(); return new ArrayList<>();
} }
@ -66,12 +66,19 @@ public class GMCService {
item.setBirthday(AesWxHelper.decode(item.getBirthday())); item.setBirthday(AesWxHelper.decode(item.getBirthday()));
item.setHealthCardId(AesWxHelper.decode(item.getHealthCardId())); item.setHealthCardId(AesWxHelper.decode(item.getHealthCardId()));
} }
List<Patient> dbPatients = new PatientService().queryGmcCachePatientsByOpenId(wxOpenId, unionId);
List<Patient> addList = new ArrayList<>(); // 需添加用户 List<Patient> addList = new ArrayList<>(); // 需添加用户
List<Integer> removeIds = new ArrayList<>(); // 需删除用户ids List<Integer> removeIds = new ArrayList<>(); // 需删除用户ids
List<Patient> patientList = new ArrayList<>();// 返回的数据
List<Patient> dbPatients = new PatientService().queryGmcCachePatientsByOpenId(wxOpenId, unionId);
for (Patient item : gmcPatients) { for (Patient item : gmcPatients) {
if (item.isTestUser()) {
System.out.println("[测试账号]");
continue;
}
patientList.add(item);
item.setId(null); item.setId(null);
item.setOpenid(wxOpenId); item.setOpenid(wxOpenId);
if (HCardTypeEnum.NO_CARD.WX_CODE.equals(item.getCardType()) || ObjectUtils.isEmpty(item.getIdCardNo())) { // 无证绑定->不做处理 if (HCardTypeEnum.NO_CARD.WX_CODE.equals(item.getCardType()) || ObjectUtils.isEmpty(item.getIdCardNo())) { // 无证绑定->不做处理
@ -95,7 +102,7 @@ public class GMCService {
} }
for (Patient item : dbPatients) { for (Patient item : dbPatients) {
Patient findItem = gmcPatients.stream().filter(o -> ( Patient findItem = patientList.stream().filter(o -> (
!ObjectUtils.isEmpty(o.getEmpiId()) && o.getEmpiId().equals(item.getEmpiId())) !ObjectUtils.isEmpty(o.getEmpiId()) && o.getEmpiId().equals(item.getEmpiId()))
&& !ObjectUtils.isEmpty(o.getIdCardNo()) && o.getIdCardNo().equals(item.getIdCardNo()) && !ObjectUtils.isEmpty(o.getIdCardNo()) && o.getIdCardNo().equals(item.getIdCardNo())
).findFirst().orElse(null); ).findFirst().orElse(null);
@ -123,7 +130,7 @@ public class GMCService {
log.error("[医共体]同步用户数据,修改医共体绑定状态失败 id:{}", item.getId()); log.error("[医共体]同步用户数据,修改医共体绑定状态失败 id:{}", item.getId());
item.setEmpiId(empiId); item.setEmpiId(empiId);
item.setGmcUniqueId(gmcUniqueId); item.setGmcUniqueId(gmcUniqueId);
gmcPatients.add(item); patientList.add(item);
} }
} else { // 已校验过=>多余数据=>移除 } else { // 已校验过=>多余数据=>移除
removeIds.add(item.getId()); removeIds.add(item.getId());
@ -145,8 +152,8 @@ public class GMCService {
long endTime = System.currentTimeMillis(); long endTime = System.currentTimeMillis();
String takeTime = (endTime - begTime) + "ms"; // 耗时 String takeTime = (endTime - begTime) + "ms"; // 耗时
log.info("[医共体-数据同步][{}]][耗时:{}]-共[{}]条数据, 删除:[{}]条, 同步:[{}]条", wxOpenId, takeTime, gmcPatients.size(), delRows, addRows); log.info("[医共体-数据同步][{}]][耗时:{}]-共[{}]条数据, 删除:[{}]条, 同步:[{}]条", wxOpenId, takeTime, patientList.size(), delRows, addRows);
return gmcPatients; return patientList;
} }
/** /**

Loading…
Cancel
Save