Pārlūkot izejas kodu

Merge branch 'xt_statistics_branch'

csx 5 gadus atpakaļ
vecāks
revīzija
234e411d8d

+ 19 - 7
service/statistics_service/index_evaluation_service.go Parādīt failu

12
 func GetOrgFirstPatientInfo(user_org_id int64) (patient *models.Patients, err error) {
12
 func GetOrgFirstPatientInfo(user_org_id int64) (patient *models.Patients, err error) {
13
 	db := service.XTReadDB()
13
 	db := service.XTReadDB()
14
 	var tempPatient models.Patients
14
 	var tempPatient models.Patients
15
-	findErr := db.Model(&models.Patients{}).Where("user_org_id = ? AND status = 1 AND lapseto = 1", user_org_id).First(&tempPatient).Error
15
+	findErr := db.Model(&models.Patients{}).Where("user_org_id = ? AND status = 1 AND lapseto = 1", user_org_id).Last(&tempPatient).Error
16
 	if findErr == gorm.ErrRecordNotFound {
16
 	if findErr == gorm.ErrRecordNotFound {
17
 		return nil, nil
17
 		return nil, nil
18
 	}
18
 	}
487
 				weightAdd = append(weightAdd, weights[index].WeightBefore-weights[index+1].WeightAfter)
487
 				weightAdd = append(weightAdd, weights[index].WeightBefore-weights[index+1].WeightAfter)
488
 			}
488
 			}
489
 		}
489
 		}
490
-		fmt.Println(weightAdd)
491
 
490
 
492
 		var total_one int64
491
 		var total_one int64
493
 		var total_two int64
492
 		var total_two int64
750
 	db := service.XTReadDB()
749
 	db := service.XTReadDB()
751
 	var items []*otherItemAmount
750
 	var items []*otherItemAmount
752
 	var tempErr error
751
 	var tempErr error
753
-	//var total int64
752
+	var Total int64
754
 	switch statistics_type {
753
 	switch statistics_type {
755
 	case 1:
754
 	case 1:
756
 		type bp struct {
755
 		type bp struct {
761
 
760
 
762
 		if patient_id == 0 {
761
 		if patient_id == 0 {
763
 			db.Raw("SELECT systolic_blood_pressure,diastolic_blood_pressure FROM xt_assessment_before_dislysis Where user_org_id = ? AND  created_time >= ? AND created_time <= ?   UNION ALL SELECT systolic_blood_pressure,diastolic_blood_pressure  FROM xt_assessment_after_dislysis Where user_org_id = ? AND created_time >= ? AND created_time <= ?  ", user_org_id, start_time, end_time, user_org_id, start_time, end_time).Scan(&bps)
762
 			db.Raw("SELECT systolic_blood_pressure,diastolic_blood_pressure FROM xt_assessment_before_dislysis Where user_org_id = ? AND  created_time >= ? AND created_time <= ?   UNION ALL SELECT systolic_blood_pressure,diastolic_blood_pressure  FROM xt_assessment_after_dislysis Where user_org_id = ? AND created_time >= ? AND created_time <= ?  ", user_org_id, start_time, end_time, user_org_id, start_time, end_time).Scan(&bps)
763
+			db.Raw("SELECT count(id) FROM xt_assessment_before_dislysis Where user_org_id = ? AND  created_time >= ? AND created_time <= ?   UNION ALL SELECT systolic_blood_pressure,diastolic_blood_pressure  FROM xt_assessment_after_dislysis Where user_org_id = ? AND created_time >= ? AND created_time <= ?  ", user_org_id, start_time, end_time, user_org_id, start_time, end_time).Count(&Total)
764
+
764
 		} else {
765
 		} else {
765
 			db.Raw("SELECT systolic_blood_pressure,diastolic_blood_pressure FROM xt_assessment_before_dislysis Where user_org_id = ? AND  created_time >= ? AND created_time <= ? AND patient_id = ?  UNION ALL SELECT systolic_blood_pressure,diastolic_blood_pressure  FROM xt_assessment_after_dislysis Where user_org_id = ? AND created_time >= ? AND created_time <= ? AND patient_id = ?  ", user_org_id, start_time, end_time, patient_id, user_org_id, start_time, end_time, patient_id).Scan(&bps)
766
 			db.Raw("SELECT systolic_blood_pressure,diastolic_blood_pressure FROM xt_assessment_before_dislysis Where user_org_id = ? AND  created_time >= ? AND created_time <= ? AND patient_id = ?  UNION ALL SELECT systolic_blood_pressure,diastolic_blood_pressure  FROM xt_assessment_after_dislysis Where user_org_id = ? AND created_time >= ? AND created_time <= ? AND patient_id = ?  ", user_org_id, start_time, end_time, patient_id, user_org_id, start_time, end_time, patient_id).Scan(&bps)
767
+			db.Raw("SELECT  count(id) FROM xt_assessment_before_dislysis Where user_org_id = ? AND  created_time >= ? AND created_time <= ? AND patient_id = ?  UNION ALL SELECT systolic_blood_pressure,diastolic_blood_pressure  FROM xt_assessment_after_dislysis Where user_org_id = ? AND created_time >= ? AND created_time <= ? AND patient_id = ?  ", user_org_id, start_time, end_time, patient_id, user_org_id, start_time, end_time, patient_id).Count(&Total)
766
 
768
 
767
 		}
769
 		}
768
 
770
 
780
 			} else if item.SystolicBloodPressure >= 100 && item.SystolicBloodPressure <= 160 && item.DiastolicBloodPressure >= 99 && item.DiastolicBloodPressure <= 140 {
782
 			} else if item.SystolicBloodPressure >= 100 && item.SystolicBloodPressure <= 160 && item.DiastolicBloodPressure >= 99 && item.DiastolicBloodPressure <= 140 {
781
 				total_three++
783
 				total_three++
782
 			} else {
784
 			} else {
785
+				fmt.Println(item.SystolicBloodPressure)
786
+				fmt.Println(item.DiastolicBloodPressure)
787
+
783
 				total_four++
788
 				total_four++
784
 			}
789
 			}
785
 		}
790
 		}
