Browse Source

Merge branch 'xt_statistics_branch' of http://git.shengws.com/csx/XT_New into xt_statistics_branch

XMLWAN 4 years ago
parent
commit
f4186a8e09
1 changed files with 73 additions and 20 deletions
  1. 73 20
      service/statistics_service/index_evaluation_service.go

+ 73 - 20
service/statistics_service/index_evaluation_service.go View File

@@ -33,33 +33,33 @@ func GetDialysisProcessIndexChartData(user_org_id int64, patient_id int64, start
33 33
 	db := service.XTReadDB()
34 34
 	switch statistics_type {
35 35
 	case 1:
36
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, weight_before as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
36
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, weight_before as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
37 37
 		break
38 38
 	case 2:
39
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, weight_after as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
39
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, weight_after as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
40 40
 
41 41
 		break
42 42
 	case 3:
43
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, systolic_blood_pressure as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND  created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
43
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, systolic_blood_pressure as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND  assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
44 44
 
45 45
 		break
46 46
 	case 4:
47
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, diastolic_blood_pressure as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
47
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, diastolic_blood_pressure as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
48 48
 
49 49
 		break
50 50
 	case 5:
51
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, pulse_frequency as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
51
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, pulse_frequency as value from xt_assessment_before_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ?  AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
52 52
 
53 53
 		break
54 54
 	case 6:
55
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, systolic_blood_pressure as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
55
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, systolic_blood_pressure as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
56 56
 		break
57 57
 	case 7:
58
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, diastolic_blood_pressure as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
58
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, diastolic_blood_pressure as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
59 59
 
60 60
 		break
61 61
 	case 8:
62
-		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, pulse_frequency as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND created_time <= ? AND  created_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
62
+		err = db.Raw("select from_unixtime(assessment_date,'%Y-%m-%d') as date, pulse_frequency as value from xt_assessment_after_dislysis  Where status = 1 AND user_org_id = ? AND patient_id = ? AND assessment_date <= ? AND  assessment_date >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
63 63
 		break
64 64
 
65 65
 	}
@@ -83,7 +83,7 @@ func GetDialysisProcessIndexOtherChartData(user_org_id int64, patient_id int64,
83 83
 	var total int64
84 84
 	switch statistics_type {
85 85
 	case 9:
86
-		tempErr = db.Table("xt_dialysis_prescription as p").Where("p.user_org_id=? and p.status=1 and  p.created_time >= ? and p.created_time <= ? AND p.patient_id = ? ", user_org_id, start_time, end_time, patient_id).
86
+		tempErr = db.Table("xt_dialysis_prescription as p").Where("p.user_org_id=? and p.status=1 and  p.record_date >= ? and p.record_date <= ? AND p.patient_id = ? ", user_org_id, start_time, end_time, patient_id).
87 87
 			Select("CASE WHEN p.mode_id = 1 THEN 'HD'" +
88 88
 				" WHEN p.mode_id = 2 THEN 'HDF'" +
89 89
 				" WHEN p.mode_id = 3 THEN 'HD+HP'" +
@@ -112,7 +112,7 @@ func GetDialysisProcessIndexOtherChartData(user_org_id int64, patient_id int64,
112 112
 
113 113
 		}
114 114
 		fmt.Println(selectContent)
115
-		tempErr = db.Table("xt_dialysis_prescription as p").Where("p.user_org_id=? and p.status=1 and  p.created_time >= ? and p.created_time <= ? AND p.patient_id = ? ", user_org_id, start_time, end_time, patient_id).
115
+		tempErr = db.Table("xt_dialysis_prescription as p").Where("p.user_org_id=? and p.status=1 and  p.record_date >= ? and p.record_date <= ? AND p.patient_id = ? ", user_org_id, start_time, end_time, patient_id).
116 116
 			Select(selectContent +
117 117
 				" ELSE '未知' END AS name, COUNT(*) AS total",
118 118
 			).Group("p.anticoagulant").Scan(&items).Error
@@ -120,7 +120,7 @@ func GetDialysisProcessIndexOtherChartData(user_org_id int64, patient_id int64,
120 120
 		break
121 121
 	}
122 122
 
123
-	db.Table("xt_dialysis_prescription as p").Where("p.user_org_id=? AND p.status = 1 AND p.patient_id = ? AND p.created_time >= ? and p.created_time <= ? ", user_org_id, patient_id, start_time, end_time).Count(&total)
123
+	db.Table("xt_dialysis_prescription as p").Where("p.user_org_id=? AND p.status = 1 AND p.patient_id = ? AND p.record_date >= ? and p.record_date <= ? ", user_org_id, patient_id, start_time, end_time).Count(&total)
124 124
 
125 125
 	for _, item := range items {
126 126
 		if math.IsNaN(float64(item.Total) / float64(total)) {
@@ -193,12 +193,10 @@ func GetDialysisWatchChartData(user_org_id int64, patient_id int64, start_time i
193 193
 	case 2:
194 194
 
195 195
 		if patient_id == 0 {
196
-			//err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.systolic_blood_pressure as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, end_time, start_time).Scan(&datas).Error
197 196
 
198 197
 			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.diastolic_blood_pressure as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, end_time, start_time).Scan(&datas).Error
199 198
 
200 199
 		} else {
201
-			//err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.systolic_blood_pressure as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND patient_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
202 200
 
203 201
 			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.diastolic_blood_pressure as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND patient_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
204 202
 
@@ -264,6 +262,28 @@ func GetDialysisWatchChartData(user_org_id int64, patient_id int64, start_time i
264 262
 		}
265 263
 		break
266 264
 	case 9:
265
+		if patient_id == 0 {
266
+			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.transmembrane_pressure as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, end_time, start_time).Scan(&datas).Error
267
+
268
+		} else {
269
+
270
+			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.transmembrane_pressure as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND patient_id = ?  AND operate_time <= ? AND  operate_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
271
+
272
+		}
273
+
274
+		break
275
+	case 10:
276
+		if patient_id == 0 {
277
+			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.dialysate_temperature as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, end_time, start_time).Scan(&datas).Error
278
+
279
+		} else {
280
+
281
+			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.dialysate_temperature as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND patient_id = ?  AND operate_time <= ? AND  operate_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
282
+
283
+		}
284
+
285
+		break
286
+	case 11:
267 287
 		if patient_id == 0 {
268 288
 			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.ultrafiltration_rate as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, end_time, start_time).Scan(&datas).Error
269 289
 
@@ -273,8 +293,20 @@ func GetDialysisWatchChartData(user_org_id int64, patient_id int64, start_time i
273 293
 
274 294
 		}
275 295
 
296
+		break
297
+	case 12:
298
+		if patient_id == 0 {
299
+			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.ultrafiltration_volume as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND  operate_time <= ? AND  operate_time >= ? ", user_org_id, end_time, start_time).Scan(&datas).Error
300
+
301
+		} else {
302
+
303
+			err = db.Raw("select from_unixtime(monitor.operate_time,'%Y-%m-%d %H:%i') as date, monitor.ultrafiltration_volume as value from xt_monitoring_record as monitor Where status = 1 AND user_org_id = ? AND patient_id = ?  AND operate_time <= ? AND  operate_time >= ? ", user_org_id, patient_id, end_time, start_time).Scan(&datas).Error
304
+
305
+		}
306
+
276 307
 		break
277 308
 	}
309
+
278 310
 	if err != nil {
279 311
 		return nil, err
280 312
 	}
@@ -511,7 +543,7 @@ func GetDialysisWeightChartData(user_org_id int64, start_time int64, end_time in
511 543
 		}
512 544
 		var weights []*weight
513 545
 		var weightAdd []float64
514
-		db.Raw("Select xt_assessment_after_dislysis.weight_after as weight_after ,xt_assessment_before_dislysis.weight_before as weight_before from `xt_assessment_before_dislysis`   LEFT JOIN  `xt_assessment_after_dislysis`  On xt_assessment_before_dislysis.`patient_id` = xt_assessment_after_dislysis.`patient_id` AND xt_assessment_before_dislysis.assessment_date = xt_assessment_after_dislysis.assessment_date AND xt_assessment_after_dislysis.weight_after != 0   Where  xt_assessment_before_dislysis.user_org_id = ? AND xt_assessment_before_dislysis.created_time >= ? AND  xt_assessment_before_dislysis.created_time <= ? Order by xt_assessment_before_dislysis.assessment_date desc", user_org_id, start_time, end_time).Scan(&weights)
546
+		db.Raw("Select xt_assessment_after_dislysis.weight_after as weight_after ,xt_assessment_before_dislysis.weight_before as weight_before from `xt_assessment_before_dislysis`   LEFT JOIN  `xt_assessment_after_dislysis`  On xt_assessment_before_dislysis.`patient_id` = xt_assessment_after_dislysis.`patient_id` AND xt_assessment_before_dislysis.assessment_date = xt_assessment_after_dislysis.assessment_date AND xt_assessment_after_dislysis.weight_after != 0 AND xt_assessment_after_dislysis.user_org_id = ?  Where  xt_assessment_before_dislysis.user_org_id = ? AND xt_assessment_before_dislysis.created_time >= ? AND  xt_assessment_before_dislysis.created_time <= ? Order by xt_assessment_before_dislysis.assessment_date desc", user_org_id, user_org_id, start_time, end_time).Scan(&weights)
515 547
 		for index, _ := range weights {
516 548
 			if index+1 < len(weights) {
517 549
 				if weights[index+1].WeightAfter == 0 || weights[index].WeightBefore == 0 {
@@ -1328,9 +1360,9 @@ func GetInspectionChartData(user_org_id int64, start_time int64, end_time int64,
1328 1360
 
1329 1361
 	if range_type == 1 {
1330 1362
 		tempErr = db.Table("xt_inspection").Where("org_id=? and status=1 and  created_time >= ? and created_time <= ? AND project_id = ? AND item_id = ?", user_org_id, start_time, end_time, project_id, item_id).
1331
-			Select("CASE WHEN inspect_value < " + range_value_arr[0] + "THEN" + "'" + "小于" + range_value_arr[0] + "'" +
1332
-				" WHEN inspect_value >= " + range_value_arr[0] + "AND  inspect_value <= " + range_value_arr[1] + " THEN " + "'" + range_value_arr[0] + "~" + range_value_arr[1] + "'" +
1333
-				" WHEN inspect_value > " + range_value_arr[1] + "THEN " + "'" + "大于" + range_value_arr[1] + "'" +
1363
+			Select("CASE WHEN inspect_value < " + range_value_arr[0] + " THEN " + "'" + "小于" + range_value_arr[0] + "'" +
1364
+				" WHEN inspect_value >= " + range_value_arr[0] + " AND  inspect_value <= " + range_value_arr[1] + " THEN " + "'" + range_value_arr[0] + "~" + range_value_arr[1] + "'" +
1365
+				" WHEN inspect_value > " + range_value_arr[1] + " THEN " + "'" + "大于" + range_value_arr[1] + "'" +
1334 1366
 				" ELSE '未知' END AS name, COUNT(*) AS total",
1335 1367
 			).Group("name").Scan(&items).Error
1336 1368
 
@@ -1528,12 +1560,15 @@ func GetPatientInspectionBarChartData(user_org_id int64, start_time int64, end_t
1528 1560
 	var tempErr error
1529 1561
 	selectContent := "CASE"
1530 1562
 	range_value_arr := strings.Split(range_value, ",")
1563
+	var Total int64
1564
+
1565
+	db.Table("xt_inspection").Where("org_id=? and status=1 and  created_time >= ? and created_time <= ? AND project_id = ? AND item_id = ? AND patient_id = ?", user_org_id, start_time, end_time, project_id, item_id, patient_id).Count(&Total)
1531 1566
 
1532 1567
 	if range_type == 1 {
1533 1568
 		tempErr = db.Table("xt_inspection").Where("org_id=? and status=1 and  created_time >= ? and created_time <= ? AND project_id = ? AND item_id = ? AND patient_id = ?", user_org_id, start_time, end_time, project_id, item_id, patient_id).
1534
-			Select("CASE WHEN inspect_value < " + range_value_arr[0] + "THEN" + "'" + "小于" + range_value_arr[0] + "'" +
1535
-				" WHEN inspect_value >= " + range_value_arr[0] + "AND  inspect_value <= " + range_value_arr[1] + " THEN " + "'" + range_value_arr[0] + "~" + range_value_arr[1] + "'" +
1536
-				" WHEN inspect_value > " + range_value_arr[1] + "THEN " + "'" + "大于" + range_value_arr[1] + "'" +
1569
+			Select("CASE WHEN inspect_value < " + range_value_arr[0] + " THEN " + "'" + "小于" + range_value_arr[0] + "'" +
1570
+				" WHEN inspect_value >= " + range_value_arr[0] + " AND  inspect_value <= " + range_value_arr[1] + " THEN " + "'" + range_value_arr[0] + "~" + range_value_arr[1] + "'" +
1571
+				" WHEN inspect_value > " + range_value_arr[1] + " THEN " + "'" + "大于" + range_value_arr[1] + "'" +
1537 1572
 				" ELSE '未知' END AS name, COUNT(*) AS total",
1538 1573
 			).Group("name").Scan(&items).Error
1539 1574
 
@@ -1577,6 +1612,16 @@ func GetPatientInspectionBarChartData(user_org_id int64, start_time int64, end_t
1577 1612
 			}
1578 1613
 			items = append(items, newItem)
1579 1614
 		}
1615
+
1616
+		for _, item := range items {
1617
+			if math.IsNaN(float64(item.Total) / float64(Total)) {
1618
+				item.Ratio = "0"
1619
+			} else {
1620
+				float_value, _ := strconv.ParseFloat(fmt.Sprintf("%.1f", (float64(item.Total)/float64(Total))*100), 64)
1621
+				item.Ratio = strconv.FormatFloat(float_value, 'f', 1, 32)
1622
+			}
1623
+		}
1624
+
1580 1625
 		return items, tempErr
1581 1626
 
1582 1627
 	} else {
@@ -1588,6 +1633,14 @@ func GetPatientInspectionBarChartData(user_org_id int64, start_time int64, end_t
1588 1633
 			Select(selectContent +
1589 1634
 				" ELSE '未知' END AS name, COUNT(*) AS total",
1590 1635
 			).Group("name").Scan(&items).Error
1636
+		for _, item := range items {
1637
+			if math.IsNaN(float64(item.Total) / float64(Total)) {
1638
+				item.Ratio = "0"
1639
+			} else {
1640
+				float_value, _ := strconv.ParseFloat(fmt.Sprintf("%.1f", (float64(item.Total)/float64(Total))*100), 64)
1641
+				item.Ratio = strconv.FormatFloat(float_value, 'f', 1, 32)
1642
+			}
1643
+		}
1591 1644
 		return items, tempErr
1592 1645
 	}
1593 1646