Browse Source

反推的项目加入性别年龄的过滤

gaodm 4 years ago
parent
commit
180e1e7dd9

+ 5 - 3
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -418,11 +418,13 @@ public class NeoFacade {
      * @param dis
      * @param dis
      * @return
      * @return
      */
      */
-    public NeoPushDTO reverseInfoMySql(String dis) {
+    public NeoPushDTO reverseInfoMySql(String dis, NeoPushVO neoPushVO) {
         NeoPushDTO neoPushDTO = new NeoPushDTO();
         NeoPushDTO neoPushDTO = new NeoPushDTO();
         //查询疾病相关的项目
         //查询疾病相关的项目
         DiseaseItemVO diseaseItemVO = new DiseaseItemVO();
         DiseaseItemVO diseaseItemVO = new DiseaseItemVO();
         diseaseItemVO.setDiseaseName(dis);
         diseaseItemVO.setDiseaseName(dis);
+        diseaseItemVO.setAge(neoPushVO.getAgeNum());
+        diseaseItemVO.setSexType(neoPushVO.getSex());
         Map<Long, List<String>> items = klRelationFacade.getItemByDiseaseMap(diseaseItemVO);
         Map<Long, List<String>> items = klRelationFacade.getItemByDiseaseMap(diseaseItemVO);
         if (MapUtils.isNotEmpty(items)) {
         if (MapUtils.isNotEmpty(items)) {
             if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.SYMPTOMMAIN.getKey()))) {
             if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.SYMPTOMMAIN.getKey()))) {
@@ -458,7 +460,7 @@ public class NeoFacade {
     public NeoPushDTO getDiagInfo(NeoPushVO neoPushVO) {
     public NeoPushDTO getDiagInfo(NeoPushVO neoPushVO) {
         NeoPushDTO pushDTO = new NeoPushDTO();
         NeoPushDTO pushDTO = new NeoPushDTO();
         String term = neoPushVO.getDiagVo().getDiags().get(0).getName();
         String term = neoPushVO.getDiagVo().getDiags().get(0).getName();
-        pushDTO = this.reverseInfoMySql(term);
+        pushDTO = this.reverseInfoMySql(term, neoPushVO);
 
 
         return pushDTO;
         return pushDTO;
     }
     }
@@ -489,7 +491,7 @@ public class NeoFacade {
      * 类型,疾病: disease,症状: symptom,手术和操作:operation,药品: drug,实验室检查:lis,辅助检查:pacs, 辅助检查:vital"
      * 类型,疾病: disease,症状: symptom,手术和操作:operation,药品: drug,实验室检查:lis,辅助检查:pacs, 辅助检查:vital"
      *
      *
      * @param standConvert
      * @param standConvert
-     * @return Map<String,Map<String,String>> -->Map<类型, Map<原始词, 标准词>>
+     * @return Map<String   ,   Map   <   String   ,   String>> -->Map<类型, Map<原始词, 标准词>>
      */
      */
     public Map<String, Map<String, String>> standConvertCrf(StandConvert standConvert) {
     public Map<String, Map<String, String>> standConvertCrf(StandConvert standConvert) {
         Map<String, Map<String, String>> map = new LinkedHashMap<>();
         Map<String, Map<String, String>> map = new LinkedHashMap<>();

+ 4 - 0
src/main/java/com/diagbot/process/PushProcess.java

@@ -184,6 +184,8 @@ public class PushProcess {
                 return diag;
                 return diag;
             }).collect(Collectors.toList()));
             }).collect(Collectors.toList()));
             pushVO.setDiagVo(diagVo);
             pushVO.setDiagVo(diagVo);
+            pushVO.setAgeNum(pushVo.getAgeNum());
+            pushVO.setSex(pushVo.getSex());
             reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
             reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
         }
         }
         try {
         try {
@@ -225,6 +227,8 @@ public class PushProcess {
                         return diag;
                         return diag;
                     }).collect(Collectors.toList()));
                     }).collect(Collectors.toList()));
                     pushVO.setDiagVo(diagVo);
                     pushVO.setDiagVo(diagVo);
+                    pushVO.setAgeNum(pushVo.getAgeNum());
+                    pushVO.setSex(pushVo.getSex());
                     //调用反推
                     //调用反推
                     reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
                     reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
 
 

