Browse Source

Merge remote-tracking branch 'origin/dev/20200513end_1.2.0' into debug

zhaops 5 years ago
parent
commit
9a83f88d6f

+ 19 - 0
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -561,6 +561,25 @@ public class ConsoleByDeptFacade {
         return page;
     }
 
+    /**
+     * 缺陷明细-科室(分页)
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public IPage<DeptNumDTO> resultStatisticsByDeptAndDoctorPage(FilterPageByDeptVO filterPageByDeptVO) {
+        if (StringUtil.isBlank(filterPageByDeptVO.getDeptName())) {
+            List<DeptBaseDTO> deptList = this.getDept();
+            //默认取第一个科室
+            if (ListUtil.isNotEmpty(deptList)) {
+                filterPageByDeptVO.setDeptName(deptList.get(0).getDeptName());
+            }
+        }
+        filterPageByDeptVOSet(filterPageByDeptVO);
+        IPage<DeptNumDTO> page = behospitalInfoFacade.resultStatisticsByDeptAndDoctorPage(filterPageByDeptVO);
+        return page;
+    }
+
 
     /**
      * 各科室缺陷占比(组合)

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

@@ -3,6 +3,7 @@ package com.diagbot.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.BehospitalInfoDTO;
+import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
@@ -12,6 +13,7 @@ import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HomePageFilterVO;
@@ -153,4 +155,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public List<LevelStatisticsDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO);
+
+    /**
+     * 科室缺陷占比-科室(分页)
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public IPage<DeptNumDTO> resultStatisticsByDeptAndDoctorPage(@Param("filterPageByDeptVO") FilterPageByDeptVO filterPageByDeptVO);
 }

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

@@ -3,6 +3,7 @@ package com.diagbot.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.BehospitalInfoDTO;
+import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
@@ -12,6 +13,7 @@ import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HomePageFilterVO;
@@ -153,4 +155,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public List<LevelStatisticsDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO);
+
+    /**
+     * 缺陷明细-科室(分页)
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public IPage<DeptNumDTO> resultStatisticsByDeptAndDoctorPage(@Param("filterPageByDeptVO") FilterPageByDeptVO filterPageByDeptVO);
 }

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

@@ -3,6 +3,7 @@ package com.diagbot.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.BehospitalInfoDTO;
+import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
@@ -14,6 +15,7 @@ import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HomePageFilterVO;
@@ -216,4 +218,14 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<LevelStatisticsDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
         return baseMapper.homePageLevelStatisticsByDept(filterOrderByDeptVO);
     }
+
+    /**
+     * 缺陷明细-科室(分页)
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public IPage<DeptNumDTO> resultStatisticsByDeptAndDoctorPage(@Param("filterPageByDeptVO") FilterPageByDeptVO filterPageByDeptVO) {
+        return baseMapper.resultStatisticsByDeptAndDoctorPage(filterPageByDeptVO);
+    }
 }

+ 5 - 0
src/main/java/com/diagbot/vo/FilterPageByDeptVO.java

@@ -15,4 +15,9 @@ public class FilterPageByDeptVO extends FilterPageVO {
      * 科室名称
      */
     private String deptName;
+
+    /**
+     * 医生名称
+     */
+    private String doctorName;
 }

+ 50 - 28
src/main/java/com/diagbot/web/ConsoleByDeptController.java

