|
|
@@ -5,110 +5,78 @@
|
|
|
<select id="departmentStatistics"
|
|
|
resultType="org.jeecg.modules.medical.common.bo.ReportAfterQueryResponseBO">
|
|
|
SELECT
|
|
|
- (SELECT @rowNum := @rowNum + 1 AS rowNum ) as orderNum,
|
|
|
- t.*
|
|
|
- From
|
|
|
- ( SELECT @rowNum := 0 ) r,
|
|
|
- (SELECT
|
|
|
- any_value ( m.medical_dept_code ) as medical_dept_code,
|
|
|
- any_value ( m.medical_dept_name ) as medical_dept_name,
|
|
|
- (
|
|
|
- SELECT count(*) FROM sys_user_depart WHERE dep_id = (
|
|
|
- SELECT id FROM sys_depart WHERE medical_dept_code = m.medical_dept_code)
|
|
|
- ) as medical_dept_doctor_total,
|
|
|
- (
|
|
|
- SELECT count(*) FROM afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code GROUP BY doctor_id
|
|
|
- ) as violation_doctor_total,
|
|
|
- (
|
|
|
- SELECT count(*) FROM afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code GROUP BY doctor_id
|
|
|
- ) as violation_total,
|
|
|
- ifnull((
|
|
|
- SELECT sum(amount) FROM afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code AND treatment_type = '2'
|
|
|
- ), 0) as outpatient_error_amt,
|
|
|
- ifnull((
|
|
|
- SELECT sum(amount) FROM afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code AND treatment_type = '1'
|
|
|
- ), 0) as hosp_error_amt,
|
|
|
- ifnull((
|
|
|
- SELECT sum(amount) FROM afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code
|
|
|
- ), 0) as error_amt_total
|
|
|
- FROM
|
|
|
- afterwards_audit as m
|
|
|
- <if test="ew.medicalDeptName != null and ew.medicalDeptName != ''">
|
|
|
- WHERE medical_dept_name like concat(concat('%',#{ew.medicalDeptName}),'%')
|
|
|
- </if>
|
|
|
- <if test="ew.startTime != null and ew.startTime != ''">
|
|
|
- <![CDATA[ create_time >= #{ew.startTime,jdbcType=VARCHAR} ]]>
|
|
|
- </if>
|
|
|
- <if test="ew.endTime != null and ew.endTime != ''">
|
|
|
- <![CDATA[ create_time <= #{ew.endTime,jdbcType=VARCHAR} ]]>
|
|
|
- </if>
|
|
|
- GROUP BY medical_dept_code
|
|
|
- ) as t
|
|
|
- ORDER BY t.error_amt_total DESC
|
|
|
+ m.id
|
|
|
+ ,m.medical_dept_name
|
|
|
+ ,m.medical_dept_code
|
|
|
+ ,(SELECT count(*) from sys_user_depart where dep_id = (SELECT id from sys_depart where medical_dept_code = m.medical_dept_code)) as deptDoctorTotal -- 科室医生总数
|
|
|
+ ,(select count(*) from ( SELECT count(doctor_id) from afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code GROUP BY doctor_id) as t ) as violationDoctorNumber -- 违规医生总数
|
|
|
+ ,COUNT(id) as violationTotal
|
|
|
+ ,(select IFNULL(sum(amount), 0) from afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code and treatment_type = '2') as outpatientsErrorAmount -- 门诊违规金额
|
|
|
+ ,(select IFNULL(sum(amount),0) from afterwards_audit_detail WHERE medical_dept_code = m.medical_dept_code and treatment_type = '1') as hospErrorAmount -- 住院违规金额
|
|
|
+ ,ifnull( sum(amount), 0) as errorAmountTotal -- 异常金额总和
|
|
|
+ FROM afterwards_audit_detail as m
|
|
|
+ <where>
|
|
|
+ <if test="ew.medicalDeptName != null and ew.medicalDeptName != ''">
|
|
|
+ WHERE medical_dept_name like concat(concat('%',#{ew.medicalDeptName}),'%')
|
|
|
+ </if>
|
|
|
+ <if test="ew.startTime != null and ew.startTime != ''">
|
|
|
+ <![CDATA[ create_time >= #{ew.startTime,jdbcType=VARCHAR} ]]>
|
|
|
+ </if>
|
|
|
+ <if test="ew.endTime != null and ew.endTime != ''">
|
|
|
+ <![CDATA[ create_time <= #{ew.endTime,jdbcType=VARCHAR} ]]>
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ GROUP BY medical_dept_code
|
|
|
+ ORDER BY violationDoctorNumber DESC
|
|
|
</select>
|
|
|
|
|
|
<select id="departmentDetailStatistics"
|
|
|
resultType="org.jeecg.modules.medical.common.bo.ReportAfterQueryDetailResponseBO">
|
|
|
SELECT
|
|
|
- (tdetail.amount - (tdetail.quantity * tdetail.price)) as errorTotalAmt,
|
|
|
- tdetail.*
|
|
|
- from (
|
|
|
- SELECT
|
|
|
- t.medical_dept_name,
|
|
|
- t.doctor_id,
|
|
|
- t.doctor_name,
|
|
|
- case t.project_type
|
|
|
- WHEN 'medicine' THEN m.id
|
|
|
- WHEN 'consumable' THEN c.id
|
|
|
- WHEN 'diagnoses' THEN d.id
|
|
|
- else 0 end as join_id,
|
|
|
- case t.project_type
|
|
|
- WHEN 'medicine' THEN m.max_sale_limit
|
|
|
- WHEN 'consumable' THEN c.price
|
|
|
- WHEN 'diagnoses' THEN d.price
|
|
|
- else 0 end as price, -- 单价
|
|
|
- t.quantity, -- 数量
|
|
|
- t.amount,
|
|
|
- t.treatment_type, -- "就诊类型"
|
|
|
- t.medical_project_code, -- "项目编码"
|
|
|
- t.medical_project_name, -- "项目名称"
|
|
|
- t.patient_id, -- "参保人员编码"
|
|
|
- t.medical_ins_rule_info_code, -- as "违反规则编码"
|
|
|
- t.medical_ins_rule_info_name, -- as "违反规则名称"
|
|
|
- t.violation_level, -- as "违规等级"
|
|
|
- t.patient_name, -- as "患者姓名|参保人姓名"
|
|
|
- "is_medical_insurance" medicalInsurance, -- "是否医保"
|
|
|
- t.create_time, -- "创建时间|提醒时间"
|
|
|
- "主表带出" as "医生处理意见"
|
|
|
- FROM afterwards_audit_detail as t
|
|
|
- LEFT JOIN medicine as m on t.proejct_code = m.medicine_code AND t.project_type = 'medicine'
|
|
|
- LEFT JOIN consumable_material as c on t.proejct_code = c.consumable_code AND t.project_type = 'consumable'
|
|
|
- left JOIN diagnosis_treatment as d on t.proejct_code = d.project_code AND t.project_type = 'diagnoses'
|
|
|
- <where>
|
|
|
- AND t.medical_dept_code = #{ew.medicalDeptCode,jdbcType=VARCHAR}
|
|
|
- AND t.afterwards_audit_id = #{ew.afterwardsAuditId,jdbcType=VARCHAR}
|
|
|
- <!-- UI字段筛选 Start -->
|
|
|
- <if test="ew.medicalProjectCode != null and ew.medicalProjectCode != ''">
|
|
|
- AND (
|
|
|
- t.medical_project_code like concat(concat('%',#{ew.medicalProjectCode}),'%')
|
|
|
- or
|
|
|
- t.medical_project_name like concat(concat('%',#{ew.medicalProjectCode}),'%')
|
|
|
- )
|
|
|
- </if>
|
|
|
- <if test="ew.treatmentType != null and ew.treatmentType != ''">
|
|
|
- AND t.treatment_type = #{ew.treatmentType,jdbcType=VARCHAR}
|
|
|
- </if>
|
|
|
- <if test="ew.medicalInsRuleInfoCode != null and ew.medicalInsRuleInfoCode != ''">
|
|
|
- AND t.medical_ins_rule_info_code = #{ew.medicalInsRuleInfoCode,jdbcType=VARCHAR}
|
|
|
- </if>
|
|
|
- <if test="ew.medicalInsRuleInfoName != null and ew.medicalInsRuleInfoName != ''">
|
|
|
- AND t.medical_ins_rule_info_name = #{ew.medicalInsRuleInfoName,jdbcType=VARCHAR}
|
|
|
- </if>
|
|
|
- <if test="ew.violationLevel != null and violationLevel != ''">
|
|
|
- AND t.violation_level = #{ew.violationLevel,jdbcType=INTEGER}
|
|
|
- </if>
|
|
|
- </where>
|
|
|
- ) as tdetail
|
|
|
+ id
|
|
|
+ ,medical_dept_name
|
|
|
+ ,medical_dept_code
|
|
|
+ ,doctor_name
|
|
|
+ ,doctor_id
|
|
|
+ ,price
|
|
|
+ ,quantity
|
|
|
+ ,error_relatively_many_amt
|
|
|
+ ,error_relatively_few_amt
|
|
|
+ ,treatment_type
|
|
|
+ ,medical_project_code
|
|
|
+ ,medical_project_name
|
|
|
+ ,patient_id
|
|
|
+ ,patient_name
|
|
|
+ ,medical_ins_rule_info_code
|
|
|
+ ,medical_ins_rule_info_name
|
|
|
+ ,violation_level
|
|
|
+ ,medical_insurance_mark
|
|
|
+ ,create_time
|
|
|
+ ,description
|
|
|
+ from
|
|
|
+ afterwards_audit_detail
|
|
|
+ <where>
|
|
|
+ <if test="ew.medicalProjectSearch != null and ew.medicalProjectSearch != '' ">
|
|
|
+ AND(
|
|
|
+ medical_project_code LIKE concat(concat('%',#{ew.medicalProjectSearch}),'%')
|
|
|
+ or
|
|
|
+ medical_project_name LIKE concat(concat('%',#{ew.medicalProjectSearch}),'%')
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="ew.treatmentType != null and ew.treatmentType != '' ">
|
|
|
+ AND treatment_type = #{ew.treatmentType}
|
|
|
+ </if>
|
|
|
+ <if test="ew.medicalInsRuleInfoCode != null and ew.medicalInsRuleInfoCode != '' ">
|
|
|
+ AND medical_ins_rule_info_code = #{ew.medicalInsRuleInfoCode}
|
|
|
+ </if>
|
|
|
+ <if test="ew.medicalInsRuleInfoName != null and ew.medicalInsRuleInfoName != ''">
|
|
|
+ AND medical_ins_rule_info_name = #{ew.medicalInsRuleInfoName}
|
|
|
+ </if>
|
|
|
+ <if test="ew.violationLevel != null and ew.violationLevel != null" >
|
|
|
+ AND violation_level = #{ew.violationLevel}
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+
|
|
|
</select>
|
|
|
<select id="statisticsErrAmtByAfterwareRecordId" resultType="java.math.BigDecimal">
|
|
|
SELECT
|
|
|
@@ -321,4 +289,30 @@
|
|
|
LEFT JOIN his_patient AS his ON ad.patient_id = his.patient_no
|
|
|
WHERE ad.id = #{id,jdbcType=INTEGER}
|
|
|
</select>
|
|
|
+
|
|
|
+ <select id="statisticsAfterAuditTotal" resultType="java.math.BigDecimal">
|
|
|
+ select ifnull(sum(amount), 0) as totalAmount
|
|
|
+ FROM afterwards_audit_detail
|
|
|
+ <where>
|
|
|
+ <if test="ew.medicalProjectSearch != null and ew.medicalProjectSearch != '' ">
|
|
|
+ AND(
|
|
|
+ medical_project_code LIKE concat(concat('%',#{ew.medicalProjectSearch}),'%')
|
|
|
+ or
|
|
|
+ medical_project_name LIKE concat(concat('%',#{ew.medicalProjectSearch}),'%')
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="ew.treatmentType != null and ew.treatmentType != '' ">
|
|
|
+ AND treatment_type = #{ew.treatmentType}
|
|
|
+ </if>
|
|
|
+ <if test="ew.medicalInsRuleInfoCode != null and ew.medicalInsRuleInfoCode != '' ">
|
|
|
+ AND medical_ins_rule_info_code = #{ew.medicalInsRuleInfoCode}
|
|
|
+ </if>
|
|
|
+ <if test="ew.medicalInsRuleInfoName != null and ew.medicalInsRuleInfoName != ''">
|
|
|
+ AND medical_ins_rule_info_name = #{ew.medicalInsRuleInfoName}
|
|
|
+ </if>
|
|
|
+ <if test="ew.violationLevel != null and ew.violationLevel != null" >
|
|
|
+ AND violation_level = #{ew.violationLevel}
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ </select>
|
|
|
</mapper>
|