陈昶聿
5 天以前 ec23ec3d3dc4ec1ba7d79ba4f46ae2c31d5a16a9
smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -214,28 +214,29 @@
        pat_archive a ON a.id = b.patid
        LEFT JOIN
        pat_archivetag c ON c.patid = a.id AND (c.del_flag = 0 OR c.del_flag IS NULL)
        <where>
            a.del_flag = 0
        WHERE 1=1
            AND a.del_flag = 0
            AND b.del_flag = 0
            AND a.idcardno IS NOT NULL
            <if test="startOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &gt;=
                date_format(#{startOutHospTime},'%y%m%d')
                AND date_format(#{startOutHospTime},'%y%m%d')
            </if>
            <if test="endOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &lt;=
                date_format(#{endOutHospTime},'%y%m%d')
                AND date_format(#{endOutHospTime},'%y%m%d')
            </if>
            <if test="startInHospTime != null ">and date_format(b.starttime,'%y%m%d') &gt;=
                date_format(#{startInHospTime},'%y%m%d')
                AND date_format(#{startInHospTime},'%y%m%d')
            </if>
            <if test="endInHospTime != null ">and date_format(b.starttime,'%y%m%d') &lt;=
                date_format(#{endInHospTime},'%y%m%d')
                AND date_format(#{endInHospTime},'%y%m%d')
            </if>
            <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
                '%')
                AND '%')
            </if>
            <if test="patname != null  and patname != ''">and patname like concat('%', #{patname}, '%')</if>
            <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname like
                concat('%', #{hospitaldistrictname}, '%')
                AND concat('%', #{hospitaldistrictname}, '%')
            </if>
            <if test="endtime != null ">and b.endtime = #{endtime}</if>
            <if test="managementDoctor != null ">and b.management_doctor = #{managementDoctor}</if>
@@ -272,24 +273,24 @@
            <if test="patid != null  and patid != ''">and a.id =#{patid}
            </if>
            <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and
                b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')
                AND b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')
            </if>
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0">
                AND b.leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0">
                AND b.leaveldeptcode IN
                <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leaveldeptcode}
                </foreach>
            </if>
        </where>
        GROUP BY
        b.inhospid,
        a.age,
@@ -371,10 +372,11 @@
        FROM
        pat_med_inhosp b
        <where>
        WHERE 1=1
            <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
        </where>
        order by b.inhospid desc
    </select>
@@ -448,19 +450,20 @@
        FROM
        pat_med_inhosp b,
        pat_archive a
        <where>
            a.del_flag=0
        WHERE 1=1
            AND a.del_flag=0
            and b.del_flag=0
            and a.id = b.patid
            AND a.idcardno != ''
            <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
                '%')
                AND '%')
            </if>
            <if test="managementDoctor != null ">and b.management_doctor = #{managementDoctor}</if>
            <if test="managementDoctorCode != null ">and b.management_doctor_code = #{managementDoctorCode}</if>
            <if test="patname != null  and patname != ''">and patname like concat('%', #{patname}, '%')</if>
            <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname like
                concat('%', #{hospitaldistrictname}, '%')
                AND concat('%', #{hospitaldistrictname}, '%')
            </if>
            <if test="endtime != null ">and b.endtime = #{endtime}</if>
            <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
@@ -481,18 +484,18 @@
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0">
                AND b.leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0">
                AND b.leaveldeptcode IN
                <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leaveldeptcode}
                </foreach>
            </if>
        </where>
        order by b.inhospid desc
    </select>
@@ -513,8 +516,9 @@
    <select id="selectPatMedInhosp" parameterType="Long" resultMap="PatMedInhospResult">
        <include refid="selectPatMedInhospVo"/>
        where del_flag=0
        <if test="cry != null and cry == 0 ">and endtime is null</if>
        <if test="cry != null and cry == 0 ">and inhospstate=0</if>
        <if test="cry != null and cry == 1 ">and inhospstate=1</if>
        <if test="cry != null and cry == 3 ">and inhospstate=3</if>
        <if test="serialnum != null">and serialnum = #{serialnum}</if>
        <if test="hospitalname != null">and hospitalname = #{hospitalname}</if>
        <if test="hospitalcode != null">and hospitalcode = #{hospitalcode}</if>
@@ -856,15 +860,16 @@
        <if test="mz != null">
            SELECT deptname
            FROM pat_med_outhosp
            <where>
                del_flag=0
            WHERE 1=1
                AND del_flag=0
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        <if test="mz != null and zy != null">
            UNION ALL
@@ -872,46 +877,49 @@
        <if test="zy != null">
            SELECT deptname
            FROM pat_med_inhosp
            <where>
                del_flag=0
            WHERE 1=1
                AND del_flag=0
                and inhospstate=0
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        <if test="cy != null and zy != null">
            UNION ALL
            SELECT deptname
            FROM pat_med_inhosp
            <where>
                del_flag=0
            WHERE 1=1
                AND del_flag=0
                and inhospstate=1
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        <if test="mz != null and zy != null and cy==null">
            UNION ALL
            SELECT deptname
            FROM pat_med_inhosp
            <where>
                del_flag=0
            WHERE 1=1
                AND del_flag=0
                and inhospstate=1
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        ) AS combined
        GROUP BY deptname;
@@ -919,15 +927,23 @@
    <select id="selectPatMedInhospCount" parameterType="com.smartor.domain.PatMedReq"
            resultType="com.smartor.domain.PatMedRes">
        SELECT SUM( rs ) AS rs,
        SUM( rc ) AS rc
        SUM( rc ) AS rc,
        SUM( scsf ) AS scsf,
        SUM( zcsf ) AS zcsf,
        SUM( zbsf ) AS zbsf
        FROM (
        <!-- 出院人次-->
        SELECT
        COUNT(1) AS rc,
        0 AS rs
        0 AS rs,
        0 AS scsf,
        0 AS zcsf,
        0 AS zbsf
        FROM
        pat_med_inhosp
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="orgid != null">
                AND orgid = #{orgid}
            </if>
@@ -938,7 +954,7 @@
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    #{deptcode}
                    </foreach>
                </if>
            </if>
@@ -949,20 +965,24 @@
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and leaveldeptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    #{deptcode}
                    </foreach>
                </if>
            </if>
        </where>
        <!-- 随访服务人数 -->
        union all
        select
        0 AS rc,
        count(1) AS rs
        count(1) AS rs,
        0 AS scsf,
        0 AS zcsf,
        0 AS zbsf
        FROM
        service_subtask
        <where>
            del_flag = 0
        WHERE 1=1
            AND del_flag = 0
            and service_type=2
            <if test="orgid != null">
                AND orgid = #{orgid}
@@ -979,7 +999,100 @@
                    #{deptcode}
                </foreach>
            </if>
        </where>
        <!-- 首次随访人数 -->
        union all
        select
        0 AS rc,
        0 AS rs,
        count(1) AS scsf,
        0 AS zcsf,
        0 AS zbsf
        FROM
        service_subtask
        WHERE 1=1
            AND del_flag = 0
            and service_type=2
            and is_visit_again = 0
            <if test="orgid != null">
                AND orgid = #{orgid}
            </if>
            <if test="startDate != null">
                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
            </if>
            <if test="endDate != null">
                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
            </if>
            <if test="deptcodeList != null   and deptcodeList.size() > 0">
                and deptcode in
                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                    #{deptcode}
                </foreach>
            </if>
        <!-- 再次随访人数 -->
        union all
        select
        0 AS rc,
        0 AS rs,
        0 AS scsf,
        count(1) AS zcsf,
        0 AS zbsf
        FROM
        service_subtask
        WHERE 1=1
            AND del_flag = 0
            and service_type=2
            and is_visit_again = 1
            <if test="orgid != null">
                AND orgid = #{orgid}
            </if>
            <if test="startDate != null">
                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
            </if>
            <if test="endDate != null">
                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
            </if>
            <if test="deptcodeList != null   and deptcodeList.size() > 0">
                and deptcode in
                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                    #{deptcode}
                </foreach>
            </if>
        <!-- 专病随访人数 -->
        union all
        select
        0 AS rc,
        0 AS rs,
        0 AS scsf,
        0 AS zcsf,
        count(1) AS zbsf
        FROM
        service_subtask
        WHERE 1=1
            AND del_flag = 0
            and service_type=13
            <if test="orgid != null">
                AND orgid = #{orgid}
            </if>
            <if test="startDate != null">
                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
            </if>
            <if test="endDate != null">
                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
            </if>
            <if test="deptcodeList != null   and deptcodeList.size() > 0">
                and deptcode in
                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                    #{deptcode}
                </foreach>
            </if>
        ) AS combined_data
    </select>
</mapper>