package city // //import ( // "Data_Upload_Api/models/sz" // "Data_Upload_Api/service" // "XT/utils" // "fmt" // "github.com/astaxie/beego" // "github.com/jinzhu/gorm" // "github.com/robfig/cron" // "math" // "strconv" // "strings" // "time" //) // //var createUploadDataCronJob *cron.Cron // //func init() { // utils.InfoLog("开启定时任务") // createUploadDataCronJob = cron.New() // spec := "0 0 0 * * ?" // 每天凌晨0点检测数据上报情况 // createUploadDataCronJob.AddFunc(spec, func() { // AutoSZUploadData() //深圳市数据上报 // // }) //} // //func BeginAutoJob() { // createUploadDataCronJob.Start() //} // ////func AutoSZUploadData() { //// //查出所有需要上传到深圳市健康数据中心的机构数据上报配置 //// //这里暂时用上报到深圳市的方式,来处理数据,如果以后有其他城市,需要在这里对不同城市进行不同数据处理 //// sz_province, _ := beego.AppConfig.Int64("sz_province") //// sz_city, _ := beego.AppConfig.Int64("sz_city") //// configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3) //// for _, config := range configs { //// //// //机构 //// _, err := service.FindDataUploadOrgInfo(config.OrgId, 1) //// if err == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// //// //新增 //// org, _ := service.FindOrgData(config.OrgId) //// hospital := &sz.TempHdHospital{ //// HospitalId: strconv.FormatInt(org.ID, 10), //// InstType: strconv.FormatInt(1, 10), //// AuthorizedBeds: int64(len(org.DeviceNumber)), //// CreateTime: time.Now(), //// UpdateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// err := service.CreateOrgRecord(hospital) //// if err == nil { //// upload := &sz.DataUpload{ //// ModuleType: 1, //// OrgId: org.ID, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// //// } //// } //// } //// } //// //// //机构人员 //// record, err_two := service.FindDataUploadOrgInfo(config.OrgId, 2) //// if err_two == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// //// var staffs []*sz.TempHdStaff //// roles, _ := service.FindOrgRolesData(config.OrgId, 0, 0) //// for _, role := range roles { //// var title string //// switch role.UserType { //// case 2: //// title = strconv.FormatInt(1, 10) //// break //// case 3: //// title = strconv.FormatInt(2, 10) //// break //// } //// //// staff := &sz.TempHdStaff{ //// HospitalId: strconv.FormatInt(role.OrgId, 10), //// StaffId: strconv.FormatInt(role.ID, 10), //// StaffName: role.UserName, //// Position: title, //// PermanentType: strconv.FormatInt(1, 10), //// CreateTime: time.Now(), //// UpdateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: strconv.FormatInt(0, 10), //// } //// staffs = append(staffs, staff) //// } //// //// err := service.BatchCreateStaffRecord(staffs, r) //// if err == nil { //// upload := &sz.DataUpload{ //// ModuleType: 2, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// //// } //// } //// } //// //// } else if err_two == nil { //// if GetDiffDay2(config, record) <= 0 { //// var staffs []*sz.TempHdStaff //// roles, _ := service.FindOrgRolesData(record.OrgId, record.UploadDate, time.Now().Unix()) //// for _, role := range roles { //// var title string //// switch role.UserType { //// case 2: //// title = strconv.FormatInt(1, 10) //// break //// case 3: //// title = strconv.FormatInt(2, 10) //// break //// } //// //// staff := &sz.TempHdStaff{ //// HospitalId: strconv.FormatInt(role.OrgId, 10), //// StaffId: strconv.FormatInt(role.ID, 10), //// StaffName: role.UserName, //// Position: title, //// PermanentType: strconv.FormatInt(1, 10), //// CreateTime: time.Now(), //// UpdateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: strconv.FormatInt(0, 10), //// } //// staffs = append(staffs, staff) //// } //// //// err := service.BatchCreateStaffRecord(staffs) //// if err == nil { //// upload := &sz.DataUpload{ //// ModuleType: 2, //// OrgId: record.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } //// } //// //// record, err_four := service.FindDataUploadOrgInfo(config.OrgId, 4) //// if err_four == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// var hdPatients []*sz.TempHdPatient //// patients, _ := service.FindOrgPatientData(config.OrgId, 0, 0) //// //// for _, patient := range patients { //// //// idcard_year, _ := strconv.Atoi(Substr(patient.IdCardNo, 6, 4)) // 年 //// idcard_mo, _ := strconv.Atoi(Substr(patient.IdCardNo, 10, 2)) // 月 //// idcard_day, _ := strconv.Atoi(Substr(patient.IdCardNo, 12, 2)) // 日 //// //// date := strconv.Itoa(idcard_year) + "-" + strconv.Itoa(idcard_mo) + "-" + strconv.Itoa(idcard_day) //// //// local, _ := time.LoadLocation("Local") //// birthday, _ := time.ParseInLocation("2006-01-02", date, local) //// //// var isCKD int //// //// value := strings.Index(patient.Diagnose, "慢性肾脏病") //// value2 := strings.Index(patient.Diagnose, "CKD") //// value3 := strings.Index(patient.Diagnose, "慢性肾衰竭") //// //// if value != -1 || value2 != -1 || value3 != -1 { //// isCKD = 1 //// } else { //// isCKD = 0 //// } //// //// p := &sz.TempHdPatient{ //// HospitalId: strconv.FormatInt(patient.UserOrgId, 10), //// PatientNk: strconv.FormatInt(patient.ID, 10), //// CardNo: "000000000000000000", //// CardType: "01", //// IdNo: patient.IdCardNo, //// IdType: "01", //// PatientName: patient.Name, //// Gender: strconv.FormatInt(patient.Gender, 10), //// BornDate: birthday, //// DiagnosisSummary: patient.Diagnose, //// IsCrf: strconv.Itoa(isCKD), //// CreatedTime: time.Now(), //// UpdateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: strconv.FormatInt(0, 10), //// } //// //// if patient.FirstDialysisDate != 0 { //// p.DialysisStartTime = time.Unix(patient.FirstDialysisDate, 0) //// } //// if patient.HospitalFirstDialysisDate != 0 { //// p.LocalStartTime = time.Unix(patient.HospitalFirstDialysisDate, 0) //// } //// //// hdPatients = append(hdPatients, p) //// } //// //// for _, item := range hdPatients { //// service.XTWriteDB().Model(&sz.TempHdPatient{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 4, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } else if err_four == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var hdPatients []*sz.TempHdPatient //// patients, _ := service.FindOrgPatientData(record.OrgId, record.UploadDate, time.Now().Unix()) //// for _, patient := range patients { //// idcard_year, _ := strconv.Atoi(Substr(patient.IdCardNo, 6, 4)) // 年 //// idcard_mo, _ := strconv.Atoi(Substr(patient.IdCardNo, 10, 2)) // 月 //// idcard_day, _ := strconv.Atoi(Substr(patient.IdCardNo, 12, 2)) // 日 //// date := strconv.Itoa(idcard_year) + "-" + strconv.Itoa(idcard_mo) + "-" + strconv.Itoa(idcard_day) //// local, _ := time.LoadLocation("Local") //// birthday, _ := time.ParseInLocation("2006-01-02", date, local) //// //// var isCKD int //// //// value := strings.Index(patient.Diagnose, "慢性肾脏病") //// value2 := strings.Index(patient.Diagnose, "CKD") //// value3 := strings.Index(patient.Diagnose, "慢性肾衰竭") //// //// if value != -1 || value2 != -1 || value3 != -1 { //// isCKD = 1 //// } else { //// isCKD = 0 //// } //// //// p := &sz.TempHdPatient{ //// HospitalId: strconv.FormatInt(patient.UserOrgId, 10), //// PatientNk: strconv.FormatInt(patient.ID, 10), //// CardNo: "000000000000000000", //// CardType: "01", //// IdNo: patient.IdCardNo, //// IdType: "01", //// PatientName: patient.Name, //// Gender: strconv.FormatInt(patient.Gender, 10), //// BornDate: birthday, //// DiagnosisSummary: patient.Diagnose, //// IsCrf: strconv.Itoa(isCKD), //// CreatedTime: time.Now(), //// UpdateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: strconv.FormatInt(0, 10), //// } //// //// if patient.FirstDialysisDate != 0 { //// p.DialysisStartTime = time.Unix(patient.FirstDialysisDate, 0) //// } //// if patient.HospitalFirstDialysisDate != 0 { //// p.LocalStartTime = time.Unix(patient.HospitalFirstDialysisDate, 0) //// } //// //// hdPatients = append(hdPatients, p) //// } //// //// for _, item := range hdPatients { //// service.XTReadDB().Model(&sz.TempHdPatient{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 4, //// OrgId: record.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } //// //// //record, err_five := service.FindDataUploadOrgInfo(config.OrgId, 5) //// //if err_five == gorm.ErrRecordNotFound { //// // if GetDiffDay(config) <= 0 { //// // //// // var hdPatientOuts []*sz.TempHdPatientOut //// // patients, _ := service.FindOrgPatientOutData(config.OrgId, 0, 0) //// //// //// // for _, patient := range patients { //// // //// // p := &sz.TempHdPatientOut{ //// // Sn: strconv.FormatInt(patient.ID, 10), //// // HospitalId: strconv.FormatInt(patient.UserOrgId, 10), //// // PatientNk: strconv.FormatInt(patient.ID, 10), //// // SequelaeType: "99", //// // ExtReason: "98", //// // CreateTime: time.Now(), //// // Sjscsj: time.Now(), //// // Xgbz: 0, //// // } //// // //// // if len(patient.PatientLapseto) > 0{ //// // p.SequelaeDate = time.Unix(patient.PatientLapseto[len(patient.PatientLapseto)].LapsetoTime, 0) //// // } //// // //// // hdPatientOuts = append(hdPatientOuts, p) //// // } //// // //// // for _, item := range hdPatientOuts { //// // service.XTWriteDB().Model(&sz.TempHdPatientOut{}).Create(item) //// // } //// // //// // upload := &sz.DataUpload{ //// // ModuleType: 5, //// // OrgId: config.OrgId, //// // UploadDate: time.Now().Unix(), //// // UploadStatus: 1, //// // UploadType: 1, //// // } //// // err := service.CreateUploadRecord(upload) //// // if err != nil{ //// // utils.ErrorLog("%v",err) //// // } //// // } //// // //// //} else if err_five == nil { //// // if GetDiffDay2(config,record) <= 0 { //// // //// // var hdPatientOuts []*sz.TempHdPatientOut //// // patients, _ := service.FindOrgPatientOutData(record.OrgId, record.UploadDate, time.Now().Unix()) //// // //// // for _, patient := range patients { //// // //// // p := &sz.TempHdPatientOut{ //// // Sn: strconv.FormatInt(patient.ID, 10), //// // HospitalId: strconv.FormatInt(patient.UserOrgId, 10), //// // PatientNk: strconv.FormatInt(patient.ID, 10), //// // SequelaeDate: time.Unix(patient.PatientLapseto[len(patient.PatientLapseto)].LapsetoTime, 0), //// // SequelaeType: "99", //// // ExtReason: "98", //// // CreateTime: time.Now(), //// // Sjscsj: time.Now(), //// // Xgbz: 0, //// // } //// // //// // hdPatientOuts = append(hdPatientOuts, p) //// // } //// // //// // for _, item := range hdPatientOuts { //// // service.XTWriteDB().Model(&sz.TempHdPatientOut{}).Create(item) //// // } //// // //// // upload := &sz.DataUpload{ //// // ModuleType: 5, //// // OrgId: record.OrgId, //// // UploadDate: time.Now().Unix(), //// // UploadStatus: 1, //// // UploadType: 1, //// // } //// // err := service.CreateUploadRecord(upload) //// // if err != nil{ //// // utils.ErrorLog("%v",err) //// // } //// // } //// // //// //} //// //// record, err_six := service.FindDataUploadOrgInfo(config.OrgId, 6) //// if err_six == gorm.ErrRecordNotFound { //// //// if GetDiffDay(config) <= 0 { //// //// var hdPrescription []*sz.TempHdPs //// prescriptions, _ := service.FindOrgDialysisPrescriptionData(config.OrgId, 0, 0) //// //// for _, item := range prescriptions { //// //// ps := &sz.TempHdPs{ //// PrescribeId: strconv.FormatInt(item.ID, 10), //// HospitalId: strconv.FormatInt(item.UserOrgId, 10), //// PatientNk: strconv.FormatInt(item.PatientId, 10), //// K: item.Kalium, //// Ca: item.Calcium, //// Na: item.Sodium, //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// PrescribeTime: time.Unix(item.RecordDate, 0), //// } //// //// switch item.ModeId { //// case 1: //// ps.DialysisFrequency = item.AssessmentBeforeDislysis.DialysisCount //// ps.FrequencyUnit = 1 //// ps.DialysisDuration = item.DialysisDuration //// ps.Hdf = "0" //// ps.Hp = "0" //// //// break //// case 2: //// ps.Hdf = "1" //// ps.Hp = "0" //// ps.HdfFrequency = item.AssessmentBeforeDislysis.DialysisCount //// ps.HdfFrequencyUnit = 1 //// ps.HpDuration = item.DialysisDuration //// break //// case 4: //// ps.Hdf = "0" //// ps.Hp = "1" //// ps.HpFrequency = item.AssessmentBeforeDislysis.DialysisCount //// ps.HpFrequencyUnit = 1 //// ps.HpDuration = item.DialysisDuration //// break //// } //// //// hdPrescription = append(hdPrescription, ps) //// } //// //// for _, item := range hdPrescription { //// service.XTWriteDB().Model(&sz.TempHdPs{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 6, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err_six == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var hdPrescription []*sz.TempHdPs //// prescriptions, _ := service.FindOrgDialysisPrescriptionData(record.OrgId, record.UploadDate, time.Now().Unix()) //// //// for _, item := range prescriptions { //// //// ps := &sz.TempHdPs{ //// PrescribeId: strconv.FormatInt(item.ID, 10), //// HospitalId: strconv.FormatInt(item.UserOrgId, 10), //// PatientNk: strconv.FormatInt(item.PatientId, 10), //// K: item.Kalium, //// Ca: item.Calcium, //// Na: item.Sodium, //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// PrescribeTime: time.Unix(item.RecordDate, 0), //// } //// //// switch item.ModeId { //// case 1: //// ps.DialysisFrequency = item.AssessmentBeforeDislysis.DialysisCount //// ps.FrequencyUnit = 1 //// ps.DialysisDuration = item.DialysisDuration //// ps.Hdf = "0" //// ps.Hp = "0" //// //// break //// case 2: //// ps.Hdf = "1" //// ps.Hp = "0" //// ps.HdfFrequency = item.AssessmentBeforeDislysis.DialysisCount //// ps.HdfFrequencyUnit = 1 //// ps.HpDuration = item.DialysisDuration //// break //// case 4: //// ps.Hdf = "0" //// ps.Hp = "1" //// ps.HpFrequency = item.AssessmentBeforeDislysis.DialysisCount //// ps.HpFrequencyUnit = 1 //// ps.HpDuration = item.DialysisDuration //// break //// } //// //// hdPrescription = append(hdPrescription, ps) //// } //// //// for _, item := range hdPrescription { //// service.XTWriteDB().Model(&sz.TempHdPs{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 6, //// OrgId: record.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } //// //// record, err_seven := service.FindDataUploadOrgInfo(config.OrgId, 7) //// if err_seven == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// var hdPsMedicine []*sz.TempHdPsMedicine //// prescriptions, _ := service.FindOrgDialysisPrescriptionData(config.OrgId, 0, 0) //// //// for _, item := range prescriptions { //// //// psm := &sz.TempHdPsMedicine{ //// Sn: strconv.FormatInt(item.ID, 10), //// PrescribeId: strconv.FormatInt(item.ID, 10), //// HospitalId: strconv.FormatInt(item.UserOrgId, 10), //// MedicineTypeId: "2", //// CreatedTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// switch item.Anticoagulant { //// case 1: //// psm.MedicineId = "3" //// //// break //// case 2: //// psm.MedicineId = "1" //// //// break //// case 3: //// psm.MedicineId = "2" //// //// break //// case 4: //// psm.MedicineId = "5" //// //// break //// case 5: //// psm.MedicineId = "4" //// //// break //// } //// //// hdPsMedicine = append(hdPsMedicine, psm) //// } //// //// for _, item := range hdPsMedicine { //// service.XTWriteDB().Model(&sz.TempHdPsMedicine{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 7, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err_seven == nil { //// if GetDiffDay2(config, record) <= 0 { //// var hdPsMedicine []*sz.TempHdPsMedicine //// prescriptions, _ := service.FindOrgDialysisPrescriptionData(record.OrgId, record.UploadDate, time.Now().Unix()) //// //// for _, item := range prescriptions { //// //// psm := &sz.TempHdPsMedicine{ //// Sn: strconv.FormatInt(item.ID, 10), //// PrescribeId: strconv.FormatInt(item.ID, 10), //// HospitalId: strconv.FormatInt(item.UserOrgId, 10), //// MedicineTypeId: "2", //// CreatedTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// switch item.Anticoagulant { //// case 1: //// psm.MedicineId = "3" //// //// break //// case 2: //// psm.MedicineId = "1" //// //// break //// case 3: //// psm.MedicineId = "2" //// //// break //// case 4: //// psm.MedicineId = "5" //// //// break //// case 5: //// psm.MedicineId = "4" //// //// break //// } //// //// hdPsMedicine = append(hdPsMedicine, psm) //// } //// //// for _, item := range hdPsMedicine { //// service.XTWriteDB().Model(&sz.TempHdPsMedicine{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 7, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } //// // //// // //排班 //// record, err_eight := service.FindDataUploadOrgInfo(config.OrgId, 8) //// if err_eight == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// //// var hdShift []*sz.TempHdShift //// schs, _ := service.FindOrgScheduleData(config.OrgId, 0, 0) //// //// for _, sch := range schs { //// //// shift := &sz.TempHdShift{ //// PsId: strconv.FormatInt(sch.ID, 10), //// HospitalId: strconv.FormatInt(sch.UserOrgId, 10), //// PatientNk: strconv.FormatInt(sch.PatientId, 10), //// ScheduleDate: time.Unix(sch.ScheduleDate, 0), //// ShiftType: strconv.FormatInt(sch.ScheduleType, 10), //// SickbedNo: sch.DeviceNumber.Number, //// ScheduleStatus: "1", //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// hdShift = append(hdShift, shift) //// //// } //// //// for _, item := range hdShift { //// service.XTWriteDB().Model(&sz.TempHdShift{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 8, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err_eight == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var hdShift []*sz.TempHdShift //// schs, _ := service.FindOrgScheduleData(record.OrgId, record.UploadDate, time.Now().Unix()) //// //// for _, sch := range schs { //// //// shift := &sz.TempHdShift{ //// PsId: strconv.FormatInt(sch.ID, 10), //// HospitalId: strconv.FormatInt(sch.UserOrgId, 10), //// PatientNk: strconv.FormatInt(sch.PatientId, 10), //// ScheduleDate: time.Unix(sch.ScheduleDate, 0), //// ShiftType: strconv.FormatInt(sch.ScheduleType, 10), //// SickbedNo: sch.DeviceNumber.Number, //// ScheduleStatus: "1", //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// hdShift = append(hdShift, shift) //// //// } //// //// for _, item := range hdShift { //// service.XTWriteDB().Model(&sz.TempHdShift{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 8, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } //// // //// record, err_nine := service.FindDataUploadOrgInfo(config.OrgId, 9) //// if err_nine == gorm.ErrRecordNotFound { //// //// if GetDiffDay(config) <= 0 { //// //// var hdDoctorAdvices []*sz.TempHdDoctorsAdvice //// dialysisPrescriptions, _ := service.FindOrgDialysisPrescriptionData(or, 0, 0) //// //// for _, dp := range dialysisPrescriptions { //// //// advice := &sz.TempHdDoctorsAdvice{ //// MedicalOrDerId: strconv.FormatInt(dp.ID, 10), //// HospitalId: strconv.FormatInt(dp.UserOrgId, 10), //// DialysisId: strconv.FormatInt(dp.DialysisOrder.ID, 10), //// OrderType: "1", //// PatientNk: strconv.FormatInt(dp.PatientId, 10), //// DialysisDuration: dp.DialysisDurationHour*60 + dp.DialysisDurationMinute, //// BloodVol: int64(math.Floor(dp.BloodFlowVolume + 0/5)), //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// hdDoctorAdvices = append(hdDoctorAdvices, advice) //// //// } //// //// for _, item := range hdDoctorAdvices { //// service.XTWriteDB().Model(&sz.TempHdDoctorsAdvice{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 9, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err_nine == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var hdDoctorAdvices []*sz.TempHdDoctorsAdvice //// dialysisPrescriptions, _ := service.FindOrgDialysisPrescriptionData(record.OrgId, record.UploadDate, time.Now().Unix()) //// for _, dp := range dialysisPrescriptions { //// advice := &sz.TempHdDoctorsAdvice{ //// MedicalOrDerId: strconv.FormatInt(dp.ID, 10), //// HospitalId: strconv.FormatInt(dp.UserOrgId, 10), //// DialysisId: strconv.FormatInt(dp.DialysisOrder.ID, 10), //// OrderType: "1", //// PatientNk: strconv.FormatInt(dp.PatientId, 10), //// DialysisDuration: dp.DialysisDurationHour*60 + dp.DialysisDurationMinute, //// BloodVol: int64(math.Floor(dp.BloodFlowVolume + 0/5)), //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// hdDoctorAdvices = append(hdDoctorAdvices, advice) //// } //// for _, item := range hdDoctorAdvices { //// service.XTWriteDB().Model(&sz.TempHdDoctorsAdvice{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 9, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } //// // //// record, err_ten := service.FindDataUploadOrgInfo(config.OrgId, 10) //// fmt.Println(err_ten) //// fmt.Println(record) //// //// if err_ten == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// //// var hdDialysis []*sz.TempHdDialysis //// schs, erra := service.FindOrgDialysisData(config.OrgId, 0, 0) //// fmt.Println(schs) //// fmt.Println(erra) //// //// for _, sch := range schs { //// //// dialysis := &sz.TempHdDialysis{ //// PsId: strconv.FormatInt(sch.ID, 10), //// HospitalId: strconv.FormatInt(sch.UserOrgId, 10), //// //// SickbedNo: sch.DeviceNumber.Number, //// DivisionId: strconv.FormatInt(sch.DeviceNumber.ZoneId, 10), //// Ufv: int64(math.Floor(sch.VMDialysisPrescription.Ultrafiltration + 0/5)), //// TotalReplace: int64(math.Floor(sch.VMDialysisPrescription.ReplacementTotal + 0/5)), //// BeforeWeight: sch.AssessmentBeforeDislysis.WeighingBefore, //// //// PatientNk: strconv.FormatInt(sch.PatientId, 10), //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// if sch.DialysisOrder.ID > 0 { //// dialysis.DialysisId = strconv.FormatInt(sch.DialysisOrder.ID, 10) //// dialysis.DialysisDate = time.Unix(sch.DialysisOrder.DialysisDate, 0) //// if sch.DialysisOrder.StartTime > 0 { //// dialysis.StartTime = time.Unix(sch.DialysisOrder.StartTime, 0) //// //// } //// //// if sch.DialysisOrder.EndTime > 0 { //// dialysis.EndTime = time.Unix(sch.DialysisOrder.EndTime, 0) //// //// } //// } //// //// if len(sch.MonitoringRecord) > 0 { //// dialysis.BeforeDbp = int64(math.Floor(sch.MonitoringRecord[0].DiastolicBloodPressure + 0/5)) //// dialysis.BeforeSbp = int64(math.Floor(sch.MonitoringRecord[0].SystolicBloodPressure + 0/5)) //// dialysis.AfterDbp = int64(math.Floor(sch.MonitoringRecord[len(sch.MonitoringRecord)-1].DiastolicBloodPressure + 0/5)) //// dialysis.AfterSbp = int64(math.Floor(sch.MonitoringRecord[len(sch.MonitoringRecord)-1].SystolicBloodPressure + 0/5)) //// //// } //// //// hdDialysis = append(hdDialysis, dialysis) //// //// } //// //// for _, item := range hdDialysis { //// service.XTWriteDB().Model(&sz.TempHdDialysis{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 10, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err_ten == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var hdDialysis []*sz.TempHdDialysis //// schs, _ := service.FindOrgDialysisData(record.OrgId, record.UploadDate, time.Now().Unix()) //// for _, sch := range schs { //// dialysis := &sz.TempHdDialysis{ //// PsId: strconv.FormatInt(sch.ID, 10), //// HospitalId: strconv.FormatInt(sch.UserOrgId, 10), //// DialysisId: strconv.FormatInt(sch.DialysisOrder.ID, 10), //// DialysisDate: time.Unix(sch.DialysisOrder.DialysisDate, 0), //// SickbedNo: sch.DeviceNumber.Number, //// DivisionId: strconv.FormatInt(sch.DeviceNumber.ZoneId, 10), //// Ufv: int64(math.Floor(sch.VMDialysisPrescription.Ultrafiltration + 0/5)), //// TotalReplace: int64(math.Floor(sch.VMDialysisPrescription.ReplacementTotal + 0/5)), //// BeforeDbp: int64(math.Floor(sch.MonitoringRecord[0].DiastolicBloodPressure + 0/5)), //// BeforeSbp: int64(math.Floor(sch.MonitoringRecord[0].SystolicBloodPressure + 0/5)), //// AfterDbp: int64(math.Floor(sch.MonitoringRecord[len(sch.MonitoringRecord)].DiastolicBloodPressure + 0/5)), //// AfterSbp: int64(math.Floor(sch.MonitoringRecord[len(sch.MonitoringRecord)].SystolicBloodPressure + 0/5)), //// BeforeWeight: sch.AssessmentBeforeDislysis.WeighingBefore, //// StartTime: time.Unix(sch.DialysisOrder.StartTime, 0), //// EndTime: time.Unix(sch.DialysisOrder.EndTime, 0), //// PatientNk: strconv.FormatInt(sch.PatientId, 10), //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// hdDialysis = append(hdDialysis, dialysis) //// //// } //// //// for _, item := range hdDialysis { //// service.XTWriteDB().Model(&sz.TempHdDialysis{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 10, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } //// // //// record, err_eleven := service.FindDataUploadOrgInfo(config.OrgId, 11) //// if err_eleven == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// //// var hdMiddle []*sz.TempHdMiddle //// monitors, _ := service.FindOrgMonitorRecordData(config.OrgId, 0, 0) //// //// for _, item := range monitors { //// //// mid := &sz.TempHdMiddle{ //// HospitalId: strconv.FormatInt(item.UserOrgId, 10), //// DialysisId: strconv.FormatInt(item.DialysisOrder.ID, 10), //// MonitorTime: time.Unix(item.OperateTime, 0), //// Sbp: int64(math.Floor(item.SystolicBloodPressure + 0/5)), //// Dbp: int64(math.Floor(item.DiastolicBloodPressure + 0/5)), //// PatientNk: strconv.FormatInt(item.PatientId, 10), //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// hdMiddle = append(hdMiddle, mid) //// //// } //// //// for _, item := range hdMiddle { //// service.XTWriteDB().Model(&sz.TempHdMiddle{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 11, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var hdMiddle []*sz.TempHdMiddle //// monitors, _ := service.FindOrgMonitorRecordData(record.OrgId, record.UploadDate, time.Now().Unix()) //// //// for _, item := range monitors { //// //// mid := &sz.TempHdMiddle{ //// HospitalId: strconv.FormatInt(item.UserOrgId, 10), //// DialysisId: strconv.FormatInt(item.DialysisOrder.ID, 10), //// MonitorTime: time.Unix(item.OperateTime, 0), //// Sbp: int64(math.Floor(item.SystolicBloodPressure + 0/5)), //// Dbp: int64(math.Floor(item.DiastolicBloodPressure + 0/5)), //// PatientNk: strconv.FormatInt(item.PatientId, 10), //// CreateTime: time.Now(), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// hdMiddle = append(hdMiddle, mid) //// //// } //// //// for _, item := range hdMiddle { //// service.XTWriteDB().Model(&sz.TempHdMiddle{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 11, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// } //// // //// record, err_twelve := service.FindDataUploadOrgInfo(config.OrgId, 12) //// if err_twelve == gorm.ErrRecordNotFound { //// if GetDiffDay(config) <= 0 { //// //// var divisions []*sz.TempHdDivision //// zones, _ := service.FindOrgDeviceZoneRecordData(config.OrgId, 0, 0) //// //// for _, item := range zones { //// nowTime := time.Now() //// div := &sz.TempHdDivision{ //// DivisionId: strconv.FormatInt(item.ID, 10), //// HospitalId: strconv.FormatInt(item.OrgId, 10), //// DevisionName: item.Name, //// CreateTime: nowTime, //// UpdateTime: nowTime, //// UpdateFlag: strconv.FormatInt(0, 10), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// //// divisions = append(divisions, div) //// //// } //// //// for _, item := range divisions { //// service.XTWriteDB().Model(&sz.TempHdDivision{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 12, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } else if err_twelve == nil { //// if GetDiffDay2(config, record) <= 0 { //// //// var divisions []*sz.TempHdDivision //// zones, _ := service.FindOrgDeviceZoneRecordData(record.OrgId, record.UploadDate, time.Now().Unix()) //// //// for _, item := range zones { //// nowTime := time.Now() //// div := &sz.TempHdDivision{ //// DivisionId: strconv.FormatInt(item.ID, 10), //// HospitalId: strconv.FormatInt(item.OrgId, 10), //// DevisionName: item.Name, //// CreateTime: nowTime, //// UpdateTime: nowTime, //// UpdateFlag: strconv.FormatInt(0, 10), //// Sjscsj: time.Now(), //// Xgbz: 0, //// } //// divisions = append(divisions, div) //// } //// //// for _, item := range divisions { //// service.XTWriteDB().Model(&sz.TempHdDivision{}).Create(item) //// } //// //// upload := &sz.DataUpload{ //// ModuleType: 12, //// OrgId: config.OrgId, //// UploadDate: time.Now().Unix(), //// UploadStatus: 1, //// UploadType: 1, //// } //// err := service.CreateUploadRecord(upload) //// if err != nil { //// utils.ErrorLog("%v", err) //// } //// } //// //// } //// // //// } //// ////} // //func Substr(str string, start, length int) string { // rs := []rune(str) // rl := len(rs) // end := 0 // if start < 0 { // start = rl - 1 + start // } // end = start + length // if start > end { // start, end = end, start // } // if start < 0 { // start = 0 // } // if start > rl { // start = rl // } // if end < 0 { // end = 0 // } // if end > rl { // end = rl // } // return string(rs[start:end]) // //} // ////没有上报数据记录的时候,使用配置创建时间来计算上报时间 //func GetDiffDay(config *sz.DataUploadConfig) float64 { // var diffDay float64 // switch config.TimeQuantum { // case 1: // tm := time.Unix(config.CreateTime, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month, day+7, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 // // break // case 2: // tm := time.Unix(config.CreateTime, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month, day+14, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 // // break // case 3: // tm := time.Unix(config.CreateTime, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month+1, day, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 // // break // case 4: // tm := time.Unix(config.CreateTime, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month+3, day, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 // // break // } // // return diffDay // //} // ////有上报数据记录的时候,使用上报时间来计算下次上报时间 //func GetDiffDay2(config *sz.DataUploadConfig, updateDate sz.DataUpload) float64 { // var diffDay float64 // switch config.TimeQuantum { // case 1: // tm := time.Unix(updateDate.UploadDate, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month, day+7, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 //透析日期1年与当前天数差 // // break // case 2: // tm := time.Unix(updateDate.UploadDate, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month, day+14, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 //透析日期1年与当前天数差 // // break // case 3: // tm := time.Unix(updateDate.UploadDate, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month+1, day, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 //透析日期1年与当前天数差 // // break // case 4: // tm := time.Unix(updateDate.UploadDate, 0) // dateStr := tm.Format("2006-1-2") + " 00:00:00" // date, _ := time.Parse("2006-1-2 15:04:05", dateStr) // year, month, day := date.Date() // endTime := time.Date(year, month+3, day, 0, 0, 0, 0, time.Local) // years, months, days := time.Now().Date() // todayTime := time.Date(years, months, days, 0, 0, 0, 0, time.Local) // diffDay = endTime.Sub(todayTime).Hours() / 24 //透析日期1年与当前天数差 // // break // } // // return diffDay // //}