QcresultInfoMapper.xml 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.diagbot.mapper.QcresultInfoMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.diagbot.entity.QcresultInfo">
  6. <id column="id" property="id" />
  7. <result column="behospital_code" property="behospitalCode" />
  8. <result column="hospital_id" property="hospitalId" />
  9. <result column="level" property="level" />
  10. <result column="score_res" property="scoreRes" />
  11. <result column="grade_type" property="gradeType" />
  12. <result column="is_deleted" property="isDeleted" />
  13. <result column="gmt_create" property="gmtCreate" />
  14. <result column="gmt_modified" property="gmtModified" />
  15. <result column="creator" property="creator" />
  16. <result column="modifier" property="modifier" />
  17. <result column="remark" property="remark" />
  18. </resultMap>
  19. <!-- 病历数统计 -->
  20. <select id="getQcresultSelectively" parameterType="com.diagbot.vo.QcresultFilterVO" resultType="int">
  21. SELECT
  22. count(1)
  23. FROM
  24. med_behospital_info a,
  25. med_home_page b,
  26. med_qcresult_info c
  27. WHERE
  28. a.hospital_id = b.hospital_id
  29. AND a.behospital_code = b.behospital_code
  30. AND a.hospital_id = c.hospital_id
  31. AND a.behospital_code = c.behospital_code
  32. AND a.is_deleted = 'N'
  33. AND b.is_deleted = 'N'
  34. AND c.is_deleted = 'N'
  35. <![CDATA[AND a.qc_type_id <>0 ]]>
  36. <if test="hospitalId != null and hospitalId != ''">
  37. AND a.hospital_id = #{hospitalId}
  38. </if>
  39. <if test="startDate != null and startDate != ''">
  40. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  41. </if>
  42. <if test="endDate != null and endDate != ''">
  43. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  44. </if>
  45. <if test="gradeType != null and gradeType != ''">
  46. AND c.grade_type = #{gradeType}
  47. </if>
  48. <if test="level != null and level != ''">
  49. AND c.level = #{level}
  50. </if>
  51. </select>
  52. <!-- 质控病历数统计 -->
  53. <select id="resultCount" parameterType="com.diagbot.vo.QcresultFilterVO" resultType="int">
  54. SELECT
  55. COUNT(*)
  56. FROM
  57. med_behospital_info a,
  58. med_home_page b,
  59. med_qcresult_info c
  60. WHERE
  61. a.is_deleted = 'N'
  62. AND b.is_deleted = 'N'
  63. AND c.is_deleted = 'N'
  64. AND a.hospital_id = b.hospital_id
  65. AND a.hospital_id = c.hospital_id
  66. AND a.behospital_code = b.behospital_code
  67. AND a.behospital_code = c.behospital_code
  68. <![CDATA[AND a.qc_type_id <>0 ]]>
  69. <if test="hospitalId != null and hospitalId != ''">
  70. AND a.hospital_id = #{hospitalId}
  71. </if>
  72. <if test="startDate != null and startDate != ''">
  73. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  74. </if>
  75. <if test="endDate != null and endDate != ''">
  76. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  77. </if>
  78. <if test="gradeType != null and gradeType != ''">
  79. AND c.grade_type = #{gradeType}
  80. </if>
  81. <if test="level != null and level != ''">
  82. AND c.level = #{level}
  83. </if>
  84. </select>
  85. <!-- 按科室统计质控病历数 -->
  86. <select id="levelPercentGroupByDept" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.QcResultPercentDTO">
  87. SELECT
  88. a.beh_dept_id AS deptId,
  89. a.beh_dept_name AS deptName,
  90. count(*) AS totleNum,
  91. sum( c.`level` = '甲' ) AS firstLevelNum,
  92. sum( c.`level` = '乙' ) AS secondLevelNum,
  93. sum( c.`level` = '丙' ) AS thirdLevelNum,
  94. concat( ROUND( sum( c.`level` = '甲' )/ count(*)* 100, 2 ), '%' ) AS firstPercent,
  95. concat( ROUND( sum( c.`level` = '乙' )/ count(*)* 100, 2 ), '%' ) AS sencondPercent,
  96. concat( ROUND( sum( c.`level` = '丙' )/ count(*)* 100, 2 ), '%' ) AS thirdPercent
  97. FROM
  98. med_behospital_info a,
  99. med_home_page b,
  100. med_qcresult_info c
  101. WHERE
  102. a.is_deleted = 'N'
  103. AND b.is_deleted = 'N'
  104. AND c.is_deleted = 'N'
  105. AND a.hospital_id = b.hospital_id
  106. AND a.hospital_id = c.hospital_id
  107. AND a.behospital_code = b.behospital_code
  108. AND a.behospital_code = c.behospital_code
  109. <![CDATA[AND a.qc_type_id <>0 ]]>
  110. <if test="hospitalId != null and hospitalId != ''">
  111. AND a.hospital_id = #{hospitalId}
  112. </if>
  113. <if test="startDate != null and startDate != ''">
  114. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  115. </if>
  116. <if test="endDate != null and endDate != ''">
  117. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  118. </if>
  119. GROUP BY
  120. a.beh_dept_id,
  121. a.beh_dept_name
  122. </select>
  123. <!-- 按模块统计质控缺陷数 -->
  124. <select id="entryCountGroupByCase" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.NumDTO">
  125. SELECT
  126. d.cases_id AS id,
  127. e.NAME AS name,
  128. count(*) AS num
  129. FROM
  130. med_behospital_info a,
  131. med_home_page b,
  132. med_qcresult_info c,
  133. med_qcresult_detail d,
  134. qc_cases e,
  135. qc_cases_entry f
  136. WHERE
  137. a.is_deleted = 'N'
  138. AND b.is_deleted = 'N'
  139. AND c.is_deleted = 'N'
  140. AND d.is_deleted = 'N'
  141. AND e.is_deleted = 'N'
  142. AND f.is_deleted = 'N'
  143. AND a.hospital_id = b.hospital_id
  144. AND a.hospital_id = c.hospital_id
  145. AND a.hospital_id = d.hospital_id
  146. AND a.behospital_code = b.behospital_code
  147. AND a.behospital_code = c.behospital_code
  148. AND a.behospital_code = d.behospital_code
  149. AND d.cases_id = e.id
  150. AND d.cases_entry_id = f.id
  151. AND e.id = f.cases_id
  152. <![CDATA[AND a.qc_type_id <>0 ]]>
  153. <if test="hospitalId != null and hospitalId != ''">
  154. AND a.hospital_id = #{hospitalId}
  155. </if>
  156. <if test="startDate != null and startDate != ''">
  157. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  158. </if>
  159. <if test="endDate != null and endDate != ''">
  160. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  161. </if>
  162. GROUP BY
  163. d.cases_id,
  164. e.`name`
  165. </select>
  166. <!-- 条目缺陷占比(首页) -->
  167. <select id="entryCountGroupByEntry" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.NumDTO">
  168. SELECT
  169. t1.NAME AS NAME,
  170. t1.num AS num,
  171. t2.mrNum AS totleNum,
  172. Round( t1.num / t2.mrNum, 4 ) AS percent,
  173. CONCAT( Round( t1.num / t2.mrNum * 100, 2 ), '%' ) AS percentStr
  174. FROM
  175. (
  176. SELECT
  177. e.id,
  178. e.NAME,
  179. count(*) AS num
  180. FROM
  181. med_behospital_info a,
  182. med_home_page b,
  183. med_qcresult_info c,
  184. med_qcresult_detail d,
  185. qc_cases_entry e
  186. WHERE
  187. a.is_deleted = 'N'
  188. AND b.is_deleted = 'N'
  189. AND c.is_deleted = 'N'
  190. AND d.is_deleted = 'N'
  191. AND e.is_deleted = 'N'
  192. AND a.hospital_id = b.hospital_id
  193. AND a.hospital_id = c.hospital_id
  194. AND a.hospital_id = d.hospital_id
  195. AND a.behospital_code = b.behospital_code
  196. AND a.behospital_code = c.behospital_code
  197. AND a.behospital_code = d.behospital_code
  198. AND d.cases_id = e.cases_id
  199. AND d.cases_entry_id = e.id
  200. <![CDATA[AND a.qc_type_id <>0 ]]>
  201. <if test="hospitalId != null and hospitalId != ''">
  202. AND a.hospital_id = #{hospitalId}
  203. </if>
  204. <if test="startDate != null and startDate != ''">
  205. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  206. </if>
  207. <if test="endDate != null and endDate != ''">
  208. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  209. </if>
  210. GROUP BY
  211. e.id,
  212. e.NAME
  213. ) t1,
  214. (
  215. SELECT
  216. count(*) AS mrNum
  217. FROM
  218. med_behospital_info a,
  219. med_home_page b,
  220. med_qcresult_info c
  221. WHERE
  222. a.is_deleted = 'N'
  223. AND b.is_deleted = 'N'
  224. AND c.is_deleted = 'N'
  225. AND a.hospital_id = b.hospital_id
  226. AND a.hospital_id = c.hospital_id
  227. AND a.behospital_code = b.behospital_code
  228. AND a.behospital_code = c.behospital_code
  229. <![CDATA[AND a.qc_type_id <>0 ]]>
  230. <if test="hospitalId != null and hospitalId != ''">
  231. AND a.hospital_id = #{hospitalId}
  232. </if>
  233. <if test="startDate != null and startDate != ''">
  234. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  235. </if>
  236. <if test="endDate != null and endDate != ''">
  237. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  238. </if>
  239. ) t2
  240. ORDER BY
  241. percent DESC
  242. </select>
  243. <!-- 条目缺陷占比(内页) -->
  244. <select id="entryGroupByEntryInnerPage" resultType="com.diagbot.dto.NumDTO">
  245. SELECT t.*
  246. FROM
  247. (SELECT
  248. t1.NAME AS NAME,
  249. t1.num AS num,
  250. t2.mrNum AS totleNum,
  251. Round( t1.num / t2.mrNum, 4 ) AS percent,
  252. CONCAT( Round( t1.num / t2.mrNum * 100, 2 ), '%' ) AS percentStr
  253. FROM
  254. (
  255. SELECT
  256. e.id,
  257. e.NAME,
  258. count(*) AS num
  259. FROM
  260. med_behospital_info a,
  261. med_home_page b,
  262. med_qcresult_info c,
  263. med_qcresult_detail d,
  264. qc_cases_entry e
  265. WHERE
  266. a.is_deleted = 'N'
  267. AND b.is_deleted = 'N'
  268. AND c.is_deleted = 'N'
  269. AND d.is_deleted = 'N'
  270. AND e.is_deleted = 'N'
  271. AND a.hospital_id = b.hospital_id
  272. AND a.hospital_id = c.hospital_id
  273. AND a.hospital_id = d.hospital_id
  274. AND a.behospital_code = b.behospital_code
  275. AND a.behospital_code = c.behospital_code
  276. AND a.behospital_code = d.behospital_code
  277. AND d.cases_id = e.cases_id
  278. AND d.cases_entry_id = e.id
  279. <![CDATA[AND a.qc_type_id <>0 ]]>
  280. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  281. AND a.hospital_id = #{filterPageVO.hospitalId}
  282. </if>
  283. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  284. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  285. </if>
  286. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  287. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  288. </if>
  289. GROUP BY
  290. e.id,
  291. e.NAME
  292. ) t1,
  293. (
  294. SELECT
  295. count(*) AS mrNum
  296. FROM
  297. med_behospital_info a,
  298. med_home_page b,
  299. med_qcresult_info c
  300. WHERE
  301. a.is_deleted = 'N'
  302. AND b.is_deleted = 'N'
  303. AND c.is_deleted = 'N'
  304. AND a.hospital_id = b.hospital_id
  305. AND a.hospital_id = c.hospital_id
  306. AND a.behospital_code = b.behospital_code
  307. AND a.behospital_code = c.behospital_code
  308. <![CDATA[AND a.qc_type_id <>0 ]]>
  309. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  310. AND a.hospital_id = #{filterPageVO.hospitalId}
  311. </if>
  312. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  313. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  314. </if>
  315. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  316. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  317. </if>
  318. ) t2
  319. )t
  320. </select>
  321. <!-- 各科室质控平均分(首页) -->
  322. <select id="getAverageScore" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.AverageStatisticsDTO">
  323. SELECT
  324. a.beh_dept_id AS id,
  325. a.beh_dept_name AS name,
  326. ROUND( sum( CAST( c.score_res AS DECIMAL ( 18, 2 ) )), 2 ) AS totleValue,
  327. ROUND( sum( CAST( c.score_res AS DECIMAL ( 18, 2 ) ))/ count(*), 2 ) AS averageValue,
  328. count(*) AS num
  329. FROM
  330. med_behospital_info a,
  331. med_home_page b,
  332. med_qcresult_info c
  333. WHERE
  334. a.is_deleted = 'N'
  335. AND b.is_deleted = 'N'
  336. AND c.is_deleted = 'N'
  337. AND a.hospital_id = b.hospital_id
  338. AND a.hospital_id = c.hospital_id
  339. AND a.behospital_code = b.behospital_code
  340. AND a.behospital_code = c.behospital_code
  341. <![CDATA[AND a.qc_type_id <>0 ]]>
  342. <if test="hospitalId != null and hospitalId != ''">
  343. AND a.hospital_id = #{hospitalId}
  344. </if>
  345. <if test="startDate != null and startDate != ''">
  346. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  347. </if>
  348. <if test="endDate != null and endDate != ''">
  349. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  350. </if>
  351. GROUP BY
  352. a.beh_dept_id,
  353. a.beh_dept_name
  354. </select>
  355. <!-- 各科室质控平均分(首页)-根据内外科系统统计 -->
  356. <select id="getAverageScoreByDeptClass" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.AverageStatisticsDTO">
  357. SELECT
  358. a.beh_dept_id AS id,
  359. a.beh_dept_name AS NAME,
  360. ROUND( sum( CAST( c.score_res AS DECIMAL ( 18, 2 ) )), 2 ) AS totleValue,
  361. ROUND( sum( CAST( c.score_res AS DECIMAL ( 18, 2 ) ))/ count(*), 2 ) AS averageValue,
  362. count(*) AS num ,
  363. e.dept_name as deptClass
  364. FROM
  365. med_behospital_info a,
  366. med_home_page b,
  367. med_qcresult_info c,
  368. bas_dept_info d,
  369. bas_dept_info e
  370. WHERE
  371. a.is_deleted = 'N'
  372. AND b.is_deleted = 'N'
  373. AND c.is_deleted = 'N'
  374. AND d.is_deleted = 'N'
  375. AND e.is_deleted = 'N'
  376. AND a.hospital_id = b.hospital_id
  377. AND a.hospital_id = c.hospital_id
  378. AND a.hospital_id = d.hospital_id
  379. AND a.hospital_id = e.hospital_id
  380. AND a.behospital_code = b.behospital_code
  381. AND a.behospital_code = c.behospital_code
  382. AND a.beh_dept_id = d.dept_id
  383. AND d.parent_dept_id = e.dept_id
  384. <![CDATA[AND a.qc_type_id <>0 ]]>
  385. <if test="hospitalId != null and hospitalId != ''">
  386. AND a.hospital_id = #{hospitalId}
  387. </if>
  388. <if test="startDate != null and startDate != ''">
  389. <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
  390. </if>
  391. <if test="endDate != null and endDate != ''">
  392. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  393. </if>
  394. <if test="deptClass != null and deptClass != ''">
  395. AND e.dept_name = #{deptClass}
  396. </if>
  397. GROUP BY
  398. a.beh_dept_id,
  399. a.beh_dept_name
  400. </select>
  401. <!-- 按科室统计质控病历数 -->
  402. <select id="resultCountByDept" parameterType="com.diagbot.vo.QcresultFilterVO" resultType="com.diagbot.dto.NumDTO">
  403. SELECT
  404. a.beh_dept_id AS id,
  405. a.beh_dept_name AS NAME,
  406. COUNT(*) AS num
  407. FROM
  408. med_behospital_info a,
  409. med_home_page b,
  410. med_qcresult_info c,
  411. sys_user_dept d
  412. WHERE
  413. a.is_deleted = 'N'
  414. AND b.is_deleted = 'N'
  415. AND c.is_deleted = 'N'
  416. AND d.is_deleted = 'N'
  417. AND a.hospital_id = b.hospital_id
  418. AND a.hospital_id = c.hospital_id
  419. AND a.hospital_id = d.hospital_id
  420. AND a.behospital_code = b.behospital_code
  421. AND a.behospital_code = c.behospital_code
  422. AND a.beh_dept_id = d.dept_id
  423. <![CDATA[AND a.qc_type_id <>0 ]]>
  424. <if test="userId!=null">
  425. AND d.user_id = #{userId}
  426. </if>
  427. <if test="hospitalId != null and hospitalId != ''">
  428. AND a.hospital_id = #{hospitalId}
  429. </if>
  430. <if test="startDate != null and startDate != ''">
  431. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  432. </if>
  433. <if test="endDate != null and endDate != ''">
  434. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  435. </if>
  436. <if test="gradeType != null and gradeType != ''">
  437. AND c.grade_type = #{gradeType}
  438. </if>
  439. <if test="level != null and level != ''">
  440. AND c.level = #{level}
  441. </if>
  442. GROUP BY
  443. a.beh_dept_id,
  444. a.beh_dept_name
  445. </select>
  446. <!-- 按模块统计质控缺陷数 -->
  447. <select id="entryCountGroupByCaseAndDept" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.DeptNumDTO">
  448. SELECT
  449. d.cases_id AS id,
  450. e.NAME AS NAME,
  451. a.beh_dept_id AS deptId,
  452. a.beh_dept_name AS deptName,
  453. count(*) AS num
  454. FROM
  455. med_behospital_info a,
  456. med_home_page b,
  457. med_qcresult_info c,
  458. med_qcresult_detail d,
  459. qc_cases e,
  460. qc_cases_entry f,
  461. sys_user_dept g
  462. WHERE
  463. a.is_deleted = 'N'
  464. AND b.is_deleted = 'N'
  465. AND c.is_deleted = 'N'
  466. AND d.is_deleted = 'N'
  467. AND e.is_deleted = 'N'
  468. AND f.is_deleted = 'N'
  469. AND g.is_deleted = 'N'
  470. AND a.hospital_id = b.hospital_id
  471. AND a.hospital_id = c.hospital_id
  472. AND a.hospital_id = d.hospital_id
  473. AND a.hospital_id = g.hospital_id
  474. AND a.behospital_code = b.behospital_code
  475. AND a.behospital_code = c.behospital_code
  476. AND a.behospital_code = d.behospital_code
  477. AND d.cases_id = e.id
  478. AND d.cases_entry_id = f.id
  479. AND e.id = f.cases_id
  480. AND a.beh_dept_id = g.dept_id
  481. <![CDATA[AND a.qc_type_id <>0 ]]>
  482. <if test="userId!=null">
  483. AND g.user_id = #{userId}
  484. </if>
  485. <if test="hospitalId != null and hospitalId != ''">
  486. AND a.hospital_id = #{hospitalId}
  487. </if>
  488. <if test="startDate != null and startDate != ''">
  489. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  490. </if>
  491. <if test="endDate != null and endDate != ''">
  492. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  493. </if>
  494. GROUP BY
  495. d.cases_id,
  496. e.`name`,
  497. a.beh_dept_id,
  498. a.beh_dept_name
  499. </select>
  500. <!-- 条目缺陷占比-科室(首页) -->
  501. <select id="entryCountGroupByEntryAndDept" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.DeptNumDTO">
  502. SELECT
  503. t1.deptId AS deptId,
  504. t1.deptName AS deptName,
  505. t1.NAME AS NAME,
  506. t1.num AS num,
  507. t2.mrNum AS totleNum,
  508. Round( t1.num / t2.mrNum, 4 ) AS percent,
  509. CONCAT( Round( t1.num / t2.mrNum * 100, 2 ), '%' ) AS percentStr
  510. FROM
  511. (
  512. SELECT
  513. e.id,
  514. e.NAME,
  515. a.beh_dept_id AS deptId,
  516. a.beh_dept_name AS deptName,
  517. count(*) AS num
  518. FROM
  519. med_behospital_info a,
  520. med_home_page b,
  521. med_qcresult_info c,
  522. med_qcresult_detail d,
  523. qc_cases_entry e,
  524. sys_user_dept f
  525. WHERE
  526. a.is_deleted = 'N'
  527. AND b.is_deleted = 'N'
  528. AND c.is_deleted = 'N'
  529. AND d.is_deleted = 'N'
  530. AND e.is_deleted = 'N'
  531. AND f.is_deleted = 'N'
  532. AND a.hospital_id = b.hospital_id
  533. AND a.hospital_id = c.hospital_id
  534. AND a.hospital_id = d.hospital_id
  535. AND a.hospital_id = f.hospital_id
  536. AND a.behospital_code = b.behospital_code
  537. AND a.behospital_code = c.behospital_code
  538. AND a.behospital_code = d.behospital_code
  539. AND d.cases_id = e.cases_id
  540. AND d.cases_entry_id = e.id
  541. AND a.beh_dept_id = f.dept_id
  542. <![CDATA[AND a.qc_type_id <>0 ]]>
  543. <if test="userId!=null">
  544. AND f.user_id = #{userId}
  545. </if>
  546. <if test="hospitalId != null and hospitalId != ''">
  547. AND a.hospital_id = #{hospitalId}
  548. </if>
  549. <if test="startDate != null and startDate != ''">
  550. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  551. </if>
  552. <if test="endDate != null and endDate != ''">
  553. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  554. </if>
  555. GROUP BY
  556. e.id,
  557. e.NAME,
  558. a.beh_dept_id,
  559. a.beh_dept_name
  560. ) t1,
  561. (
  562. SELECT
  563. a.beh_dept_id AS deptId,
  564. a.beh_dept_name AS deptName,
  565. count(*) AS mrNum
  566. FROM
  567. med_behospital_info a,
  568. med_home_page b,
  569. med_qcresult_info c,
  570. sys_user_dept f
  571. WHERE
  572. a.is_deleted = 'N'
  573. AND b.is_deleted = 'N'
  574. AND c.is_deleted = 'N'
  575. AND f.is_deleted = 'N'
  576. AND a.hospital_id = b.hospital_id
  577. AND a.hospital_id = c.hospital_id
  578. AND a.hospital_id = f.hospital_id
  579. AND a.behospital_code = b.behospital_code
  580. AND a.behospital_code = c.behospital_code
  581. AND a.beh_dept_id = f.dept_id
  582. <![CDATA[AND a.qc_type_id <>0 ]]>
  583. <if test="userId!=null">
  584. AND f.user_id = #{userId}
  585. </if>
  586. <if test="hospitalId != null and hospitalId != ''">
  587. AND a.hospital_id = #{hospitalId}
  588. </if>
  589. <if test="startDate != null and startDate != ''">
  590. <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
  591. </if>
  592. <if test="endDate != null and endDate != ''">
  593. <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
  594. </if>
  595. GROUP BY
  596. a.beh_dept_id,
  597. a.beh_dept_name
  598. ) t2
  599. WHERE
  600. t1.deptId = t2.deptId
  601. AND t1.deptName = t2.deptName
  602. ORDER BY
  603. percent DESC,
  604. num DESC
  605. </select>
  606. <!-- 条目缺陷占比-科室(内页) -->
  607. <select id="entryGroupByEntryAndDeptInnerPage" resultType="com.diagbot.dto.DeptNumDTO">
  608. SELECT t.*
  609. FROM
  610. (SELECT
  611. t1.deptId AS deptId,
  612. t1.deptName AS deptName,
  613. t1.NAME AS NAME,
  614. t1.num AS num,
  615. t2.mrNum AS totleNum,
  616. Round( t1.num / t2.mrNum, 4 ) AS percent,
  617. CONCAT( Round( t1.num / t2.mrNum * 100, 2 ), '%' ) AS percentStr
  618. FROM
  619. (
  620. SELECT
  621. e.id,
  622. e.NAME,
  623. a.beh_dept_id AS deptId,
  624. a.beh_dept_name AS deptName,
  625. count(*) AS num
  626. FROM
  627. med_behospital_info a,
  628. med_home_page b,
  629. med_qcresult_info c,
  630. med_qcresult_detail d,
  631. qc_cases_entry e,
  632. sys_user_dept f
  633. WHERE
  634. a.is_deleted = 'N'
  635. AND b.is_deleted = 'N'
  636. AND c.is_deleted = 'N'
  637. AND d.is_deleted = 'N'
  638. AND e.is_deleted = 'N'
  639. AND f.is_deleted = 'N'
  640. AND a.hospital_id = b.hospital_id
  641. AND a.hospital_id = c.hospital_id
  642. AND a.hospital_id = d.hospital_id
  643. AND a.hospital_id = f.hospital_id
  644. AND a.behospital_code = b.behospital_code
  645. AND a.behospital_code = c.behospital_code
  646. AND a.behospital_code = d.behospital_code
  647. AND d.cases_id = e.cases_id
  648. AND d.cases_entry_id = e.id
  649. AND a.beh_dept_id = f.dept_id
  650. <![CDATA[AND a.qc_type_id <>0 ]]>
  651. <if test="filterPageByDeptVO.userId!=null">
  652. AND f.user_id = #{filterPageByDeptVO.userId}
  653. </if>
  654. <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
  655. AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
  656. </if>
  657. <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
  658. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
  659. </if>
  660. <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
  661. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
  662. </if>
  663. <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
  664. AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
  665. </if>
  666. GROUP BY
  667. e.id,
  668. e.NAME,
  669. a.beh_dept_id,
  670. a.beh_dept_name
  671. ) t1,
  672. (
  673. SELECT
  674. a.beh_dept_id AS deptId,
  675. a.beh_dept_name AS deptName,
  676. count(*) AS mrNum
  677. FROM
  678. med_behospital_info a,
  679. med_home_page b,
  680. med_qcresult_info c,
  681. sys_user_dept f
  682. WHERE
  683. a.is_deleted = 'N'
  684. AND b.is_deleted = 'N'
  685. AND c.is_deleted = 'N'
  686. AND f.is_deleted = 'N'
  687. AND a.hospital_id = b.hospital_id
  688. AND a.hospital_id = c.hospital_id
  689. AND a.hospital_id = f.hospital_id
  690. AND a.behospital_code = b.behospital_code
  691. AND a.behospital_code = c.behospital_code
  692. AND a.beh_dept_id = f.dept_id
  693. <![CDATA[AND a.qc_type_id <>0 ]]>
  694. <![CDATA[AND a.qc_type_id <>0 ]]>
  695. <if test="filterPageByDeptVO.userId!=null">
  696. AND f.user_id = #{filterPageByDeptVO.userId}
  697. </if>
  698. <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
  699. AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
  700. </if>
  701. <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
  702. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
  703. </if>
  704. <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
  705. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
  706. </if>
  707. <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
  708. AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
  709. </if>
  710. GROUP BY
  711. a.beh_dept_id,
  712. a.beh_dept_name
  713. ) t2
  714. WHERE
  715. t1.deptId = t2.deptId
  716. AND t1.deptName = t2.deptName
  717. )t
  718. </select>
  719. <!-- 按模块统计质控缺陷数(分页) -->
  720. <select id="entryCountGroupByCasePage" resultType="com.diagbot.dto.NumDTO">
  721. SELECT
  722. t.id,
  723. t.`NAME`,
  724. t.num,
  725. t.totleNum,
  726. t.percent,
  727. t.percentStr
  728. FROM
  729. (
  730. SELECT
  731. t1.caseId AS id,
  732. t1.caseName AS NAME,
  733. t1.num AS num,
  734. t2.mrNum,
  735. t3.originalNum,
  736. t2.mrNum * t3.originalNum AS totleNum,
  737. ROUND( t1.num /( t2.mrNum * t3.originalNum ), 4 ) AS percent,
  738. CONCAT( ROUND( t1.num /( t2.mrNum * t3.originalNum )* 100, 2 ), '%' ) AS percentStr
  739. FROM
  740. (
  741. SELECT
  742. d.cases_id AS caseId,
  743. e.NAME AS caseName,
  744. count(*) AS num
  745. FROM
  746. med_behospital_info a,
  747. med_home_page b,
  748. med_qcresult_info c,
  749. med_qcresult_detail d,
  750. qc_cases e,
  751. qc_cases_entry f
  752. WHERE
  753. a.is_deleted = 'N'
  754. AND b.is_deleted = 'N'
  755. AND c.is_deleted = 'N'
  756. AND d.is_deleted = 'N'
  757. AND e.is_deleted = 'N'
  758. AND f.is_deleted = 'N'
  759. AND a.hospital_id = b.hospital_id
  760. AND a.hospital_id = c.hospital_id
  761. AND a.hospital_id = d.hospital_id
  762. AND a.behospital_code = b.behospital_code
  763. AND a.behospital_code = c.behospital_code
  764. AND a.behospital_code = d.behospital_code
  765. AND d.cases_id = e.id
  766. AND d.cases_entry_id = f.id
  767. AND e.id = f.cases_id
  768. <![CDATA[AND a.qc_type_id <>0 ]]>
  769. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  770. AND a.hospital_id = #{filterPageVO.hospitalId}
  771. </if>
  772. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  773. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  774. </if>
  775. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  776. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  777. </if>
  778. <if test="filterPageVO.name != null and filterPageVO.name != ''">
  779. AND e.name like CONCAT('%', #{filterPageVO.name},'%')
  780. </if>
  781. <if test="filterPageVO.deptName != null and filterPageVO.deptName != ''">
  782. AND a.beh_dept_name like CONCAT('%', #{filterPageVO.deptName},'%')
  783. </if>
  784. GROUP BY
  785. d.cases_id,
  786. e.`name`
  787. ) t1,
  788. (
  789. SELECT
  790. COUNT(*) AS mrNum
  791. FROM
  792. med_behospital_info a,
  793. med_home_page b,
  794. med_qcresult_info c
  795. WHERE
  796. a.is_deleted = 'N'
  797. AND b.is_deleted = 'N'
  798. AND c.is_deleted = 'N'
  799. AND a.hospital_id = b.hospital_id
  800. AND a.hospital_id = c.hospital_id
  801. AND a.behospital_code = b.behospital_code
  802. AND a.behospital_code = c.behospital_code
  803. <![CDATA[AND a.qc_type_id <>0 ]]>
  804. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  805. AND a.hospital_id = #{filterPageVO.hospitalId}
  806. </if>
  807. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  808. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  809. </if>
  810. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  811. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  812. </if>
  813. <if test="filterPageVO.deptName != null and filterPageVO.deptName != ''">
  814. AND a.beh_dept_name like CONCAT('%', #{filterPageVO.deptName},'%')
  815. </if>
  816. ) t2,
  817. (
  818. SELECT
  819. a.id AS caseId,
  820. a.NAME AS caseName,
  821. count(*) AS originalNum
  822. FROM
  823. qc_cases a,
  824. qc_cases_entry b
  825. WHERE
  826. a.is_deleted = 'N'
  827. AND b.is_deleted = 'N'
  828. AND a.id = b.cases_id
  829. <if test="filterPageVO.name != null and filterPageVO.name != ''">
  830. AND a.name like CONCAT('%', #{filterPageVO.name},'%')
  831. </if>
  832. GROUP BY
  833. a.id,
  834. a.`name`
  835. ) t3
  836. WHERE
  837. t1.caseId = t3.caseId
  838. AND t1.caseName = t3.caseName
  839. ORDER BY
  840. ROUND( t1.num /( t2.mrNum * t3.originalNum ), 4 ) DESC
  841. ) t
  842. </select>
  843. <!-- 缺陷详情(分页) -->
  844. <select id="entryCountGroupByEntryPage" resultType="com.diagbot.dto.CaseNumDTO">
  845. SELECT t.*
  846. FROM
  847. (SELECT
  848. t1.id,
  849. t1.NAME,
  850. t1.casesId,
  851. t1.casesName,
  852. count(*) AS num,
  853. t2.totleNum,
  854. ROUND( count(*) /t2.totleNum , 4 ) AS percent,
  855. CONCAT(ROUND( count(*) /t2.totleNum * 100, 2 ), '%' ) AS percentStr
  856. FROM
  857. (
  858. SELECT
  859. e.id AS id,
  860. e.NAME AS NAME,
  861. e.cases_id as casesId,
  862. e.cases_name as casesName
  863. FROM
  864. med_behospital_info a,
  865. med_home_page b,
  866. <if test="filterPageVO.casesId != null and filterPageVO.casesId ==243">
  867. med_qcresult_cases c,
  868. </if>
  869. <if test="filterPageVO.casesId == null or filterPageVO.casesId ==0">
  870. med_qcresult_info c,
  871. </if>
  872. med_qcresult_detail d,
  873. qc_cases_entry e
  874. WHERE
  875. a.is_deleted = 'N'
  876. AND b.is_deleted = 'N'
  877. AND c.is_deleted = 'N'
  878. AND d.is_deleted = 'N'
  879. and e.is_deleted='N'
  880. AND a.hospital_id = b.hospital_id
  881. AND a.hospital_id = c.hospital_id
  882. and a.hospital_id = d.hospital_id
  883. AND a.behospital_code = b.behospital_code
  884. AND a.behospital_code = c.behospital_code
  885. AND a.behospital_code = d.behospital_code
  886. <if test="filterPageVO.casesId != null and filterPageVO.casesId ==243">
  887. AND c.cases_id = d.cases_id
  888. </if>
  889. AND d.cases_id = e.cases_id
  890. AND d.cases_entry_id = e.id
  891. <![CDATA[AND a.qc_type_id <>0 ]]>
  892. <if test="filterPageVO.casesId != null and filterPageVO.casesId != 0">
  893. AND d.cases_id = #{filterPageVO.casesId}
  894. </if>
  895. <if test="filterPageVO.casesName != null and filterPageVO.casesName != ''">
  896. AND e.cases_name like CONCAT('%', #{filterPageVO.casesName},'%')
  897. </if>
  898. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  899. AND a.hospital_id = #{filterPageVO.hospitalId}
  900. </if>
  901. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  902. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  903. </if>
  904. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  905. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  906. </if>
  907. <if test="filterPageVO.name != null and filterPageVO.name != ''">
  908. AND e.name like CONCAT('%', #{filterPageVO.name},'%')
  909. </if>
  910. <if test="filterPageVO.deptName != null and filterPageVO.deptName != ''">
  911. AND a.beh_dept_name like CONCAT('%', #{filterPageVO.deptName},'%')
  912. </if>
  913. ) t1,(
  914. SELECT
  915. count(*) AS totleNum
  916. FROM
  917. med_behospital_info a,
  918. med_home_page b,
  919. <if test="filterPageVO.casesId != null and filterPageVO.casesId ==243">
  920. med_qcresult_cases c,
  921. </if>
  922. <if test="filterPageVO.casesId == null or filterPageVO.casesId ==0">
  923. med_qcresult_info c,
  924. </if>
  925. med_qcresult_detail d,
  926. qc_cases_entry e
  927. WHERE
  928. a.is_deleted = 'N'
  929. AND b.is_deleted = 'N'
  930. AND c.is_deleted = 'N'
  931. AND d.is_deleted = 'N'
  932. and e.is_deleted='N'
  933. AND a.hospital_id = b.hospital_id
  934. AND a.hospital_id = c.hospital_id
  935. and a.hospital_id = d.hospital_id
  936. AND a.behospital_code = b.behospital_code
  937. AND a.behospital_code = c.behospital_code
  938. AND a.behospital_code = d.behospital_code
  939. <if test="filterPageVO.casesId != null and filterPageVO.casesId ==243">
  940. AND c.cases_id = d.cases_id
  941. </if>
  942. AND d.cases_id = e.cases_id
  943. AND d.cases_entry_id = e.id
  944. <![CDATA[AND a.qc_type_id <>0 ]]>
  945. <if test="filterPageVO.casesId != null and filterPageVO.casesId != 0">
  946. AND d.cases_id = #{filterPageVO.casesId}
  947. </if>
  948. <if test="filterPageVO.casesName != null and filterPageVO.casesName != ''">
  949. AND e.cases_name like CONCAT('%', #{filterPageVO.casesName},'%')
  950. </if>
  951. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  952. AND a.hospital_id = #{filterPageVO.hospitalId}
  953. </if>
  954. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  955. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  956. </if>
  957. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  958. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  959. </if>
  960. <if test="filterPageVO.name != null and filterPageVO.name != ''">
  961. AND e.name like CONCAT('%', #{filterPageVO.name},'%')
  962. </if>
  963. <if test="filterPageVO.deptName != null and filterPageVO.deptName != ''">
  964. AND a.beh_dept_name like CONCAT('%', #{filterPageVO.deptName},'%')
  965. </if>
  966. ) t2
  967. GROUP BY
  968. t1.id,
  969. t1.NAME,
  970. t1.casesId,
  971. t1.casesName
  972. )t
  973. </select>
  974. <!-- 质控平均分按科室统计(分页) -->
  975. <select id="getAverageScoreByDeptPage" resultType="com.diagbot.dto.AverageStatisticsDTO">
  976. SELECT t.*
  977. FROM
  978. (SELECT
  979. a.beh_dept_id AS id,
  980. a.beh_dept_name AS name,
  981. ROUND( sum( CAST( c.score_res AS DECIMAL ( 18, 2 ) )), 2 ) AS totleValue,
  982. ROUND( sum( CAST( c.score_res AS DECIMAL ( 18, 2 ) ))/ count(*), 2 ) AS averageValue,
  983. count(*) AS num
  984. FROM
  985. med_behospital_info a,
  986. med_home_page b,
  987. med_qcresult_info c
  988. WHERE
  989. a.is_deleted = 'N'
  990. AND b.is_deleted = 'N'
  991. AND c.is_deleted = 'N'
  992. AND a.hospital_id = b.hospital_id
  993. AND a.hospital_id = c.hospital_id
  994. AND a.behospital_code = b.behospital_code
  995. AND a.behospital_code = c.behospital_code
  996. <![CDATA[AND a.qc_type_id <>0 ]]>
  997. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  998. AND a.hospital_id = #{filterPageVO.hospitalId}
  999. </if>
  1000. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  1001. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  1002. </if>
  1003. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  1004. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  1005. </if>
  1006. <if test="filterPageVO.name != null and filterPageVO.name != ''">
  1007. AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
  1008. </if>
  1009. GROUP BY
  1010. a.beh_dept_id,
  1011. a.beh_dept_name
  1012. ORDER BY averageValue DESC ) t
  1013. </select>
  1014. <!-- 按科室统计质控病历数(分页) -->
  1015. <select id="levelPercentGroupByDeptPage" resultType="com.diagbot.dto.QcResultPercentDTO">
  1016. SELECT t.*
  1017. FROM
  1018. (SELECT
  1019. a.beh_dept_id AS deptId,
  1020. a.beh_dept_name AS deptName,
  1021. count(*) AS totleNum,
  1022. sum( c.`level` = '甲' ) AS firstLevelNum,
  1023. sum( c.`level` = '乙' ) AS secondLevelNum,
  1024. sum( c.`level` = '丙' ) AS thirdLevelNum,
  1025. concat( ROUND( sum( c.`level` = '甲' )/ count(*)* 100, 2 ), '%' ) AS firstPercent,
  1026. concat( ROUND( sum( c.`level` = '乙' )/ count(*)* 100, 2 ), '%' ) AS sencondPercent,
  1027. concat( ROUND( sum( c.`level` = '丙' )/ count(*)* 100, 2 ), '%' ) AS thirdPercent
  1028. FROM
  1029. med_behospital_info a,
  1030. med_home_page b,
  1031. med_qcresult_info c
  1032. WHERE
  1033. a.is_deleted = 'N'
  1034. AND b.is_deleted = 'N'
  1035. AND c.is_deleted = 'N'
  1036. AND a.hospital_id = b.hospital_id
  1037. AND a.hospital_id = c.hospital_id
  1038. AND a.behospital_code = b.behospital_code
  1039. AND a.behospital_code = c.behospital_code
  1040. <![CDATA[AND a.qc_type_id <>0 ]]>
  1041. <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
  1042. AND a.hospital_id = #{filterPageVO.hospitalId}
  1043. </if>
  1044. <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
  1045. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
  1046. </if>
  1047. <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
  1048. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
  1049. </if>
  1050. <if test="filterPageVO.name != null and filterPageVO.name != ''">
  1051. AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
  1052. </if>
  1053. GROUP BY
  1054. a.beh_dept_id,
  1055. a.beh_dept_name
  1056. order by ROUND( sum( c.`level` = '甲' )/ count(*)* 100, 2 ) DESC,
  1057. ROUND( sum( c.`level` = '乙' )/ count(*)* 100, 2 ) DESC,
  1058. ROUND( sum( c.`level` = '丙' )/ count(*)* 100, 2 ) DESC) t
  1059. </select>
  1060. <!-- 按模块统计质控缺陷数-科室(分页) -->
  1061. <select id="entryCountGroupByCaseAndDeptPage" resultType="com.diagbot.dto.DeptNumDTO">
  1062. SELECT
  1063. t.id,
  1064. t.`NAME`,
  1065. t.num,
  1066. t.totleNum,
  1067. t.percent,
  1068. t.percentStr
  1069. FROM
  1070. (
  1071. SELECT
  1072. t1.caseId AS id,
  1073. t1.caseName AS NAME,
  1074. t1.num AS num,
  1075. t2.mrNum,
  1076. t3.originalNum,
  1077. t2.mrNum * t3.originalNum AS totleNum,
  1078. ROUND( t1.num /( t2.mrNum * t3.originalNum ), 4 ) AS percent,
  1079. CONCAT( ROUND( t1.num /( t2.mrNum * t3.originalNum )* 100, 2 ), '%' ) AS percentStr
  1080. FROM
  1081. (
  1082. SELECT
  1083. d.cases_id AS caseId,
  1084. e.NAME AS caseName,
  1085. a.beh_dept_id AS deptId,
  1086. a.beh_dept_name AS deptName,
  1087. count(*) AS num
  1088. FROM
  1089. med_behospital_info a,
  1090. med_home_page b,
  1091. med_qcresult_info c,
  1092. med_qcresult_detail d,
  1093. qc_cases e,
  1094. qc_cases_entry f,
  1095. sys_user_dept g
  1096. WHERE
  1097. a.is_deleted = 'N'
  1098. AND b.is_deleted = 'N'
  1099. AND c.is_deleted = 'N'
  1100. AND d.is_deleted = 'N'
  1101. AND e.is_deleted = 'N'
  1102. AND f.is_deleted = 'N'
  1103. AND g.is_deleted = 'N'
  1104. AND a.hospital_id = b.hospital_id
  1105. AND a.hospital_id = c.hospital_id
  1106. AND a.hospital_id = d.hospital_id
  1107. AND a.hospital_id = g.hospital_id
  1108. AND a.behospital_code = b.behospital_code
  1109. AND a.behospital_code = c.behospital_code
  1110. AND a.behospital_code = d.behospital_code
  1111. AND d.cases_id = e.id
  1112. AND d.cases_entry_id = f.id
  1113. AND e.id = f.cases_id
  1114. AND a.beh_dept_id = g.dept_id
  1115. <![CDATA[AND a.qc_type_id <>0 ]]>
  1116. <if test="filterPageByDeptVO.userId!=null">
  1117. AND g.user_id = #{filterPageByDeptVO.userId}
  1118. </if>
  1119. <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
  1120. AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
  1121. </if>
  1122. <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
  1123. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
  1124. </if>
  1125. <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
  1126. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
  1127. </if>
  1128. <if test="filterPageByDeptVO.name != null and filterPageByDeptVO.name != ''">
  1129. AND e.name like CONCAT('%', #{filterPageByDeptVO.name},'%')
  1130. </if>
  1131. <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
  1132. AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
  1133. </if>
  1134. GROUP BY
  1135. d.cases_id,
  1136. e.`name`,
  1137. a.beh_dept_id,
  1138. a.beh_dept_name
  1139. ) t1,
  1140. (
  1141. SELECT
  1142. a.beh_dept_id AS deptId,
  1143. a.beh_dept_name AS deptName,
  1144. COUNT(*) AS mrNum
  1145. FROM
  1146. med_behospital_info a,
  1147. med_home_page b,
  1148. med_qcresult_info c,
  1149. sys_user_dept d
  1150. WHERE
  1151. a.is_deleted = 'N'
  1152. AND b.is_deleted = 'N'
  1153. AND c.is_deleted = 'N'
  1154. AND d.is_deleted = 'N'
  1155. AND a.hospital_id = b.hospital_id
  1156. AND a.hospital_id = c.hospital_id
  1157. AND a.hospital_id = d.hospital_id
  1158. AND a.behospital_code = b.behospital_code
  1159. AND a.behospital_code = c.behospital_code
  1160. AND a.beh_dept_id = d.dept_id
  1161. <![CDATA[AND a.qc_type_id <>0 ]]>
  1162. <if test="filterPageByDeptVO.userId!=null">
  1163. AND d.user_id = #{filterPageByDeptVO.userId}
  1164. </if>
  1165. <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
  1166. AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
  1167. </if>
  1168. <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
  1169. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
  1170. </if>
  1171. <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
  1172. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
  1173. </if>
  1174. <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
  1175. AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
  1176. </if>
  1177. GROUP BY
  1178. a.beh_dept_id,
  1179. a.beh_dept_name
  1180. ) t2,
  1181. (
  1182. SELECT
  1183. a.id AS caseId,
  1184. a.NAME AS caseName,
  1185. count(*) AS originalNum
  1186. FROM
  1187. qc_cases a,
  1188. qc_cases_entry b
  1189. WHERE
  1190. a.is_deleted = 'N'
  1191. AND b.is_deleted = 'N'
  1192. AND a.id = b.cases_id
  1193. GROUP BY
  1194. a.id,
  1195. a.`name`
  1196. ) t3
  1197. WHERE
  1198. t1.caseId = t3.caseId
  1199. AND t1.caseName = t3.caseName
  1200. AND t1.deptId = t2.deptId
  1201. AND t1.deptName = t2.deptName
  1202. ORDER BY
  1203. ROUND( t1.num /( t2.mrNum * t3.originalNum ), 4 ) DESC
  1204. ) t
  1205. </select>
  1206. <!-- 缺陷详情-科室(分页) -->
  1207. <select id="entryCountGroupByEntryAndDeptPage" resultType="com.diagbot.dto.CaseAndDeptNumDTO">
  1208. SELECT
  1209. t.*
  1210. FROM
  1211. (
  1212. SELECT
  1213. t1.id,
  1214. t1.NAME,
  1215. t1.casesId,
  1216. t1.casesName,
  1217. t1.deptId,
  1218. t1.deptName,
  1219. count(*) AS num,
  1220. t2.totleNum
  1221. FROM
  1222. (
  1223. SELECT
  1224. e.id,
  1225. e.NAME,
  1226. e.cases_id as casesId,
  1227. e.cases_name as casesName,
  1228. a.beh_dept_id AS deptId,
  1229. a.beh_dept_name AS deptName
  1230. FROM
  1231. med_behospital_info a,
  1232. med_home_page b,
  1233. <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId ==243">
  1234. med_qcresult_cases c,
  1235. </if>
  1236. <if test="filterPageByDeptVO.casesId == null or filterPageByDeptVO.casesId ==0">
  1237. med_qcresult_info c,
  1238. </if>
  1239. med_qcresult_detail d,
  1240. qc_cases_entry e,
  1241. sys_user_dept f
  1242. WHERE
  1243. a.is_deleted = 'N'
  1244. AND b.is_deleted = 'N'
  1245. AND c.is_deleted = 'N'
  1246. AND d.is_deleted = 'N'
  1247. AND e.is_deleted = 'N'
  1248. AND f.is_deleted = 'N'
  1249. AND a.hospital_id = b.hospital_id
  1250. AND a.hospital_id = c.hospital_id
  1251. AND a.hospital_id = d.hospital_id
  1252. AND a.hospital_id = f.hospital_id
  1253. AND a.behospital_code = b.behospital_code
  1254. AND a.behospital_code = c.behospital_code
  1255. AND a.behospital_code = d.behospital_code
  1256. <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId ==243">
  1257. AND c.cases_id = d.cases_id
  1258. </if>
  1259. AND d.cases_id = e.cases_id
  1260. AND d.cases_entry_id = e.id
  1261. AND a.beh_dept_id = f.dept_id
  1262. <![CDATA[AND a.qc_type_id <>0 ]]>
  1263. <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId != 0">
  1264. AND d.cases_id = #{filterPageByDeptVO.casesId}
  1265. </if>
  1266. <if test="filterPageByDeptVO.casesName != null and filterPageByDeptVO.casesName != ''">
  1267. AND e.cases_name like CONCAT('%', #{filterPageByDeptVO.casesName},'%')
  1268. </if>
  1269. <if test="filterPageByDeptVO.userId!=null">
  1270. AND f.user_id = #{filterPageByDeptVO.userId}
  1271. </if>
  1272. <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
  1273. AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
  1274. </if>
  1275. <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
  1276. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
  1277. </if>
  1278. <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
  1279. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
  1280. </if>
  1281. <if test="filterPageByDeptVO.name != null and filterPageByDeptVO.name != ''">
  1282. AND e.name like CONCAT('%', #{filterPageByDeptVO.name},'%')
  1283. </if>
  1284. <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
  1285. AND a.beh_dept_name like CONCAT('%', #{filterPageByDeptVO.deptName},'%')
  1286. </if>
  1287. <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
  1288. AND a.doctor_name like CONCAT('%', #{filterPageByDeptVO.doctorName},'%')
  1289. </if>
  1290. ) t1,(
  1291. SELECT
  1292. count(*) AS totleNum
  1293. FROM
  1294. med_behospital_info a,
  1295. med_home_page b,
  1296. <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId ==243">
  1297. med_qcresult_cases c,
  1298. </if>
  1299. <if test="filterPageByDeptVO.casesId == null or filterPageByDeptVO.casesId ==0">
  1300. med_qcresult_info c,
  1301. </if>
  1302. med_qcresult_detail d,
  1303. qc_cases_entry e,
  1304. sys_user_dept f
  1305. WHERE
  1306. a.is_deleted = 'N'
  1307. AND b.is_deleted = 'N'
  1308. AND c.is_deleted = 'N'
  1309. AND d.is_deleted = 'N'
  1310. AND e.is_deleted = 'N'
  1311. AND f.is_deleted = 'N'
  1312. AND a.hospital_id = b.hospital_id
  1313. AND a.hospital_id = c.hospital_id
  1314. AND a.hospital_id = d.hospital_id
  1315. AND a.hospital_id = f.hospital_id
  1316. AND a.behospital_code = b.behospital_code
  1317. AND a.behospital_code = c.behospital_code
  1318. AND a.behospital_code = d.behospital_code
  1319. <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId ==243">
  1320. AND c.cases_id = d.cases_id
  1321. </if>
  1322. AND d.cases_id = e.cases_id
  1323. AND d.cases_entry_id = e.id
  1324. AND a.beh_dept_id = f.dept_id
  1325. <![CDATA[AND a.qc_type_id <>0 ]]>
  1326. <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId != 0">
  1327. AND d.cases_id = #{filterPageByDeptVO.casesId}
  1328. </if>
  1329. <if test="filterPageByDeptVO.casesName != null and filterPageByDeptVO.casesName != ''">
  1330. AND e.cases_name like CONCAT('%', #{filterPageByDeptVO.casesName},'%')
  1331. </if>
  1332. <if test="filterPageByDeptVO.userId!=null">
  1333. AND f.user_id = #{filterPageByDeptVO.userId}
  1334. </if>
  1335. <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
  1336. AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
  1337. </if>
  1338. <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
  1339. <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
  1340. </if>
  1341. <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
  1342. <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
  1343. </if>
  1344. <if test="filterPageByDeptVO.name != null and filterPageByDeptVO.name != ''">
  1345. AND e.name like CONCAT('%', #{filterPageByDeptVO.name},'%')
  1346. </if>
  1347. <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
  1348. AND a.beh_dept_name like CONCAT('%', #{filterPageByDeptVO.deptName},'%')
  1349. </if>
  1350. <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
  1351. AND a.doctor_name like CONCAT('%', #{filterPageByDeptVO.doctorName},'%')
  1352. </if>
  1353. ) t2
  1354. GROUP BY
  1355. t1.id,
  1356. t1.NAME,
  1357. t1.casesId,
  1358. t1.casesName,
  1359. t1.deptId,
  1360. t1.deptName
  1361. )t
  1362. </select>
  1363. </mapper>