package new_mobile_api_controllers

import (
	"Xcx_New/enums"
	"Xcx_New/models"
	"Xcx_New/service/statistics_service"
	"Xcx_New/utils"
	"fmt"
	"time"
)

type IndexEvaluationApiController struct {
	NewMobileBaseAPIAuthController
}

func (this *IndexEvaluationApiController) GetAdminUser() {
	admins, _ := statistics_service.GetAllAdminUser(this.GetMobileAdminUserInfo().Org.Id)
	this.ServeSuccessJSON(map[string]interface{}{
		"admin": admins,
	})
}

//化验指标

//初始化数据
func (this *IndexEvaluationApiController) GetLaboratoryIndexInitData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	var references []*models.InspectionReference
	count, _ := statistics_service.FindOrgInspectionCount(adminUserInfo.Org.Id)
	if count <= 0 {
		references, _ = statistics_service.FindOrgInspectionReference(0, 1)
		references2, _ := statistics_service.FindOrgInspectionReference(0, 2)
		references = append(references, references2...)

	} else {
		references, _ = statistics_service.FindOrgInspectionReference(adminUserInfo.Org.Id, 1)
		references2, _ := statistics_service.FindOrgInspectionReference(adminUserInfo.Org.Id, 2)
		references = append(references, references2...)

	}

	this.ServeSuccessJSON(map[string]interface{}{
		"references": references,
	})

	//adminUserInfo := this.GetMobileAdminUserInfo()
	//
	//
	//
	//references, _ := statistics_service.FindOrgInspectionReference(adminUserInfo.Org.Id,1)
	//references2, _ := statistics_service.FindOrgInspectionReference(adminUserInfo.Org.Id,2)
	//references = append(references, references2...)
	//this.ServeSuccessJSON(map[string]interface{}{
	//	"references": references,
	//})

}

//获取取值范围
func (this *IndexEvaluationApiController) GetLaboratoryIndexProjectRangeValueData() {
	range_type, _ := this.GetInt64("range_type")
	project_id, _ := this.GetInt64("project_id")
	item_id, _ := this.GetInt64("item_id")
	adminUserInfo := this.GetMobileAdminUserInfo()
	var range_vaule []string
	var qcs models.InspectionReference

	if range_type == 1 {
		count, _ := statistics_service.FindOrgInspectionCount(adminUserInfo.Org.Id)

		if count <= 0 {
			qcs, _ = statistics_service.FindOrgConfigRangeTypeValue(0, project_id, item_id)
		} else {
			qcs, _ = statistics_service.FindOrgConfigRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)

		}
		//qcs, _ := statistics_service.FindOrgConfigRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
		range_vaule = append(range_vaule, qcs.RangeMin)
		range_vaule = append(range_vaule, qcs.RangeMax)
	} else {
		inspection, _ := statistics_service.FindOrgInspectionReferenceRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
		for _, item := range inspection {
			range_vaule = append(range_vaule, item.InspectValue)
		}
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"range_vaule": range_vaule,
	})

}
func (this *IndexEvaluationApiController) GetInspectionChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	project_id, _ := this.GetInt64("project_id")
	item_id, _ := this.GetInt64("item_id")
	range_type, _ := this.GetInt("range_type")

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	var range_value string
	//if range_type == 1 {
	//	qcs, _ := statistics_service.FindOrgConfigRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
	//	range_value = qcs.RangeMin + "," + qcs.RangeMax
	//
	//} else {
	//
	//	inspection, _ := statistics_service.FindOrgInspectionReferenceRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
	//	for _, item := range inspection {
	//		if len(range_value) == 0 {
	//			range_value = item.InspectValue
	//		} else {
	//			range_value = range_value + "," + item.InspectValue
	//		}
	//	}
	//}

	if range_type == 1 {
		count, _ := statistics_service.FindOrgInspectionCount(adminUserInfo.Org.Id)

		if count <= 0 {
			qcs, _ := statistics_service.FindOrgConfigRangeTypeValue(0, project_id, item_id)
			range_value = qcs.RangeMin + "," + qcs.RangeMax

		} else {
			qcs, _ := statistics_service.FindOrgConfigRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
			range_value = qcs.RangeMin + "," + qcs.RangeMax
		}

	} else {

		inspection, _ := statistics_service.FindOrgInspectionReferenceRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
		for _, item := range inspection {
			if len(range_value) == 0 {
				range_value = item.InspectValue
			} else {
				range_value = range_value + "," + item.InspectValue
			}
		}

	}

	data, _ := statistics_service.GetInspectionChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, project_id, item_id, range_type, range_value)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}
