package Patient import ( "FollowUp_Notice/lib" "FollowUp_Notice/logs" "FollowUp_Notice/models/Illness" _ "github.com/astaxie/beego/cache/redis" "github.com/beego/beego/v2/adapter/orm" orm2 "github.com/beego/beego/v2/client/orm" _ "github.com/go-sql-driver/mysql" "strings" "time" ) // 患者满意度 type PatientRevisitRecord struct { Id int `orm:"column(ID);size(11);auto;pk"` T_date string `orm:"size(256);null"` // 复诊日期 T_pid int `orm:"index;size(100);null"` // 患者id T_illness_notice int `orm:"size(100);null"` // 复诊通知内容id T_notice int `orm:"size(200);null"` // 通知状态 1 待通知 2已通知 T_remark string `orm:"type(text);null"` // 1201_134,2022-07-24,提前三天,电话,通知成功|1201_135,2022-07-24,提前三天,短信,通知成功 CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间 UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now_add 第一次保存时才设置时间 } func (t *PatientRevisitRecord) TableName() string { return "patient_revisit_record" // 数据库名称 // ************** 替换 FormulaList ************** } func init() { //注册模型 orm.RegisterModel(new(PatientRevisitRecord)) } type RevisitRecordRemark_R struct { T_id string // 通知id T_date string // 通知时间 T_advance_days string // 提前天数 T_type string // 通知类型 T_status string // 通知状态 } type PatientRevisitRecord_R struct { Id int T_date string // 复诊日期 T_pid int // 用户id T_illness_notice int // 复诊通知内容id T_illness_notice_name string // 复诊通知内容名称 T_notice int // 状态 1-已通知 2-未通知 T_remark []RevisitRecordRemark_R // 2022-07-24 提前三天 已通知,2022-07-26 提前一天 已通知 CreateTime string //auto_now_add 第一次保存时才设置时间 UpdateTime string //auto_now 每次 model 保存时都会对时间自动更新 } func PatientRevisitRecordToRemitRemark(T_remark string) (r []RevisitRecordRemark_R) { if len(T_remark) == 0 { return } remarkList := strings.Split(strings.Trim(T_remark, "|"), "|") for _, v := range remarkList { remark := strings.Split(v, ",") r = append(r, RevisitRecordRemark_R{ T_id: remark[0], T_date: remark[1], T_advance_days: remark[2], T_type: remark[3], T_status: remark[4], }) } return r } func PatientRevisitRecordToPatientRevisitRecord_R(t PatientRevisitRecord) (r PatientRevisitRecord_R) { r.Id = t.Id r.T_date = t.T_date r.T_pid = t.T_pid r.T_illness_notice = t.T_illness_notice r.T_illness_notice_name = Illness.Read_IllnessNotice_Get(t.T_illness_notice) r.T_notice = t.T_notice r.T_remark = PatientRevisitRecordToRemitRemark(t.T_remark) r.CreateTime = t.CreateTime.Format("2006-01-02 15:04:05") r.UpdateTime = t.UpdateTime.Format("2006-01-02 15:04:05") return r } // 添加 func Add_PatientRevisitRecord(r PatientRevisitRecord) (id int64, err error) { o := orm.NewOrm() id, err = o.Insert(&r) if err != nil { logs.Error(lib.FuncName(), err) } return id, err } // 获取 ById func Read_PatientRevisitRecord_ById(Id int) (r PatientRevisitRecord, err error) { o := orm.NewOrm() qs := o.QueryTable(new(PatientRevisitRecord)) err = qs.Filter("Id", Id).One(&r) if err != nil { logs.Error(lib.FuncName(), err) } return } // 获取 ById func Read_PatientRevisitRecord_ByT_date(T_pid int, T_date string) (r PatientRevisitRecord, err error) { o := orm.NewOrm() qs := o.QueryTable(new(PatientRevisitRecord)) err = qs.Filter("T_pid", T_pid).Filter("T_date", T_date).One(&r) if err != nil { logs.Error(lib.FuncName(), err) } return } // 修改 func Update_PatientRevisitRecord(m PatientRevisitRecord, cols ...string) error { o := orm.NewOrm() _, err := o.Update(&m, cols...) if err != nil { logs.Error(lib.FuncName(), err) return err } return nil } // 删除 func Delete_PatientRevisitRecord(v PatientRevisitRecord) error { o := orm.NewOrm() _, err := o.Delete(&v) if err != nil { logs.Error(lib.FuncName(), err) } return err } // 获取列表 func Read_PatientRevisitRecord_List(T_pid int, page, page_z int) (r_ []PatientRevisitRecord_R, cnt int64) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(PatientRevisitRecord)) var offset int64 if page <= 1 { offset = 0 } else { offset = int64((page - 1) * page_z) } // 过滤 cond := orm.NewCondition() cond = cond.And("T_pid", T_pid) // 查询 var r []PatientRevisitRecord var err error if page_z == 9999 { _, err = qs.SetCond((*orm2.Condition)(cond)).OrderBy("T_date").All(&r) } else { _, err = qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("T_date").All(&r) } if err != nil { logs.Error(lib.FuncName(), err) return } cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count() if err != nil { logs.Error(lib.FuncName(), err) return } for _, v := range r { r_ = append(r_, PatientRevisitRecordToPatientRevisitRecord_R(v)) } return r_, cnt } // 获取下次复诊时间(今天之后) func Read_Next_PatientRevisitRecord(T_pid int) (r_ PatientRevisitRecord_R, err error) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(PatientRevisitRecord)) // 过滤 cond := orm.NewCondition() cond = cond.And("T_pid", T_pid).And("T_date__gt", lib.NowDate()) // 查询 var r []PatientRevisitRecord _, err = qs.Limit(1, 0).SetCond((*orm2.Condition)(cond)).OrderBy("T_date").All(&r) if err != nil { return } if len(r) == 0 { return r_, orm.ErrNoRows } return PatientRevisitRecordToPatientRevisitRecord_R(r[0]), nil } // 获取上次复诊时间(今天之前) func Read_Last_PatientRevisitRecord(T_pid int) (r_ PatientRevisitRecord_R, err error) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(PatientRevisitRecord)) // 过滤 cond := orm.NewCondition() cond = cond.And("T_pid", T_pid).And("T_date__lte", lib.NowDate()) // 查询 var r []PatientRevisitRecord _, err = qs.Limit(1, 0).SetCond((*orm2.Condition)(cond)).OrderBy("-T_date").All(&r) if err != nil { return } if len(r) == 0 { return r_, orm.ErrNoRows } return PatientRevisitRecordToPatientRevisitRecord_R(r[0]), nil } func Read_PatientRevisitRecord_Count_ByT_illness_notice(T_illness_notice int) (count int64, err error) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(PatientRevisitRecord)) // 过滤 count, err = qs.Filter("T_illness_notice", T_illness_notice).Count() if err != nil { logs.Error(lib.FuncName(), err) return } return } func Read_PatientRevisitRecord_Count_ByT_pid(T_pid int) (count int64, err error) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(PatientRevisitRecord)) // 过滤 count, err = qs.Filter("T_pid", T_pid).Count() if err != nil { logs.Error(lib.FuncName(), err) return } return }