KlDiagnoseMapper.xml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.diagbot.mapper.KlDiagnoseMapper">
  5. <!-- 通用查询映射结果 -->
  6. <resultMap id="BaseResultMap" type="com.diagbot.entity.KlDiagnose">
  7. <id column="id" property="id"/>
  8. <result column="is_deleted" property="isDeleted"/>
  9. <result column="gmt_create" property="gmtCreate"/>
  10. <result column="gmt_modified" property="gmtModified"/>
  11. <result column="creator" property="creator"/>
  12. <result column="modifier" property="modifier"/>
  13. <result column="concept_id" property="conceptId"/>
  14. <result column="description" property="description"/>
  15. <result column="status" property="status"/>
  16. </resultMap>
  17. <select id="getDiagnoseByIds" resultType="com.diagbot.dto.DiagnoseDTO" parameterType="com.diagbot.vo.DiagnoseVO">
  18. SELECT DISTINCT
  19. t12.concept_id,
  20. t12.lib_name,
  21. t12.condition_type
  22. FROM
  23. (
  24. SELECT DISTINCT
  25. t11.concept_id,
  26. t11.lib_name,
  27. t11.condition_type,
  28. t11.condition_group,
  29. (
  30. count(t11.condition_group) &lt;= sum(baseGroupDiff)
  31. ) AS groupDiff
  32. FROM
  33. (
  34. SELECT
  35. t3.*, IFNULL(t5.cnt, 0) AS cnt,
  36. (
  37. t3.fit_no &lt;= IFNULL(t5.cnt, 0)
  38. ) AS baseGroupDiff
  39. FROM
  40. (
  41. SELECT
  42. t1.concept_id,t2.*, c1.lib_name
  43. FROM
  44. kl_diagnose t1,
  45. kl_diagnose_condition t2,
  46. kl_concept c1,
  47. (
  48. SELECT DISTINCT
  49. t4.diagnose_id
  50. FROM
  51. `kl_diagnose_condition` t4
  52. WHERE
  53. t4.condition_type = 1
  54. AND t4.is_deleted = "N"
  55. <if test="ids != null and ids.size > 0">
  56. and t4.diagnose_base_id in
  57. <foreach item="id" collection="ids" open="(" separator="," close=")">
  58. #{id}
  59. </foreach>
  60. </if>
  61. ) t10
  62. WHERE
  63. t1.is_deleted = "N"
  64. AND t1.`status` = 1
  65. AND t2.is_deleted = "N"
  66. AND t1.id = t2.diagnose_id
  67. AND t2.condition_type IN (2, 3, 4)
  68. AND c1.is_deleted = "N"
  69. AND c1.`status` = 1
  70. AND c1.id = t1.concept_id
  71. AND t1.id = t10.diagnose_id
  72. ) t3
  73. LEFT JOIN (
  74. SELECT
  75. t4.diagnose_id,
  76. t4.base_group,
  77. COUNT(t4.id) AS cnt
  78. FROM
  79. `kl_diagnose_condition` t4
  80. WHERE
  81. t4.condition_type = 1
  82. AND t4.is_deleted = "N"
  83. <if test="ids != null and ids.size > 0">
  84. and t4.diagnose_base_id in
  85. <foreach item="id" collection="ids" open="(" separator="," close=")">
  86. #{id}
  87. </foreach>
  88. </if>
  89. GROUP BY
  90. t4.diagnose_id,
  91. t4.base_group
  92. ) t5 ON t3.diagnose_id = t5.diagnose_id
  93. AND t3.base_group = t5.base_group
  94. ) t11
  95. GROUP BY
  96. t11.concept_id,
  97. t11.condition_type,
  98. t11.condition_group
  99. ) t12,
  100. kl_concept_common t15
  101. WHERE
  102. t15.concept_id = t12.concept_id
  103. AND t15.is_deleted = "N"
  104. <if test="sexType != null or age != null">
  105. <if test="sexType != null">
  106. <if test="sexType == 3">
  107. and t15.sex_type in ('1','2','3')
  108. </if>
  109. <if test="sexType != 3">
  110. and t15.sex_type in ('3',#{sexType})
  111. </if>
  112. </if>
  113. <if test="age != null">
  114. <![CDATA[ AND t15.min_age <= #{age} ]]>
  115. <![CDATA[ AND t15.max_age >= #{age} ]]>
  116. </if>
  117. </if>
  118. AND t12.groupDiff = 1
  119. </select>
  120. <select id="getKlDiagnosePages" resultType="com.diagbot.dto.KlDiagnoseInfoDTO">
  121. SELECT dia.* ,con.lib_name as conceptName FROM
  122. kl_diagnose dia,
  123. kl_concept con
  124. WHERE dia.is_deleted = 'N'
  125. AND dia.concept_id = con.id
  126. <if test="description!=null and description!=''">
  127. AND UPPER(dia.description) LIKE CONCAT('%', UPPER(trim(#{description})), '%')
  128. </if>
  129. <if test="status!=null">
  130. AND dia.status = #{status}
  131. </if>
  132. ORDER BY dia.gmt_modified DESC
  133. </select>
  134. <select id="getByIdDiagnoses" resultType="com.diagbot.dto.KlDiagnoseByIdDTO">
  135. SELECT
  136. di.id as id,
  137. di.description as description,
  138. di.concept_id AS conceptId,
  139. di.lib_name as libName,
  140. di.lib_type as libType,
  141. di.lename as lename,
  142. di.status as status,
  143. dico.condition_group as conditionGroup,
  144. dico.base_group as baseGroup,
  145. dico.fit_no as fitNo,
  146. dico.condition_type as conditionType,
  147. dibas.basid as basid,
  148. dibas.basDescription as basDescription,
  149. dibas.basConceptId as basConceptId,
  150. dibas.basLibName as basLibName,
  151. dibas.baslibType as baslibType,
  152. dibas.basLename as basLename,
  153. dibas.basType as basType,
  154. dibas.min_operator as minOperator,
  155. dibas.min_value AS minVal,
  156. dibas.min_unit AS minUnit,
  157. dibas.max_value AS maxVal,
  158. dibas.max_unit as maxUnit,
  159. dibas.max_operator as maxOperator,
  160. dibas.eq_operator as eqOperator,
  161. dibas.eq_value as eqValue,
  162. dibas.eq_unit as eqUnit
  163. FROM
  164. (SELECT
  165. a.id,
  166. a.description,
  167. a.concept_id,
  168. b.lib_name,
  169. b.lib_type,
  170. a.status,
  171. c.name AS lename
  172. FROM
  173. kl_diagnose a,
  174. kl_concept b,
  175. kl_lexicon c
  176. WHERE a.concept_id = b.id
  177. AND b.lib_type = c.code
  178. <if test="id != null">
  179. AND a.id = #{id}
  180. </if>
  181. ) di
  182. LEFT JOIN kl_diagnose_condition dico
  183. ON di.id = dico.diagnose_id
  184. LEFT JOIN
  185. (SELECT
  186. c.id AS basid,
  187. c.description AS basDescription,
  188. c.concept_id AS basConceptId,
  189. d.lib_name AS basLibName,
  190. d.lib_type AS baslibType,
  191. f.name AS basLename,
  192. c.type AS basType,
  193. c.min_operator,
  194. c.min_value,
  195. c.min_unit,
  196. c.max_value,
  197. c.max_unit,
  198. c.max_operator,
  199. c.eq_operator,
  200. c.eq_value,
  201. c.eq_unit
  202. FROM
  203. kl_diagnose_base c LEFT JOIN
  204. kl_concept d ON c.concept_id = d.id
  205. LEFT JOIN kl_lexicon f ON d.lib_type = f.code
  206. ) dibas
  207. ON dibas.basid = dico.diagnose_base_id
  208. </select>
  209. </mapper>