func (this *IndexEvaluationApiController) GetInspectionChartTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")
	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")
	project_id, _ := this.GetInt64("project_id")
	item_id, _ := this.GetInt64("item_id")
	range_value := this.GetString("range_value")
	range_type, _ := this.GetInt("range_type")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 20
	}
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}
	data, total, _ := statistics_service.GetInspectionChartTableData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, project_id, item_id, patient_id, page, limit, range_type, range_value)
	this.ServeSuccessJSON(map[string]interface{}{
		"data":  data,
		"total": total,
	})

}
func (this *IndexEvaluationApiController) GetPatientInspectionChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	project_id, _ := this.GetInt64("project_id")
	item_id, _ := this.GetInt64("item_id")
	patient_id, _ := this.GetInt64("patient_id")

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetPatientInspectionChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, project_id, item_id, patient_id)
	references, _ := statistics_service.FindOrgQualityControlStandardInspectionReferenceById(adminUserInfo.Org.Id, project_id, item_id)

	this.ServeSuccessJSON(map[string]interface{}{
		"data":       data,
		"references": references,
	})

}
func (this *IndexEvaluationApiController) GetPatientInspectionBarChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	project_id, _ := this.GetInt64("project_id")
	item_id, _ := this.GetInt64("item_id")
	range_type, _ := this.GetInt("range_type")
	patient_id, _ := this.GetInt64("patient_id")

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	var range_value string
	if range_type == 1 {
		count, _ := statistics_service.FindOrgInspectionCount(adminUserInfo.Org.Id)

		if count <= 0 {
			qcs, _ := statistics_service.FindOrgConfigRangeTypeValue(0, project_id, item_id)
			range_value = qcs.RangeMin + "," + qcs.RangeMax

		} else {
			qcs, _ := statistics_service.FindOrgConfigRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
			range_value = qcs.RangeMin + "," + qcs.RangeMax
		}

	} else {

		inspection, _ := statistics_service.FindOrgInspectionReferenceRangeTypeValue(adminUserInfo.Org.Id, project_id, item_id)
		for _, item := range inspection {
			if len(range_value) == 0 {
				range_value = item.InspectValue
			} else {
				range_value = range_value + "," + item.InspectValue
			}
		}

	}

	data, _ := statistics_service.GetPatientInspectionBarChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, project_id, item_id, range_type, range_value, patient_id)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}

