Zhaops hace 6 años
padre
commit
9127cd0f19

+ 78 - 18
icss-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -14,14 +14,17 @@ import com.diagbot.entity.DeptVital;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.entity.VitalOrder;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.QuantitativeTypeEnum;
 import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.EntityUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.LisKYJVO;
 import com.diagbot.vo.PushKYJVO;
 import com.diagbot.vo.PushVO;
 import com.diagbot.vo.QuestionVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -139,8 +142,12 @@ public class PushFacade {
             pushDTO.setSymptomMap(symptomMap);
         }
         //查体 返回模板
-        else if (featureTypeSet.contains(QuestionTypeEnum.Vital.getKey()) && dis != null && dis.size() > 0) {
-            String deptName = dis.get(0).getExtraProperty();
+        else if (featureTypeSet.contains(QuestionTypeEnum.Vital.getKey())) {
+            //没有推送信息时,默认取全科模板
+            String deptName = "全科";
+            if (dis != null && dis.size() > 0) {
+                deptName = dis.get(0).getExtraProperty();
+            }
             QueryWrapper<DeptInfo> deptInfoQueryWrapper = new QueryWrapper<>();
             deptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
                     eq("name", deptName);
@@ -163,20 +170,14 @@ public class PushFacade {
                 List<VitalOrder> vitalOrderList = vitalOrderFacade.list(vitalOrderQueryWrapper);
                 Map<Long, VitalOrder> vitalOrderMap = EntityUtil.makeEntityMap(vitalOrderList, "question_id");
                 //标签列表
-                /*QueryWrapper<QuestionInfo> vitalQueryWrapper = new QueryWrapper<>();
-                vitalQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                        in("id", deptVitalMap.keySet());
-                List<QuestionInfo> vitalList = questionFacade.list(vitalQueryWrapper);
-                Map<Long, QuestionInfo> vitalQuestionMap = EntityUtil.makeEntityMap(vitalList, "id");*/
                 for (Map.Entry<Long, VitalOrder> entry : vitalOrderMap.entrySet()) {
                     QuestionVO questionVO = new QuestionVO();
                     questionVO.setAge(pushVO.getAge());
                     questionVO.setSexType(pushVO.getSex());
                     questionVO.setId(entry.getKey());
                     QuestionDTO questionDTO = questionFacade.getById(questionVO);
-                    //QuestionInfo vitalQuestion = vitalQuestionMap.get(entry.getKey());
                     if (questionDTO != null) {
-                        vitalMap.put(questionDTO.getTagName(), questionDTO);
+                        vitalMap.put(questionDTO.getName(), questionDTO);
                     }
                 }
                 pushDTO.setVitalMap(vitalMap);
@@ -188,6 +189,7 @@ public class PushFacade {
 
     /**
      * 推理接口-快易检
+     *
      * @param pushKYJVO
      * @return
      */
@@ -197,16 +199,14 @@ public class PushFacade {
         pushVO.setSex(pushKYJVO.getSex());
 
         //参数预处理
-        String lis="";
-        for(LisKYJVO lisKYJVO:pushKYJVO.getLisKYJVOList()){
-            String lisDetail="";
-            if(lisKYJVO.getValue()!=null){
-
-            }
-            if(lisKYJVO.getOtherValue()!=null){
-                
-            }
+        String lis = "";
+        List<String> lisResultList = Lists.newArrayList();
+        for (LisKYJVO lisKYJVO : pushKYJVO.getLisKYJVOList()) {
+            lisKYJVO = resultCalculation(lisKYJVO);
+            lisResultList.addAll(getLisInputs(lisKYJVO));
         }
+        lis = String.join(",", lisResultList);
+        pushVO.setLis(lis);
 
         ResponseData responseData = pushAI(pushVO);
         PushKYJDTO pushKYJDTO = new PushKYJDTO();
@@ -228,4 +228,64 @@ public class PushFacade {
         }
         return map;
     }
+
+    /**
+     * 快易检结果预处理
+     *
+     * @param lisKYJVO
+     * @return
+     */
+    public LisKYJVO resultCalculation(LisKYJVO lisKYJVO) {
+        if (lisKYJVO.getValue() != null) {
+            if (lisKYJVO.getMax() != null) {
+                Integer comResult = lisKYJVO.getValue().compareTo(lisKYJVO.getMax());
+                if (comResult > 0) {
+                    lisKYJVO.setMultipleState(QuantitativeTypeEnum.Up.getName());
+                    if (!lisKYJVO.getMax().equals(0.0)) {
+                        lisKYJVO.setMultipleValue(lisKYJVO.getValue() / lisKYJVO.getMax());
+                    }
+                }
+            }
+            if (lisKYJVO.getMin() != null) {
+                Integer comResult = lisKYJVO.getValue().compareTo(lisKYJVO.getMax());
+                if (comResult < 0) {
+                    lisKYJVO.setMultipleState(QuantitativeTypeEnum.Down.getName());
+                    if (!lisKYJVO.getMax().equals(0.0)) {
+                        lisKYJVO.setMultipleValue(lisKYJVO.getValue() / lisKYJVO.getMin());
+                    }
+                }
+            }
+            if (StringUtil.isBlank(lisKYJVO.getMultipleState())) {
+                lisKYJVO.setMultipleState(QuantitativeTypeEnum.Normal.getName());
+            }
+        }
+        return lisKYJVO;
+    }
+
+    /**
+     * 拼接化验项的文本结果
+     *
+     * @param lisKYJVO
+     * @return
+     */
+    public List<String> getLisInputs(LisKYJVO lisKYJVO) {
+        List<String> stringList = Lists.newArrayList();
+        if (StringUtil.isBlank(lisKYJVO.getName())) {
+            return stringList;
+        } else if (lisKYJVO.getValue() != null) {
+            //数值
+            String lisText = lisKYJVO.getName() + "," + lisKYJVO.getValue() + " " + lisKYJVO.getUnits();
+            stringList.add(lisText);
+            //倍数
+            if (StringUtil.isBlank(lisKYJVO.getMultipleState())) {
+                lisText = lisKYJVO.getName() + "," + lisKYJVO.getMultipleState() + " " + lisKYJVO.getMultipleValue();
+                stringList.add(lisText);
+            }
+        } else if (StringUtil.isBlank(lisKYJVO.getOtherValue())) {
+            //阴性阳性和其他文字描述
+            String lisText = lisKYJVO.getName() + "," + lisKYJVO.getOtherValue();
+            stringList.add(lisText);
+        }
+        return stringList;
+    }
 }

+ 4 - 5
icss-service/src/main/java/com/diagbot/vo/LisKYJVO.java

@@ -11,13 +11,12 @@ import lombok.Setter;
 @Getter
 @Setter
 public class LisKYJVO {
-    private String name ;//名称
+    private String name;//名称
     private Double value;//值
     private Double max;//最大值
     private Double min;//最小值
     private String units;//单位
-    private Integer  multipleState;//状态 0 1 2
-    private String  multipleValue;//状态值
-    private Integer  negativeState;//状态 (阴形,阳性)
-    private String otherValue;//
+    private String multipleState;//定量状态 0-正常 1-升高 2-降低
+    private Double multipleValue;//倍数
+    private String otherValue;//其他结果,包括阴性阳性,文字描述等
 }