Browse Source

提交代码

陈少旭 10 months ago
parent
commit
bb5173c900
3 changed files with 175 additions and 4 deletions
  1. 21 1
      controllers/statistics_api_controller.go
  2. 116 0
      models/qc.go
  3. 38 3
      service/statistis_qc_service.go

+ 21 - 1
controllers/statistics_api_controller.go View File

@@ -31,7 +31,7 @@ func StatisticsApiRegistRouters() {
31 31
 	//透析总量统计
32 32
 	beego.Router("/api/commonqc/dialysis/total", &StatisticsApiController{}, "get:GetDialysisTotal")
33 33
 	beego.Router("/api/commonqc/dialysis/detail", &StatisticsApiController{}, "get:GetDialysisTotalDetail")
34
-	beego.Router("/api/commonqc/dialysis/details", &StatisticsApiController{}, "get:GetDialysisTotalDetailInfo")
34
+	beego.Router("/api/commonqc/dialysis/detailsinfo", &StatisticsApiController{}, "get:GetDialysisTotalDetailInfo")
35 35
 
36 36
 	beego.Router("/api/commonqc/anticoagulant", &StatisticsApiController{}, "get:GetAnticoagulant")
37 37
 	beego.Router("/api/commonqc/anticoagulant/detail", &StatisticsApiController{}, "get:GetAnticoagulantDetail")
@@ -1021,6 +1021,26 @@ func (c *StatisticsApiController) GetDialysisTotalDetail() {
1021 1021
 	}
1022 1022
 }
1023 1023
 func (c *StatisticsApiController) GetDialysisTotalDetailInfo() {
1024
+	date_str := c.GetString("data")
1025
+	mode, _ := c.GetInt64("mode")
1026
+	origin, _ := c.GetInt64("origin")
1027
+	page, _ := c.GetInt64("page")
1028
+	limit, _ := c.GetInt64("limit")
1029
+	start_date := strings.Split(date_str, "~")[0]
1030
+	end_date := strings.Split(date_str, "~")[1]
1031
+	if origin == 1 {
1032
+		qcp, total, _ := service.GetDialysisPrescriptionInfo(start_date, end_date, mode, c.GetAdminUserInfo().CurrentOrgId, page, limit)
1033
+		c.ServeSuccessJSON(map[string]interface{}{
1034
+			"list":  qcp,
1035
+			"total": total,
1036
+		})
1037
+	} else {
1038
+		qcp, total, _ := service.GetScheduleInfo(start_date, end_date, mode, c.GetAdminUserInfo().CurrentOrgId, page, limit)
1039
+		c.ServeSuccessJSON(map[string]interface{}{
1040
+			"list":  qcp,
1041
+			"total": total,
1042
+		})
1043
+	}
1024 1044
 
1025 1045
 }
1026 1046
 

+ 116 - 0
models/qc.go View File

@@ -5,3 +5,119 @@ type CustomDialysisData struct {
5 5
 	Count int64  `json:"count"`
6 6
 	Total int64  `json:"total"`
7 7
 }
