|
@@ -4,6 +4,7 @@ import com.diagbot.biz.push.entity.Item;
|
|
|
import com.diagbot.biz.push.entity.Lis;
|
|
|
import com.diagbot.dto.PushBaseDTO;
|
|
|
import com.diagbot.dto.RuleBaseDTO;
|
|
|
+import com.diagbot.enums.CommonEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
|
import com.diagbot.model.entity.BodyPart;
|
|
|
import com.diagbot.model.entity.Clinical;
|
|
@@ -430,6 +431,72 @@ public class CoreUtil {
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 比较查体是否匹配
|
|
|
+ *
|
|
|
+ * @param ruleBaseDTO
|
|
|
+ * @param vitalLabel
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, Object> compareVitalMulti(RuleBaseDTO ruleBaseDTO, VitalLabel vitalLabel) {
|
|
|
+ Map<String, Object> map = new LinkedHashMap<>();
|
|
|
+ List<String> msgList = new ArrayList<>();
|
|
|
+ map.put("msgList", msgList);
|
|
|
+ List<Vital> vitalList = vitalLabel.getVitals(); // 体征数据
|
|
|
+ List<Clinical> clinicals = vitalLabel.getClinicals(); // 体征临床表现
|
|
|
+ boolean flag = false;
|
|
|
+ if (ruleBaseDTO == null) {
|
|
|
+ map.put("flag", flag);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ // if (StringUtil.isBlank(ruleBaseDTO.getBaseMaxValue()) && StringUtil.isBlank(ruleBaseDTO.getBaseMinValue())) {
|
|
|
+ // 如果是体格检查结果,就用临床表现比较;如果是体格检查项目,用体征数值比较
|
|
|
+ if (ruleBaseDTO.getBaseLibType().equals(LexiconEnum.VitalResult.getKey())) {
|
|
|
+ // 体征名称比较(例如:喉头水肿)
|
|
|
+ String libNameMulti = ruleBaseDTO.getBaseLibName();
|
|
|
+ if (libNameMulti.contains(CommonEnum.splitSymbol.getName())) {
|
|
|
+ for (Clinical clinical : clinicals) {
|
|
|
+ List<String> nameList = Lists.newArrayList(libNameMulti.split(CommonEnum.splitSymbol.getName()));
|
|
|
+ if (nameList.contains(clinical.getStandName())) {
|
|
|
+ msgList.add(clinical.getName());
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (Clinical clinical : clinicals) {
|
|
|
+ if (ruleBaseDTO.getBaseLibName().equals(clinical.getStandName())) {
|
|
|
+ msgList.add(clinical.getName());
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 体征数值比较(例如:体温,血压)
|
|
|
+ for (Vital vital : vitalList) {
|
|
|
+ List<Usual> usualList = vital.getUsualList();
|
|
|
+ if (ruleBaseDTO.getBaseLibName().equals(vital.getStandName()) && vital.getPd() != null
|
|
|
+ && StringUtil.isNotBlank(vital.getPd().getValue())) {
|
|
|
+ flag = compareNum(ruleBaseDTO, Double.parseDouble(vital.getPd().getValue()));
|
|
|
+ if (flag) {
|
|
|
+ msgList.add(vital.getName() + subZeroAndDot(String.valueOf(vital.getPd().getValue())));
|
|
|
+ }
|
|
|
+ } else if (ListUtil.isNotEmpty(usualList)) { // 血压比较
|
|
|
+ for (Usual usual : usualList) {
|
|
|
+ if (ruleBaseDTO.getBaseLibName().equals(usual.getStandName())) {
|
|
|
+ flag = compareNum(ruleBaseDTO, Double.parseDouble(usual.getValue()));
|
|
|
+ if (flag) {
|
|
|
+ msgList.add(vital.getName() + subZeroAndDot(String.valueOf(vital.getPd().getValue())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("flag", flag);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 比较数值大小(double)
|
|
|
*
|
|
@@ -710,6 +777,27 @@ public class CoreUtil {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 比较名称是否匹配(多个名称用分隔符隔开)
|
|
|
+ *
|
|
|
+ * @param ruleBaseDTO
|
|
|
+ * @param input
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Boolean compareNameMulti(RuleBaseDTO ruleBaseDTO, String input) {
|
|
|
+ if (StringUtil.isBlank(input) || ruleBaseDTO == null || StringUtil.isBlank(ruleBaseDTO.getBaseLibName())) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 多个名称用分隔符隔开,只需要满足一个即可
|
|
|
+ List<String> nameList = CoreUtil.getSplit(ruleBaseDTO.getBaseLibName());
|
|
|
+ for (String name : nameList) {
|
|
|
+ if (input.equals(name)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取所有阳性【T】,转成Item结构,放入列表
|
|
|
*
|
|
@@ -1067,6 +1155,30 @@ public class CoreUtil {
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据分隔符转成list
|
|
|
+ * @param name
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static List<String> getSplit(String name) {
|
|
|
+ return getSplit(name, CommonEnum.splitSymbol.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据分隔符转成list
|
|
|
+ *
|
|
|
+ * @param name
|
|
|
+ * @param splitSymbol
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static List<String> getSplit(String name, String splitSymbol) {
|
|
|
+ if (StringUtil.isBlank(name)) {
|
|
|
+ return Lists.newArrayList();
|
|
|
+ }
|
|
|
+ return Lists.newArrayList(name.split(splitSymbol));
|
|
|
+ }
|
|
|
+
|
|
|
public static void main(String[] args) {
|
|
|
List<PushBaseDTO> pushBaseDTOList = ListUtil.newArrayList();
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|