|
@@ -318,7 +318,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
StringBuffer res = new StringBuffer();
|
|
|
Long time1 = System.currentTimeMillis();
|
|
|
Set<String> diagnosetQuestionSet = new HashSet<>(); // 问题词去重变量
|
|
|
- Set<String> diagnoseName = new HashSet<>(); // 诊断依据主表修改变量
|
|
|
+ Set<String> diagnoseName = new HashSet<>(); // 诊断依据有问题的诊断
|
|
|
if (!verifyFlag) {
|
|
|
throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "其他人正在执行此操作,请稍后再试!");
|
|
|
}
|
|
@@ -371,9 +371,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
diagnoseQuestionList.add(diagnoseQuestion1);
|
|
|
diagnoseName.add(diagnoseQuestion1.getDisName());
|
|
|
}
|
|
|
- List<DiagnoseDetail> lis = new ArrayList<>();
|
|
|
- List<DiagnoseDetail> pacs = new ArrayList<>();
|
|
|
- List<DiagnoseDetail> formula = new ArrayList<>();
|
|
|
+
|
|
|
+ List<DiagnoseDetail> lisAndPacs = new ArrayList<>(); // 化验|辅检数据
|
|
|
+ List<DiagnoseDetail> formula = new ArrayList<>(); // 公式数据
|
|
|
|
|
|
for (DiagnoseDetail bean : detail) {
|
|
|
boolean updateFlag = false;
|
|
@@ -395,14 +395,12 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
updateFlag = true;
|
|
|
}
|
|
|
} else {
|
|
|
- // 添加到化验列表
|
|
|
- if (DiagnoseFeatureTypeEnum.Lis.getKey() == bean.getType()) {
|
|
|
- lis.add(bean);
|
|
|
- }
|
|
|
- // 添加到辅检列表
|
|
|
- if (DiagnoseFeatureTypeEnum.Pacs.getKey() == bean.getType()) {
|
|
|
- pacs.add(bean);
|
|
|
+ // 添加到化验|辅检列表
|
|
|
+ if (DiagnoseFeatureTypeEnum.Lis.getKey() == bean.getType()
|
|
|
+ || DiagnoseFeatureTypeEnum.Pacs.getKey() == bean.getType()) {
|
|
|
+ lisAndPacs.add(bean);
|
|
|
}
|
|
|
+
|
|
|
// 校验编码
|
|
|
String oldVerifyCode = bean.getVerifyCode();
|
|
|
if (StringUtil.isNotEmpty(bean.getCode())) {
|
|
@@ -454,7 +452,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(),
|
|
|
DiagnoseFieldEnum.relation.getKey());
|
|
|
for (String s : arr) {
|
|
|
- typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
|
|
|
flag = verifyExist(libSet, s.trim(), typeList);
|
|
|
if (!flag) {
|
|
|
sb.append(s).append("、");
|
|
@@ -505,7 +502,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(),
|
|
|
DiagnoseFieldEnum.result.getKey());
|
|
|
for (String s : arr) {
|
|
|
- typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
|
|
|
flag = verifyExist(libSet, s.trim(), typeList);
|
|
|
if (!flag) {
|
|
|
sb.append(s).append("、");
|
|
@@ -534,13 +530,10 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
diagnoseDetailList.add(bean);
|
|
|
}
|
|
|
}
|
|
|
- // 以上校验全部通过之后再校验业务异常,例如:诊断公式里有化验和辅检编码,则化验和辅检数据必须完整
|
|
|
- // TODO 待修改
|
|
|
+
|
|
|
+ // 当前诊断校验通过后再校验其他数据异常,例如:诊断公式里有化验和辅检编码,则化验和辅检数据必须完整
|
|
|
if (!diagnoseName.contains(key)) {
|
|
|
- for (DiagnoseDetail det : lis) {
|
|
|
- String regex = "(.*" + det.getCode().replace(".", "\\\\.") + ")|(.*" +
|
|
|
- det.getCode().replace(".", "\\\\.") + "\\\\D.*)";
|
|
|
- }
|
|
|
+ doLisAndPacs(diagnoseName, lisAndPacs, formula, diagnoseDetailList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -559,7 +552,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>());
|
|
|
// 新增问题词
|
|
|
if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
|
|
|
- // 新增问题词数据
|
|
|
diagnoseQuestionService.insertBatch(diagnoseQuestionList); // 效率比框架的saveBatch高很多
|
|
|
}
|
|
|
Long time6 = System.currentTimeMillis();
|
|
@@ -596,6 +588,50 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 校验化验和辅检数据异常
|
|
|
+ *
|
|
|
+ * @param diagnoseName 有问题的诊断名称
|
|
|
+ * @param lisAndPacs 化验辅检数据
|
|
|
+ * @param formula 公式数据
|
|
|
+ * @param diagnoseDetailList 需要更新的明细
|
|
|
+ */
|
|
|
+ public void doLisAndPacs(Set<String> diagnoseName, List<DiagnoseDetail> lisAndPacs,
|
|
|
+ List<DiagnoseDetail> formula, List<DiagnoseDetail> diagnoseDetailList) {
|
|
|
+ // 处理数据
|
|
|
+ for (DiagnoseDetail det : lisAndPacs) {
|
|
|
+ // 公式正则匹配化验和辅检的编码值,以编码值结尾或者编码值之后一位不能是数字
|
|
|
+ // 避免3.1去匹配3.11成功;点号需要转义
|
|
|
+ // 正则示例:(.*3.1)|(.*3.1\\D.*)
|
|
|
+ String regex = "(.*" + det.getCode().replace(".", "\\.") + ")|(.*" +
|
|
|
+ det.getCode().replace(".", "\\.") + "\\D.*)";
|
|
|
+ boolean verifyAll = false;
|
|
|
+ for (DiagnoseDetail form : formula) {
|
|
|
+ if (form.getFormula().matches(regex)) {
|
|
|
+ verifyAll = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (verifyAll) { // 如果在公式里存在编码,则数据必须完整
|
|
|
+ boolean needUpdate = false;
|
|
|
+ if (StringUtil.isEmpty(det.getRelation())) { // 化验、辅检都有
|
|
|
+ det.setVerifyRelation("数据异常");
|
|
|
+ needUpdate = true;
|
|
|
+ }
|
|
|
+ if (DiagnoseFeatureTypeEnum.Lis.getKey() == det.getType()) { // 化验有
|
|
|
+ if (StringUtil.isEmpty(det.getResult())) {
|
|
|
+ det.setVerifyResult("数据异常");
|
|
|
+ needUpdate = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (needUpdate) {
|
|
|
+ diagnoseName.add(det.getDisName());
|
|
|
+ diagnoseDetailList.add(det);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 校验是否已存在问题词数据
|
|
|
*
|
|
@@ -907,9 +943,13 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
+ String res = "1.2+1.3";
|
|
|
String str = "1.3";
|
|
|
- String regex = "(.*" + str.replace(".", "\\\\.") + ")|(.*" +
|
|
|
- str.replace(".", "\\\\.") + "\\\\D.*)";
|
|
|
+ String regex = "(.*" + str.replace(".", "\\.") + ")|(.*" +
|
|
|
+ str.replace(".", "\\.") + "\\D.*)";
|
|
|
System.out.println(regex);
|
|
|
+ String regex1 = "(.*1\\.3)|(.*1\\.3\\D.*)";
|
|
|
+ System.out.println(res.matches(regex));
|
|
|
+ System.out.println(res.matches(regex1));
|
|
|
}
|
|
|
}
|