8
+
9
+type QCPrescription struct {
10
+	ID                        int64                     `gorm:"column:id" json:"id"`
11
+	UserOrgId                 int64                     `gorm:"column:user_org_id" json:"user_org_id"`
12
+	PatientId                 int64                     `gorm:"column:patient_id" json:"patient_id"`
13
+	ModeId                    int64                     `gorm:"column:mode_id" json:"mode_id"`
14
+	Status                    int64                     `gorm:"column:status" json:"status"`
15
+	CreatedTime               int64                     `gorm:"column:created_time" json:"created_time"`
16
+	UpdatedTime               int64                     `gorm:"column:updated_time" json:"updated_time"`
17
+	RecordDate                int64                     `gorm:"column:record_date" json:"record_date"`
18
+	RecordId                  int64                     `gorm:"column:record_id" json:"record_id"`
19
+	UserAdminRole             UserAdminRole             `json:"role" gorm:"foreignkey:AdminUserId;AssociationForeignKey:Creater;"`
20
+	Creater                   int64                     `gorm:"column:creater" json:"creater"`
21
+	Modifier                  int64                     `gorm:"column:modifier" json:"modifier"`
22
+	QCPatients                QCPatients                `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"patient"`
23
+	QCDialysisOrder           QCDialysisOrder           `gorm:"ForeignKey:PatientId,DialysisDate;AssociationForeignKey:PatientId,RecordDate" json:"order"`
24
+	QCAssessmentAfterDislysis QCAssessmentAfterDislysis `gorm:"ForeignKey:PatientId,AssessmentDate;AssociationForeignKey:PatientId,RecordDate" json:"ad"`
25
+}
26
+
27
+func (QCPrescription) TableName() string {
28
+	return "xt_dialysis_prescription"
29
+}
30
+
31
+type QCPatients struct {
32
+	ID         int64  `gorm:"column:id" json:"id" form:"id"`
33
+	UserOrgId  int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
34
+	Gender     int64  `gorm:"column:gender" json:"gender" form:"gender"`
35
+	DialysisNo string `gorm:"column:dialysis_no" json:"dialysis_no" form:"dialysis_no"`
36
+	Name       string `gorm:"column:name" json:"name" form:"name"`
37
+	IdCardNo   string `gorm:"column:id_card_no" json:"id_card_no" form:"id_card_no"`
38
+	Status     int64  `gorm:"column:status" json:"status" form:"status"`
39
+}
40
+
41
+func (QCPatients) TableName() string {
42
+	return "xt_patients"
43
+}
44
+
45
+type QCDialysisOrder struct {
46
+	ID             int64         `gorm:"column:id" json:"id"`
47
+	DialysisDate   int64         `gorm:"column:dialysis_date" json:"dialysis_date"`
48
+	UserOrgId      int64         `gorm:"column:user_org_id" json:"user_org_id"`
49
+	PatientId      int64         `gorm:"column:patient_id" json:"patient_id"`
50
+	Stage          int64         `gorm:"column:stage" json:"stage"`
51
+	Remark         string        `gorm:"column:remark" json:"remark"`
52
+	BedID          int64         `gorm:"column:bed_id" json:"bed_id"`
53
+	StartNurse     int64         `gorm:"column:start_nurse" json:"start_nurse"`
54
+	FinishNurse    int64         `gorm:"column:finish_nurse" json:"finish_nurse"`
55
+	Status         int64         `gorm:"column:status" json:"status"`
56
+	DeviceNumber   DeviceNumber  `gorm:"ForeignKey:BedID"`
57
+	StartTime      int64         `gorm:"column:start_time" json:"start_time"`
58
+	EndTime        int64         `gorm:"column:end_time" json:"end_time"`
59
+	FinishCreator  int64         `gorm:"column:finish_creator" json:"finish_creator"`
60
+	FinishModifier int64         `gorm:"column:finish_modifier" json:"finish_modifier"`
61
+	SchedualType   int64         `gorm:"column:schedual_type" json:"schedual_type"`
62
+	UserAdminRole  UserAdminRole `json:"role" gorm:"foreignkey:AdminUserId;AssociationForeignKey:StartNurse;"`
63
+	ZoneId         int64         `gorm:"column:zone_id" json:"zone_id" form:"zone_id"`
64
+}
65
+
66
+func (QCDialysisOrder) TableName() string {
67
+	return "xt_dialysis_order"
68
+}
69
+
70
+type QCAssessmentAfterDislysis struct {
71
+	ID                    int64 `gorm:"column:id" json:"id" form:"id"`
72
+	UserOrgId             int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
73
+	PatientId             int64 `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
74
+	AssessmentDate        int64 `gorm:"column:assessment_date" json:"assessment_date" form:"assessment_date"`
75
+	ActualTreatmentHour   int64 `gorm:"column:actual_treatment_hour" json:"actual_treatment_hour" form:"actual_treatment_hour"`
76
+	ActualTreatmentMinute int64 `gorm:"column:actual_treatment_minute" json:"actual_treatment_minute" form:"actual_treatment_minute"`
77
+}
78
+
79
+func (QCAssessmentAfterDislysis) TableName() string {
80
+
81
+	return "xt_assessment_after_dislysis"
82
+}
83
+
84
+type QCSchedule struct {
85
+	ID                        int64                     `gorm:"column:id" json:"id" form:"id"`
86
+	UserOrgId                 int64                     `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
87
+	PatientId                 int64                     `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
88
+	ScheduleDate              int64                     `gorm:"column:schedule_date" json:"schedule_date" form:"schedule_date"`
89
+	ScheduleType              int64                     `gorm:"column:schedule_type" json:"schedule_type" form:"schedule_type"`
90
+	ScheduleWeek              int64                     `gorm:"column:schedule_week" json:"schedule_week" form:"schedule_week"`
91
+	ModeId                    int64                     `gorm:"column:mode_id" json:"mode_id" form:"mode_id"`
92
+	Status                    int64                     `gorm:"column:status" json:"status" form:"status"`
93
+	CreatedTime               int64                     `gorm:"column:created_time" json:"created_time" form:"created_time"`
94
+	UpdatedTime               int64                     `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
95
+	QCSPrescription           QCSPrescription           `gorm:"ForeignKey:RecordDate,PatientId;AssociationForeignKey:ScheduleDate,PatientId" json:"prescription"`
96
+	QCPatients                QCPatients                `gorm:"ForeignKey:ID;AssociationForeignKey:PatientId" json:"patient"`
97
+	QCDialysisOrder           QCDialysisOrder           `gorm:"ForeignKey:PatientId,DialysisDate;AssociationForeignKey:PatientId,ScheduleDate" json:"order"`
98
+	QCAssessmentAfterDislysis QCAssessmentAfterDislysis `gorm:"ForeignKey:PatientId,AssessmentDate;AssociationForeignKey:PatientId,ScheduleDate" json:"ad"`
99
+}
100
+
101
+// `gorm:"ForeignKey:DialysisDate,PatientId;AssociationForeignKey:ScheduleDate,PatientId" json:"dialysis_order"`
102
+func (QCSchedule) TableName() string {
103
+	return "xt_schedule"
104
+}
105
+
106
+type QCSPrescription struct {
107
+	ID            int64         `gorm:"column:id" json:"id"`
108
+	UserOrgId     int64         `gorm:"column:user_org_id" json:"user_org_id"`
109
+	PatientId     int64         `gorm:"column:patient_id" json:"patient_id"`
110
+	ModeId        int64         `gorm:"column:mode_id" json:"mode_id"`
111
+	Status        int64         `gorm:"column:status" json:"status"`
112
+	CreatedTime   int64         `gorm:"column:created_time" json:"created_time"`
113
+	UpdatedTime   int64         `gorm:"column:updated_time" json:"updated_time"`
114
+	RecordDate    int64         `gorm:"column:record_date" json:"record_date"`
115
+	RecordId      int64         `gorm:"column:record_id" json:"record_id"`
116
+	UserAdminRole UserAdminRole `json:"role" gorm:"foreignkey:AdminUserId;AssociationForeignKey:Creater;"`
117
+	Creater       int64         `gorm:"column:creater" json:"creater"`
118
+	Modifier      int64         `gorm:"column:modifier" json:"modifier"`
119
+}
120
+
121
+func (QCSPrescription) TableName() string {
122
+	return "xt_dialysis_prescription"
123
+}

