package service import ( "IC/models" "IC/utils" _"strconv" "strings" "time" _"IC/utils" _"fmt" _"github.com/jinzhu/gorm" ) // 获取备份库所有的医嘱信息 func GetAllAdvice() (Advice []models.DoctorAdvice,err error) { err = backupDb.Model(&models.DoctorAdvice{}).Offset(100000).Limit(10000).Find(&Advice).Error return } // 获取备份库所有的医嘱信息 func GetScheduless(id int64) (schedule models.Schedules,err error) { err = tempwriteDb.Model(&models.Schedules{}).Where("id = ?",id).First(&schedule).Error return } func UpdateSchedule(id int64,status int64) error{ err := writeDb.Model(&models.Schedules{}).Where("id = ? ", id).Updates(map[string]interface{}{"status":status}).Error return err } // 修改医嘱信息 func SyncAdvice(Advice *models.DoctorAdvice) error { err := writeDb.Model(&models.DoctorAdvice{}).Updates(&Advice).Error return err } // 查找有字段的机构 func GetfiledConfigOrg() (FiledConfig []models.FiledConfig,err error) { db := readDb.Begin() err = db.Table("xt_filed_config").Group("org_id").Select("org_id,module,filed_name").Where("org_id > 0").Scan(&FiledConfig).Error return } // 查询系统字段 func GetfiledConfigSys() (FiledConfig []models.FiledConfig,err error) { err = readDb.Model(&models.FiledConfig{}).Where("org_id = 0").Find(&FiledConfig).Error return } // 跟进查询条件查询结果 func GetfiledConfigByOrgId(org_id int64,module int64,filed_name string)(FiledConfig models.FiledConfig,err error) { err = readDb.Model(&models.FiledConfig{}).Where("org_id = ? and module = ? and filed_name = ?",org_id,module,filed_name).First(&FiledConfig).Error return } // 创建一条字段数据详情 func CreatefiledConfig(FiledConfig *models.FiledConfig) error { err := writeDb.Create(&FiledConfig).Error return err } // 从机构将数据同步到中间库 func SyncInspectionReference(data *models.MiddleInspectionReference) error { tx := writeDb.Begin() var inspection_reference models.InspectionReference var total int err = readDb.Model(&models.InspectionReference{}).Where("org_id = ? and project_id = ? and item_id = ? and status = 1", data.OrgId, data.ProjectId,data.ItemId).Find(&inspection_reference).Count(&total).Error if total <= 0 { inspection_reference.OrgId = data.OrgId inspection_reference.ProjectName = data.ProjectName inspection_reference.Project = data.ProjectName inspection_reference.ProjectId = data.ProjectId inspection_reference.ItemName = data.ItemName inspection_reference.ItemId = data.ItemId inspection_reference.RangeType = data.RangeType inspection_reference.RangeMin = data.RangeMin inspection_reference.RangeMax = data.RangeMax inspection_reference.RangeValue = data.RangeValue inspection_reference.RangeOptions = data.RangeOptions inspection_reference.Unit = data.Unit inspection_reference.Status = 1 inspection_reference.CreatedTime = time.Now().Unix() inspection_reference.UpdatedTime = time.Now().Unix() err := tx.Model(&models.InspectionReference{}).Create(&inspection_reference).Error if err != nil { tx.Rollback() } data.IsSync = 1 data.SyncId = inspection_reference.ID data.UpdatedTime = time.Now().Unix() ierr := writeMiddleDb.Save(&data).Error if ierr != nil { tx.Rollback() } } tx.Commit() return err } // 从机构将数据同步到中间库 func SyncInspection(data *models.MiddleInspection) error { tx := writeDb.Begin() var inspection models.Inspection var total int err = readDb.Model(&models.Inspection{}).Where("org_id = ? and project_id = ? and item_id = ? and patient_id =? and inspect_date=? and status = 1", data.OrgId, data.ProjectId,data.ItemId,data.PatientId,data.InspectDate).Find(&inspection).Count(&total).Error if total <= 0 { inspection.OrgId = data.OrgId inspection.PatientId = data.PatientId inspection.ProjectName = data.ProjectName // inspection.Project = data.ProjectName inspection.ProjectId = data.ProjectId inspection.ItemName = data.ItemName inspection.ItemId = data.ItemId inspection.InspectType = int64(data.InspectType) inspection.InspectValue = data.InspectValue inspection.InspectTips = data.InspectTips inspection.InspectDate = data.RecordDate inspection.Status = 1 inspection.CreatedTime = time.Now().Unix() inspection.UpdatedTime = time.Now().Unix() err := tx.Model(&models.Inspection{}).Create(&inspection).Error if err != nil { tx.Rollback() } data.IsSync = 1 data.SyncId = inspection.ID data.UpdatedTime = time.Now().Unix() ierr := writeMiddleDb.Save(&data).Error if ierr != nil { tx.Rollback() } } tx.Commit() return err } // 跟进org_id获取未同步的检验检查选项信息 func GetSyncInspectionReferenceByOrgId(org_id int64) (InspectionReferences []models.MiddleInspectionReference,err error) { err = readMiddleDb.Model(&models.MiddleInspectionReference{}).Where("org_id = ? and status = 1 and is_sync = 0", org_id).Find(&InspectionReferences).Error return } // 跟进org_id获取未同步的检验检查信息 func GetSyncInspectionByOrgId(org_id int64) (Inspection []models.MiddleInspection,err error) { err = readMiddleDb.Model(&models.MiddleInspection{}).Where("org_id = ? and status = 1 and is_sync = 0", org_id).Find(&Inspection).Error return } // 修改一条同步数据详情 func UpdateSyncInfo(syncInfo *models.MiddleSyncInfo) error { err := writeMiddleDb.Save(&syncInfo).Error return err } // 创建一条同步数据详情 func CreateSyncInfo(syncInfo *models.MiddleSyncInfo) error { err := writeMiddleDb.Create(&syncInfo).Error return err } // 创建一条检验检查操作表数据 func CreateReportHandle(report *models.MiddleReportHandle) error { err := writeMiddleDb.Create(&report).Error return err } // 根据机构ID获取该机构检验检查操作表里状态为0的数据 func GetReportHandleListyOrgID(org_id int64) (report_handle_list []models.MiddleReportHandle ,err error){ err = readMiddleDb.Model(&models.MiddleReportHandle{}).Where("org_id = ? and handle_type = 0 ", org_id).Find(&report_handle_list).Error return } // 根据机构ID修改检验检查操作表里的数据 func UpdateReportHandleListyOrgID(report_handle *models.MiddleReportHandle) error{ err := writeMiddleDb.Model(&models.MiddleReportHandle{}).Updates(&report_handle).Error return err } // 跟进机构ID获取该机构所有病人的his_user_id func GetHisUserIdByOrgID(org_id int64) (patients []models.MiddlePatients ,err error) { err = readMiddleDb.Model(&models.MiddlePatients{}).Where("user_org_id = ? and status = 1", org_id).Find(&patients).Error return } // 根据机构ID获取该机构上次同步信息 func GetSyncTimeByOrgID(org_id int64,his_user_id string) (sync_info models.MiddleSyncInfo ,err error){ err = readMiddleDb.Model(&models.MiddleSyncInfo{}).Where("org_id = ? and his_user_id =? ", org_id,his_user_id).Last(&sync_info).Error return } // 根据机构ID获取该机构上次同步信息 func GetSyncTimeByOrgIDForYs(org_id int64) (sync_info models.MiddleSyncInfo ,err error){ err = readMiddleDb.Model(&models.MiddleSyncInfo{}).Where("org_id = ? ", org_id).Last(&sync_info).Error return } // 根据机构ID和His_useer_id获取该患者最后一条同步检查数据 func GetInspectionLastInfoByOrgID(org_id int64,his_user_id string) (inspectionLastInfo models.MiddleInspection ,err error){ err = readMiddleDb.Model(&models.MiddleInspection{}).Where("org_id = ? and his_user_id =? ", org_id,his_user_id).Order("created_time desc").First(&inspectionLastInfo).Error return } // 从机构将数据同步到中间库 func Sync(data *models.TBLISItem,org_id int64,patient_id int64)(*models.MiddleInspectionReference,*models.MiddleInspection,error) { tx := writeMiddleDb.Begin() var inspection models.MiddleInspection var inspection_reference models.MiddleInspectionReference recordDateStr := data.UTime if len(data.UTime) == 0 { recordDateStr = time.Now().Format("2006-01-02 15:04") } record_date, _ := utils.ParseTimeStringToTime("2006-01-02 15:04", recordDateStr) // date, _ := utils.ParseTimeStringToTime("2006-01-02 15:04", recordDateStr) // record_date,_ := utils.ParseTimeStringToTime("2006-01-02", date.Format("2006-01-02")) var total int var itotal int if len(data.RangeOptions) > 0 { data.ItemType = 2 } else { data.ItemType = 1 if len(data.RangeMax) > 0 { Range := strings.Split(data.RangeMax,"-") if len(Range) > 1 { data.RangeMin = Range[0] data.RangeMax = Range[1] } else { data.RangeMin = Range[0] } } } err = readMiddleDb.Model(&models.MiddleInspectionReference{}).Where("org_id = ? and project_id = ? and item_id = ? and status = 1", org_id, data.ProjectId,data.ItemId).Find(&inspection_reference).Count(&total).Error if total <= 0 && len(data.ProjectName) > 0 { inspection_reference.OrgId = org_id inspection_reference.ProjectName = data.ProjectName inspection_reference.Project = data.ProjectName inspection_reference.ProjectId = data.ProjectId inspection_reference.ItemName = data.ItemName inspection_reference.ItemId = data.ItemId inspection_reference.RangeType = data.ItemType inspection_reference.RangeMin = data.RangeMin inspection_reference.RangeMax = data.RangeMax inspection_reference.RangeValue = data.RangeValue inspection_reference.RangeOptions = data.RangeMax inspection_reference.Unit = data.Unit inspection_reference.Status = 1 inspection_reference.CreatedTime = time.Now().Unix() inspection_reference.UpdatedTime = time.Now().Unix() inspection_reference.InspectDate = data.InspectDate inspection_reference.UTime = data.UTime err := tx.Model(&models.MiddleInspectionReference{}).Create(&inspection_reference).Error if err != nil { tx.Rollback() } } err = readMiddleDb.Model(&models.MiddleInspection{}).Where("org_id = ? and project_id = ? and item_id = ? and record_date = ? and patient_id = ? and status = 1", org_id, data.ProjectId,data.ItemId,record_date.Unix(),patient_id).Find(&inspection).Count(&itotal).Error if itotal <= 0 { inspection.PatientId = patient_id inspection.OrgId = org_id inspection.ProjectId = data.ProjectId inspection.ItemName = data.ItemName inspection.ProjectName = data.ProjectName inspection.InspectType = data.ItemType inspection.ItemId = data.ItemId if data.ItemType == 1 { inspection.InspectValue = data.ItemValue } else { inspection.InspectValue = data.RangeValue } inspection.InspectDate = data.InspectDate inspection.RecordDate = record_date.Unix() inspection.Status = 1 inspection.CreatedTime = time.Now().Unix() inspection.UpdatedTime = time.Now().Unix() inspection.UTime = data.UTime inspection.HisUserId = data.HisUserId err := tx.Model(&models.MiddleInspection{}).Create(&inspection).Error if err != nil { tx.Rollback() } } tx.Commit() return &inspection_reference,&inspection,err } //GetPatientList 返回患者的列表 func GetList(his_user_id []interface{},syncTimes string) (lis []*models.TBLISItem, err error) { err = readRemoteDb.Model(&models.TBLISItem{}).Where("u_time > ? AND his_user_id in (?) ",syncTimes,his_user_id).Find(&lis).Error return } //GetPatientList 返回患者的列表 func GetListByHisUserID(his_user_id string,syncTimes string,selectType int64) (lis []*models.TBLISItem,err error) { if selectType == 1 { err = readRemoteDb.Model(&models.TBLISItem{}).Where("u_time > ? AND patient_name = ? ",syncTimes,his_user_id).Find(&lis).Error } else { err = readRemoteDb.Model(&models.TBLISItem{}).Where("u_time > ? AND his_user_id = ? ",syncTimes,his_user_id).Find(&lis).Error } return }