810
 		items = append(items, newItem2)
815
 		items = append(items, newItem2)
811
 		items = append(items, newItem3)
816
 		items = append(items, newItem3)
812
 
817
 
818
+		for _, item := range items {
819
+			float_value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(item.Total)/float64(Total)), 64)
820
+			item.Ratio = strconv.FormatInt(int64(float_value*100), 10)
821
+		}
822
+
813
 		break
823
 		break
814
 	case 2:
824
 	case 2:
815
 		if patient_id == 0 {
825
 		if patient_id == 0 {
831
 
841
 
832
 		}
842
 		}
833
 
843
 
844
+		//db.Table("xt_assessment_before_dislysis as before").Where("before.user_org_id=? AND before.status = 1  AND before.created_time >= ? and before.created_time <= ? ", user_org_id, patient_id, start_time, end_time).Count(&total)
845
+
834
 		var isHasConditionOne bool = false
846
 		var isHasConditionOne bool = false
835
 		var isHasConditionTwo bool = false
847
 		var isHasConditionTwo bool = false
836
 		var isHasConditionThree bool = false
848
 		var isHasConditionThree bool = false
1076
 	case 1:
1088
 	case 1:
1077
 		for _, item := range datas {
1089
 		for _, item := range datas {
1078
 			var Total int64
1090
 			var Total int64
1079
-			db.Raw("select count(*) as total from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND config.name like '%内瘘%' Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&Total)
1091
+			db.Raw("select count(*) as total from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND  FIND_IN_SET('内瘘',config.name) > 0   Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&Total)
1080
 			item.PunctureCount = Total
1092
 			item.PunctureCount = Total
1081
 		}
1093
 		}
1082
 		break
1094
 		break
1083
 	case 2:
1095
 	case 2:
1084
 		for _, item := range datas {
1096
 		for _, item := range datas {
1085
 			var Total int64
1097
 			var Total int64
1086
-			db.Raw("select count(*) as total from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND config.name like '%导管%' Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&Total)
1098
+			db.Raw("select count(*) as total from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND FIND_IN_SET('导管',config.name) > 0 Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&Total)
1087
 			item.ChangemedicineCount = Total
1099
 			item.ChangemedicineCount = Total
1088
 		}
1100
 		}
1089
 
1101
 
1127
 		var TotalOne int64
1139
 		var TotalOne int64
1128
 		var TotalTwo int64
1140
 		var TotalTwo int64
1129
 		var TotalThree int64
1141
 		var TotalThree int64
1130
-		db.Raw("select count(*) as total from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND config.name like '%内瘘%' Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&Total)
1131
-		db.Raw("select count(*) as total_one from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND config.name like '%导管%' Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&TotalOne)
1142
+		db.Raw("select count(*) as total from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND FIND_IN_SET('内瘘',config.name) > 0 Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&Total)
1143
+		db.Raw("select count(*) as total_one from  (select d.patient_id as patient, d.id, d.`assessment_date` as date,config.name as name from  xt_assessment_before_dislysis as d  JOIN `xt_data_config` config on  d.`blood_access_part_opera_id` = config.value AND config.org_id = ? AND config.parent_id = ? AND FIND_IN_SET('导管',config.name) > 0 Group by d.id)  b JOIN `xt_dialysis_order`  on xt_dialysis_order.`dialysis_date` = b.date AND xt_dialysis_order.user_org_id = ? AND xt_dialysis_order.status = 1  AND xt_dialysis_order.start_nurse = ? AND xt_dialysis_order.created_time >= ? AND xt_dialysis_order.created_time <= ? ", user_org_id, tempConfig.ID, user_org_id, item.AdminUserId, start_time, end_time).Count(&TotalOne)
1132
 		db.Table("xt_monitoring_record ").Where("user_org_id = ? AND status = 1 AND monitoring_nurse = ? AND created_time >= ? AND created_time <= ?", user_org_id, item.AdminUserId, start_time, end_time).Count(&TotalTwo)
1144
 		db.Table("xt_monitoring_record ").Where("user_org_id = ? AND status = 1 AND monitoring_nurse = ? AND created_time >= ? AND created_time <= ?", user_org_id, item.AdminUserId, start_time, end_time).Count(&TotalTwo)
1133
 		db.Table("xt_treatment_summary").Where("user_org_id = ? AND status = 1 AND creater = ? AND created_time >= ? AND created_time <= ?", user_org_id, item.AdminUserId, start_time, end_time).Count(&TotalThree)
1145
 		db.Table("xt_treatment_summary").Where("user_org_id = ? AND status = 1 AND creater = ? AND created_time >= ? AND created_time <= ?", user_org_id, item.AdminUserId, start_time, end_time).Count(&TotalThree)
1134
 		item.PunctureCount = Total
1146
 		item.PunctureCount = Total