@@ -34,7 +34,8 @@ public class ConsoleByDeptController {
     @Autowired
     private ConsoleByDeptFacade consoleByDeptFacade;
 
-    @ApiOperation(value = "出院病人统计(科室)[by:zhaops]",
+    //region --------------------------首页接口开始------------------------------
+    @ApiOperation(value = "出院病人统计(科室)-首页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
     @PostMapping("/leaveHosCountByDept")
     @SysLogger("leaveHosCountByDept")
@@ -43,7 +44,7 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "病历数统计(科室)[by:zhaops]",
+    @ApiOperation(value = "病历数统计(科室)-首页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
     @PostMapping("/mrCountByDept")
     @SysLogger("mrCountByDept")
@@ -52,7 +53,7 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "各模块缺陷占比排名(科室)[by:zhaops]",
+    @ApiOperation(value = "各模块缺陷占比排名(科室)-首页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
     @PostMapping("/entryCountGroupByCaseAndDept")
     @SysLogger("entryCountGroupByCaseAndDept")
@@ -61,7 +62,7 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "条目缺陷占比(科室)[by:zhaops]",
+    @ApiOperation(value = "条目缺陷占比(科室)-首页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
     @PostMapping("/entryCountGroupByEntryAndDept")
     @SysLogger("entryCountGroupByEntryAndDept")
@@ -70,6 +71,26 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
+    /**
+     * 病案首页合格率占比(首页)
+     *
+     * @param filterOrderByDeptVO
+     * @return
+     */
+    @ApiOperation(value = "病案首页合格率占比-首页[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "level: 病历等级 <br>" +
+                    "name: 主治医生名称 <br>" +
+                    "deptName: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc: 排序(降序) <br>")
+    @PostMapping("/homePageLevelByDeptLimit")
+    @SysLogger("homePageLevelByDeptLimit")
+    public RespDTO<List<LevelStatisticsDTO>> homePageLevelByDeptLimit(@RequestBody FilterOrderByDeptVO filterOrderByDeptVO) {
+        return RespDTO.onSuc(consoleByDeptFacade.homePageLevelByDeptLimit(filterOrderByDeptVO));
+    }
+    //endregion -----------------------首页接口结束------------------------------
+
     @ApiOperation(value = "用户关联科室[by:zhaops]",
             notes = "")
     @PostMapping("/getDept")
@@ -79,8 +100,11 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "各模块缺陷占比排名-科室(分页)[by:zhaops]",
-            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    //region --------------------------内页接口开始------------------------------
+    @ApiOperation(value = "各模块缺陷占比排名-科室(分页)-内页[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "name: 模块名称<br>" +
+                    "deptName: 科室名称(必填)<br>")
     @PostMapping("/entryCountGroupByCaseAndDeptPage")
     @SysLogger("entryCountGroupByCaseAndDeptPage")
     public RespDTO<IPage<DeptNumDTO>> entryCountGroupByCaseAndDeptPage(@RequestBody FilterPageByDeptVO filterPageByDeptVO) {
@@ -88,8 +112,10 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "条目缺陷占比-科室(分页)[by:zhaops]",
-            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    @ApiOperation(value = "条目缺陷占比-科室(分页)-内页[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "name: 缺陷名称<br>" +
+                    "deptName: 科室名称(必填)<br>")
     @PostMapping("/entryCountGroupByEntryAndDeptPage")
     @SysLogger("entryCountGroupByEntryAndDeptPage")
     public RespDTO<IPage<DeptNumDTO>> entryCountGroupByEntryAndDeptPage(@RequestBody FilterPageByDeptVO filterPageByDeptVO) {
@@ -97,13 +123,25 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "缺陷明细-科室(分页)-内页[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "name: 缺陷名称<br>" +
+                    "deptName: 科室名称(必填)<br>" +
+                    "doctorName: 医生名称(必填)<br>")
+    @PostMapping("/resultStatisticsByDeptAndDoctorPage")
+    @SysLogger("resultStatisticsByDeptAndDoctorPage")
+    public RespDTO<IPage<DeptNumDTO>> resultStatisticsByDeptAndDoctorPage(@RequestBody FilterPageByDeptVO filterPageByDeptVO) {
+        IPage<DeptNumDTO> data = consoleByDeptFacade.resultStatisticsByDeptAndDoctorPage(filterPageByDeptVO);
+        return RespDTO.onSuc(data);
+    }
+
     /**
      * 各科室缺陷占比(组合)
      *
      * @param filterOrderByDeptVO
      * @return
      */
-    @ApiOperation(value = "各科室缺陷占比(组合)[by:zhaops]",
+    @ApiOperation(value = "各科室缺陷占比(组合)-内页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
                     "level: 病历等级 <br>" +
                     "name: 主治医生名称 <br>" +
@@ -122,7 +160,7 @@ public class ConsoleByDeptController {
      * @param filterOrderByDeptVO
      * @return
      */
-    @ApiOperation(value = "病案首页合格率占比[by:zhaops]",
+    @ApiOperation(value = "病案首页合格率占比(科室)-内页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
                     "level: 病历等级 <br>" +
                     "name: 主治医生名称 <br>" +
@@ -135,22 +173,6 @@ public class ConsoleByDeptController {
         return RespDTO.onSuc(consoleByDeptFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO));
     }
 
-    /**
-     * 病案首页合格率占比(首页)
-     *
-     * @param filterOrderByDeptVO
-     * @return
-     */
-    @ApiOperation(value = "病案首页合格率占比(首页)[by:zhaops]",
-            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
-                    "level: 病历等级 <br>" +
-                    "name: 主治医生名称 <br>" +
-                    "deptName: 科室名称 <br>" +
-                    "asc: 排序(升序) <br>" +
-                    "desc: 排序(降序) <br>")
-    @PostMapping("/homePageLevelByDeptLimit")
-    @SysLogger("homePageLevelByDeptLimit")
-    public RespDTO<List<LevelStatisticsDTO>> homePageLevelByDeptLimit(@RequestBody FilterOrderByDeptVO filterOrderByDeptVO) {
-        return RespDTO.onSuc(consoleByDeptFacade.homePageLevelByDeptLimit(filterOrderByDeptVO));
-    }
+    //endregion -----------------------内页接口结束------------------------------
+
 }

+ 137 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -767,6 +767,121 @@
         )t
     </select>
 
+    <!-- 科室缺陷占比(主任医生) -->
+    <select id="resultStatisticsByDeptAndDoctorPage" resultType="com.diagbot.dto.DeptNumDTO">
+        SELECT
+        t.*
+        FROM
+        (
+        SELECT
+        t1.NAME,
+        t1.num AS num,
+        t2.totle AS totleNum,
+        round( t1.num / t2.totle, 4 ) AS percent,
+        concat( round( t1.num / t2.totle * 100, 2 ), '%' ) AS percentStr
+        FROM
+        (
+        SELECT
+        a.doctor_id AS doctorId,
+        a.doctor_name AS doctorName,
+        d.msg as name,
+        count(*) AS num
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        med_qcresult_detail d,
+        sys_user_dept e
+        WHERE
+        a.behospital_code = b.behospital_code
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = d.behospital_code
+        AND a.hospital_id = d.hospital_id
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND e.is_deleted = 'N'
+        AND a.beh_dept_id = e.dept_id
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageByDeptVO.userId!=null">
+            AND e.user_id = #{filterPageByDeptVO.userId}
+        </if>
+        <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
+        </if>
+        <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
+        </if>
+        <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
+        </if>
+        <if test="filterPageByDeptVO.name != null and filterPageByDeptVO.name != ''">
+            AND d.msg like CONCAT('%', #{filterPageByDeptVO.name},'%')
+        </if>
+        <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
+            AND a.doctor_name = #{filterPageByDeptVO.name}
+        </if>
+        <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
+            AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
+        </if>
+        GROUP BY
+        a.doctor_id,
+        a.doctor_name
+        ORDER BY
+        count(*) DESC
+        ) t1,
+        (
+        SELECT
+        count(*) AS totle
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        med_qcresult_detail d,
+        sys_user_dept e
+        WHERE
+        a.behospital_code = b.behospital_code
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = d.behospital_code
+        AND a.hospital_id = d.hospital_id
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND e.is_deleted = 'N'
+        AND a.beh_dept_id = e.dept_id
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageByDeptVO.userId!=null">
+            AND e.user_id = #{filterPageByDeptVO.userId}
+        </if>
+        <if test="filterPageByDeptVO.hospitalId != null and filterPageByDeptVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByDeptVO.hospitalId}
+        </if>
+        <if test="filterPageByDeptVO.startDate != null and filterPageByDeptVO.startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByDeptVO.startDate})]]>
+        </if>
+        <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
+        </if>
+        <if test="filterPageByDeptVO.name != null and filterPageByDeptVO.name != ''">
+            AND d.msg like CONCAT('%', #{filterPageByDeptVO.name},'%')
+        </if>
+        <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
+            AND a.doctor_name = #{filterPageByDeptVO.name}
+        </if>
+        <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
+            AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
+        </if>
+        ) t2
+        )t
+    </select>
+
+
     <!-- 各科室缺陷占比(组合) -->
     <select id="levelStatistics" parameterType="com.diagbot.vo.FilterOrderVO" resultType="com.diagbot.dto.LevelStatisticsDTO">
         SELECT
@@ -845,6 +960,9 @@
                 <when test='asc=="firstLevelPercent"'>firstLevelPercent asc</when>
                 <when test='asc=="secondLevelPercent"'>secondLevelPercent asc</when>
                 <when test='asc=="thirdLevelPercent"'>thirdLevelPercent asc</when>
+                <when test='asc=="firstLevelPercentStr"'>firstLevelPercent asc</when>
+                <when test='asc=="secondLevelPercentStr"'>secondLevelPercent asc</when>
+                <when test='asc=="thirdLevelPercentStr"'>thirdLevelPercent asc</when>
                 <otherwise> deptName asc </otherwise>
             </choose>
         </if>
@@ -863,6 +981,9 @@
                 <when test='desc=="firstLevelPercent"'>firstLevelPercent desc</when>
                 <when test='desc=="secondLevelPercent"'>secondLevelPercent desc</when>
                 <when test='desc=="thirdLevelPercent"'>thirdLevelPercent desc</when>
+                <when test='desc=="firstLevelPercentStr"'>firstLevelPercent desc</when>
+                <when test='desc=="secondLevelPercentStr"'>secondLevelPercent desc</when>
+                <when test='desc=="thirdLevelPercentStr"'>thirdLevelPercent desc</when>
                 <otherwise> deptName desc </otherwise>
             </choose>
         </if>
@@ -939,6 +1060,8 @@
                 <when test='asc=="secondLevelNum"'>secondLevelNum asc</when>
                 <when test='asc=="firstLevelPercent"'>firstLevelPercent asc</when>
                 <when test='asc=="secondLevelPercent"'>secondLevelPercent asc</when>
+                <when test='asc=="firstLevelPercentStr"'>firstLevelPercent asc</when>
+                <when test='asc=="secondLevelPercentStr"'>secondLevelPercent asc</when>
                 <otherwise> deptName asc </otherwise>
             </choose>
         </if>
@@ -955,6 +1078,8 @@
                 <when test='desc=="secondLevelNum"'>secondLevelNum desc</when>
                 <when test='desc=="firstLevelPercent"'>firstLevelPercent desc</when>
                 <when test='desc=="secondLevelPercent"'>secondLevelPercent desc</when>
+                <when test='desc=="firstLevelPercentStr"'>firstLevelPercent desc</when>
+                <when test='desc=="secondLevelPercentStr"'>secondLevelPercent desc</when>
                 <otherwise> deptName desc </otherwise>
             </choose>
         </if>
@@ -1046,6 +1171,9 @@
                 <when test='asc=="firstLevelPercent"'>firstLevelPercent asc</when>
                 <when test='asc=="secondLevelPercent"'>secondLevelPercent asc</when>
                 <when test='asc=="thirdLevelPercent"'>thirdLevelPercent asc</when>
+                <when test='asc=="firstLevelPercentStr"'>firstLevelPercent asc</when>
+                <when test='asc=="secondLevelPercentStr"'>secondLevelPercent asc</when>
+                <when test='asc=="thirdLevelPercentStr"'>thirdLevelPercent asc</when>
                 <otherwise> doctorName asc </otherwise>
             </choose>
         </if>
@@ -1064,6 +1192,9 @@
                 <when test='desc=="firstLevelPercent"'>firstLevelPercent desc</when>
                 <when test='desc=="secondLevelPercent"'>secondLevelPercent desc</when>
                 <when test='desc=="thirdLevelPercent"'>thirdLevelPercent desc</when>
+                <when test='desc=="firstLevelPercentStr"'>firstLevelPercent desc</when>
+                <when test='desc=="secondLevelPercentStr"'>secondLevelPercent desc</when>
+                <when test='desc=="thirdLevelPercentStr"'>thirdLevelPercent desc</when>
                 <otherwise> doctorName desc </otherwise>
             </choose>
         </if>
@@ -1151,6 +1282,9 @@
                 <when test='asc=="firstLevelPercent"'>firstLevelPercent asc</when>
                 <when test='asc=="secondLevelPercent"'>secondLevelPercent asc</when>
                 <when test='asc=="thirdLevelPercent"'>thirdLevelPercent asc</when>
+                <when test='asc=="firstLevelPercentStr"'>firstLevelPercent asc</when>
+                <when test='asc=="secondLevelPercentStr"'>secondLevelPercent asc</when>
+                <when test='asc=="thirdLevelPercentStr"'>thirdLevelPercent asc</when>
                 <otherwise> doctorName asc </otherwise>
             </choose>
         </if>
@@ -1169,6 +1303,9 @@
                 <when test='desc=="firstLevelPercent"'>firstLevelPercent desc</when>
                 <when test='desc=="secondLevelPercent"'>secondLevelPercent desc</when>
                 <when test='desc=="thirdLevelPercent"'>thirdLevelPercent desc</when>
+                <when test='desc=="firstLevelPercentStr"'>firstLevelPercent desc</when>
+                <when test='desc=="secondLevelPercentStr"'>secondLevelPercent desc</when>
+                <when test='desc=="thirdLevelPercentStr"'>thirdLevelPercent desc</when>
                 <otherwise> doctorName desc </otherwise>
             </choose>
         </if>