+ 38 - 3
service/statistis_qc_service.go View File

@@ -4,6 +4,7 @@ import (
4 4
 	"XT_New/models"
5 5
 	"database/sql"
6 6
 	"fmt"
7
+	"github.com/jinzhu/gorm"
7 8
 	"reflect"
8 9
 	"strings"
9 10
 	"time"
@@ -91,11 +92,17 @@ func GetDialysisStats(start int64, end int64, mode int64, org_id int64, time_way
91 92
 	var selectClauses []string
92 93
 	// 构建动态查询语句
93 94
 	if time_way == 1 {
94
-		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(startDate, " ")[0])}
95
+		//selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(startDate, " ")[0])}
96
+		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(startDate, " ")[0]+"~"+strings.Split(endDate, " ")[0])}
97
+
95 98
 	} else if time_way == 3 {
96
-		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(strings.Split(startDate, " ")[0], "-")[0]+"-"+strings.Split(strings.Split(startDate, " ")[0], "-")[1])}
99
+		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(startDate, " ")[0]+"~"+strings.Split(endDate, " ")[0])}
100
+
101
+		//selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(strings.Split(startDate, " ")[0], "-")[0]+"-"+strings.Split(strings.Split(startDate, " ")[0], "-")[1])}
97 102
 	} else if time_way == 4 {
98
-		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(strings.Split(startDate, " ")[0], "-")[0])}
103
+		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(startDate, " ")[0]+"~"+strings.Split(endDate, " ")[0])}
104
+
105
+		//selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(strings.Split(startDate, " ")[0], "-")[0])}
99 106
 	} else {
100 107
 		selectClauses = []string{fmt.Sprintf("'%s' AS `日期`", strings.Split(startDate, " ")[0]+"~"+strings.Split(endDate, " ")[0])}
101 108
 	}
