浏览代码

Merge branch 'master' of http://192.168.1.220:10080/EHR/svr-pack-analyzer

zdm 6 年之前
父节点
当前提交
3e511ab662

+ 56 - 8
src/main/java/com/yihu/ehr/analyze/controller/dataQuality/DataQualityHomeEndpoint.java

@ -29,8 +29,6 @@ public class DataQualityHomeEndpoint extends EnvelopRestEndPoint {
    private DataQualityHomeService dataQualityHomeService;
    @RequestMapping(value = ServiceApi.DataQuality.HomeSummary, method = RequestMethod.GET)
    @ApiOperation(value = "质量监控首页--质控情况")
    public Envelop homneSummary(
@ -142,12 +140,6 @@ public class DataQualityHomeEndpoint extends EnvelopRestEndPoint {
        return envelop;
    }
    @RequestMapping(value = "bulkUpDateOrgArea", method = RequestMethod.GET)
    @ApiOperation(value = "批量更新机构关联的区域编码(通过org_code字段更新org_area字段")
    public long bulkUploadOrgArea(
@ -162,4 +154,60 @@ public class DataQualityHomeEndpoint extends EnvelopRestEndPoint {
        return result;
    }
    /** *************************** APP 端接口 **********************************/
    @RequestMapping(value = ServiceApi.DataQuality.HomeCompleteAnalyze, method = RequestMethod.GET)
    @ApiOperation(value = "质量监控首页--完整率分析")
    public Envelop completeAnalyze(
            @ApiParam(name = "start", value = "开始时间,(接收时间)")
            @RequestParam(value = "start", required = false) String start,
            @ApiParam(name = "end", value = "结束时间,(接收时间)", defaultValue = "")
            @RequestParam(value = "end", required = false) String end ) throws Exception {
        Envelop envelop = new Envelop();
        try {
            return success(dataQualityHomeService.getCompleteStatistics(start,end));
        }catch (Exception e){
            e.printStackTrace();
            envelop.setSuccessFlg(false);
            envelop.setErrorMsg(e.getMessage());
        }
        return envelop;
    }
    @RequestMapping(value = ServiceApi.DataQuality.HomeCorrectAnalyze, method = RequestMethod.GET)
    @ApiOperation(value = "质量监控首页--准确率分析")
    public Envelop correctAnalyze(
            @ApiParam(name = "start", value = "开始时间,(接收时间)")
            @RequestParam(value = "start", required = false) String start,
            @ApiParam(name = "end", value = "结束时间,(接收时间)", defaultValue = "")
            @RequestParam(value = "end", required = false) String end ) throws Exception {
        Envelop envelop = new Envelop();
        try {
            return success(dataQualityHomeService.getCorrectStatistics(start,end));
        }catch (Exception e){
            e.printStackTrace();
            envelop.setSuccessFlg(false);
            envelop.setErrorMsg(e.getMessage());
        }
        return envelop;
    }
    @RequestMapping(value = ServiceApi.DataQuality.HomeInTimeAnalyze, method = RequestMethod.GET)
    @ApiOperation(value = "质量监控首页--及时率分析")
    public Envelop inTimeAnalyze(
            @ApiParam(name = "start", value = "开始时间,(接收时间)")
            @RequestParam(value = "start", required = false) String start,
            @ApiParam(name = "end", value = "结束时间,(接收时间)", defaultValue = "")
            @RequestParam(value = "end", required = false) String end ) throws Exception {
        Envelop envelop = new Envelop();
        try {
            return success(dataQualityHomeService.getInTimeStatistics(start,end));
        }catch (Exception e){
            e.printStackTrace();
            envelop.setSuccessFlg(false);
            envelop.setErrorMsg(e.getMessage());
        }
        return envelop;
    }
}

+ 103 - 8
src/main/java/com/yihu/ehr/analyze/service/dataQuality/DataQualityHomeService.java

@ -178,10 +178,6 @@ public class DataQualityHomeService extends BaseJpaService {
        double hospitalOutpatientNum = 0;//总门诊数
        double hospitalExamNum = 0;//总体检数
        double hospitalInpatientNum = 0;//总住院数
        double totalOutpatientNum = 0;//总门诊数
        double totalExamNum = 0;//总体检数
        double totalInpatientNum = 0;//总住院数
        double totalInTime = 0;//总及时数
        double totalVisitNum = 0;//总完整数(平台总就诊数)
        double totalCorrect = 0;//总准确数
@ -197,13 +193,10 @@ public class DataQualityHomeService extends BaseJpaService {
        Map<String, Object> dataMap = new HashMap<>();
        //2. 平台就诊完整数
        getPatientCount("receive_date",start, end, null, dataMap);
        totalOutpatientNum = Double.valueOf(dataMap.get("outpatientIntegrity").toString());//门诊完整数
        totalInpatientNum = Double.valueOf(dataMap.get("hospitalIntegrity").toString());//住院完整数
        totalExamNum = Double.valueOf(dataMap.get("peIntegrity").toString());//体检完整数
        totalVisitNum = Double.valueOf(dataMap.get("visitIntegrity").toString());//就诊完整数
        //3. 及时数
        totalInTime = getInTimeNum("receive_date" ,start, end);
        // 3. 去重准确数
        // 3. 去重准确数【】
        totalCorrect = getErrorDataSetData("receive_date",start, end, null);
        //4. 数据集总量
        int dataSetsMun = getDataSetsMap(start, end, null);
@ -232,6 +225,108 @@ public class DataQualityHomeService extends BaseJpaService {
    }
    /**
     * 质控分析 -  完整性统计
     *
     * @param start 就诊时间- 起始
     * @param end   就诊时间- 截止
     *              【目前取的是平台全部机构,若做多区域平台的话,需要添加区域参数】
     */
    public Map<String, Object> getCompleteStatistics(String start, String end) throws Exception {
        Map<String, Object> totalMap = new HashMap<>();
        String dateStr = DateUtil.toString(new Date());
        if (StringUtils.isBlank(start)) {
            start = dateStr;
        }
        if (StringUtils.isBlank(end)) {
            end = dateStr;
        }
        int totalHospitalNum = 0;//医院总就诊数
        double totalVisitNum = 0;//总完整数(平台总就诊数)
        //1. 获取医院档案量;
        Envelop envelop = packQcReportService.dailyReport("create_date", start + "T00:00:00Z", end + "T23:59:59Z", null);
        Map<String, Object> hospitalDataMap = (Map<String, Object>) envelop.getDetailModelList().get(0);
        //医院总数据量
        totalHospitalNum = (int) hospitalDataMap.get("total");
        Map<String, Object> dataMap = new HashMap<>();
        //2. 平台就诊完整数
        getPatientCount("receive_date",start, end, null, dataMap);
        totalVisitNum = Double.valueOf(dataMap.get("visitIntegrity").toString());
        totalMap.put("totalComplete", totalVisitNum);//总就诊完整数
        totalMap.put("totalHospital", totalHospitalNum);//医院总就诊数
        //计算完整率,
        totalMap.put("completeRate", calRate(totalVisitNum, totalHospitalNum));//完整率
        return totalMap;
    }
    /**
     * 质控分析 -  准确率统计
     *
     * @param start 就诊时间- 起始
     * @param end   就诊时间- 截止
     */
    public Map<String, Object> getCorrectStatistics(String start, String end) throws Exception {
        Map<String, Object> totalMap = new HashMap<>();
        String dateStr = DateUtil.toString(new Date());
        if (StringUtils.isBlank(start)) {
            start = dateStr;
        }
        if (StringUtils.isBlank(end)) {
            end = dateStr;
        }
        double totalCorrect = 0;//总准确数
        Map<String, Object> dataMap = new HashMap<>();
        //1. 去重准确数
        totalCorrect = getErrorDataSetData("receive_date",start, end, null);
        //2. 数据集总量
        int dataSetsMun = getDataSetsMap(start, end, null);
        totalMap.put("totalCorrect", totalCorrect);//准确数
        totalMap.put("totalDataSet", dataSetsMun);//数据集总行数
        //3  计算准确性
        totalMap.put("correctRate", calRate(totalCorrect, dataSetsMun));//数据集准确率
        return totalMap;
    }
    /**
     * 质控分析 -  及时率统计
     *
     * @param start 就诊时间- 起始
     * @param end   就诊时间- 截止
     */
    public Map<String, Object> getInTimeStatistics(String start, String end) throws Exception {
        Map<String, Object> totalMap = new HashMap<>();
        String dateStr = DateUtil.toString(new Date());
        if (StringUtils.isBlank(start)) {
            start = dateStr;
        }
        if (StringUtils.isBlank(end)) {
            end = dateStr;
        }
        int totalHospitalNum = 0;//医院总就诊数
        double totalInTime = 0;//总及时数
        //1. 获取医院档案量;
        Envelop envelop = packQcReportService.dailyReport("create_date", start + "T00:00:00Z", end + "T23:59:59Z", null);
        Map<String, Object> hospitalDataMap = (Map<String, Object>) envelop.getDetailModelList().get(0);
        //医院总数据量
        totalHospitalNum = (int) hospitalDataMap.get("total");
        Map<String, Object> dataMap = new HashMap<>();
        //2. 及时数
        totalInTime = getInTimeNum("receive_date" ,start, end);
        totalMap.put("totalInTime", totalInTime);//及时数
        totalMap.put("totalHospital", totalHospitalNum);//医院总就诊数
        //3 计算及时率
        totalMap.put("inTimeRate", calRate(totalInTime, totalHospitalNum));//及时率
        return totalMap;
    }
    /**
     * 获取质控错误 - 数据集总条数
     * @param dateField  时间区间查询字段