zhaops преди 3 години
родител
ревизия
ebbf147706

+ 0 - 14
src/main/java/com/diagbot/facade/MedRetrievalFacade.java

@@ -1,8 +1,6 @@
 package com.diagbot.facade;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.DictionaryInfoDTO;
-import com.diagbot.dto.DiseaseIndexDTO;
 import com.diagbot.dto.IndexDTO;
 import com.diagbot.dto.LisDetailDTO;
 import com.diagbot.dto.RetrievalConceptDTO;
@@ -15,7 +13,6 @@ import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.DiseaseIndexPageVO;
 import com.diagbot.vo.MedRetrievalVO;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
@@ -336,15 +333,4 @@ public class MedRetrievalFacade {
         }
         return typeName;
     }
-
-    /**
-     * 通过编码查询疾病
-     *
-     * @param diseaseIndexPageVO
-     * @return
-     */
-    public IPage<DiseaseIndexDTO> diseaseIndex(DiseaseIndexPageVO diseaseIndexPageVO) {
-        IPage<DiseaseIndexDTO> page = klConceptFacade.findDiseaeByCode(diseaseIndexPageVO);
-        return page;
-    }
 }

+ 2 - 0
src/main/java/com/diagbot/mapper/KlConceptMapper.java

@@ -42,4 +42,6 @@ public interface KlConceptMapper extends BaseMapper<KlConcept> {
     List<GatherDTO> getGather(GatherVO gatherVO);
 
     IPage<DiseaseIndexDTO> findDiseaeByCode(@Param("diseaseIndexPageVO") DiseaseIndexPageVO diseaseIndexPageVO);
+
+    IPage<DiseaseIndexDTO> diseaseIndex(@Param("diseaseIndexPageVO") DiseaseIndexPageVO diseaseIndexPageVO);
 }

+ 3 - 0
src/main/java/com/diagbot/service/KlConceptService.java

@@ -53,4 +53,7 @@ public interface KlConceptService extends IService<KlConcept> {
 
     //通过编码查询疾病
     IPage<DiseaseIndexDTO> findDiseaeByCode(@Param("diseaseIndexPageVO") DiseaseIndexPageVO diseaseIndexPageVO);
+
+    //通过编码查询疾病
+    IPage<DiseaseIndexDTO> diseaseIndex(@Param("diseaseIndexPageVO") DiseaseIndexPageVO diseaseIndexPageVO);
 }

+ 6 - 0
src/main/java/com/diagbot/service/impl/KlConceptServiceImpl.java

@@ -76,4 +76,10 @@ public class KlConceptServiceImpl extends ServiceImpl<KlConceptMapper, KlConcept
     public IPage<DiseaseIndexDTO> findDiseaeByCode(@Param("diseaseIndexPageVO") DiseaseIndexPageVO diseaseIndexPageVO) {
         return baseMapper.findDiseaeByCode(diseaseIndexPageVO);
     }
+
+    //通过编码查询疾病
+    @Override
+    public IPage<DiseaseIndexDTO> diseaseIndex(@Param("diseaseIndexPageVO") DiseaseIndexPageVO diseaseIndexPageVO) {
+        return baseMapper.diseaseIndex(diseaseIndexPageVO);
+    }
 }

+ 1 - 1
src/main/java/com/diagbot/web/RetrievalController.java

