Browse Source

指标四,五,六,七,八修改

zhanghang 4 years ago
parent
commit
d3aaa385bc

+ 0 - 11
src/main/java/com/diagbot/dto/MedQualityControlDTO.java

@@ -170,23 +170,12 @@ public class MedQualityControlDTO {
     @Excel(name = "CT检查记录符合率",width = 12, orderNum = "16")
     private String CTExaminationConform;
 
-    /**
-     * CT检查记录率
-     */
-    @Excel(name = "CT检查记录率",width = 12, orderNum = "17")
-    private String CTExamination;
-
     /**
      * MRI检查记录符合率
      */
     @Excel(name = "MRI检查记录符合率",width = 12, orderNum = "18")
     private String MRIExaminationConform;
 
-    /**
-     * MRI检查记录率
-     */
-    @Excel(name = "MRI检查记录率",width = 12, orderNum = "19")
-    private String MRIExamination;
 
     /**
      * 病理检查记录符合率

+ 10 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -17,6 +17,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -2246,4 +2247,13 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     public Map<String,Long> triggeringRules( FilterVO filterVO){
         return   baseMapper.triggeringRules(filterVO);
     }
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO){
+        return baseMapper.getMedicalRecords(filterVO);
+    }
 }

+ 159 - 22
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -4,16 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.aggregate.AverageStatisticsAggregate;
-import com.diagbot.aggregate.LeaveHosStatisticsAggregate;
 import com.diagbot.aggregate.MrStatisticsAggregate;
 import com.diagbot.aggregate.ResultStatisticsAggregate;
 import com.diagbot.dto.*;
 import com.diagbot.entity.*;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.QualityContent;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.MedManagementInfoService;
-import com.diagbot.service.MedQcresultDetailService;
 import com.diagbot.util.*;
 import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
@@ -24,11 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
+import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.DateFormat;
 import java.text.DecimalFormat;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
@@ -391,48 +389,49 @@ public class ConsoleFacade {
         Long endCount = selectOperationNumMap.get("住院人数");
         //手术人数
         Long operationFeeNum = selectOperationNumMap.get("operationFee");
+        int operationNum = getOperationNum(filterVO);
+        Integer integer = Integer.valueOf(operationNum);
+        operationFeeNum=operationFeeNum+integer;
         //抗菌人数
         Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
         //手术病理人数
         Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
+        int operationPathologyNum = getOperationPathologyNum(filterVO);
+        Integer operationPathologyInteger = Integer.valueOf(operationPathologyNum);
+        operationPathologyFeeNum=operationPathologyFeeNum+operationPathologyInteger;
         Map<String, Long> recordIndicatorMap = behospitalInfoFacade.medicalRecordIndicator(filterVO);
         //各指标未完成人数情况
-        Long operationCount = recordIndicatorMap.get("2170手术记录未在术后24h内完成");
-        Long InHospitalRecords = recordIndicatorMap.get("2658入院记录未在患者入院24小时内完成");
-        Long OutHospitalRecords = recordIndicatorMap.get("2635出院记录未在患者出院24小时内完成");
-        Long recordHomePage = recordIndicatorMap.get("3110病案首页未在患者出院24小时内完成");
+        Long operationCount = recordIndicatorMap.get(QualityContent.SSJLWCC_24H);
+        Long InHospitalRecords = recordIndicatorMap.get(QualityContent.RYJLWWC_24H);
+        Long OutHospitalRecords = recordIndicatorMap.get(QualityContent.CYJLWWC_24H);
+        Long recordHomePage = recordIndicatorMap.get(QualityContent.BASYWWC_24H);
         if(startCount.intValue()!=0){
             //手术记录完成率
             //手术完成人数为
-            medQualityControlDTO.setOperationNum(Double.valueOf(startCount-operationCount));
+            medQualityControlDTO.setOperationNum(Double.valueOf(operationFeeNum-operationCount));
             //手术完成率
-            medQualityControlDTO.setOperationStr(String.valueOf((startCount-operationCount)/startCount));
+            medQualityControlDTO.setOperationStr(getResult(operationFeeNum-operationCount,startCount));
             //入院记录24小时完成率
             //入院记录完成人数为
             medQualityControlDTO.setAdmissionNum(Double.valueOf(startCount-InHospitalRecords));
             //入院记录完成率
-            medQualityControlDTO.setAdmissionStr(String.valueOf((startCount-InHospitalRecords)/startCount));
+            medQualityControlDTO.setAdmissionStr(getResult(startCount-InHospitalRecords,startCount));
             //出院记录24小时完成率
             //出院记录完成人数为
             medQualityControlDTO.setLeaveHospitalNum(Double.valueOf(startCount-OutHospitalRecords));
             //出院记录完成率
-            medQualityControlDTO.setLeaveHospitalStr(String.valueOf((startCount-OutHospitalRecords)/startCount));
+            medQualityControlDTO.setLeaveHospitalStr(getResult(startCount-OutHospitalRecords,startCount));
             //病案首页24小时完成率
             //病案首页完成人数为
             medQualityControlDTO.setMedHomePageNum(Double.valueOf(startCount-recordHomePage));
             //病案首页完成率
-            medQualityControlDTO.setMedHomePageStr(String.valueOf((startCount-recordHomePage)/startCount));
+            medQualityControlDTO.setMedHomePageStr(getResult(startCount-recordHomePage,startCount));
         }
-        Map<String, Long> doctorAdviceFacadeOf = doctorAdviceFacade.getCTAndMR(filterVO);
         //CT人数
-        Long ctNum = doctorAdviceFacadeOf.get("CTNUM");
+        Long CTNum = getCTNum(filterVO).get("CT");
         //MR人数
-        Long mrNum = doctorAdviceFacadeOf.get("MRNUM");
-        //CT次数和MR次数
-        Long ctCount = doctorAdviceFacadeOf.get("CT");
-        Long mrCount = doctorAdviceFacadeOf.get("MR");
-        //细菌培养人数
-        Long bacterialCultures = doctorAdviceFacadeOf.get("bacterialCulturesNum");
+        Long MRNum = getCTNum(filterVO).get("MR");
+
         //触发规则
         //病理
         Map<String, Long> triggeringRulesMap = behospitalInfoFacade.triggeringRules(filterVO);
@@ -444,12 +443,150 @@ public class ConsoleFacade {
         //MR
         Long mr = triggeringRulesMap.get("MR");
         //病理完成率为
-        medQualityControlDTO.setPathologicalExamination(String.valueOf((operationPathologyFeeNum - antibiosisNum) / operationPathologyFeeNum));
+        medQualityControlDTO.setPathologicalExamination(getResult(operationPathologyFeeNum - antibiosisNum,operationPathologyFeeNum));
+        //CT完成率
+        medQualityControlDTO.setCTExaminationConform(getResult(CTNum - ct,CTNum));
+        //MR完成率
+        medQualityControlDTO.setMRIExaminationConform(getResult(MRNum - mr,MRNum));
+
+
         return medQualityControlDTO;
     }
 
+    /**
+     * 两数据相除得到百分比
+     * @param i
+     * @param y
+     * @return
+     */
+    public String getResult(Long i , Long y){
+        DecimalFormat df = new DecimalFormat();
+        df.setMaximumFractionDigits(2);
+        df.setMinimumFractionDigits(2);
+        if(String.valueOf(y).equals("0")){
+            return "0.00%";
+        }
+        String k= df.format((i * 100.00) / y) + "%";
+        return k;
+    }
+    /**
+     * 获取无病案首页病人code
+     */
+    public List<String>  adviceVerify(FilterVO filterVO){
+        List<Map<String, String>> medicalRecords = behospitalInfoFacade.getMedicalRecords(filterVO);
+        ArrayList<String> behospitalCodeList = new ArrayList<>();
+        for (Map<String, String> medicalRecord : medicalRecords) {
+            String b_code = medicalRecord.get("b_code");
+            String behospitalCode = medicalRecord.get("behospital_code");
+            if(StringUtil.isEmpty(b_code)){
+                behospitalCodeList.add(behospitalCode);
+            }
+        }
+        return behospitalCodeList;
+    }
+    /**
+     * 医嘱表判断无病案首页是否为病理手术患者的人数
+     */
+    public int getOperationPathologyNum(FilterVO filterVO){
+        List<String> behospitalCodeList = adviceVerify(filterVO);
+        int operationNum=0;
+        for (String behospitalCode : behospitalCodeList) {
+            QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
+            dtoQueryWrapper.eq("behospital_code",behospitalCode)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("doctor_advice_type",QualityContent.STAT_ORDER)
+                    .eq("da_status","执行");
+            //查医嘱表
+            List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
+            for (DoctorAdvice doctorAdvice : doctorAdvices) {
+                String name = doctorAdvice.getDaItemName();
+                if(name.contains("手术")) {
+                    if (name.contains("非手术") || name.contains("手术室") || (name.contains("手术") && name.contains("取消")) || (name.contains("暂停") && name.contains("手术")) || name.contains("静脉穿刺置管术") || name.startsWith("停") || name.contains("前一次")
+                            || name.contains("特殊病人手术使用一次性卫生材料") || name.contains("人免疫缺陷病毒抗体检测免费")) {
+                        continue;
+                    }else {
+                        for (DoctorAdvice advice : doctorAdvices) {
+                            String daItemName = advice.getDaItemName();
+                            if(daItemName.contains("病理")) {
+                                operationNum++;
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return operationNum;
+    }
+
+    /**
+     * 医嘱表判断无病案首页是否为手术患者的人数
+     */
+    public int getOperationNum(FilterVO filterVO){
+        List<String> behospitalCodeList = adviceVerify(filterVO);
+        int operationNum=0;
+        for (String behospitalCode : behospitalCodeList) {
+            QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
+            dtoQueryWrapper.eq("behospital_code",behospitalCode)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("doctor_advice_type",QualityContent.STAT_ORDER)
+                    .eq("da_status","执行");
+            //查医嘱表
+            List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
+            for (DoctorAdvice doctorAdvice : doctorAdvices) {
+                String name = doctorAdvice.getDaItemName();
+                if(name.contains("手术")) {
+                    if (name.contains("非手术") || name.contains("手术室") || (name.contains("手术") && name.contains("取消")) || (name.contains("暂停") && name.contains("手术")) || name.contains("静脉穿刺置管术") || name.startsWith("停") || name.contains("前一次")
+                            || name.contains("特殊病人手术使用一次性卫生材料") || name.contains("人免疫缺陷病毒抗体检测免费")) {
+                        continue;
+                    }else {
+                        operationNum++;
+                        break;
+                    }
+                }
+            }
+        }
+        return operationNum;
 
 
+    }
+    /**
+     * 获取CT/MRI人数
+     */
+    public Map<String,Long> getCTNum(FilterVO filterVO){
+        List<Map<String, String>> getDoctorAdviceNum = doctorAdviceFacade.getDoctorAdviceNum(filterVO);
+        HashMap<String, Long> map = new HashMap<>();
+        ArrayList<String> codeList = new ArrayList<>();
+        for (Map<String, String> ctNumMap : getDoctorAdviceNum) {
+            String behospitalCode = ctNumMap.get("behospital_code");
+            if (!codeList.contains(behospitalCode)) {
+                String daItemName = ctNumMap.get("da_item_name");
+                if (daItemName.contains("CT") || daItemName.contains("X线")) {
+                    if ((!daItemName.contains("ATCH") && !daItemName.contains("TCT") && !daItemName.contains("HCT") && !daItemName.contains("OCT") && !daItemName.contains("NCT")&& !daItemName.contains("LCT")&& !daItemName.contains("ACT"))||(daItemName.contains("停"))) {
+                        //都不包含为CT
+                        codeList.add(behospitalCode);
+                        continue;
+                    }
+                }
+            }
+        }
+        ArrayList<String> codeMri = new ArrayList<>();
+        for (Map<String, String> MRINumMap : getDoctorAdviceNum) {
+            String behospitalCodeMri = MRINumMap.get("behospital_code");
+            if(!codeList.contains(behospitalCodeMri)){
+                String daItemName = MRINumMap.get("da_item_name");
+                    if(daItemName.contains("磁共振")||daItemName.contains("MR")){
+                        if(!daItemName.contains("IMRT")&&!daItemName.contains("mrs评分")){
+                        codeMri.add(behospitalCodeMri);
+                        continue;
+                        }
+                    }
+            }
+        }
+        map.put("CT",Long.valueOf(codeList.size()));
+        map.put("MR",Long.valueOf(codeMri.size()));
+        return map;
+    }
     /**
      * 质控病历统计
      *

+ 4 - 5
src/main/java/com/diagbot/facade/DoctorAdviceFacade.java

@@ -13,6 +13,7 @@ import com.diagbot.vo.FilterVO;
 import org.springframework.stereotype.Component;
 
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -46,14 +47,12 @@ public class DoctorAdviceFacade extends DoctorAdviceServiceImpl {
     }
 
     /**
-     * 获取参与CT和MR次数和人数
+     * 获取医嘱
      * @param filterVO
      * @return
      */
-    public Map<String,Long> getCTAndMR(FilterVO filterVO){
-        return baseMapper.getCTAndMR(filterVO);
+    public List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO){
+        return baseMapper.getDoctorAdviceNum(filterVO);
 
     }
-
-
 }

+ 7 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -706,4 +706,11 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public Map<String,Long> triggeringRules(@Param("filterVO") FilterVO filterVO);
 
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO);
+
 }

+ 1 - 1
src/main/java/com/diagbot/mapper/DoctorAdviceMapper.java

@@ -26,5 +26,5 @@ public interface DoctorAdviceMapper extends BaseMapper<DoctorAdvice> {
     List<String> getInfo(@Param("hospitalId")Long hospitalId, @Param("behospitalCode")String behospitalCode);
 
     Map<String,Long> getCTAndMR( @Param("filterVO")FilterVO filterVO);
-
+    List<Map<String, String>> getDoctorAdviceNum(@Param("filterVO") FilterVO filterVO);
 }

+ 7 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -666,4 +666,11 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public Map<String,Long> triggeringRules(@Param("filterVO")FilterVO filterVO);
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO);
 }

+ 4 - 1
src/main/java/com/diagbot/service/DoctorAdviceService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.DoctorAdviceVO;
 import com.diagbot.vo.FilterVO;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -21,7 +22,9 @@ public interface DoctorAdviceService extends IService<DoctorAdvice> {
 
     IPage<DoctorAdviceDTO> getPage(DoctorAdviceVO doctorAdviceVO);
 
-    Map<String, Long> getCTAndMR(FilterVO filterVO);
+
+
+    List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO);
 
 
 }

+ 9 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -1111,4 +1111,13 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public Map<String,Long> triggeringRules(@Param("filterVO")FilterVO filterVO){
         return  baseMapper.triggeringRules(filterVO);
     }
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO){
+        return  baseMapper.getMedicalRecords(filterVO);
+    }
 }

