package service import ( "Xcx_New/models" "github.com/jinzhu/gorm" ) type HospitalPatient struct { ID int64 `gorm:"column:id" json:"id" form:"id"` UserOrgId int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"` Name string `gorm:"column:name" json:"name" form:"name"` Status int64 `gorm:"column:status" json:"status" form:"status"` IdCardNo string `gorm:"column:id_card_no" json:"id_card_no" form:"id_card_no"` ScheduleType int64 `gorm:"column:schedule_type" json:"schedule_type" form:"schedule_type"` Schedule Schedule `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"schedule"` HisHospitalCheckRecord models.HisHospitalCheckRecord `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"his_patient"` VMHisPrescriptionInfo VMHisPrescriptionInfo `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"info"` //HisHospitalOrder models.HisHospitalOrder `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"order"` } func (HospitalPatient) TableName() string { return "xt_patients" } func GetHisHospitalPatientList(org_id int64, record_date int64) (patients []*HospitalPatient, err error) { db := readDb.Model(&HospitalPatient{}).Where("xt_patients.user_org_id = ? AND xt_patients.status = 1", org_id) db = db.Joins("join his_hospital_check_record as record ON record.patient_id = xt_patients.id AND record.status = 1 AND record.user_org_id = ? AND record.in_hospital_status = 1 AND record.out_hospital_status = 0", org_id) db = db.Preload("HisHospitalCheckRecord", func(db *gorm.DB) *gorm.DB { return db.Where("user_org_id = ? AND status = 1 AND in_hospital_status = 1 AND out_hospital_status = 0", org_id) }) err = db.Preload("VMHisPrescriptionInfo", "user_org_id = ? AND status = 1 AND record_date = ? AND p_type = 1", org_id, record_date).Group("id").Find(&patients).Error return } func GetNewAllChargeHisHospitalPatientList(org_id int64, record_date int64) (patients []*HospitalPatient, err error) { db := readDb.Model(&HospitalPatient{}).Where("xt_patients.user_org_id = ? AND xt_patients.status = 1", org_id) db = db.Joins("join his_hospital_check_record as hp ON hp.patient_id = xt_patients.id AND hp.status = 1 AND hp.user_org_id = ? ", org_id) db = db.Preload("HisHospitalCheckRecord", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ? AND in_hospital_status = 1", org_id).Preload("HisHospitalOrder", "user_org_id = ? AND status = 1", org_id) }) //db = db.Preload("HisHospitalOrder", "user_org_id = ? AND status = 1 ", org_id) err = db.Group("id").Find(&patients).Error return } func GetNewHisHospitalPatientInfo(his_patient_id int64) (info models.HisHospitalCheckRecord, err error) { err = readDb.Model(&models.HisHospitalCheckRecord{}).Where("id = ? AND status = 1 ", his_patient_id).First(&info).Error return } func GetUnChargeHisHospitalPrescriptionFive(org_id int64, patient_id int64, his_patient_id int64, record_date int64) (prescription []*models.HisPrescription, err error) { err = readDb.Model(&models.HisPrescription{}). Preload("HisAdditionalCharge", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("XtHisAddtionConfig", "status=1") }). Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("Drug", "status=1") }). Preload("HisPrescriptionProject", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("HisProject").Preload("GoodInfo", "status=1") }). Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND order_status <> 2 AND order_status <> 3", org_id, record_date, patient_id). Find(&prescription).Error return } func GetChargeHisHospitalPrescriptionFive(org_id int64, patient_id int64, his_patient_id int64, record_date int64) (prescription []*models.HisPrescription, err error) { err = readDb.Model(&models.HisPrescription{}). Preload("HisAdditionalCharge", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("XtHisAddtionConfig", "status=1") }). Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("Drug", "status=1") }). Preload("HisPrescriptionProject", func(db *gorm.DB) *gorm.DB { return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("HisProject").Preload("GoodInfo", "status=1") }). Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND order_status = 2 ", org_id, record_date, patient_id). Find(&prescription).Error return } // type VMHospitalPatient struct { ID int64 `gorm:"column:id" json:"id" form:"id"` UserOrgId int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"` Name string `gorm:"column:name" json:"name" form:"name"` Status int64 `gorm:"column:status" json:"status" form:"status"` IdCardNo string `gorm:"column:id_card_no" json:"id_card_no" form:"id_card_no"` ScheduleType int64 `gorm:"column:schedule_type" json:"schedule_type" form:"schedule_type"` Schedule Schedule `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"schedule"` HisHospitalCheckRecord models.HisHospitalCheckRecord `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"his_patient"` VMHisPrescriptionInfo VMHisPrescriptionInfo `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"info"` } func (VMHospitalPatient) TableName() string { return "xt_patients" } // // //func GetHisHospitalPatientPrescriptionList(org_id int64, record_date int64,page int64, limit int64) (patients []*HospitalPatient, err error) { // offset := (page - 1) * limit // db := readDb.Model(&HospitalPatient{}).Where("xt_patients.user_org_id = ? AND xt_patients.status = 1", org_id) // db = db.Joins("join his_hospital_check_record as record ON record.patient_id = xt_patients.id AND record.status = 1 AND record.user_org_id = ?", org_id) // db = db.Preload("HisHospitalCheckRecord", func(db *gorm.DB) *gorm.DB { // return db.Where("user_org_id = ? AND status = 1 AND in_hospital_status = 1 AND out_hospital_status = 0", org_id) // }) // err = db.Preload("VMHisPrescriptionInfo", "user_org_id = ? AND status = 1 AND record_date = ? AND p_type = 1", org_id, record_date).Group("id").Find(&patients).Error // return //} // //func GetHisHospitalPatientPrescriptionList(org_id int64, keywords string, record_date int64, page int64, limit int64) (patients []*VMSchedule, err error, total int64) { // offset := (page - 1) * limit // db := readDb.Model(&VMHospitalPatient{}).Where("user_org_id = ? AND status = 1", org_id) // if len(keywords) > 0 { // wkkk keywords = "%" + keywords + "%" // db = db.Joins("JOIN xt_patients as p On xt_schedule.patient_id = p.id AND p.user_org_id = ? AND p.name like ?", org_id, keywords) // db = db.Joins("JOIN his_prescription_info as info On xt_schedule.patient_id = info.patient_id AND info.user_org_id = ? AND info.record_date = ? AND info.prescription_number like ? AND info.p_type == 1", org_id, record_date, keywords) // } // db = db.Preload("Patients", "user_org_id = ? AND status = 1", org_id) // db = db.Preload("HisPatient", "user_org_id = ? AND status = 1", org_id) // db = db.Preload("HisPrescription", "user_org_id = ? AND status = 1 AND p_type == 1", org_id). // Preload("VMHisPrescriptionInfo", "user_org_id = ? AND status = 1 AND p_type == 1", org_id) // db = db.Count(&total) // err = db.Limit(limit).Offset(offset).Find(&patients).Error // return //} type VMHisHospitalPrescriptionInfo struct { ID int64 `gorm:"column:id" json:"id" form:"id"` UserOrgId int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"` RecordDate int64 `gorm:"column:record_date" json:"record_date" form:"record_date"` PatientId int64 `gorm:"column:patient_id" json:"patient_id" form:"patient_id"` HisPatientId int64 `gorm:"column:his_patient_id" json:"his_patient_id" form:"his_patient_id"` Status int64 `gorm:"column:status" json:"status" form:"status"` Ctime int64 `gorm:"column:ctime" json:"ctime" form:"ctime"` Mtime int64 `gorm:"column:mtime" json:"mtime" form:"mtime"` Creator int64 `gorm:"column:creator" json:"creator" form:"creator"` Modifier int64 `gorm:"column:modifier" json:"modifier" form:"modifier"` Diagnosis string `gorm:"column:diagnosis" json:"diagnosis" form:"diagnosis"` RegisterType int64 `gorm:"column:register_type" json:"register_type" form:"register_type"` Doctor string `gorm:"column:doctor" json:"doctor" form:"doctor"` Departments string `gorm:"column:departments" json:"departments" form:"departments"` SickHistory string `gorm:"column:sick_history" json:"sick_history" form:"sick_history"` PrescriptionNumber string `gorm:"column:prescription_number" json:"prescription_number" form:"prescription_number"` BatchNumber string `gorm:"column:batch_number" json:"batch_number" form:"batch_number"` PrescriptionStatus int64 `gorm:"column:prescription_status" json:"prescription_status" form:"prescription_status"` DoctorId int64 `gorm:"column:doctor_id" json:"doctor_id" form:"doctor_id"` DepartmentId int64 `gorm:"column:department_id" json:"department_id" form:"department_id"` SickType int64 `gorm:"column:sick_type" json:"sick_type" form:"sick_type"` Patients Patients `gorm:"ForeignKey:ID;AssociationForeignKey:PatientId" json:"patients"` HisPrescription []*HisPrescription `gorm:"ForeignKey:PatientId,RecordDate;AssociationForeignKey:PatientId,RecordDate" json:"prescription"` } func (VMHisHospitalPrescriptionInfo) TableName() string { return "his_prescription_info" } func GetHisHospitalPatientPrescriptionList(org_id int64, keywords string, record_date int64, page int64, limit int64) (patients []*VMHisHospitalPrescriptionInfo, err error, total int64) { offset := (page - 1) * limit db := readDb.Model(&VMHisHospitalPrescriptionInfo{}).Where("user_org_id = ? AND status = 1 AND record_date = ? AND p_type = 1 ", org_id, record_date) if len(keywords) > 0 { keywords = "%" + keywords + "%" db = db.Joins("JOIN xt_patients as p On his_prescription_info.patient_id = p.id AND p.user_org_id = ? AND p.name like ?", org_id, keywords) } db = db.Preload("Patients", "user_org_id = ? AND status = 1", org_id) db = db.Preload("HisPrescription", "user_org_id = ? AND status = 1 AND p_type = 1", org_id) db = db.Count(&total) err = db.Limit(limit).Offset(offset).Find(&patients).Error return }