|
@@ -368,6 +368,39 @@ public class RuleEngine {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public Result dealPreInterfaceEngin(AdvanceWarningVO advanceWarningVO, String ipStr) {
|
|
public Result dealPreInterfaceEngin(AdvanceWarningVO advanceWarningVO, String ipStr) {
|
|
|
|
|
+ JSONObject sendJson = new JSONObject();
|
|
|
|
|
+ try {
|
|
|
|
|
+ String jsonStr = JSON.toJSONString(advanceWarningVO);
|
|
|
|
|
+ log.info("事中提醒接收报文:{}", jsonStr);
|
|
|
|
|
+ JSONObject paramMap = JSON.parseObject(jsonStr);
|
|
|
|
|
+
|
|
|
|
|
+ AdvanceWarningAudit advanceWarningAudit = insertAdvanceWarning(advanceWarningVO);
|
|
|
|
|
+ if (CollectionUtil.isEmpty(advanceWaringRuleIdList)) {
|
|
|
|
|
+ log.error("事前提醒未配置对应的提醒规则");
|
|
|
|
|
+ return Result.ok();
|
|
|
|
|
+ }
|
|
|
|
|
+ for (Integer medicalRuleInsInfoId : advanceWaringRuleIdList) {
|
|
|
|
|
+ MedicalInsRuleInfo medicalInsRuleInfo = medicalInsRuleInfoService.getById(medicalRuleInsInfoId);
|
|
|
|
|
+ paramMap.put(SystemEventAttrConstant.PRE_ADVANCEWARNINGAUDIT_ID_KEY, advanceWarningAudit.getId());
|
|
|
|
|
+ runAdvanceWaringEngine(paramMap, medicalInsRuleInfo, advanceWarningAudit);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sendJson.put("id", advanceWarningAudit.getId());
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return Result.ok(sendJson);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 事前提醒接口
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param advanceWarningVO
|
|
|
|
|
+ * @param ipStr
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public Result dealPreInterfaceEnginSocket(AdvanceWarningVO advanceWarningVO, String ipStr) {
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
String jsonStr = JSON.toJSONString(advanceWarningVO);
|
|
String jsonStr = JSON.toJSONString(advanceWarningVO);
|
|
@@ -397,6 +430,59 @@ public class RuleEngine {
|
|
|
|
|
|
|
|
|
|
|
|
|
public Result dealMidInterfaceEngin(String intefName, MidIncidentWarningVO midIncidentWarningVO, String ipStr) {
|
|
public Result dealMidInterfaceEngin(String intefName, MidIncidentWarningVO midIncidentWarningVO, String ipStr) {
|
|
|
|
|
+ midIncidentWarningVOThreadLocal.set(midIncidentWarningVO);
|
|
|
|
|
+ JSONObject sendJson = new JSONObject();
|
|
|
|
|
+ try {
|
|
|
|
|
+ List<RuleAttr> ruleAttrList = interfRuleAttrList.get(intefName);
|
|
|
|
|
+ if (null == ruleAttrList) {
|
|
|
|
|
+ return Result.error("接口:" + intefName + " 未配置 对应的规则属性");
|
|
|
|
|
+ }
|
|
|
|
|
+ dictUtil.transferMidIncidentWarningVO(midIncidentWarningVO);
|
|
|
|
|
+ String jsonStr = JSON.toJSONString(midIncidentWarningVO);
|
|
|
|
|
+ log.info("事中提醒接收报文:{}", jsonStr);
|
|
|
|
|
+ JSONObject paramMap = JSON.parseObject(jsonStr);
|
|
|
|
|
+ List<Map<String, Object>> itemList = interfItemListPlugin.findProIntersection(paramMap, ruleAttrList);
|
|
|
|
|
+ MidIncidentAudit midIncidentAudit = insertMidWarning(midIncidentWarningVO);
|
|
|
|
|
+ insertLog(midIncidentWarningVO);
|
|
|
|
|
+ midIncidentAudit.setInterfName(intefName);
|
|
|
|
|
+ Set<String> auditDetailSet = new HashSet<>();
|
|
|
|
|
+ boolean sendFlag = false;
|
|
|
|
|
+ for (Map<String, Object> itemMap : itemList) {
|
|
|
|
|
+ Set<Integer> medicalInsRuleInfoIdList = itemCodeAndRuleIdMap.get(itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY));
|
|
|
|
|
+ if (CollectionUtil.isEmpty(medicalInsRuleInfoIdList)) {
|
|
|
|
|
+ log.error("项目编码未匹配到对应的医保规则:{}", itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY));
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ Object diagnose = itemMap.get(Constant.MEDICAL_DIAGNOSE_CODE_KEY);
|
|
|
|
|
+ if (null != diagnose) {
|
|
|
|
|
+ List<Object> diagnoseList = (List<Object>) diagnose;
|
|
|
|
|
+ //获取诊断编码配置的规则ID,加入需要执行的规则
|
|
|
|
|
+ for (Object diagnoseObject : diagnoseList) {
|
|
|
|
|
+ Set<Integer> diagnoseMedicalInsRuleInfoIdList = itemCodeAndRuleIdMap.get(diagnoseObject.toString());
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(diagnoseMedicalInsRuleInfoIdList)) {
|
|
|
|
|
+ medicalInsRuleInfoIdList.addAll(diagnoseMedicalInsRuleInfoIdList);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ paramMap.put(SystemEventAttrConstant.ADVICE_DETAILS_LIST_KEY, itemList);
|
|
|
|
|
+ sendFlag = runMidEngine(auditDetailSet, itemMap, medicalInsRuleInfoIdList, midIncidentAudit, itemList);
|
|
|
|
|
+ }
|
|
|
|
|
+ sendJson.put("id", midIncidentAudit.getId());
|
|
|
|
|
+ sendJson.put("violationFlag", sendFlag);
|
|
|
|
|
+ if (!sendFlag) {
|
|
|
|
|
+ log.error("无违规,事中审核无需提醒 门诊/住院号:{}", midIncidentWarningVO.getVisit_no());
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ midIncidentWarningVOThreadLocal.remove();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return Result.ok(sendJson);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public Result dealMidInterfaceEnginSocket(String intefName, MidIncidentWarningVO midIncidentWarningVO, String ipStr) {
|
|
|
midIncidentWarningVOThreadLocal.set(midIncidentWarningVO);
|
|
midIncidentWarningVOThreadLocal.set(midIncidentWarningVO);
|
|
|
try {
|
|
try {
|
|
|
List<RuleAttr> ruleAttrList = interfRuleAttrList.get(intefName);
|
|
List<RuleAttr> ruleAttrList = interfRuleAttrList.get(intefName);
|
|
@@ -452,6 +538,7 @@ public class RuleEngine {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 事后明细
|
|
* 事后明细
|
|
|
*
|
|
*
|