+ 4 - 7
src/main/java/com/diagbot/service/impl/DoctorAdviceServiceImpl.java

@@ -59,14 +59,11 @@ public class DoctorAdviceServiceImpl extends ServiceImpl<DoctorAdviceMapper, Doc
         return page;
     }
 
+
     /**
-     * 获取参与CT和MR次数和人数
-     * @param filterVO
-     * @return
+     * 获取医嘱
      */
-    public Map<String,Long> getCTAndMR(FilterVO filterVO){
-        return baseMapper.getCTAndMR(filterVO);
+    public List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO){
+        return baseMapper.getDoctorAdviceNum(filterVO);
     }
-
-
 }

+ 48 - 3
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -17570,6 +17570,8 @@
         AND a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
+        <![CDATA[ and  a.qc_type_id <>'0']]>
+
     </select>
 
     <!--  时间段出院,住院, 手术费,抗菌药物,手术和病理费等含有人数 -->
@@ -17587,8 +17589,8 @@
         )  AS '出院人数',
         count(
         CASE
-        WHEN   <![CDATA[  d.behospital_date >= #{filterVO.startDate}]]>
-            <![CDATA[ AND d.behospital_date <= #{filterVO.endDate}]]> THEN
+        WHEN   <![CDATA[  d.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]> THEN
         1
         ELSE
         NULL
@@ -17652,6 +17654,7 @@
         AND a.hospital_id = c.hospital_id
         AND a.is_deleted = 'N'
         AND c.is_deleted = 'N'
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
         ) d
         LEFT JOIN med_home_page b ON b.behospital_code = d.behospital_code
         AND d.hospital_id = b.hospital_id
@@ -17704,10 +17707,12 @@
 		FROM
 			med_qcresult_info a,
 			med_behospital_info b,
-			med_qcresult_detail c
+			med_qcresult_detail c,
+            qc_cases_entry d
 		WHERE
 			a.hospital_id = #{filterVO.hospitalId}
 		AND a.hospital_id = b.hospital_id
+		AND d.id=c.cases_entry_id
 		AND a.hospital_id = c.hospital_id
 		AND b.is_placefile = #{filterVO.isPlacefile}
 		AND a.behospital_code = b.behospital_code
@@ -17715,10 +17720,50 @@
 		AND a.is_deleted = 'N'
 		AND b.is_deleted = 'N'
 		AND c.is_deleted = 'N'
+        <![CDATA[ and b.qc_type_id <>'0']]>
         <if test="filterVO.startDate != null and  filterVO.endDate != null ">
             <![CDATA[ AND b.leave_hospital_date >= #{filterVO.startDate}]]>
             <![CDATA[ AND b.leave_hospital_date <= #{filterVO.endDate}]]>
         </if>
 	) b
     </select>
+
+<!--    跟病案首页关联的出院病历-->
+    <select id="getMedicalRecords" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+     SELECT
+	d.behospital_code,
+	d.behospital_date,
+	d.leave_hospital_date,
+	b.behospital_code AS b_code,
+	b.operation_fee,
+	b.antibiosis_fee,
+	b.pathology_fee
+    FROM
+	    (
+		SELECT
+			a.behospital_code,
+			a.hospital_id,
+			a.behospital_date,
+			a.leave_hospital_date
+		FROM
+			med_behospital_info a,
+			med_qcresult_info c
+		WHERE
+			a.behospital_code = c.behospital_code
+		AND a.hospital_id = #{filterVO.hospitalId}
+		AND a.is_placefile = #{filterVO.isPlacefile}
+		AND a.hospital_id = c.hospital_id
+		AND a.is_deleted = 'N'
+		AND c.is_deleted = 'N'
+		AND a.qc_type_id != 0
+        <if test="filterVO.startDate != null and  filterVO.endDate != null ">
+            <![CDATA[ AND a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+	) d
+    LEFT JOIN med_home_page b ON b.behospital_code = d.behospital_code
+    AND d.hospital_id = b.hospital_id
+    AND b.is_deleted = 'N'
+
+    </select>
 </mapper>

+ 22 - 66
src/main/resources/mapper/DoctorAdviceMapper.xml

@@ -213,77 +213,33 @@
         </foreach>
     </update>
 
-<!--    CT次数和人数-->
-    <select id="getCTAndMR" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+
+
+<!--    根据条件获取医嘱-->
+    <select id="getDoctorAdviceNum" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
         SELECT
-	count(
-		CASE
-		WHEN a.da_item_name LIKE '%CT%' THEN
-			1
-		ELSE
-			NULL
-		END
-	) AS 'CT',
-	count(
-		CASE
-		WHEN a.da_item_name LIKE '%MR%' THEN
-			1
-		ELSE
-			NULL
-		END
-	) AS 'MR',
-	count(
-		DISTINCT
-		CASE
-		WHEN a.da_item_name LIKE '%CT%' THEN
-			a.behospital_code
-		ELSE
-			NULL
-		END
-	) AS 'CTNUM' ,
-    count(
-		DISTINCT
-		CASE
-		WHEN a.da_item_name LIKE '%MR%' THEN
-			a.behospital_code
-		ELSE
-			NULL
-		END
-	) AS 'MRNUM',
-        count(
-        DISTINCT
-        CASE
-        WHEN a.da_item_name LIKE '%细菌培养%' THEN
-        a.behospital_code
-        ELSE
-        NULL
-        END
-        ) AS 'bacterialCulturesNum'
-    from(
-    SELECT
-	b.behospital_code,
-	a.da_item_name
+        b.behospital_code,
+        b.da_item_name
     FROM
-	med_doctor_advice a,
-	med_behospital_info b,
-	med_qcresult_info c
+	    med_behospital_info a,
+	    med_qcresult_info c,
+	    med_doctor_advice b
     WHERE
-	b.behospital_code = c.behospital_code
-    AND b.behospital_code = a.behospital_code
-    AND b.hospital_id = #{filterVO.hospitalId}
-    AND b.hospital_id = a.hospital_id
-    AND b.hospital_id = c.hospital_id
-    AND b.is_placefile = #{filterVO.isPlacefile}
-    AND b.is_deleted = 'N'
+    	a.behospital_code = c.behospital_code
+    and a.behospital_code = b.behospital_code
+    AND a.hospital_id = #{filterVO.hospitalId}
+    AND a.is_placefile = #{filterVO.isPlacefile}
+    AND a.hospital_id = c.hospital_id
+    AND a.hospital_id = b.hospital_id
     AND a.is_deleted = 'N'
     AND c.is_deleted = 'N'
-    AND a.doctor_advice_type = '临时医嘱'
-    and a.da_status != NULL
-    and a.da_status != '作废'
-        <if test="filterVO.startDate != null and filterVO.endDate != null">
-            <![CDATA[ and b.leave_hospital_date >= #{filterVO.startDate}]]>
-            <![CDATA[ AND b.leave_hospital_date <= #{filterVO.endDate}]]>
+    AND b.is_deleted = 'N'
+    AND b.doctor_advice_type = '临时医嘱'
+    <![CDATA[ and  a.qc_type_id <>'0' ]]>
+    <![CDATA[ and  b.da_status <>'作废' ]]>
+        <if test="filterVO.startDate != null and  filterVO.endDate != null ">
+            <![CDATA[ AND a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
         </if>
-        ) a
     </select>
 </mapper>