|
@@ -6,13 +6,13 @@ import com.diagbot.dto.NodeNeoDTO;
|
|
|
import com.diagbot.model.entity.Negative;
|
|
|
import com.diagbot.util.CoreUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @description: 实验室检查和辅助检查规则
|
|
@@ -22,70 +22,34 @@ import java.util.stream.Collectors;
|
|
|
public class DrugRule {
|
|
|
|
|
|
/**
|
|
|
- * 比较药品是否存在(图谱返回的是药品通用名,直接比较)
|
|
|
+ * 比较药品是否存在(图谱返回药品通用名或者药品分类,如果返回的是药品分类,再从redis获取药品通用名)
|
|
|
*
|
|
|
- * @param drugLises
|
|
|
- * @param inputLises
|
|
|
+ * @param drugList
|
|
|
+ * @param inputList
|
|
|
* @return
|
|
|
*/
|
|
|
- public static <T> void compareDrugWithBill(List<NodeNeoDTO> drugLises, List<T> inputLises, BillNeoMaxDTO billNeoMaxDTO,
|
|
|
+ public static <T> void compareDrugWithBill(List<NodeNeoDTO> drugList, List<T> inputList, BillNeoMaxDTO billNeoMaxDTO,
|
|
|
List<BillMsg> billMsgList, Map<String, List<String>> drugMap, String type) {
|
|
|
Map<String, String> old_stand = new HashMap<>();
|
|
|
- if (ListUtil.isNotEmpty(drugLises) && ListUtil.isNotEmpty(inputLises)) {
|
|
|
- List<String> allDrug = drugLises.stream().map(x -> x.getName()).collect(Collectors.toList());
|
|
|
- for (T d : inputLises) {
|
|
|
- Negative val = (Negative) CoreUtil.getFieldValue(d, "negative");
|
|
|
- if (val == null) {
|
|
|
- String c = (String) CoreUtil.getFieldValue(d, "standName");
|
|
|
- String c_name = (String) CoreUtil.getFieldValue(d, "name");
|
|
|
- if (StringUtils.isNotBlank(c) && allDrug.contains(c)) {
|
|
|
- old_stand.put(c_name, c);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (old_stand.size() > 0) {
|
|
|
- for (Map.Entry<String, String> d : old_stand.entrySet()) {
|
|
|
- String message = "";
|
|
|
- if ("禁忌过敏药品".equals(type)) {
|
|
|
- message = d.getKey() + "过敏";
|
|
|
- } else {
|
|
|
- message = "已开" + d.getKey();
|
|
|
+ if (ListUtil.isNotEmpty(drugList) && ListUtil.isNotEmpty(inputList)) {
|
|
|
+ List<String> allDrug = new ArrayList<>();
|
|
|
+ for (NodeNeoDTO nodeNeoDTO : drugList) {
|
|
|
+ if (StringUtil.isBlank(nodeNeoDTO.getTermtype()) || "药品".equals(nodeNeoDTO.getTermtype())) {
|
|
|
+ allDrug.add(nodeNeoDTO.getName());
|
|
|
+ } else if ("药品分类".equals(nodeNeoDTO.getTermtype())){
|
|
|
+ String drugType = nodeNeoDTO.getName();
|
|
|
+ if (drugMap.get(drugType) != null) {
|
|
|
+ allDrug.addAll(drugMap.get(drugType));
|
|
|
}
|
|
|
- BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(
|
|
|
- billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
|
|
|
- message, type);
|
|
|
- billMsgList.add(commonBillMsg);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 比较药品是否存在(图谱返回的是药品大类,需要从缓存中获取大类对应的药品名称)
|
|
|
- *
|
|
|
- * @param drugLises
|
|
|
- * @param inputLises
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static <T> void compareDrugWithBillWithType(List<NodeNeoDTO> drugLises, List<T> inputLises, BillNeoMaxDTO billNeoMaxDTO,
|
|
|
- List<BillMsg> billMsgList, Map<String, List<String>> drugMap, String type) {
|
|
|
- Map<String, String> old_stand = new HashMap<>();
|
|
|
- if (ListUtil.isNotEmpty(drugLises) && ListUtil.isNotEmpty(inputLises)) {
|
|
|
- List<String> drugType = drugLises.stream().map(x -> x.getName()).collect(Collectors.toList());
|
|
|
- List<String> allDrug = new ArrayList<>(); // 所有的药品名称
|
|
|
- for (String drugT : drugType) {
|
|
|
- if (drugMap.get(drugT) != null) {
|
|
|
- allDrug.addAll(drugMap.get(drugT));
|
|
|
}
|
|
|
}
|
|
|
- for (T d : inputLises) {
|
|
|
+ for (T d : inputList) {
|
|
|
Negative val = (Negative) CoreUtil.getFieldValue(d, "negative");
|
|
|
if (val == null) {
|
|
|
- String c = (String) CoreUtil.getFieldValue(d, "standName");
|
|
|
- String c_name = (String) CoreUtil.getFieldValue(d, "name");
|
|
|
- if (StringUtils.isNotBlank(c) && allDrug.contains(c)) {
|
|
|
- old_stand.put(c_name, c);
|
|
|
+ String standName = (String) CoreUtil.getFieldValue(d, "standName");
|
|
|
+ String name = (String) CoreUtil.getFieldValue(d, "name");
|
|
|
+ if (StringUtils.isNotBlank(standName) && allDrug.contains(standName)) {
|
|
|
+ old_stand.put(name, standName);
|
|
|
}
|
|
|
}
|
|
|
}
|