|  |  | 
 |  |  |         <result property="visitTime" column="visit_time"/> | 
 |  |  |         <result property="visitDeptName" column="visit_dept_name"/> | 
 |  |  |         <result property="visitDeptCode" column="visit_dept_code"/> | 
 |  |  |         <result property="managementDoctor" column="management_doctor"/> | 
 |  |  |         <result property="managementDoctorCode" column="management_doctor_code"/> | 
 |  |  |     </resultMap> | 
 |  |  |  | 
 |  |  |     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2"> | 
 |  |  | 
 |  |  |                hosp_type, | 
 |  |  |                task_guid, | 
 |  |  |                patfrom, | 
 |  |  |                management_doctor, | 
 |  |  |                management_doctor_code, | 
 |  |  |                upid, | 
 |  |  |                visit_dept_name, | 
 |  |  |                visit_dept_code, | 
 |  |  | 
 |  |  |                leavediagname, | 
 |  |  |                leaveicd10code, | 
 |  |  |                orgid, | 
 |  |  |                visit_type | 
 |  |  |                visit_type, | 
 |  |  |                management_doctor, | 
 |  |  |                management_doctor_code | 
 |  |  |         from service_subtask | 
 |  |  |     </sql> | 
 |  |  |  | 
 |  |  | 
 |  |  |             <if test="leavediagname != null  and leavediagname != ''">and leavediagname like concat('%', | 
 |  |  |                 #{leavediagname}, '%') | 
 |  |  |             </if> | 
 |  |  |             <if test="managementDoctor != null  and managementDoctor != ''">and management_doctor like concat('%', | 
 |  |  |                 #{managementDoctor}, '%') | 
 |  |  |             </if> | 
 |  |  |             <if test="sex != null  and sex != ''">and sex = #{sex}</if> | 
 |  |  |             <if test="age != null ">and age = #{age}</if> | 
 |  |  |             <if test="patguid != null ">and patguid = #{patguid}</if> | 
 |  |  |             <if test="subId != null ">and id = #{subId}</if> | 
 |  |  |             <if test="inhospid != null ">and inhospid = #{inhospid}</if> | 
 |  |  |             <if test="managementDoctorCode != null ">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |             <if test="submit != null ">and submit = #{submit}</if> | 
 |  |  |             <if test="upid != null ">and upid = #{upid}</if> | 
 |  |  |             <if test="patfrom != null ">and patfrom = #{patfrom}</if> | 
 |  |  | 
 |  |  |             <if test="isVisitAgain != null ">and is_visit_again = #{isVisitAgain}</if> | 
 |  |  |             <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> | 
 |  |  |             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if> | 
 |  |  |             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |             <if test="managementDoctor != null">and management_doctor = #{managementDoctor}</if> | 
 |  |  |         </where> | 
 |  |  |  | 
 |  |  |     </select> | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">and visit_time = #{visitTime}</if> | 
 |  |  |             <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> | 
 |  |  |             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if> | 
 |  |  |             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |             <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if> | 
 |  |  |         </where> | 
 |  |  |  | 
 |  |  |     </select> | 
 |  |  | 
 |  |  |         <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and | 
 |  |  |             leavehospitaldistrictname = #{leavehospitaldistrictname} | 
 |  |  |         </if> | 
 |  |  |         <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |         <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if> | 
 |  |  |         ) a | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | 
 |  |  |             <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and | 
 |  |  |                 leavehospitaldistrictname = #{leavehospitaldistrictname} | 
 |  |  |             </if> | 
 |  |  |  | 
 |  |  |             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |             <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if> | 
 |  |  |             ) a where a.finished =1) | 
 |  |  |         </where> | 
 |  |  |     </select> | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">visit_Time,</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code,</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name,</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code,</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor,</if> | 
 |  |  |         </trim> | 
 |  |  |         <trim prefix="values (" suffix=")" suffixOverrides=","> | 
 |  |  |             <if test="sendname != null">#{sendname},</if> | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">#{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">#{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">#{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |     </insert> | 
 |  |  |  | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         where id = #{id} | 
 |  |  |     </update> | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         <where> | 
 |  |  |             <if test="patid != null ">and patid = #{patid}</if> | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         where patid = #{patid} and taskid = #{taskid} | 
 |  |  |     </update> | 
 |  |  | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         where task_guid = #{taskGuid} and task_name = #{taskName} | 
 |  |  |     </update> | 
 |  |  | 
 |  |  |                patguid, | 
 |  |  |                visitDeptCode, | 
 |  |  |                visitDeptName, | 
 |  |  |                management_doctor_code, | 
 |  |  |                management_doctor, | 
 |  |  |                leaveicd10code | 
 |  |  |         FROM service_subtask, | 
 |  |  |              JSON_TABLE(send_time_slot, '$[*]' COLUMNS ( | 
 |  |  | 
 |  |  |         GROUP BY deptname | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!-- 服务统计查询 - 按时间维度统计出院/门诊随访数据 --> | 
 |  |  |     <select id="getServiceStatistics" parameterType="com.smartor.domain.ServiceStatisticsRequest" | 
 |  |  |             resultType="com.smartor.domain.ServiceStatisticsResponse"> | 
 |  |  |         SELECT | 
 |  |  |         timePeriod, | 
 |  |  |         SUM(dischargeFollowCount) AS dischargeFollowCount, | 
 |  |  |         SUM(outpatientFollowCount) AS outpatientFollowCount, | 
 |  |  |         SUM(pmiCount) AS pmiCount, | 
 |  |  |         SUM(pmoCount) AS pmoCount | 
 |  |  |         FROM ( | 
 |  |  |         -- 随访数据 | 
 |  |  |         SELECT | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0')) AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         COUNT(CASE WHEN service_type = '2' THEN 1 END) AS dischargeFollowCount, | 
 |  |  |         COUNT(CASE WHEN service_type = '3' THEN 1 END) AS outpatientFollowCount, | 
 |  |  |         0 AS pmiCount, | 
 |  |  |         0 AS pmoCount | 
 |  |  |         FROM service_subtask | 
 |  |  |         WHERE | 
 |  |  |         del_flag = '0' | 
 |  |  |         <if test="startDate != null and endDate != null"> | 
 |  |  |             and date_format(visit_time,'%y%m%d') >= date_format(#{startDate},'%y%m%d') | 
 |  |  |             and date_format(visit_time,'%y%m%d') <= date_format(#{endDate},'%y%m%d') | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="orgid != null"> | 
 |  |  |             AND orgid = #{orgid} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |             AND deptcode IN | 
 |  |  |             <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> | 
 |  |  |                 #{deptcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> | 
 |  |  |             AND leavehospitaldistrictcode IN | 
 |  |  |             <foreach collection="leavehospitaldistrictcodes" item="districtcode" open="(" separator="," close=")"> | 
 |  |  |                 #{districtcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="serviceTypes != null and serviceTypes.size() > 0"> | 
 |  |  |             AND service_type IN | 
 |  |  |             <foreach collection="serviceTypes" item="serviceType" open="(" separator="," close=")"> | 
 |  |  |                 #{serviceType} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         GROUP BY | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0')) | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |  | 
 |  |  |         UNION ALL | 
 |  |  |  | 
 |  |  |         -- 出院人次数据 | 
 |  |  |         SELECT | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0')) AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         0 AS dischargeFollowCount, | 
 |  |  |         0 AS outpatientFollowCount, | 
 |  |  |         COUNT( patid) AS pmiCount, | 
 |  |  |         0 AS pmoCount | 
 |  |  |         FROM pat_med_inhosp | 
 |  |  |         WHERE del_flag = '0' | 
 |  |  |         <if test="startDate != null and endDate != null"> | 
 |  |  |             and date_format(endtime,'%y%m%d') >= date_format(#{startDate},'%y%m%d') | 
 |  |  |             and date_format(endtime,'%y%m%d') <= date_format(#{endDate},'%y%m%d') | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         AND inhospstate=1 | 
 |  |  |         <if test="orgid != null"> | 
 |  |  |             AND orgid = #{orgid} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> | 
 |  |  |             AND leavehospitaldistrictcode IN | 
 |  |  |             <foreach collection="leavehospitaldistrictcodes" item="districtcode" open="(" separator="," close=")"> | 
 |  |  |                 #{districtcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |             AND leaveldeptcode IN | 
 |  |  |             <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> | 
 |  |  |                 #{deptcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         GROUP BY | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0')) | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |  | 
 |  |  |         UNION ALL | 
 |  |  |  | 
 |  |  |         -- 门诊人次数据 | 
 |  |  |         SELECT | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         0 AS dischargeFollowCount, | 
 |  |  |         0 AS outpatientFollowCount, | 
 |  |  |         0 AS pmiCount, | 
 |  |  |         COUNT( patid) AS pmoCount | 
 |  |  |         FROM pat_med_outhosp | 
 |  |  |         WHERE del_flag = '0' | 
 |  |  |         <if test="startDate != null and endDate != null"> | 
 |  |  |             and date_format(admitdate,'%y%m%d') >= date_format(#{startDate},'%y%m%d') | 
 |  |  |             and date_format(admitdate,'%y%m%d') <= date_format(#{endDate},'%y%m%d') | 
 |  |  |         </if> | 
 |  |  |         <if test="orgid != null"> | 
 |  |  |             AND orgid = #{orgid} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |             AND deptcode IN | 
 |  |  |             <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> | 
 |  |  |                 #{deptcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         GROUP BY | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         ) AS combined_data | 
 |  |  |         GROUP BY timePeriod | 
 |  |  |         ORDER BY timePeriod DESC | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | </mapper> |