package management_service import "XT_New/service" type ChartDataStruct struct { Date string `json:"date"` Value int64 `json:"value"` } // 患者统计 func GetPatientChartData(user_org_id int64, start_time int64, end_time int64, statistics_type int) (datas []*ChartDataStruct, total int64, err error) { db := service.XTReadDB() switch statistics_type { case 1: err = db.Raw("select from_unixtime(created_time,'%m-%d') as date, count(distinct id) as value from xt_patients patient Where patient.user_org_id = ? AND patient.created_time >=? AND patient.created_time <=? AND patient.status = 1 AND patient.lapseto = 1 Group by date", user_org_id, start_time, end_time).Scan(&datas).Error break case 2: //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 err = db.Raw("select from_unixtime(lapseto_time,'%m-%d') as date, count(distinct patient_id) as value from xt_patient_lapseto lapseto JOIN `xt_patients` patient ON lapseto.`patient_id` = patient.id AND patient.user_org_id = ? Where lapseto.status = 1 AND lapseto.lapseto_type = 2 AND lapseto.lapseto_time >= ? AND lapseto.lapseto_time <= ? Group by date", user_org_id, start_time, end_time).Scan(&datas).Error //err = db.Raw("select from_unixtime(updated_time,'%m-%d') as date, count(distinct id) as value from xt_patients patient Where patient.user_org_id = ? AND patient.updated_time >=? AND patient.updated_time <=? AND patient.status = 1 AND patient.lapseto = 2 Group by date", user_org_id, start_time, end_time).Scan(&datas).Error break } for _, item := range datas { total = total + item.Value } if err != nil { return nil, 0, err } return datas, total, nil } type PatientTableStruct struct { Date string `json:"date"` Name string `json:"name"` IdCardNo string `json:"id_card_no"` Gender int `json:"gender"` } func GetPatientTableData(orgID int64, page, limit, start, end int64, statistics_type int) ([]*PatientTableStruct, int64, error) { //offset := (page - 1) * limit var total int64 var err error var patients []*PatientTableStruct readDb := service.XTReadDB() if statistics_type == 1 { db := readDb.Raw("select from_unixtime(patient.`created_time`,'%Y-%m-%d %H:%m') as date , patient.name as name, patient.`id_card_no` as id_card_no, patient.`gender` as gender from `xt_patients` patient Where patient.user_org_id = ? AND patient.status = 1 AND patient.lapseto = ? AND patient.created_time >= ? AND patient.created_time <= ? ", orgID, statistics_type, start, end) err = db.Order("patient.created_time desc").Scan(&patients).Error } else { db := readDb.Raw("select from_unixtime(lapseto.`lapseto_time`,'%Y-%m-%d %H:%m') as date , patient.name as name, patient.`id_card_no` as id_card_no, patient.`gender` as gender from xt_patient_lapseto lapseto JOIN `xt_patients` patient ON lapseto.`patient_id` = patient.id AND patient.user_org_id = ? Where lapseto.status = 1 AND lapseto.lapseto_type = ? AND lapseto.lapseto_time >= ? AND lapseto.lapseto_time <= ? ", orgID, statistics_type, start, end) //db := readDb.Raw("select from_unixtime(patient.`updated_time`,'%Y-%m-%d %H:%m') as date , patient.name as name, patient.`id_card_no` as id_card_no, patient.`gender` as gender from `xt_patients` patient Where patient.user_org_id = ? AND patient.status = 1 AND patient.lapseto = ? AND patient.updated_time >= ? AND patient.updated_time <= ? ", orgID, statistics_type, start, end) err = db.Group("lapseto.`patient_id`").Order("lapseto.lapseto_time desc").Scan(&patients).Error } return patients, total, err } func GetLapsetoPatientTotal(orgID int64, statistics_type int) (Total int64, err error) { readDb := service.XTReadDB() //err = readDb.Raw("select count(*) as total from xt_patient_lapseto lapseto JOIN `xt_patients` patient ON lapseto.`patient_id` = patient.id AND patient.user_org_id = ? Where lapseto.status = 1 AND lapseto.lapseto_type =?", orgID, statistics_type).Count(&Total).Error err = readDb.Raw("select count(*) as total from `xt_patients` patient Where patient.user_org_id = ? AND patient.status = 1 AND patient.lapseto = ?", orgID, statistics_type).Count(&Total).Error return Total, err }