| | |
| | | <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, |
| | |
| | | leavehospitaldistrictname, |
| | | leavediagname, |
| | | leaveicd10code, |
| | | orgid, |
| | | visit_type |
| | | 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> |
| | |
| | | JOIN service_subtask b on a.taskid = b.taskid and a.pat_cycle = 0 and b.del_flag = 0 |
| | | where b.taskid = #{taskid} |
| | | and b.patid = #{patid} |
| | | </select> |
| | | |
| | | <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double"> |
| | | SELECT sum( a.finished )/ sum( 1 ) FROM |
| | | (SELECT id, visit_time, finishtime, |
| | | (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' )< DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(), finishtime |
| | | ), '%y%m%d' ) ) |
| | | THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask |
| | | WHERE del_flag=0 |
| | | <if test="starttime == null and endtime==null"> |
| | | AND visit_time < NOW() |
| | | </if> |
| | | <if test="starttime != null and endtime!=null"> |
| | | AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d') |
| | | AND date_format(visit_time,'%y%m%d') <= date_format(#{endtime},'%y%m%d') |
| | | </if> |
| | | <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> |
| | | <if test="deptcode != null and deptcode != ''">and deptcode = #{deptcode}</if> |
| | | <if test="deptname != null and deptname != ''">and deptname = #{deptname}</if> |
| | | <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''">and |
| | | leavehospitaldistrictcode = #{leavehospitaldistrictcode} |
| | | </if> |
| | | <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> |
| | | |
| | | <select id="selectTimelyRateDetail" parameterType="com.smartor.domain.ServiceSubtask" |
| | | resultMap="ServiceSubtaskResult"> |
| | | <include refid="selectServiceSubtaskVo"/> |
| | | <where> |
| | | id in ( |
| | | SELECT id FROM |
| | | (SELECT id, visit_time, finishtime, |
| | | (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' ) < DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(), |
| | | finishtime |
| | | ), '%y%m%d' ) ) |
| | | THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask |
| | | WHERE del_flag=0 |
| | | -- AND visit_time < NOW() |
| | | <if test="starttime != null and endtime!=null"> |
| | | AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d') |
| | | AND date_format(visit_time,'%y%m%d') <= date_format(#{endtime},'%y%m%d') |
| | | </if> |
| | | <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> |
| | | <if test="deptcode != null and deptcode != ''">and deptcode = #{deptcode}</if> |
| | | <if test="deptname != null and deptname != ''">and deptname = #{deptname}</if> |
| | | <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''">and |
| | | leavehospitaldistrictcode = #{leavehospitaldistrictcode} |
| | | </if> |
| | | <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> |
| | | |
| | | <select id="selectServiceSubtaskById" parameterType="Long" resultMap="ServiceSubtaskResult"> |
| | |
| | | <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 visit_time BETWEEN #{startDate} AND #{endDate} |
| | | AND del_flag = '0' |
| | | |
| | | <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(DISTINCT patid) AS pmiCount, |
| | | 0 AS pmoCount |
| | | FROM pat_med_inhosp |
| | | WHERE endtime BETWEEN #{startDate} AND #{endDate} |
| | | AND del_flag = '0' |
| | | |
| | | <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(DISTINCT patid) AS pmoCount |
| | | FROM pat_med_outhosp |
| | | WHERE admitdate BETWEEN #{startDate} AND #{endDate} |
| | | AND del_flag = '0' |
| | | |
| | | <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> |