+ 4 - 0
src/main/java/com/diagbot/vo/DiseaseItemVO.java

@@ -12,4 +12,8 @@ import lombok.Setter;
 @Setter
 @Setter
 public class DiseaseItemVO {
 public class DiseaseItemVO {
     private String diseaseName;
     private String diseaseName;
+    //性别:1:男, 2:女, 3:通用
+    private Integer sexType;
+    //年龄
+    private Double age;
 }
 }

+ 59 - 23
src/main/resources/mapper/KlRelationMapper.xml

@@ -51,31 +51,67 @@
 
 
     <select id="getItemByDisease" resultType="com.diagbot.dto.DiseaseItemDTO" parameterType="com.diagbot.vo.DiseaseItemVO">
     <select id="getItemByDisease" resultType="com.diagbot.dto.DiseaseItemDTO" parameterType="com.diagbot.vo.DiseaseItemVO">
         SELECT
         SELECT
-            t1.lib_name AS diseaseName,
-            t2.relation_id AS relationId,
-            t3.lib_name AS itemName
+            t7.diseaseName,
+            t7.relationId,
+            t7.itemName
         FROM
         FROM
-            kl_concept t1,
-            kl_relation t2,
-            kl_concept t3,
-            kl_relation_order t4
-        WHERE
-            t1.is_deleted = "N"
-        AND t2.is_deleted = "N"
-        AND t3.is_deleted = "N"
-        AND t4.is_deleted = "N"
-        AND t1.lib_type = 100
-        AND t1.id = t2.start_id
-        AND t3.id = t2.end_id
-        AND t2.id = t4.t_relation_id
-        AND t2.relation_id IN (501,502,503,504,505,506,507,508)
-        AND t1.`status` = 1
-        AND t3.`status` = 1
-        AND t1.lib_name = #{diseaseName}
+            (
+                SELECT
+                    t5.diseaseId,
+                    t5.diseaseName,
+                    t5.relationId,
+                    t5.itemName,
+                    t5.itemId,
+                    t5.order_no,
+                    IFNULL(t6.min_age, 0) AS min_age,
+                    IFNULL(t6.max_age, 200) AS max_age,
+                    IFNULL(t6.sex_type, 3) AS sex_type
+                FROM
+                    (
+                        SELECT
+                            t1.id AS diseaseId,
+                            t1.lib_name AS diseaseName,
+                            t2.relation_id AS relationId,
+                            t3.lib_name AS itemName,
+                            t3.id AS itemId,
+                            t4.order_no
+                        FROM
+                            kl_concept t1,
+                            kl_relation t2,
+                            kl_concept t3,
+                            kl_relation_order t4
+                        WHERE
+                            t1.is_deleted = "N"
+                        AND t2.is_deleted = "N"
+                        AND t3.is_deleted = "N"
+                        AND t4.is_deleted = "N"
+                        AND t1.lib_type = 100
+                        AND t1.id = t2.start_id
+                        AND t3.id = t2.end_id
+                        AND t2.id = t4.t_relation_id
+                        AND t2.relation_id IN (501,502,503,504,505,506,507,508)
+                        AND t1.lib_name = #{diseaseName}
+                        AND t1.`status` = 1
+                        AND t3.`status` = 1
+                    ) t5
+                LEFT JOIN kl_concept_common t6 ON t6.is_deleted = "N"
+                AND t5.itemId = t6.concept_id
+            ) t7
+        WHERE 1=1
+        <if test="sexType == 3">
+            AND t7.sex_type in ('1','2','3')
+        </if>
+        <if test="sexType != 3">
+            AND t7.sex_type in ('3',#{sexType})
+        </if>
+        <if test="age != null and age != ''">
+            AND <![CDATA[ t7.min_age <= #{age} ]]>
+            AND <![CDATA[ t7.max_age >= #{age} ]]>
+        </if>
         ORDER BY
         ORDER BY
-            t1.id,
-            t2.relation_id,
-            t4.order_no
+            t7.diseaseId,
+            t7.relationId,
+            t7.order_no
     </select>
     </select>
 
 
 </mapper>
 </mapper>