|
@@ -12,6 +12,7 @@ import com.diagbot.util.CoreUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.Drug;
|
|
|
+import com.diagbot.vo.ItemExt;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
@@ -34,6 +35,8 @@ public class OtherRule {
|
|
|
VitalRule vitalRule;
|
|
|
@Autowired
|
|
|
AgeRule ageRule;
|
|
|
+ @Autowired
|
|
|
+ LisRule lisRule;
|
|
|
|
|
|
/**
|
|
|
* 70岁及以上开【内镜检查】时,需要先做【心电图检查】
|
|
@@ -226,4 +229,228 @@ public class OtherRule {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检验开单:【骨髓涂片细胞学检查】
|
|
|
+ * 1、禁忌疾病:血友病
|
|
|
+ *
|
|
|
+ * @param wordCrfDTO
|
|
|
+ * @param res
|
|
|
+ */
|
|
|
+ public void lisDiseaseRule2(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
+ // 特殊值处理
|
|
|
+ // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
|
|
|
+ List<Lis> lisOrderList = wordCrfDTO.getLisOrder();
|
|
|
+ for (Lis lis : lisOrderList) {
|
|
|
+ String lisOrderName = "骨髓涂片细胞学检查";
|
|
|
+ if (lisOrderName.equals(lis.getUniqueName())) {
|
|
|
+ // 开单项信息
|
|
|
+ BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
|
|
|
+ billNeoMaxDTO.setOrderName(lis.getName());
|
|
|
+ billNeoMaxDTO.setOrderStandName(lisOrderName);
|
|
|
+
|
|
|
+ // 禁忌疾病
|
|
|
+ List<NodeNeoDTO> diseaseNode = new ArrayList<>();
|
|
|
+ List<String> diseaseList = Lists.newArrayList("血友病");
|
|
|
+ for (String str : diseaseList) {
|
|
|
+ NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
|
|
|
+ nodeNeoDTO.setName(str);
|
|
|
+ nodeNeoDTO.setTermtype(NeoEnum.disease.getName());
|
|
|
+ diseaseNode.add(nodeNeoDTO);
|
|
|
+ }
|
|
|
+ billNeoMaxDTO.setDisease(diseaseNode);
|
|
|
+ commonRule.compareItemWithBill(diseaseNode, wordCrfDTO.getDiagSource(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.disease.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检验开单:【骨髓涂片细胞学检查】
|
|
|
+ * 1、禁忌疾病:血友病
|
|
|
+ *
|
|
|
+ * @param wordCrfDTO
|
|
|
+ * @param res
|
|
|
+ */
|
|
|
+ public void lisDiseaseRule3(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
+ // 特殊值处理
|
|
|
+ // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
|
|
|
+ List<Lis> lisOrderList = wordCrfDTO.getLisOrder();
|
|
|
+ for (Lis lis : lisOrderList) {
|
|
|
+ String lisOrderName = "胸腹水生化检查";
|
|
|
+ if (lisOrderName.equals(lis.getUniqueName())) {
|
|
|
+ // 开单项信息
|
|
|
+ BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
|
|
|
+ billNeoMaxDTO.setOrderName(lis.getName());
|
|
|
+ billNeoMaxDTO.setOrderStandName(lisOrderName);
|
|
|
+
|
|
|
+ // 禁忌疾病
|
|
|
+ List<NodeNeoDTO> diseaseNode = new ArrayList<>();
|
|
|
+ List<String> diseaseList = Lists.newArrayList("妊娠状态");
|
|
|
+ for (String str : diseaseList) {
|
|
|
+ NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
|
|
|
+ nodeNeoDTO.setName(str);
|
|
|
+ nodeNeoDTO.setTermtype(NeoEnum.disease.getName());
|
|
|
+ diseaseNode.add(nodeNeoDTO);
|
|
|
+ }
|
|
|
+ billNeoMaxDTO.setDisease(diseaseNode);
|
|
|
+ commonRule.compareItemWithBill(diseaseNode, wordCrfDTO.getDiagSource(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.disease.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检验开单:【骨髓涂片细胞学检查】
|
|
|
+ * 1、禁忌检验结果:凝血功能检查-活化部分凝血活酶时间测定(APTT),大于38秒或>38s
|
|
|
+ *
|
|
|
+ * @param wordCrfDTO
|
|
|
+ * @param res
|
|
|
+ */
|
|
|
+ public void lisResRule4(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
+ // 特殊值处理
|
|
|
+ // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
|
|
|
+ List<Lis> lisOrderList = wordCrfDTO.getLisOrder();
|
|
|
+ for (Lis lis : lisOrderList) {
|
|
|
+ String lisOrderName = "骨髓涂片细胞学检查";
|
|
|
+ if (lisOrderName.equals(lis.getUniqueName())) {
|
|
|
+ // 开单项信息
|
|
|
+ BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
|
|
|
+ billNeoMaxDTO.setOrderName(lis.getName());
|
|
|
+ billNeoMaxDTO.setOrderStandName(lisOrderName);
|
|
|
+
|
|
|
+ // 禁忌实验室检查结果
|
|
|
+ List<NodeNeoDTO> lists = new ArrayList<>();
|
|
|
+ NodeNeoDTO ssyNode = new NodeNeoDTO();
|
|
|
+ ssyNode.setName("活化部分凝血活酶时间测定(APTT)");
|
|
|
+ ssyNode.setTermtype(NeoEnum.lis.getName());
|
|
|
+ ssyNode.setMin(new BigDecimal(38.1));
|
|
|
+ lists.add(ssyNode);
|
|
|
+ billNeoMaxDTO.setLis(lists);
|
|
|
+ lisRule.bill(wordCrfDTO.getLisOrder(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.lis.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检验开单:【胸腹水生化检查】
|
|
|
+ * 1、禁忌检验结果:血HCG测定-大于500IU/L
|
|
|
+ *
|
|
|
+ * @param wordCrfDTO
|
|
|
+ * @param res
|
|
|
+ */
|
|
|
+ public void lisResRule5(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
+ // 特殊值处理
|
|
|
+ // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
|
|
|
+ List<Lis> lisOrderList = wordCrfDTO.getLisOrder();
|
|
|
+ for (Lis lis : lisOrderList) {
|
|
|
+ String lisOrderName = "胸腹水生化检查";
|
|
|
+ if (lisOrderName.equals(lis.getUniqueName())) {
|
|
|
+ // 开单项信息
|
|
|
+ BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
|
|
|
+ billNeoMaxDTO.setOrderName(lis.getName());
|
|
|
+ billNeoMaxDTO.setOrderStandName(lisOrderName);
|
|
|
+
|
|
|
+ // 禁忌实验室检查结果
|
|
|
+ List<NodeNeoDTO> lists = new ArrayList<>();
|
|
|
+ NodeNeoDTO ssyNode = new NodeNeoDTO();
|
|
|
+ ssyNode.setName("血清人绒毛膜促性腺激素测定");
|
|
|
+ ssyNode.setTermtype(NeoEnum.lis.getName());
|
|
|
+ ssyNode.setMin(new BigDecimal(500.1));
|
|
|
+ lists.add(ssyNode);
|
|
|
+ billNeoMaxDTO.setLis(lists);
|
|
|
+ lisRule.bill(wordCrfDTO.getLisOrder(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.lis.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 输血开单:【血小板】
|
|
|
+ * 1、禁忌查体:呼吸困难/高热
|
|
|
+ * 1、禁忌基本情况:体温大于39.5度/心率大于100/分
|
|
|
+ *
|
|
|
+ * @param wordCrfDTO
|
|
|
+ * @param res
|
|
|
+ */
|
|
|
+ public void transfusionVitalRule(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
+ // 特殊值处理
|
|
|
+ // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
|
|
|
+ List<ItemExt> transfusionOrderList = wordCrfDTO.getTransfusionOrder();
|
|
|
+ for (ItemExt item : transfusionOrderList) {
|
|
|
+ String lisOrderName = "血小板";
|
|
|
+ if (lisOrderName.equals(item.getUniqueName())) {
|
|
|
+ // 开单项信息
|
|
|
+ BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
|
|
|
+ billNeoMaxDTO.setOrderName(item.getName());
|
|
|
+ billNeoMaxDTO.setOrderStandName(lisOrderName);
|
|
|
+
|
|
|
+ // 禁忌查体
|
|
|
+ List<NodeNeoDTO> vitals = new ArrayList<>();
|
|
|
+ NodeNeoDTO ssyNode = new NodeNeoDTO();
|
|
|
+ ssyNode.setName("呼吸困难");
|
|
|
+ ssyNode.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ vitals.add(ssyNode);
|
|
|
+ NodeNeoDTO ssyNode1 = new NodeNeoDTO();
|
|
|
+ ssyNode1.setName("高热");
|
|
|
+ ssyNode1.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ vitals.add(ssyNode1);
|
|
|
+ NodeNeoDTO szyNode = new NodeNeoDTO();
|
|
|
+ szyNode.setName("体温");
|
|
|
+ szyNode.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ szyNode.setMin(new BigDecimal(39.6));
|
|
|
+ vitals.add(szyNode);
|
|
|
+ NodeNeoDTO szyNode1 = new NodeNeoDTO();
|
|
|
+ szyNode1.setName("心率");
|
|
|
+ szyNode1.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ szyNode1.setMin(new BigDecimal(100.1));
|
|
|
+ vitals.add(szyNode1);
|
|
|
+ billNeoMaxDTO.setVitals(vitals);
|
|
|
+ vitalRule.bill(wordCrfDTO.getVitalLabel(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.vitals.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 输血开单:【红细胞】
|
|
|
+ * 1、禁忌查体:收缩压大于140mmHg 或者舒张压大于90mmHg ,不宜开去甲肾上腺素
|
|
|
+ *
|
|
|
+ * @param wordCrfDTO
|
|
|
+ * @param res
|
|
|
+ */
|
|
|
+ public void transfusionVitalRule1(WordCrfDTO wordCrfDTO, IndicationDTO res) {
|
|
|
+ // 特殊值处理
|
|
|
+ // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
|
|
|
+ List<ItemExt> transfusionOrderList = wordCrfDTO.getTransfusionOrder();
|
|
|
+ for (ItemExt item : transfusionOrderList) {
|
|
|
+ String lisOrderName = "红细胞";
|
|
|
+ if (lisOrderName.equals(item.getUniqueName())) {
|
|
|
+ // 开单项信息
|
|
|
+ BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
|
|
|
+ billNeoMaxDTO.setOrderName(item.getName());
|
|
|
+ billNeoMaxDTO.setOrderStandName(lisOrderName);
|
|
|
+
|
|
|
+ // 禁忌查体
|
|
|
+ List<NodeNeoDTO> vitals = new ArrayList<>();
|
|
|
+ NodeNeoDTO ssyNode = new NodeNeoDTO();
|
|
|
+ ssyNode.setName("呼吸困难");
|
|
|
+ ssyNode.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ vitals.add(ssyNode);
|
|
|
+ NodeNeoDTO ssyNode1 = new NodeNeoDTO();
|
|
|
+ ssyNode1.setName("高热");
|
|
|
+ ssyNode1.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ vitals.add(ssyNode1);
|
|
|
+ NodeNeoDTO szyNode = new NodeNeoDTO();
|
|
|
+ szyNode.setName("体温");
|
|
|
+ szyNode.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ szyNode.setMin(new BigDecimal(39.6));
|
|
|
+ vitals.add(szyNode);
|
|
|
+ NodeNeoDTO szyNode1 = new NodeNeoDTO();
|
|
|
+ szyNode1.setName("心率");
|
|
|
+ szyNode1.setTermtype(NeoEnum.vitals.getName());
|
|
|
+ szyNode1.setMin(new BigDecimal(100.1));
|
|
|
+ vitals.add(szyNode1);
|
|
|
+ billNeoMaxDTO.setVitals(vitals);
|
|
|
+ vitalRule.bill(wordCrfDTO.getVitalLabel(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.vitals.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|