@@ -963,3 +970,31 @@ func createDynamicStruct(fields map[string]interface{}) reflect.Type {
963 970
 	}
964 971
 	return reflect.StructOf(structFields)
965 972
 }
973
+
974
+func GetDialysisPrescriptionInfo(start_date string, end_date string, mode int64, org_id int64, page int64, limit int64) (qcp []models.QCPrescription, total int64, err error) {
975
+	offset := (page - 1) * limit
976
+
977
+	err = readDb.Model(&models.QCPrescription{}).Preload("UserAdminRole", func(db *gorm.DB) *gorm.DB {
978
+		return readUserDb.Where("status = 1 and org_id=?", org_id)
979
+	}).Preload("QCPatients", "status = 1 and user_org_id = ?", org_id).Preload("QCDialysisOrder", func(db *gorm.DB) *gorm.DB {
980
+		return db.Preload("UserAdminRole", func(db *gorm.DB) *gorm.DB {
981
+			return readUserDb.Where("status = 1 and org_id=?", org_id)
982
+		}).Preload("DeviceNumber", "status = 1 and org_id = ?", org_id).Where("status = 1 AND user_org_id = ?", org_id)
983
+	}).Preload("QCAssessmentAfterDislysis", "status = 1 and user_org_id = ?", org_id).Where("FROM_UNIXTIME(record_date, '%Y-%m-%d') >= ? and FROM_UNIXTIME(record_date, '%Y-%m-%d') <= ? and user_org_id = ? and mode_id = ?  and status = 1", start_date, end_date, org_id, mode).Count(&total).Offset(offset).Limit(limit).Find(&qcp).Error
984
+	return
985
+}
986
+
987
+func GetScheduleInfo(start_date string, end_date string, mode int64, org_id int64, page int64, limit int64) (qcp []models.QCSchedule, total int64, err error) {
988
+	offset := (page - 1) * limit
989
+
990
+	err = readDb.Model(&models.QCSchedule{}).Preload("QCPatients", "status = 1 and user_org_id =?", org_id).Preload("QCSPrescription", func(db *gorm.DB) *gorm.DB {
991
+		return db.Preload("UserAdminRole", func(db *gorm.DB) *gorm.DB {
992
+			return readUserDb.Where("status = 1 and org_id=?", org_id)
993
+		}).Where("status = 1 AND user_org_id = ?", org_id)
994
+	}).Preload("QCAssessmentAfterDislysis", "status = 1 and user_org_id = ?", org_id).Preload("QCDialysisOrder", func(db *gorm.DB) *gorm.DB {
995
+		return db.Preload("DeviceNumber", "status = 1").Preload("UserAdminRole", func(db *gorm.DB) *gorm.DB {
996
+			return readUserDb.Where("status = 1 and org_id=?", org_id)
997
+		}).Where("status = 1 AND user_org_id = ?", org_id)
998
+	}).Where("FROM_UNIXTIME(schedule_date, '%Y-%m-%d') >= ? and FROM_UNIXTIME(schedule_date, '%Y-%m-%d') <= ? and user_org_id = ? and mode_id = ? and status = 1", start_date, end_date, org_id, mode).Count(&total).Offset(offset).Limit(limit).Find(&qcp).Error
999
+	return
1000
+}