@@ -112,7 +112,7 @@ public class RetrievalController {
                     "inputStr: 检索内容<br>")
     @PostMapping("/diseaseIndex")
     public RespDTO<Page<DiseaseIndexDTO>> diseaseIndex(@Valid @RequestBody DiseaseIndexPageVO diseaseIndexPageVO) {
-        IPage<DiseaseIndexDTO> data = klConceptFacade.findDiseaeByCode(diseaseIndexPageVO);
+        IPage<DiseaseIndexDTO> data = klConceptFacade.diseaseIndex(diseaseIndexPageVO);
         Page<KlConceptStaticDTO> page = new Page<>();
         BeanUtil.copyProperties(data, page);
         return RespDTO.onSuc(data);

+ 121 - 0
src/main/resources/mapper/KlConceptMapper.xml

@@ -1220,4 +1220,125 @@
         ORDER BY
         t.partId
     </select>
+
+    <!--ICD编码查询-->
+    <select id="diseaseIndex" resultType="com.diagbot.dto.DiseaseIndexDTO">
+        SELECT
+        t.id,
+        <if test="diseaseIndexPageVO.type != null">
+            <choose>
+                <when test="diseaseIndexPageVO.type == 1">
+                    t.lib_name AS NAME,
+                    t.icd10_code AS CODE,
+                    t.spell AS spell,
+                </when>
+                <when test="diseaseIndexPageVO.type == 2">
+                    t.guoname AS NAME,
+                    t.guocode AS CODE,
+                    t.guospell AS spell,
+                </when>
+                <otherwise>
+                </otherwise>
+            </choose>
+        </if>
+        t.pos,
+        t.len
+        FROM
+        (
+        SELECT
+        a.id,
+        a.lib_name,
+        b.spell,
+        c.icd10_code,
+        <if test="diseaseIndexPageVO.inputStr != null and diseaseIndexPageVO.inputStr != '' and diseaseIndexPageVO.type != null">
+            <choose>
+                <when test="diseaseIndexPageVO.type == 1">
+                    CASE
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN a.lib_name )> 0 THEN
+                    POSITION( #{diseaseIndexPageVO.inputStr} IN a.lib_name )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN b.spell )> 0 THEN
+                    POSITION( #{diseaseIndexPageVO.inputStr} IN b.spell )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.icd10_code )> 0 THEN
+                    POSITION( #{diseaseIndexPageVO.inputStr} IN c.icd10_code )
+                    END AS pos,
+                    CASE
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN a.lib_name )> 0 THEN
+                    LENGTH( a.lib_name )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN b.spell )> 0 THEN
+                    LENGTH( b.spell )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.icd10_code )> 0 THEN
+                    LENGTH( c.icd10_code )
+                    END AS len,
+                </when>
+                <when test="diseaseIndexPageVO.type == 1">
+                    CASE
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.guoname )> 0 THEN
+                    POSITION( #{diseaseIndexPageVO.inputStr} IN c.guoname )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.guospell )> 0 THEN
+                    POSITION( #{diseaseIndexPageVO.inputStr} IN c.guospell )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.guocode )> 0 THEN
+                    POSITION( #{diseaseIndexPageVO.inputStr} IN c.guocode )
+                    END AS pos,
+                    CASE
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.guoname )> 0 THEN
+                    LENGTH( c.guoname )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.guospell )> 0 THEN
+                    LENGTH( c.guospell )
+                    WHEN POSITION( #{diseaseIndexPageVO.inputStr} IN c.guocode )> 0 THEN
+                    LENGTH( c.guocode )
+                    END AS len,
+                </when>
+                <otherwise> 0 as pos,0 as len,
+                </otherwise>
+            </choose>
+        </if>
+        c.guoname,
+        c.guocode,
+        c.guospell
+        FROM
+        kl_concept a,
+        kl_library_info b,
+        kl_disease c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.id = b.concept_id
+        AND a.id = c.concept_id
+        AND b.is_concept = 1
+        AND a.lib_type = 100
+        AND a.`status` = 1
+        AND c.icd10_code != ''
+        <if test="diseaseIndexPageVO.inputStr != null and diseaseIndexPageVO.inputStr != '' and diseaseIndexPageVO.type != null">
+            <choose>
+                <when test="diseaseIndexPageVO.type == 1">
+                    AND c.icd10_code != ''
+                    AND ( a.lib_name LIKE  CONCAT( '%', #{diseaseIndexPageVO.inputStr}, '%' )
+                    OR b.spell LIKE  CONCAT( '%', #{diseaseIndexPageVO.inputStr}, '%' )
+                    OR c.icd10_code LIKE  CONCAT( '%', #{diseaseIndexPageVO.inputStr}, '%' ) )
+                    AND (
+                    a.lib_name NOT LIKE CONCAT(  #{diseaseIndexPageVO.inputStr}, '%' )
+                    AND b.spell NOT LIKE CONCAT(  #{diseaseIndexPageVO.inputStr}, '%' )
+                    AND c.icd10_code NOT LIKE CONCAT(  #{diseaseIndexPageVO.inputStr}, '%' )
+                    )
+                </when>
+                <when test="diseaseIndexPageVO.type == 2">
+                    AND c.guocode != ''
+                    AND ( c.guoname LIKE  CONCAT( '%', #{diseaseIndexPageVO.inputStr}, '%' )
+                    OR c.guospell LIKE CONCAT( '%', #{diseaseIndexPageVO.inputStr}, '%' )
+                    OR c.guocode LIKE  CONCAT( '%', #{diseaseIndexPageVO.inputStr}, '%' ) )
+                    AND (
+                    c.guoname NOT LIKE CONCAT(  #{diseaseIndexPageVO.inputStr}, '%' )
+                    AND c.guospell NOT LIKE CONCAT(  #{diseaseIndexPageVO.inputStr}, '%' )
+                    AND c.guocode NOT LIKE CONCAT(  #{diseaseIndexPageVO.inputStr}, '%' )
+                    )
+                </when>
+                <otherwise></otherwise>
+            </choose>
+        </if>
+        ) t
+        ORDER BY
+        t.pos,
+        t.len
+    </select>
 </mapper>