|
@@ -14,7 +14,6 @@ import com.diagbot.enums.RedisEnum;
|
|
|
import com.diagbot.enums.RuleTypeEnum;
|
|
|
import com.diagbot.enums.TypeEnum;
|
|
|
import com.diagbot.facade.CommonFacade;
|
|
|
-import com.diagbot.model.entity.PD;
|
|
|
import com.diagbot.model.entity.PacsNum;
|
|
|
import com.diagbot.model.label.PacsLabel;
|
|
|
import com.diagbot.rule.AgeRule;
|
|
@@ -30,6 +29,7 @@ import com.diagbot.util.RedisUtil;
|
|
|
import com.diagbot.util.ReflectUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.RuleVO;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -94,10 +94,9 @@ public class OtherTipProcess {
|
|
|
*/
|
|
|
public void processPacs(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
PacsLabel pacsLabel = wordCrfDTO.getPacsLabel();
|
|
|
- List<Item> itemList = pacsLabel.getRes();
|
|
|
+ List<RuleVO> ruleList = getRuleVO(pacsLabel);
|
|
|
List<BillMsg> otherList = res.getOtherList();
|
|
|
- for (Item item : itemList) {
|
|
|
- RuleVO ruleVO = getRuleVO(item);
|
|
|
+ for (RuleVO ruleVO : ruleList) {
|
|
|
// 1、获取相关数据
|
|
|
if (ruleVO != null) {
|
|
|
RuleExtDTO ruleExtDTO = commonFacade.getRuleData(ruleVO);
|
|
@@ -108,66 +107,66 @@ public class OtherTipProcess {
|
|
|
for (RuleConditionDTO ruleConditionDTO : ruleConditionDTOList) {
|
|
|
List<RuleBaseDTO> ruleBaseDTOList = ruleConditionDTO.getRuleBaseDTOList();
|
|
|
// 2、规则匹配
|
|
|
- pacsRule.otherPacs(ruleBaseDTOList, ruleConditionDTO.getMsg(), otherList, wordCrfDTO);
|
|
|
+ pacsRule.otherPacs(ruleBaseDTOList, ruleConditionDTO.getMsg(), otherList, wordCrfDTO, ruleExtDTO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // TODO 后期删除 辅检数值型匹配
|
|
|
- List<PacsNum> pacsNumList = pacsLabel.getPacsNumList();
|
|
|
- for (PacsNum pacsNum : pacsNumList) {
|
|
|
- if ("心率".equals(pacsNum.getStandName())) {
|
|
|
- PD pd = pacsNum.getPd();
|
|
|
- if (pd != null && StringUtil.isNotBlank(pd.getValue())) {
|
|
|
- double v = Double.parseDouble(pd.getValue());
|
|
|
- String content = pacsNum.getStandName() + pd.getValue() + pd.getUnit();
|
|
|
- Double ageNum = wordCrfDTO.getAgeNum();
|
|
|
- Double min = null, max = null;
|
|
|
- String suggest = "";
|
|
|
- if (ageNum < 0.019) {
|
|
|
- min = 110D;
|
|
|
- max = 170D;
|
|
|
- suggest = "年龄0-6天心率正常值为110-170bpm";
|
|
|
- } else if (ageNum < 0.164) {
|
|
|
- min = 90D;
|
|
|
- max = 160D;
|
|
|
- suggest = "年龄7-59天心率正常值为90-160bpm";
|
|
|
- } else if (ageNum < 2) {
|
|
|
- min = 90D;
|
|
|
- max = 150D;
|
|
|
- suggest = "年龄2-23月心率正常值为90-150bpm";
|
|
|
- } else if (ageNum < 3) {
|
|
|
- min = 80D;
|
|
|
- max = 140D;
|
|
|
- suggest = "年龄2-3岁心率正常值为80-140bpm";
|
|
|
- } else if (ageNum < 6) {
|
|
|
- min = 80D;
|
|
|
- max = 130D;
|
|
|
- suggest = "年龄3-5岁心率正常值为80-130bpm";
|
|
|
- } else if (ageNum < 11) {
|
|
|
- min = 70D;
|
|
|
- max = 120D;
|
|
|
- suggest = "年龄6-10岁心率正常值为70-120bpm";
|
|
|
- } else if (ageNum < 18) {
|
|
|
- min = 60D;
|
|
|
- max = 120D;
|
|
|
- suggest = "年龄11-17岁心率正常值为60-120bpm";
|
|
|
- } else if (ageNum <= 150) {
|
|
|
- min = 60D;
|
|
|
- max = 110D;
|
|
|
- suggest = "年龄18-150岁心率正常值为60-110bpm";
|
|
|
- }
|
|
|
- int flag = compareValue(min, max, v);
|
|
|
- if (flag == 0) {
|
|
|
- String msg = String.format("该患者%s,%s", content, suggest);
|
|
|
- BillMsg billMsg = new BillMsg();
|
|
|
- billMsg.setMsg(msg);
|
|
|
- billMsg.setContent(content);
|
|
|
- otherList.add(billMsg);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // // TODO 后期删除 辅检数值型匹配
|
|
|
+ // List<PacsNum> pacsNumList = pacsLabel.getPacsNumList();
|
|
|
+ // for (PacsNum pacsNum : pacsNumList) {
|
|
|
+ // if ("心率".equals(pacsNum.getStandName())) {
|
|
|
+ // PD pd = pacsNum.getPd();
|
|
|
+ // if (pd != null && StringUtil.isNotBlank(pd.getValue())) {
|
|
|
+ // double v = Double.parseDouble(pd.getValue());
|
|
|
+ // String content = pacsNum.getStandName() + pd.getValue() + pd.getUnit();
|
|
|
+ // Double ageNum = wordCrfDTO.getAgeNum();
|
|
|
+ // Double min = null, max = null;
|
|
|
+ // String suggest = "";
|
|
|
+ // if (ageNum < 0.019) {
|
|
|
+ // min = 110D;
|
|
|
+ // max = 170D;
|
|
|
+ // suggest = "年龄0-6天心率正常值为110-170bpm";
|
|
|
+ // } else if (ageNum < 0.164) {
|
|
|
+ // min = 90D;
|
|
|
+ // max = 160D;
|
|
|
+ // suggest = "年龄7-59天心率正常值为90-160bpm";
|
|
|
+ // } else if (ageNum < 2) {
|
|
|
+ // min = 90D;
|
|
|
+ // max = 150D;
|
|
|
+ // suggest = "年龄2-23月心率正常值为90-150bpm";
|
|
|
+ // } else if (ageNum < 3) {
|
|
|
+ // min = 80D;
|
|
|
+ // max = 140D;
|
|
|
+ // suggest = "年龄2-3岁心率正常值为80-140bpm";
|
|
|
+ // } else if (ageNum < 6) {
|
|
|
+ // min = 80D;
|
|
|
+ // max = 130D;
|
|
|
+ // suggest = "年龄3-5岁心率正常值为80-130bpm";
|
|
|
+ // } else if (ageNum < 11) {
|
|
|
+ // min = 70D;
|
|
|
+ // max = 120D;
|
|
|
+ // suggest = "年龄6-10岁心率正常值为70-120bpm";
|
|
|
+ // } else if (ageNum < 18) {
|
|
|
+ // min = 60D;
|
|
|
+ // max = 120D;
|
|
|
+ // suggest = "年龄11-17岁心率正常值为60-120bpm";
|
|
|
+ // } else if (ageNum <= 150) {
|
|
|
+ // min = 60D;
|
|
|
+ // max = 110D;
|
|
|
+ // suggest = "年龄18-150岁心率正常值为60-110bpm";
|
|
|
+ // }
|
|
|
+ // int flag = compareValue(min, max, v);
|
|
|
+ // if (flag == 0) {
|
|
|
+ // String msg = String.format("该患者%s,%s", content, suggest);
|
|
|
+ // BillMsg billMsg = new BillMsg();
|
|
|
+ // billMsg.setMsg(msg);
|
|
|
+ // billMsg.setContent(content);
|
|
|
+ // otherList.add(billMsg);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
public int compareValue(Double min, Double max, Double v) {
|
|
@@ -294,24 +293,47 @@ public class OtherTipProcess {
|
|
|
return hasAdviceFlag;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 获取其他值提醒入参——辅检
|
|
|
*
|
|
|
- * @param bean
|
|
|
+ * @param pacsLabel
|
|
|
* @return
|
|
|
*/
|
|
|
- public RuleVO getRuleVO(Item bean) {
|
|
|
- if (StringUtil.isNotBlank(bean.getUniqueName())) {
|
|
|
- RuleVO ruleVO = new RuleVO();
|
|
|
- ruleVO.setInputName(bean.getName());
|
|
|
- ruleVO.setLibName(bean.getUniqueName());
|
|
|
- ruleVO.setLibType(LexiconEnum.PacsResult.getKey());
|
|
|
- ruleVO.setLibTypeName(TypeEnum.pacs.getName());
|
|
|
- ruleVO.setDateValue(bean.getDateValue());
|
|
|
- ruleVO.setSuffix(String.valueOf(RuleTypeEnum.other.getKey()));
|
|
|
- return ruleVO;
|
|
|
+ public List<RuleVO> getRuleVO(PacsLabel pacsLabel) {
|
|
|
+ List<RuleVO> ruleVOList = Lists.newArrayList();
|
|
|
+
|
|
|
+ // 辅检结果
|
|
|
+ List<Item> itemList = pacsLabel.getRes();
|
|
|
+ if (ListUtil.isNotEmpty(itemList)) {
|
|
|
+ for (Item bean : itemList) {
|
|
|
+ if (StringUtil.isNotBlank(bean.getUniqueName())) {
|
|
|
+ RuleVO ruleVO = new RuleVO();
|
|
|
+ ruleVO.setInputName(bean.getName());
|
|
|
+ ruleVO.setLibName(bean.getUniqueName());
|
|
|
+ ruleVO.setLibType(LexiconEnum.PacsResult.getKey());
|
|
|
+ ruleVO.setLibTypeName(TypeEnum.pacs.getName());
|
|
|
+ ruleVO.setDateValue(bean.getDateValue());
|
|
|
+ ruleVO.setSuffix(String.valueOf(RuleTypeEnum.other.getKey()));
|
|
|
+ ruleVOList.add(ruleVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- return null;
|
|
|
+
|
|
|
+ // 辅检描述
|
|
|
+ List<PacsNum> pacsNumList = pacsLabel.getPacsNumList();
|
|
|
+ if (ListUtil.isNotEmpty(pacsNumList)) {
|
|
|
+ for (PacsNum pacsNum : pacsNumList) {
|
|
|
+ RuleVO ruleVO = new RuleVO();
|
|
|
+ ruleVO.setInputName(pacsNum.getName());
|
|
|
+ ruleVO.setLibName(pacsNum.getStandName());
|
|
|
+ ruleVO.setLibType(LexiconEnum.PacsDescribe.getKey());
|
|
|
+ ruleVO.setLibTypeName(TypeEnum.pacs.getName());
|
|
|
+ ruleVO.setSuffix(String.valueOf(RuleTypeEnum.other.getKey()));
|
|
|
+ ruleVOList.add(ruleVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ruleVOList;
|
|
|
}
|
|
|
|
|
|
/**
|