123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.lemon.lifecenter.mapper.PatientMapper">
- <select id="selectStatisticsPatientCount" parameterType="PatientDTO" resultType="int">
- <![CDATA[
- SELECT COUNT(*)
- FROM DB_ROOT
- CONNECT BY LEVEL <= ( TO_DATE( #{endDate} ) - TO_DATE( #{startDate} ) + 1)
- ]]>
- </select>
- <select id="selectStatisticsPatientList" parameterType="PatientDTO" resultType="PatientDTO">
- <![CDATA[
- SELECT inDate,
- NVL( hTotal, 0 ) hTotal,
- NVL( dTotal, 0 ) dTotal,
- NVL( tTotal, 0 ) tTotal,
- NVL( eTotal, 0 ) eTotal
- FROM ( SELECT TO_CHAR(TO_DATE( #{startDate} ) + LEVEL - 1, 'YYYY-MM-DD') AS inDate
- FROM DB_ROOT
- CONNECT BY LEVEL <= ( TO_DATE( #{endDate} ) - TO_DATE( #{startDate} ) + 1)
- ORDER BY inDate DESC
- LIMIT #{limit}, #{limitMax}
- ) DL
- LEFT JOIN ( SELECT DATE_FORMAT( disisolation_date ,'%Y-%m-%d' ) AS dDate,
- COUNT( CASE WHEN state='D' THEN 1 END ) dTotal,
- COUNT( CASE WHEN state='T' THEN 1 END ) tTotal,
- COUNT( CASE WHEN state='E' THEN 1 END ) eTotal
- FROM patient_care
- WHERE center_code != 1
- AND USE_YN = 'Y'
- AND center_code IN ( SELECT center_code AS center_code
- FROM center_info
- WHERE 1 = 1
- ]]>
- <if test='q != null and q != ""'>
- <![CDATA[
- AND center_name LIKE CONCAT('%', #{q}, '%')
- ]]>
- </if>
-
- <if test='locationCode != null and locationCode != ""'>
- <![CDATA[
- AND jurisdiction = #{locationCode}
- ]]>
- </if>
- <![CDATA[
- )
- GROUP BY DATE_FORMAT( disisolation_date ,'%Y-%m-%d' )
- ) A
- ON DL.inDate = A.dDate
- LEFT JOIN ( SELECT DATE_FORMAT( hospitalization_date ,'%Y-%m-%d' ) AS hDate,
- COUNT(*) hTotal
- FROM patient_care
- WHERE center_code != 1
- AND USE_YN = 'Y'
- AND center_code IN ( SELECT center_code AS center_code
- FROM center_info
- WHERE 1 = 1
- ]]>
- <if test='q != null and q != ""'>
- <![CDATA[
- AND center_name LIKE CONCAT('%', #{q}, '%')
- ]]>
- </if>
-
- <if test='locationCode != null and locationCode != ""'>
- <![CDATA[
- AND jurisdiction = #{locationCode}
- ]]>
- </if>
- <![CDATA[
- )
- GROUP BY DATE_FORMAT( hospitalization_date ,'%Y-%m-%d' )
- ) B
- ON DL.inDate = B.hDate
- ]]>
- </select>
-
- <select id="selectStatisticsPatientSum" parameterType="PatientDTO" resultType="PatientDTO">
- <![CDATA[
- SELECT SUM ( NVL( hTotal, 0 ) ) hTotal,
- SUM ( NVL( dTotal, 0 ) ) dTotal,
- SUM ( NVL( tTotal, 0 ) ) tTotal,
- SUM ( NVL( eTotal, 0 ) ) eTotal
- FROM ( SELECT TO_CHAR(TO_DATE( #{startDate} ) + LEVEL - 1, 'YYYY-MM-DD') AS inDate
- FROM DB_ROOT
- CONNECT BY LEVEL <= ( TO_DATE( #{endDate} ) - TO_DATE( #{startDate} ) + 1)
- ) DL
- LEFT JOIN ( SELECT DATE_FORMAT( disisolation_date ,'%Y-%m-%d' ) AS dDate,
- COUNT( CASE WHEN state='D' THEN 1 END ) dTotal,
- COUNT( CASE WHEN state='T' THEN 1 END ) tTotal,
- COUNT( CASE WHEN state='E' THEN 1 END ) eTotal
- FROM patient_care
- WHERE center_code != 1
- AND USE_YN = 'Y'
- AND center_code IN ( SELECT center_code AS center_code
- FROM center_info
- WHERE 1 = 1
- ]]>
- <if test='q != null and q != ""'>
- <![CDATA[
- AND center_name LIKE CONCAT('%', #{q}, '%')
- ]]>
- </if>
-
- <if test='locationCode != null and locationCode != ""'>
- <![CDATA[
- AND jurisdiction = #{locationCode}
- ]]>
- </if>
- <![CDATA[
- )
- GROUP BY DATE_FORMAT( disisolation_date ,'%Y-%m-%d' )
- ) A
- ON DL.inDate = A.dDate
- LEFT JOIN ( SELECT DATE_FORMAT( hospitalization_date ,'%Y-%m-%d' ) AS hDate,
- COUNT(*) hTotal
- FROM patient_care
- WHERE center_code != 1
- AND USE_YN = 'Y'
- AND center_code IN ( SELECT center_code AS center_code
- FROM center_info
- WHERE 1 = 1
- ]]>
- <if test='q != null and q != ""'>
- <![CDATA[
- AND center_name LIKE CONCAT('%', #{q}, '%')
- ]]>
- </if>
-
- <if test='locationCode != null and locationCode != ""'>
- <![CDATA[
- AND jurisdiction = #{locationCode}
- ]]>
- </if>
- <![CDATA[
- )
- GROUP BY DATE_FORMAT( hospitalization_date ,'%Y-%m-%d' )
- ) B
- ON DL.inDate = B.hDate
- ]]>
- </select>
- <!-- 위의 쿼리들 필요없다고 함 환자 입퇴소현황 날짜별에서 생치별로 바꿔달라해서 위의 쿼리들 3개 안씀.. -->
-
-
- <!-- 아래 쿼리들이 환자 입/퇴소 현황 쿼리 -->
- <select id="selectStatisticsPatientByCenterCount" parameterType="PatientDTO" resultType="int">
- <![CDATA[
- SELECT COUNT(*) total
- FROM CENTER_INFO CI
- WHERE 1 = DECODE( NVL( CI.expiration_date, '' ), '', 1, IF( DATE_FORMAT( CI.expiration_date , '%Y-%m-%d %H:%i' ) > #{registDayTime}, 1, 0 ) )
- AND CI.CENTER_CODE != 1
- ]]>
- <if test='q != null and q != ""'>
- <![CDATA[
- AND CI.CENTER_NAME LIKE CONCAT('%', #{q}, '%')
- ]]>
- </if>
- <if test='locationCode != null and locationCode != ""'>
- <![CDATA[
- AND CI.jurisdiction = #{locationCode}
- ]]>
- </if>
- </select>
- <select id="selectStatisticsPatientByCenterList" parameterType="PatientDTO" resultType="PatientDTO">
- <![CDATA[
- SELECT DECODE(CI.CENTER_CODE, NULL, '총계', CI.CENTER_NAME) AS centerName,
- ( SELECT LI.LOCATION_NAME
- FROM LOCATION_INFO LI
- WHERE CI.jurisdiction = LI.LOCATION_CODE) AS jurisdictionName,
- DECODE(CI.CENTER_CODE, NULL, SUM( dTotal) ,NVL( A.dTotal, 0 ) ) dTotal,
- DECODE(CI.CENTER_CODE, NULL, SUM( tTotal), NVL( A.tTotal, 0 ) ) tTotal,
- DECODE(CI.CENTER_CODE, NULL, SUM( eTotal), NVL( A.eTotal, 0 ) ) eTotal,
- DECODE(CI.CENTER_CODE, NULL, SUM( hTotal), NVL( B.hTotal, 0 ) ) hTotal
- FROM CENTER_INFO CI
- LEFT JOIN ( SELECT center_code,
- COUNT( CASE WHEN state='D' THEN 1 END ) dTotal,
- COUNT( CASE WHEN state='T' THEN 1 END ) tTotal,
- COUNT( CASE WHEN state='E' THEN 1 END ) eTotal
- FROM patient_care
- WHERE center_code != 1
- AND USE_YN = 'Y'
- AND DATE_FORMAT( disisolation_date ,'%Y-%m-%d' ) = #{registDay}
- GROUP BY center_code
- ) A
- ON A.CENTER_CODE = CI.CENTER_CODE
- LEFT JOIN ( SELECT center_code,
- COUNT(*) hTotal
- FROM patient_care
- WHERE center_code != 1
- AND USE_YN = 'Y'
- AND DATE_FORMAT( hospitalization_date ,'%Y-%m-%d' ) = #{registDay}
- GROUP BY center_code
- ) B
- ON B.CENTER_CODE = CI.CENTER_CODE
- WHERE 1 = DECODE( NVL( CI.expiration_date, '' ), '', 1, IF( DATE_FORMAT( CI.expiration_date , '%Y-%m-%d %H:%i' ) > #{registDayTime}, 1, 0 ) )
- AND CI.CENTER_CODE != 1
- ]]>
- <if test='q != null and q != ""'>
- <![CDATA[
- AND CI.CENTER_NAME LIKE CONCAT('%', #{q}, '%')
- ]]>
- </if>
- <if test='locationCode != null and locationCode != ""'>
- <![CDATA[
- AND CI.jurisdiction = #{locationCode}
- ]]>
- </if>
- <![CDATA[
- GROUP BY CI.CENTER_CODE WITH ROLLUP HAVING 1 = 1
- ORDER BY NVL(CI.CENTER_NAME, '!')
- LIMIT #{limit}, #{limitMax}
- ]]>
- </select>
-
- </mapper>
|