func (this *IndexEvaluationApiController) GetDialysisProcessIndexChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	fmt.Println("startisct=====================", statistics_type)
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	if patient_id == 0 {
		patientInfo, _ := statistics_service.GetOrgFirstPatientInfo(adminUserInfo.Org.Id)
		if patientInfo == nil {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrgNoPatient)
			return
		}
		if statistics_type == 9 || statistics_type == 10 {
			data, _ := statistics_service.GetDialysisProcessIndexOtherChartData(adminUserInfo.Org.Id, patientInfo.ID, theStartTIme, theEndtTIme, statistics_type)

			this.ServeSuccessJSON(map[string]interface{}{
				"data": data,
			})
		} else {

			data, _ := statistics_service.GetDialysisProcessIndexChartData(adminUserInfo.Org.Id, patientInfo.ID, theStartTIme, theEndtTIme, statistics_type)

			this.ServeSuccessJSON(map[string]interface{}{
				"data": data,
			})

		}
	} else {
		if statistics_type == 9 || statistics_type == 10 {
			data, _ := statistics_service.GetDialysisProcessIndexOtherChartData(adminUserInfo.Org.Id, patient_id, theStartTIme, theEndtTIme, statistics_type)

			this.ServeSuccessJSON(map[string]interface{}{
				"data": data,
			})

		} else {
			data, _ := statistics_service.GetDialysisProcessIndexChartData(adminUserInfo.Org.Id, patient_id, theStartTIme, theEndtTIme, statistics_type)

			this.ServeSuccessJSON(map[string]interface{}{
				"data": data,
			})

		}
	}

}
func (this *IndexEvaluationApiController) GetDialysisProcessIndexTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")

	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 20
	}

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	if patient_id == 0 {
		patientInfo, _ := statistics_service.GetOrgFirstPatientInfo(adminUserInfo.Org.Id)
		if patientInfo == nil {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrgNoPatient)
			return
		}

		data, total, _ := statistics_service.GetDialysisProcessIndexTableData(adminUserInfo.Org.Id, patientInfo.ID, page, limit, theStartTIme, theEndtTIme)

		this.ServeSuccessJSON(map[string]interface{}{
			"data":  data,
			"total": total,
		})

	} else {
		data, total, _ := statistics_service.GetDialysisProcessIndexTableData(adminUserInfo.Org.Id, patient_id, page, limit, theStartTIme, theEndtTIme)
		this.ServeSuccessJSON(map[string]interface{}{
			"data":  data,
			"total": total,
		})

	}

}
func (this *IndexEvaluationApiController) GetDialysisWatchChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	if patient_id == 0 {
		patientInfo, _ := statistics_service.GetOrgFirstPatientInfo(adminUserInfo.Org.Id)
		if patientInfo == nil {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrgNoPatient)
			return
		}
		data, _ := statistics_service.GetDialysisWatchChartData(adminUserInfo.Org.Id, patientInfo.ID, theStartTIme, theEndtTIme, statistics_type)
		this.ServeSuccessJSON(map[string]interface{}{
			"data": data,
		})
	} else {
		data, _ := statistics_service.GetDialysisWatchChartData(adminUserInfo.Org.Id, patient_id, theStartTIme, theEndtTIme, statistics_type)
		this.ServeSuccessJSON(map[string]interface{}{
			"data": data,
		})
	}

}
func (this *IndexEvaluationApiController) GetDialysisWatchTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")
	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 20
	}
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	if patient_id == 0 {
		patientInfo, _ := statistics_service.GetOrgFirstPatientInfo(adminUserInfo.Org.Id)
		if patientInfo == nil {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrgNoPatient)
			return
		}

		data, total, _ := statistics_service.GetDialysisWatchTableData(adminUserInfo.Org.Id, patientInfo.ID, page, limit, theStartTIme, theEndtTIme)

		this.ServeSuccessJSON(map[string]interface{}{
			"data":  data,
			"total": total,
		})

	} else {

		data, total, _ := statistics_service.GetDialysisWatchTableData(adminUserInfo.Org.Id, patient_id, page, limit, theStartTIme, theEndtTIme)
		this.ServeSuccessJSON(map[string]interface{}{
			"data":  data,
			"total": total,
		})

	}

}

func (this *IndexEvaluationApiController) GetDialysisBloodPressureChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetBloodPressureChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, statistics_type, patient_id)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}
func (this *IndexEvaluationApiController) GetDialysisBloodPressureTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")
	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 20
	}
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, total, _ := statistics_service.GetBloodPressureTableData(adminUserInfo.Org.Id, patient_id, page, limit, theStartTIme, theEndtTIme)
	this.ServeSuccessJSON(map[string]interface{}{
		"data":  data,
		"total": total,
	})

}
func (this *IndexEvaluationApiController) GetDialysisPatientBloodPressureChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetPatientBloodPressureChartData(adminUserInfo.Org.Id, patient_id, theStartTIme, theEndtTIme, statistics_type)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}

