|
@@ -1,9 +1,11 @@
|
|
|
package org.dromara.web.mapper;
|
|
|
|
|
|
|
|
|
+import org.apache.ibatis.annotations.Select;
|
|
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
|
|
import org.dromara.web.domain.TreatmentUser;
|
|
|
import org.dromara.web.domain.vo.TreatmentUserVo;
|
|
|
+import org.dromara.web.domain.vo.indexData.PatientOverviewVo;
|
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
|
|
/**
|
|
@@ -14,5 +16,21 @@ import org.springframework.stereotype.Repository;
|
|
|
*/
|
|
|
@Repository
|
|
|
public interface TreatmentUserMapper extends BaseMapperPlus<TreatmentUser, TreatmentUserVo> {
|
|
|
-
|
|
|
+ @Select("SELECT COUNT(DISTINCT sp.id) AS total, " +
|
|
|
+ " COUNT(DISTINCT CASE WHEN latest_rec.type = '1' AND latest_rec.medical_type != '2' THEN sp.id END) AS outpatient, " +
|
|
|
+ " COUNT(DISTINCT CASE WHEN latest_rec.type = '0' AND latest_rec.medical_type != '2' AND latest_rec.discharge_date IS NULL THEN sp.id END) AS inpatient " +
|
|
|
+ "FROM sys_patient sp " +
|
|
|
+ "LEFT JOIN ( " +
|
|
|
+ " SELECT pmr1.* " +
|
|
|
+ " FROM patient_medical_record pmr1 " +
|
|
|
+ " INNER JOIN ( " +
|
|
|
+ " SELECT treat_num, MAX(create_time) as max_create_time " +
|
|
|
+ " FROM patient_medical_record " +
|
|
|
+ " WHERE del_flag = '0' " +
|
|
|
+ " GROUP BY treat_num " +
|
|
|
+ " ) pmr2 ON pmr1.treat_num = pmr2.treat_num AND pmr1.create_time = pmr2.max_create_time " +
|
|
|
+ " WHERE pmr1.del_flag = '0' " +
|
|
|
+ ") latest_rec ON sp.treat_num = latest_rec.treat_num " +
|
|
|
+ "WHERE sp.del_flag = '0'")
|
|
|
+ PatientOverviewVo selectCount();
|
|
|
}
|