|
@ -621,4 +621,101 @@ public class DataQualityHomeService extends BaseJpaService {
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 完整率、准确率、及时率趋势
|
|
|
|
* @param flag 10按月 20按日
|
|
|
|
* @param dataType 0: 完整性,1:及时性,2:准确性
|
|
|
|
* @param month
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
public Map<String, Object> homeTrend(String flag, int dataType, String month) throws Exception {
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
List<Double> data = new ArrayList<>();
|
|
|
|
List<String> name = new ArrayList<>();
|
|
|
|
if("10".equals(flag)){//按月
|
|
|
|
for(int i=0;i<6;i++){
|
|
|
|
String start = DateUtil.formatDate(DateUtil.addMonth(0-i, DateUtil.formatCharDateYMD(month+"-01")), "yyyy-MM");
|
|
|
|
String end = DateUtil.getLastDate (start+"-01", "yyyy-MM-dd", "yyyy-MM-dd");
|
|
|
|
double rate = getRate(dataType, start+"-01", end);
|
|
|
|
data.add((double) Math.round(rate * 100) / 100);
|
|
|
|
name.add(start);
|
|
|
|
}
|
|
|
|
}else{//按日
|
|
|
|
//当前月份显示最近30天,否则显示当月的数据
|
|
|
|
if(month.equals(DateUtil.toString(new Date(), "yyyy-MM"))){
|
|
|
|
for(int i=0;i<30;i++){
|
|
|
|
String date = DateUtil.toString(DateUtil.addDate(0-i,new Date()));
|
|
|
|
double rate = getRate(dataType, date, date);
|
|
|
|
data.add (0,(double) Math.round(rate * 100) / 100);
|
|
|
|
name.add(0,date);
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
String end = DateUtil.getLastDate (month+"-01", "yyyy-MM-dd", "yyyy-MM-dd");
|
|
|
|
for(int i=0;i<32;i++){
|
|
|
|
String date = DateUtil.toString(DateUtil.addDate(i,DateUtil.strToDate(month+"-01")));
|
|
|
|
double rate = getRate(dataType, date, date);
|
|
|
|
data.add ((double) Math.round(rate * 100) / 100);
|
|
|
|
name.add(date);
|
|
|
|
if(date.equals(end)){
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
map.put("data", data);
|
|
|
|
map.put("name", name);
|
|
|
|
return map;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取比例
|
|
|
|
* @param dataType
|
|
|
|
* @param start
|
|
|
|
* @param end
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public double getRate(int dataType, String start, String end) throws Exception{
|
|
|
|
int totalHospitalNum = 0;//医院总就诊数
|
|
|
|
double totalInTime = 0;//总及时数
|
|
|
|
double totalVisitNum = 0;//总完整数(平台总就诊数)
|
|
|
|
double totalCorrect = 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");
|
|
|
|
|
|
|
|
if(dataType==0){
|
|
|
|
//1. 平台就诊完整数
|
|
|
|
Map<String, Object> dataMap = new HashMap<>();
|
|
|
|
getPatientCount("receive_date",start, end, null, dataMap);
|
|
|
|
totalVisitNum = Double.valueOf(dataMap.get("visitIntegrity").toString());//就诊完整数
|
|
|
|
if(totalHospitalNum==0){
|
|
|
|
return 0.0;
|
|
|
|
}else{
|
|
|
|
return totalVisitNum/totalHospitalNum*100;
|
|
|
|
}
|
|
|
|
}else if (dataType==1){
|
|
|
|
//2. 及时数
|
|
|
|
totalInTime = getInTimeNum("receive_date" ,start, end);
|
|
|
|
if(totalHospitalNum==0){
|
|
|
|
return 0.0;
|
|
|
|
}else{
|
|
|
|
return totalInTime/totalHospitalNum*100;
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
//3. 去重准确数【】
|
|
|
|
totalCorrect = getErrorDataSetData("receive_date",start, end, null);
|
|
|
|
//4. 数据集总量
|
|
|
|
int dataSetsMun = getDataSetsMap(start, end, null);
|
|
|
|
if(dataSetsMun==0){
|
|
|
|
return 0.0;
|
|
|
|
}else{
|
|
|
|
return totalCorrect/dataSetsMun*100;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|