func (this *IndexEvaluationApiController) GetDialysisWeightChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetDialysisWeightChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, statistics_type)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}
func (this *IndexEvaluationApiController) GetDialysisWeightTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")
	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 20
	}
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, total, _ := statistics_service.GetDialysisWeightTableData(adminUserInfo.Org.Id, patient_id, page, limit, theStartTIme, theEndtTIme)
	this.ServeSuccessJSON(map[string]interface{}{
		"data":  data,
		"total": total,
	})
}
func (this *IndexEvaluationApiController) GetDialysisPatientWeightChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	patient_id, _ := this.GetInt64("patient_id")

	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetPatientDialysisWeightChartData(adminUserInfo.Org.Id, patient_id, theStartTIme, theEndtTIme, statistics_type)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}

func (this *IndexEvaluationApiController) GetDoctorWorkloadChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	admin_user_id, _ := this.GetInt64("admin_user_id")
	end_time := this.GetString("end_time")
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetDoctorWorkloadChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, statistics_type, admin_user_id)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}
func (this *IndexEvaluationApiController) GetDoctorWorkloadTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	admin_user_id, _ := this.GetInt64("admin_user_id")
	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 20
	}
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}
	data, _ := statistics_service.GetDoctorWorkloadTableData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, admin_user_id)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})
}

func (this *IndexEvaluationApiController) GetNurseWorkloadChartData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	statistics_type, _ := this.GetInt("statistics_type")
	start_time := this.GetString("start_time")
	admin_user_id, _ := this.GetInt64("admin_user_id")

	end_time := this.GetString("end_time")
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}

	data, _ := statistics_service.GetNurseWorkloadChartData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, statistics_type, admin_user_id)
	this.ServeSuccessJSON(map[string]interface{}{
		"data": data,
	})

}
func (this *IndexEvaluationApiController) GetNurseWorkloadTableData() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	start_time := this.GetString("start_time")
	end_time := this.GetString("end_time")
	admin_user_id, _ := this.GetInt64("admin_user_id")
	page, _ := this.GetInt64("page")
	limit, _ := this.GetInt64("limit")

	if page == 0 {
		page = 1
	}
	if limit == 0 {
		limit = 10
	}
	timeLayout := "2006-01-02"
	loc, _ := time.LoadLocation("Local")

	var theStartTIme int64
	if len(start_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theStartTIme = theTime.Unix()
	}
	var theEndtTIme int64
	if len(end_time) > 0 {
		theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
		if err != nil {
			utils.ErrorLog(err.Error())
		}
		theEndtTIme = theTime.Unix()
	}
	data, total, _ := statistics_service.GetNurseWorkloadTableData(adminUserInfo.Org.Id, theStartTIme, theEndtTIme, admin_user_id, page, limit)
	dialysisCount, _ := statistics_service.GetOrderDialysisCount(adminUserInfo.Org.Id, theStartTIme, theEndtTIme)
	this.ServeSuccessJSON(map[string]interface{}{
		"data":          data,
		"total":         total,
		"dialysisCount": dialysisCount,
	})
}

func (this *IndexEvaluationApiController) GetDefaultPatient() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	patientInfo, _ := statistics_service.GetOrgFirstPatientInfo(adminUserInfo.Org.Id)
	if patientInfo == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrgNoPatient)
		return
	}

	this.ServeSuccessJSON(map[string]interface{}{
		"patient": patientInfo,
	})

}

func (this *IndexEvaluationApiController) GetAllPatients() {
	adminUserInfo := this.GetMobileAdminUserInfo()
	patients, _ := statistics_service.GetOrgPatients(adminUserInfo.Org.Id)
	if patients == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrgNoPatient)
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"patients": patients,
	})

}
