package city

//
import (
	"Data_Upload_Api/models/sz"
	"Data_Upload_Api/service"
	"Data_Upload_Api/utils"
	"fmt"
	_ "github.com/astaxie/beego"
	"github.com/jinzhu/gorm"
	"github.com/robfig/cron/v3"
	"github.com/shopspring/decimal"
	"math"
	"strconv"
	"strings"
	"time"
)

var createUploadDataCronJob *cron.Cron

func init() {

	// createUploadDataCronJob.AddFunc(spec2, func() {
	// 	SyncToSmzy() //深圳市数据上报
	// })
}

// 返回一个支持至 秒 级别的 cron
func newWithSeconds() *cron.Cron {
	secondParser := cron.NewParser(cron.Second | cron.Minute |
		cron.Hour | cron.Dom | cron.Month | cron.DowOptional | cron.Descriptor)
	return cron.New(cron.WithParser(secondParser), cron.WithChain())
}

//
// func BeginAutoJob() {
// 	utils.InfoLog("开启定时任务")
// 	// createUploadDataCronJob = cron.New()
// 	createUploadDataCronJob := newWithSeconds()
// 	spec := "0 30 1 * * ?" // 每天凌晨0点检测数据上报情况
// 	spec1 := "0 45 1 * * ?" // 每天凌晨0点检测数据上报情况
// 	// spec2 := "0 20 0 * * ?" // 每天凌晨0点检测数据上报情况
// 	createUploadDataCronJob.AddFunc(spec, func() {
// 		SyncToSzbl() //深圳市数据上报
// 	})

// 	createUploadDataCronJob.AddFunc(spec1, func() {
// 		SyncToSzblbr() //深圳市数据上报
// 	})
// 	createUploadDataCronJob.Start()
// }

func BeginAutoJob() {
	utils.InfoLog("开启定时任务")
	// createUploadDataCronJob = cron.New()
	createUploadDataCronJob := newWithSeconds()
	//spec := "0 0 1 * * ?"   // 每天凌晨0点检测数据上报情况
	spec1 := "0 30 1 * * ?" // 每天凌晨0点检测数据上报情况
	//spec2 := "0 0 2 * * ?"  // 每天凌晨0点检测数据上报情况
	//spec3 := "0 30 2 * * ?" // 每天凌晨0点检测数据上报情况
	//spec4 := "0 30 3 * * ?" // 每天凌晨0点检测数据上报情况
	//spec5 := "0 10 1 * * ?" // 每天凌晨0点检测数据上报情况
	//spec6 := "0 20 1 * * ?" // 每天凌晨0点检测数据上报情况
	//spec7 := "0 40 1 * * ?" // 每天凌晨0点检测数据上报情况
	//spec8 := "0 40 1 * * ?" // 每天凌晨0点检测数据上报情况
	//createUploadDataCronJob.AddFunc(spec, func() {
	//	SyncToSzbl() //深圳市数据上报
	//})
	//
	createUploadDataCronJob.AddFunc(spec1, func() {
		SyncToLhblYxxxzx() //深圳市数据上报
	})
	//
	//createUploadDataCronJob.AddFunc(spec2, func() {
	//	SyncToSzblbr() //深圳市数据上报
	//})
	//
	//createUploadDataCronJob.AddFunc(spec3, func() {
	//	SyncToSzblbrYxxxzx() //深圳市数据上报
	//})
	//
	//createUploadDataCronJob.AddFunc(spec4, func() {
	//	SyncToSzblgpYxxxzx() //深圳市数据上报
	//})
	//createUploadDataCronJob.AddFunc(spec5, func() {
	//	SyncToWzyy() //深圳市数据上报
	//})

	//createUploadDataCronJob.AddFunc(spec6, func() {
	//	SyncToSmzy() //深圳市数据上报
	//})
	//
	//createUploadDataCronJob.AddFunc(spec7, func() {
	//	SyncToSmzyYxxxzx() //深圳市数据上报
	//})

	//createUploadDataCronJob.AddFunc(spec8, func() {
	//	SyncToLg2h() //深圳市数据上报
	//})

	createUploadDataCronJob.Start()
}

// 龙华百伦
func SyncToLhblYxxxzx() {
	org := &sz.DataUploadConfig{
		OrgId:          19504,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市龙骅百伦血液透析中心",
		HospitalId:     "MA5HTGMX3",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		SyncTBDICPractitioner_pg(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines_pg(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd_pg(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml_pg(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd_pg(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED_pg(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation_pg(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg_pg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record_pg(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription_pg(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail_pg(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge_pg(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail_pg(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report_pg(orgDb, org.OrgId, org.HospitalId)
		SyncDM_pg(orgDb, org.OrgId, org.HospitalId)
		SyncTB_Diagnosis_Detail_pg(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}

func SyncToWzyy() {
	org := &sz.DataUploadConfig{
		OrgId:          10580,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳五洲中医院",
		HospitalId:     "783910835",
		InstType:       2,
		DbHost:         "172.8.110.22",
		DbPort:         "1433",
		DbPass:         "12361myd!@#",
		DbUser:         "sa",
		DbName:         "adapter_2019",
	}

	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		//SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)

		SyncLisIndicatorsBc(orgDb, org.OrgId, org.HospitalId)
		SyncLisReportBc(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }
	return
}

func SyncToSzbl() {
	org := &sz.DataUploadConfig{
		OrgId:          10138,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖血液透析中心",
		HospitalId:     "MA5DB4KB6",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_2019",
	}

	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)

		SyncLisIndicatorsBc(orgDb, org.OrgId, org.HospitalId)
		SyncLisReportBc(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }
	return
}

func SyncToSzblYxxxzx() {
	org := &sz.DataUploadConfig{
		OrgId:          10138,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖血液透析中心",
		HospitalId:     "MA5DB4KB6",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 机构人员字典表  t_hd_hospital
		SyncTBDICPractitioner(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report(orgDb, org.OrgId, org.HospitalId)
		SyncTB_Diagnosis_Detail(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}
func SyncToSzblYxxxzxtmp() {
	org := &sz.DataUploadConfig{
		OrgId:          10138,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖血液透析中心",
		HospitalId:     "MA5DB4KB6",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 机构人员字典表  t_hd_hospital
		SyncTBDICPractitioner(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report(orgDb, org.OrgId, org.HospitalId)
		SyncTB_Diagnosis_Detail(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}
func SyncToSzblbr() {
	org := &sz.DataUploadConfig{
		OrgId:          10278,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖贝尔血液透析中心",
		HospitalId:     "MA5G5BPX7",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_blbe",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// city.UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)

		SyncLisIndicatorsBc(orgDb, org.OrgId, org.HospitalId)
		SyncLisReportBc(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}


func SyncToSzblpg() {
	org := &sz.DataUploadConfig{
		OrgId:          10610,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳百霖鹏港血液透析中心",
		HospitalId:     "MACWP1CB3",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter_new",
		DbName:         "adapter_new",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// city.UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed2(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)

		SyncLisIndicatorsBc(orgDb, org.OrgId, org.HospitalId)
		SyncLisReportBc(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}
func SyncToSzblgpYxxxzx() {
	org := &sz.DataUploadConfig{
		OrgId:          10610,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖鹏港血液透析中心",
		HospitalId:     "MACWP1CB3",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_blpg",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 机构人员字典表  t_hd_hospital
		SyncTBDICPractitioner_pg(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines_pg(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd_pg(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml_pg(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd_pg(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED_pg(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation_pg(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg_pg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record_pg(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription_pg(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail_pg(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge_pg(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail_pg(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report_pg(orgDb, org.OrgId, org.HospitalId)
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		SyncTB_Diagnosis_Detail_pg(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}



func SyncToSzzxtmp() {
	org := &sz.DataUploadConfig{
		OrgId:          10138,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖血液透析中心",
		HospitalId:     "MA5DB4KB6",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		//// 第三步：开始同步数据
		//// 机构人员字典表  t_hd_hospital
		//SyncTBDICPractitioner(orgDb, org.OrgId, org.HospitalId)
		//// 药品目录字典表
		//SyncTBDICMedicines(orgDb, org.OrgId, org.HospitalId)
		//// 药品对照字典
		//SyncTBDICYpdzzd(orgDb, org.OrgId, org.HospitalId)
		//// 诊疗项目目录字典表
		//SyncTBDICZlxmml(orgDb, org.OrgId, org.HospitalId)
		//// 诊疗项目目录字典表
		//SyncTBDICZlxmdzzd(orgDb, org.OrgId, org.HospitalId)
		//// 机构床位  t_hd_wm
		//SyncTMDICTBED(orgDb, org.OrgId, org.HospitalId)
		//// 门诊患者信息表
		//SyncTBMZPatientInformation(orgDb, org.OrgId, org.HospitalId)
		//// 挂号表
		//SyncTBHISMZReg(orgDb, org.OrgId, org.HospitalId)
		//// 门诊就诊记录表
		//SyncTB_YL_MZ_Medical_Record(orgDb, org.OrgId, org.HospitalId)
		//// 门诊处方主表
		//SyncTB_CIS_Prescription(orgDb, org.OrgId, org.HospitalId)
		//// 18.	门诊处方明细表
		//SyncTB_CIS_Prescription_Detail(orgDb, org.OrgId, org.HospitalId)
		//// 19.	门诊收费表
		//SyncTB_HIS_MZ_Charge(orgDb, org.OrgId, org.HospitalId)
		//// 20.	门诊收费明细表
		//SyncTB_HIS_MZ_Fee_Detail(orgDb, org.OrgId, org.HospitalId)
		//// 业务量收入统计表
		//SyncTB_STAT_YWL_Report(orgDb, org.OrgId, org.HospitalId)
		//SyncTB_Diagnosis_Detail(orgDb, org.OrgId, org.HospitalId)
		SyncTB_HIS_MZ_BL_Detail(orgDb,org.OrgId,org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}
func SyncToSzblbrYxxxzxtmpp() {
	org := &sz.DataUploadConfig{
		OrgId:          10278,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖贝尔血液透析中心",
		HospitalId:     "MA5G5BPX7",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_blbe",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}
		SyncTB_HIS_MZ_BL_Detail(orgDb,org.OrgId,org.HospitalId)


		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}



func SyncToSzbltmp() {
	org := &sz.DataUploadConfig{
		OrgId:          10138,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖贝尔血液透析中心",
		HospitalId:     "MA5G5BPX7",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_blbe",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}
		SyncLisIndicatorsBc(orgDb, org.OrgId, org.HospitalId)
		SyncLisReportBc(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}


	return
}
func SyncToSzblbrtmp() {
	org := &sz.DataUploadConfig{
		OrgId:          10278,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖贝尔血液透析中心",
		HospitalId:     "MA5G5BPX7",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_blbe",
	}


	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}
		SyncLisIndicatorsBc(orgDb, org.OrgId, org.HospitalId)
		SyncLisReportBc(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}


	return
}



func SyncToSzblbrYxxxzx() {
	org := &sz.DataUploadConfig{
		OrgId:          10278,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖贝尔血液透析中心",
		HospitalId:     "MA5G5BPX7",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_blbe",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 机构人员字典表  t_hd_hospital
		SyncTBDICPractitioner(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report(orgDb, org.OrgId, org.HospitalId)
		SyncTB_Diagnosis_Detail(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}


func SyncToSzjk() {
	org := &sz.DataUploadConfig{
		OrgId:          10245,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳静康医院血液透析中心",
		HospitalId:     "MA5DKWHG3",
		InstType:       1,
		DbHost:         "localhost",
		DbPort:         "1433",
		DbPass:         "Ya2019",
		DbUser:         "sa",
		DbName:         "xtzk",
	}

	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}
		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// city.UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }
	return
}

func SyncToLg2h() {
	// 第一步：到上报配置表中找到深圳需要上报的机构
	// sz_province, _ := beego.AppConfig.Int64("sz_province")
	// sz_city, _ := beego.AppConfig.Int64("sz_city")
	// configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3)

	org := &sz.DataUploadConfig{
		OrgId:          9598,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市龙岗区第二人民医院",
		HospitalId:     "455835506",
		InstType:       1,
		DbHost:         "183.62.158.36",
		DbPort:         "61433",
		DbPass:         "LG2H+9897",
		DbUser:         "sa",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}
		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }
	return
}

func SyncToHqyy() {
	// 第一步：到上报配置表中找到深圳需要上报的机构
	// sz_province, _ := beego.AppConfig.Int64("sz_province")
	// sz_city, _ := beego.AppConfig.Int64("sz_city")
	// configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3)

	org := &sz.DataUploadConfig{
		OrgId:          9442,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "暨南大学附属深圳华侨医院",
		HospitalId:     "73307826X",
		InstType:       1,
		DbHost:         "183.11.232.26",
		DbPort:         "3306",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "sa",
		DbName:         "xtzk",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}
		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// // 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// // 同步病人 t_hd_patient
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// // 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// // 同步转院信息 t_hd_patient_out
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方信息 t_hd_doctors_advice
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// // 同步设备 t_hd_other_machine
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// // 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// // 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// // 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		//  患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		//  透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		//  血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		//  血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }
	return
}

func SyncToSmzy() {
	// 第一步：到上报配置表中找到深圳需要上报的机构
	// sz_province, _ := beego.AppConfig.Int64("sz_province")
	// sz_city, _ := beego.AppConfig.Int64("sz_city")
	// configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3)

	org := &sz.DataUploadConfig{
		OrgId:          9504,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳生命之源血液透析中心",
		HospitalId:     "MA5EU4PC0",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "sa",
		DbName:         "adapter_2019",
	}

	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 同步医院信息  t_hd_hospital
		SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
		// 同步员工 t_hd_staff
		SyncStaff(orgDb, org.OrgId, org.HospitalId)
		// 布局表（T_HD_LAYOUT）
		SyncLayout(orgDb, org.OrgId, org.HospitalId)
		// 同步设备 t_hd_dm
		SyncDM(orgDb, org.OrgId, org.HospitalId)
		// 同步水处理器  t_hd_wm
		SyncWMS(orgDb, org.OrgId, org.HospitalId)
		// 同步维修 t_hd_maintain
		SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
		// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
		SyncDisinfectMethod(orgDb, org.OrgId, org.HospitalId)
		// 同步其它设备信息表（T_HD_OTHER_MACHINE）
		SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
		// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
		SyncDmDisinfect(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液细菌培养检测记录表(t_hd_dm_dialysate_bc)
		SyncLisCulture(orgDb, org.OrgId, org.HospitalId)
		// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN)
		SyncDialysate(orgDb, org.OrgId, org.HospitalId)
		// 水处理机消毒记录表（T_HD_WM_DISINFECT）
		SyncWmDisinfect(orgDb, org.OrgId, org.HospitalId)
		//透析用水PH值检测表(T_HD_WATER_PH)
		SynLisWaterPh(orgDb, org.OrgId, org.HospitalId)
		//透析用水细菌培养检测表(T_HD_WATER_BC)
		SyncLisWaterBc(orgDb, org.OrgId, org.HospitalId)
		//透析用水内毒素检测表(T_HD_WATER_EN)
		SyncLisWaterEn(orgDb, org.OrgId, org.HospitalId)
		//透析用水有毒化学物检测表(T_HD_WATER_NC)
		SynLisWaterNc(orgDb, org.OrgId, org.HospitalId)
		//透析用水水硬度检测表(T_HD_WATER_WH)
		SynListHadWater(orgDb, org.OrgId, org.HospitalId)
		//透析用水游离氯检测表(T_HD_WATER_FC)
		SyncLisWaterFc(orgDb, org.OrgId, org.HospitalId)
		//透析用水电解质检测表（T_HD_WATER_EL）
		SyncLisWaterEl(orgDb, org.OrgId, org.HospitalId)
		//透析用水微量元素检测表（T_HD_WATER_TE）
		SyncLisWaterTe(orgDb, org.OrgId, org.HospitalId)
		//透析室空气消毒记录表(T_HD_AIR_DISINFECT)
		SyncLisAirDetection(orgDb, org.OrgId, org.HospitalId)
		//物表消毒记录表(T_HD_SURFACE_DISINFECT)
		SyncLisBodyDetection(orgDb, org.OrgId, org.HospitalId)
		// 同步血透患者基本信息表（T_HD_PATIENT）
		SyncPatient(orgDb, org.OrgId, org.HospitalId)
		// 同步患者退出信息表（T_HD_PATIENT_QUIT）
		SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
		// 同步处方 t_hd_ps
		SyncPs(orgDb, org.OrgId, org.HospitalId)
		// 同步处方药品 t_hd_ps
		SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
		// 患者诊断信息表（T_HD_DIAGNOSIS）
		SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
		// 患者通路信息表（T_HD_ACCESS）
		SyncAccess(orgDb, org.OrgId, org.HospitalId)
		//导管感染记录表(T_HD_CI)
		SynListHdCi(orgDb, org.OrgId, org.HospitalId)
		//导管感染转归记录表(T_HD_CI_OUTCOME)
		SynLisHdCiOutCome(orgDb, org.OrgId, org.HospitalId)
		// UpdatePatient(orgDb, org.OrgId, org.HospitalId)
		// 患者传染病检查记录表（T_HD_INFECTION
		SyncInfection(orgDb, org.OrgId, org.HospitalId)
		// 同步排班  t_hd_shift
		SyncShift(orgDb, org.OrgId, org.HospitalId)
		// 同步透析医嘱表（T_HD_DOCTORS_ADVICE）
		SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
		// 同步患者透析记录 t_hd_dialysis
		SyncDialysis(orgDb, org.OrgId, org.HospitalId)
		// 同步透中信息 t_hd_middle
		SyncMiddle(orgDb, org.OrgId, org.HospitalId)
		// 透析并发症记录表（T_HD_COMPLICATION）
		SyncComplication(orgDb, org.OrgId, org.HospitalId)
		// 透析床位表（T_HD_SICKBED）
		SyncSickbed(orgDb, org.OrgId, org.HospitalId)
		// 同步透析床位分区 t_hd_division
		SyncDivision(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检测结果表（T_HD_LIS_REPORT）
		SyncLisReport(orgDb, org.OrgId, org.HospitalId)
		// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
		SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)
		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }
	return
}
func SyncToSmzyYxxxzx() {
	org := &sz.DataUploadConfig{
		OrgId:          9504,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳生命之源血液透析中心",
		HospitalId:     "MA5EU4PC0",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "sa",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 机构人员字典表  t_hd_hospital
		SyncTBDICPractitioner(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report(orgDb, org.OrgId, org.HospitalId)
		SyncTB_Diagnosis_Detail(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}

func SyncToSmzyt() {
	org := &sz.DataUploadConfig{
		OrgId:          9504,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳生命之源血液透析中心",
		HospitalId:     "MA5EU4PC0",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "sa",
		DbName:         "adapter_2019",
	}

	// for _, org := range configs {
	// 第二步：跟进配置，创建数据库连接
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第三步：开始同步数据
		// 机构人员字典表  t_hd_hospital
		SyncTBDICPractitioner(orgDb, org.OrgId, org.HospitalId)
		// 药品目录字典表
		SyncTBDICMedicines(orgDb, org.OrgId, org.HospitalId)
		// 药品对照字典
		SyncTBDICYpdzzd(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmml(orgDb, org.OrgId, org.HospitalId)
		// 诊疗项目目录字典表
		SyncTBDICZlxmdzzd(orgDb, org.OrgId, org.HospitalId)
		// 机构床位  t_hd_wm
		SyncTMDICTBED(orgDb, org.OrgId, org.HospitalId)
		// 门诊患者信息表
		SyncTBMZPatientInformation(orgDb, org.OrgId, org.HospitalId)
		// 挂号表
		SyncTBHISMZReg(orgDb, org.OrgId, org.HospitalId)
		// 门诊就诊记录表
		SyncTB_YL_MZ_Medical_Record(orgDb, org.OrgId, org.HospitalId)
		// 门诊处方主表
		SyncTB_CIS_Prescription(orgDb, org.OrgId, org.HospitalId)
		// 18.	门诊处方明细表
		SyncTB_CIS_Prescription_Detail(orgDb, org.OrgId, org.HospitalId)
		// 19.	门诊收费表
		SyncTB_HIS_MZ_Charge(orgDb, org.OrgId, org.HospitalId)
		// 20.	门诊收费明细表
		SyncTB_HIS_MZ_Fee_Detail(orgDb, org.OrgId, org.HospitalId)
		// 业务量收入统计表
		SyncTB_STAT_YWL_Report(orgDb, org.OrgId, org.HospitalId)

		// 第四步：关闭数据库连接
		service.CloseDB(orgDb)
	}
	// }

	return
}

// 同步医院信息
func SyncHospital(rdb *gorm.DB, org_id int64, hospital_id string, inst_type int64, department_name string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	// 第二步：跟进上次同步时间找出这个时间段内增加的数据
	org, _ := service.FindOrgData(org_id, sync_time)
	if org.ID > 0 {
		hospital := &sz.TempHdHospital{
			HospitalId:     hospital_id,
			InstType:       strconv.FormatInt(inst_type, 10),
			DepartmentName: department_name,
			AuthorizedBeds: int64(len(org.DeviceNumber)),
			CreateTime:     time.Now(),
			UpdateTime:     time.Now(),
			Sjscsj:         time.Now(),
			Xgbz:           0,
		}
		err := service.CreateOrgRecord(rdb, hospital)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       1,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		}
	}
}

// 同步水处理器
func SyncWMS(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 22)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步水处理机
	waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	var wms []*sz.TempHdWm
	for _, item := range waterMachine {
		wm := &sz.TempHdWm{
			HospitalId:     hospital_id,
			EquipmentId:    strconv.FormatInt(item.ID, 10),
			EquipmentBrand: item.ManufactureFactory,
			EnableTime:     time.Unix(item.StartDate, 0),
			EquipmentType:  "21",
			CreateTime:     time.Unix(item.Ctime, 0),
			UpdateTime:     time.Unix(item.Mtime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           0,
		}

		wms = append(wms, wm)
	}

	if len(wms) > 0 {
		err := service.BatchCreateWMsRecord(wms, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       22,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}

}

// 同步员工
func SyncStaff(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 21)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	roles, _ := service.FindOrgRolesData(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	var staffs []*sz.TempHdStaff
	for _, role := range roles {
		var title int
		switch role.UserType {
		case 2:
			title = 1
			break
		case 3:
			title = 2
			break
		}

		staff := &sz.TempHdStaff{
			HospitalId:    hospital_id,
			StaffId:       strconv.FormatInt(role.AdminUserId, 10),
			StaffName:     role.UserName,
			Position:      int64(title),
			PermanentType: 1,
			CreateTime:    time.Unix(role.Ctime, 0),
			UpdateTime:    time.Unix(role.Mtime, 0),
			Sjscsj:        time.Now(),
			Xgbz:          0,
		}
		staffs = append(staffs, staff)

	}
	if len(staffs) > 0 {
		err := service.BatchCreateStaffRecord(staffs, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       21,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 同步分区
func SyncLayout(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2001)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步分区信息
	zones, _ := service.FindOrgDeviceZone(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	var layouts []*sz.TempHdLayout
	for _, zone := range zones {
		layout := &sz.TempHdLayout{
			HospitalId:    hospital_id,
			PartitionName: zone.Name,
			CreateTime:    time.Unix(zone.CreateTime, 0),
			Sjscsj:        time.Now(),
			Xgbz:          "0",
		}
		layouts = append(layouts, layout)
	}
	if len(layouts) > 0 {
		err := service.BatchCreateLayoutRecord(layouts, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2001,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func UpdatePatient(rdb *gorm.DB, org_id int64, hospital_id string) {
	patients, _ := service.FindSyncPatientAllData(rdb)
	for _, patient := range patients {
		IdNo := patient.IdNo
		fmt.Println(patient)
		patientInfo, _ := service.FindPatientInfoByIdno(IdNo)
		fmt.Println(patientInfo)
		if patientInfo.ID > 0 {
			patient.Ylyl1 = patientInfo.HomeAddress
			service.UpdateSyncPatient(patientInfo.ID, patient.Ylyl1, rdb)
		}
	}
}

// 同步血透患者基本信息表（T_HD_PATIENT）
func SyncPatientByID(rdb *gorm.DB, org_id int64, hospital_id string, patient_id int64) {
	// 第一步：根据机构id获取上次同步时间
	// syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 15)
	// var sync_time int64
	// if syncLastInfo.ID > 0 {
	// 	sync_time = syncLastInfo.SyncTime
	// } else {
	// 	sync_time = 0
	// }

	//同步员工信息
	patient, _ := service.FindOrgPatientInfoById(patient_id)
	hdpatients, _ := service.FindSyncPatient(patient_id, rdb)
	if len(hdpatients) > 0 {
		return
	}
	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	var hdPatients []*sz.TempHdPatient
	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)
	if idcard_mo < 10 {
		date = date + "-0" + strconv.Itoa(idcard_mo)
	} else {
		date = date + "-" + strconv.Itoa(idcard_mo)
	}

	if idcard_day < 10 {
		date = date + "-0" + strconv.Itoa(idcard_day)
	} else {
		date = date + "-" + strconv.Itoa(idcard_day)
	}

	local, _ := time.LoadLocation("Local")
	birthday, _ := time.ParseInLocation("2006-01-02", date, local)
	fmt.Println(birthday)

	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:        hospital_id,
		PatientNk:         patient.ID,
		CardNo:            "000000000000000000",
		CardType:          1,
		IdNo:              patient.IdCardNo,
		IdType:            "01",
		PatientName:       patient.Name,
		Gender:            strconv.FormatInt(patient.Gender, 10),
		BornDate:          birthday,
		DiagnosisSummary:  patient.Diagnose,
		IsCrf:             strconv.Itoa(isCKD),
		DialysisStartTime: time.Unix(patient.FirstDialysisDate, 0),
		LocalStartTime:    time.Unix(patient.HospitalFirstDialysisDate, 0),
		OutpatientNo:      patient.DialysisNo,
		HospitalizedNo:    "_",
		CreateTime:        time.Unix(patient.CreatedTime, 0),
		UpdateTime:        time.Unix(patient.UpdatedTime, 0),
		Sjscsj:            time.Now(),
		Ylyl1:             patient.HomeAddress,
		Xgbz:              0,
	}

	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)
	service.BatchCreatePatinet(hdPatients, rdb)
}

// 同步血透患者基本信息表（T_HD_PATIENT）
func SyncPatient(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 15)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	patients, _ := service.FindOrgPatientData(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	var hdPatients []*sz.TempHdPatient
	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)
		if idcard_mo < 10 {
			date = date + "-0" + strconv.Itoa(idcard_mo)
		} else {
			date = date + "-" + strconv.Itoa(idcard_mo)
		}

		if idcard_day < 10 {
			date = date + "-0" + strconv.Itoa(idcard_day)
		} else {
			date = date + "-" + strconv.Itoa(idcard_day)
		}

		local, _ := time.LoadLocation("Local")
		birthday, _ := time.ParseInLocation("2006-01-02", date, local)
		fmt.Println(birthday)

		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:        hospital_id,
			PatientNk:         patient.ID,
			CardNo:            "000000000000000000",
			CardType:          1,
			IdNo:              patient.IdCardNo,
			IdType:            "01",
			PatientName:       patient.Name,
			Gender:            strconv.FormatInt(patient.Gender, 10),
			BornDate:          birthday,
			DiagnosisSummary:  patient.Diagnose,
			IsCrf:             strconv.Itoa(isCKD),
			DialysisStartTime: time.Unix(patient.FirstDialysisDate, 0),
			LocalStartTime:    time.Unix(patient.HospitalFirstDialysisDate, 0),
			OutpatientNo:      patient.DialysisNo,
			HospitalizedNo:    "_",
			CreateTime:        time.Unix(patient.CreatedTime, 0),
			UpdateTime:        time.Unix(patient.UpdatedTime, 0),
			Sjscsj:            time.Now(),
			Ylyl1:             patient.HomeAddress,
			Xgbz:              0,
		}

		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)
	}

	if len(hdPatients) > 0 {
		err := service.BatchCreatePatinet(hdPatients, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       15,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

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 SyncShift(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 19)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	var hdShift []*sz.TempHdShift
	schs, _ := service.FindOrgScheduleData(org_id, sync_time, time.Now().Unix())

	for _, sch := range schs {
		shift := &sz.TempHdShift{
			PsId:           strconv.FormatInt(sch.ID, 10),
			HospitalId:     hospital_id,
			PatientNk:      strconv.FormatInt(sch.PatientId, 10),
			ScheduleDate:   time.Unix(sch.ScheduleDate, 0),
			ShiftType:      strconv.FormatInt(sch.ScheduleType, 10),
			SickbedNo:      sch.DeviceNumber.ID,
			ScheduleStatus: "1",
			CreateTime:     time.Unix(sch.CreatedTime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           0,
		}

		hdShift = append(hdShift, shift)
	}

	if len(hdShift) > 0 {
		err := service.BatchCreateSchedual(hdShift, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       19,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}

}

// 同步处方
func SyncPs(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 17)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	var hdPrescription []*sz.TempHdPs
	prescriptions, _ := service.FindOrgDialysisPrescriptionData(org_id, sync_time, time.Now().Unix())
	for _, item := range prescriptions {

		ps := &sz.TempHdPs{
			PrescribeId:   strconv.FormatInt(item.ID, 10),
			HospitalId:    hospital_id,
			PatientNk:     strconv.FormatInt(item.PatientId, 10),
			Sjscsj:        time.Now(),
			Xgbz:          0,
			PrescribeTime: time.Unix(item.RecordDate, 0),
			CreateTime:    time.Unix(item.CreatedTime, 0),
		}

		switch item.ModeId {
		case 1:
			ps.DialysisFrequency = 5
			ps.FrequencyUnit = 2
			ps.RrtTypeName = "HD"
			ps.RrtType = 1

			break
		case 2:
			ps.DialysisFrequency = 5
			ps.FrequencyUnit = 2
			ps.RrtTypeName = "HDF"
			ps.RrtType = 3
			break
		case 4:
			ps.DialysisFrequency = 5
			ps.FrequencyUnit = 2
			ps.RrtTypeName = "HP"
			ps.RrtType = 5
			break
		case 5:
			ps.DialysisFrequency = 5
			ps.FrequencyUnit = 2
			ps.RrtTypeName = "HF"
			ps.RrtType = 2
			break
		case 7:
			ps.DialysisFrequency = 5
			ps.FrequencyUnit = 2
			ps.RrtTypeName = "IUF"
			ps.RrtType = 6
			break
		default:
			ps.DialysisFrequency = 5
			ps.FrequencyUnit = 2
			ps.RrtTypeName = "HD"
			ps.RrtType = 1
			break
		}

		hdPrescription = append(hdPrescription, ps)
	}
	if len(hdPrescription) > 0 {
		var err error
		for _, hdps := range hdPrescription {
			err = service.BatchCreatePsOther(hdps, rdb)
		}

		// err := service.BatchCreatePs(hdPrescription, rdb)

		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       17,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}

}

// 同步处方药物
func SyncPsMedicine(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 18)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	var tempPsmedicine []*sz.TempHdPsMedicine
	prescriptions, _ := service.FindOrgDialysisPrescriptionData(org_id, sync_time, time.Now().Unix())
	for _, item := range prescriptions {
		psm := &sz.TempHdPsMedicine{
			Sn:             strconv.FormatInt(item.ID, 10),
			HospitalId:     hospital_id,
			MedicineTypeId: "5",
			MedicineId:     "1",
			CreateTime:     time.Unix(item.CreatedTime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           0,
		}
		tempPsmedicine = append(tempPsmedicine, psm)
	}

	if len(tempPsmedicine) > 0 {
		err := service.BatchCreatePsm(tempPsmedicine, rdb)

		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       18,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

// 同步患者退出信息表（T_HD_PATIENT_QUIT）
func SyncPatientOutByID(rdb *gorm.DB, org_id int64, hospital_id string, patient_id int64) {
	// 第一步：根据机构id获取上次同步时间
	// syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 16)
	// var sync_time int64
	// if syncLastInfo.ID > 0 {
	// 	sync_time = syncLastInfo.SyncTime
	// } else {
	// 	sync_time = 0
	// }

	var hdPatientOuts []*sz.TempHdPatientOut
	patient, _ := service.FindOrgPatientOutDataByID(patient_id)
	orgPatient, _ := service.FindOrgPatientInfoById(patient_id)
	if orgPatient.UserOrgId != org_id {
		return
	}

	hdpatients, _ := service.FindSyncPatientOut(patient_id, rdb)
	if len(hdpatients) > 0 {
		return
	}

	p := &sz.TempHdPatientOut{
		Sn:           strconv.FormatInt(patient.ID, 10),
		HospitalId:   hospital_id,
		PatientNk:    strconv.FormatInt(patient.PatientId, 10),
		SequelaeDate: time.Unix(patient.LapsetoTime, 0),
		CreateTime:   time.Unix(patient.CreatedTime, 0),
		Sjscsj:       time.Now(),
		Xgbz:         "0",
	}
	if patient.LapsetoType == 2 {
		p.SequelaeType = "2"
		p.DeathReason = "0"
		p.ExtReason = "13"
	} else {
		p.SequelaeType = "1"
		p.DeathReason = "99"
		p.ExtReason = "0"
	}
	hdPatientOuts = append(hdPatientOuts, p)
	service.BatchCreatePatientOut(hdPatientOuts, rdb)

}

// 同步患者退出信息表（T_HD_PATIENT_QUIT）
func SyncPatientOut(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 16)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	var hdPatientOuts []*sz.TempHdPatientOut
	patients, _ := service.FindOrgPatientOutDataTwo(sync_time, time.Now().Unix())
	//
	for _, patient := range patients {
		orgPatient, _ := service.FindOrgPatientInfoById(patient.PatientId)
		if orgPatient.UserOrgId != org_id {
			continue
		} else {
			p := &sz.TempHdPatientOut{
				Sn:           strconv.FormatInt(patient.ID, 10),
				HospitalId:   hospital_id,
				PatientNk:    strconv.FormatInt(patient.PatientId, 10),
				SequelaeDate: time.Unix(patient.Ctime, 0),
				CreateTime:   time.Unix(patient.Ctime, 0),
				Sjscsj:       time.Now(),
				Xgbz:         "0",
			}
			switch patient.PatientSource {
			case 3:
				p.SequelaeType = "1"
				p.DeathReason = "99"
				p.ExtReason = "13"
				break
			case 4:
				p.SequelaeType = "2"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			case 5:
				p.SequelaeType = "3"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			case 6:
				p.SequelaeType = "4"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			case 7:
				p.SequelaeType = "5"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			case 8:
				p.SequelaeType = "6"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			case 9:
				p.SequelaeType = "7"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			default:
				p.SequelaeType = "2"
				p.DeathReason = "0"
				p.ExtReason = "13"
				break
			}
			hdPatientOuts = append(hdPatientOuts, p)
		}
	}

	if len(hdPatientOuts) > 0 {
		err := service.BatchCreatePatientOut(hdPatientOuts, rdb)

		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       16,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

// 同步处方信息
func SyncDoctorAdvice(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 6)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	var hdDoctorAdvices []*sz.TempHdDoctorsAdvice
	dialysisPrescriptions, _ := service.FindOrgDialysisPrescriptionData(org_id, sync_time, time.Now().Unix())

	for _, dp := range dialysisPrescriptions {
		if dp.DialysisOrder.ID > 0 {
			advice := &sz.TempHdDoctorsAdvice{
				MedicalOrderId:   strconv.FormatInt(dp.ID, 10),
				HospitalId:       hospital_id,
				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)),
				Anticoagulant:    dp.Anticoagulant,
				CreateTime:       time.Unix(dp.CreatedTime, 0),
				Sjscsj:           time.Now(),
				Xgbz:             0,
				DryWeight:        dp.AssessmentBeforeDislysis.DryWeight,
			}
			switch dp.ModeId {
			case 1:
				advice.RrtTypeName = "HD"
				advice.RrtType = 1
				break
			case 2:
				advice.RrtTypeName = "HDF"
				advice.RrtType = 3
				break
			case 4:
				advice.RrtTypeName = "HP"
				advice.RrtType = 5
				break
			case 5:
				advice.RrtTypeName = "HF"
				advice.RrtType = 2
				break
			case 7:
				advice.RrtTypeName = "IUF"
				advice.RrtType = 6
				break
			default:
				advice.RrtTypeName = "HD"
				advice.RrtType = 1
			}
			if advice.RrtType == 0 {
				continue
			}
			hdDoctorAdvices = append(hdDoctorAdvices, advice)
		}

	}

	if len(hdDoctorAdvices) > 0 {
		err := service.BatchCreateDoctorsAdvice(hdDoctorAdvices, rdb)

		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       6,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}

}

func SyncMiddle(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 36)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1662134400
	}

	var hdMiddle []*sz.TempHdMiddle
	monitors, _ := service.FindOrgMonitorRecordData(org_id, sync_time, time.Now().Unix())

	for _, item := range monitors {

		mid := &sz.TempHdMiddle{
			Sn:          item.ID,
			HospitalId:  hospital_id,
			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.Unix(item.CreatedTime, 0),
			Sjscsj:      time.Now(),
			Xgbz:        0,
		}
		if mid.Sbp > 999 {
			continue
		}

		if mid.Dbp > 999 {
			continue
		}

		hdMiddle = append(hdMiddle, mid)
	}

	if len(hdMiddle) > 0 {
		err := service.BatchCreateMonitor(hdMiddle, rdb)

		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       36,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}

}

// 同步设备
func SyncOtherMachine(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 13)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步设备
	waterMachine, _ := service.FindOrgOtherMachineData(org_id, sync_time, time.Now().Unix())
	var wms []*sz.TempHdOtherMachine
	for _, item := range waterMachine {
		wm := &sz.TempHdOtherMachine{
			HospitalId:     hospital_id,
			EquipmentId:    strconv.FormatInt(item.ID, 10),
			EquipmentBrand: item.ManufactureFactory,
			EnableTime:     time.Unix(item.BuyDate, 0),
			Status:         "1",
			EquipmentType:  "99",
			CreateTime:     time.Unix(item.Ctime, 0),
			UpdateTime:     time.Unix(item.Mtime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           "0",
		}
		switch item.MachineStatus {
		case 1:
			wm.Status = "1"
			break
		case 4:
			wm.Status = "3"
			break
		default:
			wm.Status = "1"
			break
		}

		wms = append(wms, wm)
	}

	if len(wms) > 0 {
		err := service.BatchCreateOtherMachineRecord(wms, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       13,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}

}

// 同步透析机消毒检测记录表（T_HD_DM_DISINFECT）
func SyncDmDisinfect(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2003)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步透析机消毒检测记录表
	deviceInformations, _ := service.FindOrgDeviceInformationData(org_id, sync_time, time.Now().Unix())
	var dfs []*sz.TempHdDmDisinfect
	for _, item := range deviceInformations {
		if item.VMDeviceAddmacher.DeviceType != 1 {
			continue
		} else {
			df := &sz.TempHdDmDisinfect{
				Sn:             strconv.FormatInt(item.ID, 10),
				HospitalId:     hospital_id,
				EquipmentId:    strconv.FormatInt(item.EquimentId, 10),
				SickbedNo:      strconv.FormatInt(item.BedNumber, 10),
				InspectionTime: time.Unix(item.Date, 0),
				IsQualified:    "1",
				CaseOrder:      "1",
				CreateTime:     time.Unix(item.Ctime, 0),
				Sjscsj:         time.Now(),
				Xgbz:           "0",
			}
			dfs = append(dfs, df)
		}
	}

	if len(dfs) > 0 {
		err := service.BatchCreateDmDisinfect(dfs, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2003,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}

}

// 水处理机消毒记录表（T_HD_WM_DISINFECT）
func SyncWmDisinfect(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2004)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步透析机消毒检测记录表
	deviceInformations, _ := service.FindOrgDeviceInformationData(org_id, sync_time, time.Now().Unix())
	var dfs []*sz.TempWdDmDisinfect
	for _, item := range deviceInformations {
		if item.VMDeviceAddmacher.DeviceType != 2 {
			continue
		} else {
			df := &sz.TempWdDmDisinfect{
				Sn:             strconv.FormatInt(item.ID, 10),
				HospitalId:     hospital_id,
				EquipmentId:    strconv.FormatInt(item.EquimentId, 10),
				InspectionTime: time.Unix(item.Date, 0),
				IsQualified:    "1",
				CaseOrder:      "1",
				CreateTime:     time.Unix(item.Ctime, 0),
				Sjscsj:         time.Now(),
				Xgbz:           "0",
			}
			dfs = append(dfs, df)
		}
	}

	if len(dfs) > 0 {
		err := service.BatchCreateWmDisinfect(dfs, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2004,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 同步维修
func SyncMachineRepair(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 11)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步设备
	hdMaintain, _ := service.FindOrgMachineRepairData(org_id, sync_time, time.Now().Unix())
	var maintain []*sz.TempHdMaintain
	for _, item := range hdMaintain {
		mt := &sz.TempHdMaintain{
			Sn:          strconv.FormatInt(item.ID, 10),
			HospitalId:  hospital_id,
			EquipmentId: strconv.FormatInt(item.VMDeviceAddmacher.ID, 10),
			RepairTime:  time.Unix(item.GuaranteeDate, 0),
			CreateTime:  time.Unix(item.Ctime, 0),
			Sjscsj:      time.Now(),
			Xgbz:        0,
		}
		switch item.VMDeviceAddmacher.DeviceType {
		case 1:
			mt.EquipmentType = "11"
			break
		case 2:
			mt.EquipmentType = "21"
			break
		case 3:
			mt.EquipmentType = "99"
			break
		}

		maintain = append(maintain, mt)
	}

	if len(maintain) > 0 {
		err := service.BatchCreateMainTain(maintain, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       11,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 同步设备消毒方法表（T_HD_DISINFECT_METHOD
func SyncDisinfectMethod(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2002)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步设备消毒方法表
	deviceplans, _ := service.FindOrgDevicePlan(org_id, sync_time, time.Now().Unix())
	var disinfects []*sz.TempHdDisinfectMethod
	for _, item := range deviceplans {
		disinfect := &sz.TempHdDisinfectMethod{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquipmentId:     strconv.FormatInt(item.VMDeviceAddmacher.ID, 10),
			DisinfectMethod: "1",
			Concentration:   "0_",
			CreateTime:      time.Unix(item.Ctime, 0),
			UpdateTime:      time.Unix(item.Mtime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            0,
		}
		switch item.VMDeviceAddmacher.DeviceType {
		case 1:
			disinfect.EquipmentType = "11"
			break
		case 2:
			disinfect.EquipmentType = "21"
			break
		case 3:
			disinfect.EquipmentType = "99"
			break
		}

		switch item.MachineDisinfectant {
		case 1:
			disinfect.Disinfector = "0.22%季铵盐"
			break
		case 2:
			disinfect.Disinfector = "500mg/l含氯消毒剂"
			break
		case 3:
			disinfect.Disinfector = "1000mg/l含氯消毒剂"
			break
		case 4:
			disinfect.Disinfector = "1500mg/l含氯消毒剂"
			break
		case 5:
			disinfect.Disinfector = "消毒湿巾"
			break
		default:
			disinfect.Disinfector = "0_"
			break
		}

		disinfects = append(disinfects, disinfect)
	}

	if len(disinfects) > 0 {
		err := service.BatchCreateDisinfectMethod(disinfects, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2002,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 同步 透析机信息表
func SyncDM_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 5)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步设备
	dm, _ := service.FindOrgMachineData(org_id, sync_time, time.Now().Unix())
	var hdms []*sz.TempHdDm
	for _, item := range dm {
		hdm := &sz.TempHdDm{
			HospitalId:     hospital_id,
			EquipmentId:    strconv.FormatInt(item.ID, 10),
			SickbedNo:      strconv.FormatInt(item.DeviceNumber.ID, 10),
			SickbedType:    "0",
			EquipmentBrand: item.ManufactureFactory,
			EnableTime:     time.Unix(item.BuyDate, 0),
			EquipmentType:  "12",
			Bbp:            "1",
			CreateTime:     time.Unix(item.Ctime, 0),
			UpdateTime:     time.Unix(item.Mtime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           strconv.FormatInt(0, 10),
		}
		switch item.MachineStatus {
		case 1:
			hdm.Status = "1"
			break
		case 4:
			hdm.Status = "3"
			break
		}
		hdms = append(hdms, hdm)
	}

	if len(hdms) > 0 {
		err := service.BatchCreateHDMRecord(hdms, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       5,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SyncDM(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 5)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步设备
	dm, _ := service.FindOrgMachineData(org_id, sync_time, time.Now().Unix())
	var hdms []*sz.TempHdDm
	for _, item := range dm {
		hdm := &sz.TempHdDm{
			HospitalId:     hospital_id,
			EquipmentId:    strconv.FormatInt(item.ID, 10),
			SickbedNo:      strconv.FormatInt(item.DeviceNumber.ID, 10),
			SickbedType:    "0",
			EquipmentBrand: item.ManufactureFactory,
			EnableTime:     time.Unix(item.BuyDate, 0),
			EquipmentType:  "12",
			Bbp:            "1",
			CreateTime:     time.Unix(item.Ctime, 0),
			UpdateTime:     time.Unix(item.Mtime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           strconv.FormatInt(0, 10),
		}
		switch item.MachineStatus {
		case 1:
			hdm.Status = "1"
			break
		case 4:
			hdm.Status = "3"
			break
		}
		hdms = append(hdms, hdm)
	}

	if len(hdms) > 0 {
		err := service.BatchCreateHDMRecord(hdms, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       5,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 同步患者透析记录
func SyncDialysis(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	var tempDialysis []*sz.TempHdDialysis
	dialysisData, _ := service.FindOrgDialysisData(org_id, sync_time, time.Now().Unix())

	for _, item := range dialysisData {
		psm := &sz.TempHdDialysis{
			DialysisId:            strconv.FormatInt(item.ID, 10),
			HospitalId:            hospital_id,
			PatientNk:             strconv.FormatInt(item.PatientId, 10),
			PsId:                  strconv.FormatInt(item.Schedule.ID, 10),
			DialysisDate:          time.Unix(item.DialysisDate, 0),
			SickbedNo:             strconv.FormatInt(item.DeviceNumber.ID, 10),
			DivisionId:            strconv.FormatInt(item.Schedule.PartitionId, 10),
			EquipmentId:           strconv.FormatInt(item.DeviceNumber.ID, 10),
			MixDialysis:           "0",
			TotalTreatDuration:    item.AssessmentAfterDislysis.ActualTreatmentHour*60 + item.AssessmentAfterDislysis.ActualTreatmentMinute,
			IsHospitalization:     "0",
			IsEmergency:           "0",
			IsPerioperativePeriod: "0",
			BeforeSbp:             int64(item.AssessmentBeforeDislysis.SystolicBloodPressure),
			BeforeDbp:             int64(item.AssessmentBeforeDislysis.DiastolicBloodPressure),
			AfterSbp:              int64(item.AssessmentAfterDislysis.SystolicBloodPressure),
			AfterDbp:              int64(item.AssessmentAfterDislysis.DiastolicBloodPressure),
			BeforeWeight:          item.AssessmentBeforeDislysis.WeightBefore,
			AfterWeight:           item.AssessmentAfterDislysis.WeightAfter,
			Ktv:                   item.AssessmentAfterDislysis.Ktv,
			Urr:                   item.AssessmentAfterDislysis.Urr,
			ChargeDoctorId:        strconv.FormatInt(item.VMDialysisPrescription.PrescriptionDoctor, 10),
			ChargeNurseId:         strconv.FormatInt(item.StartNurse, 10),
			UpNurseId:             strconv.FormatInt(item.StartNurse, 10),
			DownNurseId:           strconv.FormatInt(item.FinishNurse, 10),
			CheckNurseId:          strconv.FormatInt(item.FinishNurse, 10),
			PunctureNurseId:       strconv.FormatInt(item.PunctureNurse, 10),
			StartTime:             time.Unix(item.StartTime, 0),
			EndTime:               time.Unix(item.EndTime, 0),
			CreateTime:            time.Unix(item.CreatedTime, 0),
			Sjscsj:                time.Now(),
			Xgbz:                  0,
		}

		if item.AssessmentAfterDislysis.ActualUltrafiltration < 10 {
			psm.ActualufMl = int64(item.AssessmentAfterDislysis.ActualUltrafiltration * 1000)
		} else {
			psm.ActualufMl = int64(item.AssessmentAfterDislysis.ActualUltrafiltration)
		}

		if item.VMDialysisPrescription.TargetUltrafiltration < 10 {
			psm.Ufv = int64(item.VMDialysisPrescription.TargetUltrafiltration * 1000)
		} else {
			psm.Ufv = int64(item.VMDialysisPrescription.TargetUltrafiltration)
		}

		if item.AssessmentAfterDislysis.ActualDisplacement < 10 {
			psm.TotalReplace = int64(item.AssessmentAfterDislysis.ActualDisplacement * 1000)
		} else {
			psm.TotalReplace = int64(item.AssessmentAfterDislysis.ActualDisplacement)
		}

		tempDialysis = append(tempDialysis, psm)
	}

	if len(tempDialysis) > 0 {
		err := service.BatchCreateDialysis(tempDialysis, rdb)

		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}

}

// 同步透析床位分区
func SyncDivision(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 55)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步透析床位分区
	dm, _ := service.FindOrgDeviceZoneRecordData(org_id, sync_time, time.Now().Unix())
	var hdms []*sz.TempHdDivision
	for _, item := range dm {
		hdm := &sz.TempHdDivision{
			DivisionId:   strconv.FormatInt(item.ID, 10),
			HospitalId:   hospital_id,
			DivisionName: item.Name,
			DivisionType: strconv.FormatInt(item.Type, 10),
			CreateTime:   time.Unix(item.CreateTime, 0),
			UpdateTime:   time.Unix(item.ModifyTime, 0),
			Sjscsj:       time.Now(),
			Xgbz:         strconv.FormatInt(0, 10),
		}

		hdms = append(hdms, hdm)
	}

	if len(hdms) > 0 {
		err := service.CreateHDDivision(hdms, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       55,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

// 患者通路信息表
func SyncAccess(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 56)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	//同步员工信息
	patientaccess, _ := service.FindOrgAccess(org_id, sync_time, time.Now().Unix())
	var accessList []*sz.TempHdAccess
	for _, item := range patientaccess {
		access := &sz.TempHdAccess{
			AccessId:       strconv.FormatInt(item.ID, 10),
			HospitalId:     hospital_id,
			PatientNk:      strconv.FormatInt(item.PatientId, 10),
			AccessType:     "1",
			AccessTypeName: "自体动静脉内瘘",
			AccessStatus:   "1",
			SetupDate:      time.Unix(item.StartTime, 0),
			FirstUseTime:   time.Unix(item.FirstStartTime, 0),
			CreateTime:     time.Unix(item.Ctime, 0),
			UpdateTime:     time.Unix(item.Mtime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           0,
		}
		accessList = append(accessList, access)
	}

	if len(accessList) > 0 {
		err := service.CreateAccess(accessList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       56,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 透析床位表
func SyncSickbed(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 57)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步床位
	devices, _ := service.FindOrgDeviceNumber(org_id, sync_time, time.Now().Unix())
	var sickbedList []*sz.TempHdSickbed
	for _, device := range devices {
		sickbed := &sz.TempHdSickbed{
			SickbedNo:   device.ID,
			HospitalId:  hospital_id,
			DivisionId:  strconv.FormatInt(device.ZoneId, 10),
			SickbedCode: device.Number,
			SickbedType: "0",
			CreateTime:  time.Unix(device.Ctime, 0),
			UpdateTime:  time.Unix(device.Mtime, 0),
			Sjscsj:      time.Now(),
			Xgbz:        0,
		}
		sickbedList = append(sickbedList, sickbed)
	}

	if len(sickbedList) > 0 {
		err := service.CreateSickbed(sickbedList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       57,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}


func SyncSickbed2(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 57)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步床位
	devices, _ := service.FindOrgDeviceNumber(org_id, sync_time, time.Now().Unix())
	var sickbedList []*sz.TempHdSickbed
	for _, device := range devices {
		sickbed := &sz.TempHdSickbed{
			SickbedNo:   device.ID,
			HospitalId:  hospital_id,
			DivisionId:  strconv.FormatInt(device.ZoneId, 10),
			SickbedCode: device.Number,
			SickbedType: "0",
			CreateTime:  time.Unix(device.Ctime, 0),
			UpdateTime:  time.Unix(device.Mtime, 0),
			Sjscsj:      time.Now(),
			Xgbz:        0,
			Ylyl1 : "0",
		}
		if device.ID == 7305{
			sickbed.Ylyl1 = "1"
		}

		sickbedList = append(sickbedList, sickbed)
	}

	if len(sickbedList) > 0 {
		err := service.CreateSickbed2(sickbedList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       57,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}


// 患者诊断信息表（T_HD_DIAGNOSIS）
func SyncDiagnosis(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 58)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1577808000
	}

	//同步患者
	prescriptions, _ := service.FindOrgDialysisPrescriptionData(org_id, sync_time, time.Now().Unix())

	var diagnosisList []*sz.TempHdDiagnosis
	for _, item := range prescriptions {
		diagnosis := &sz.TempHdDiagnosis{
			DiagnosisId:         strconv.FormatInt(item.ID, 10),
			HospitalId:          hospital_id,
			PatientNk:           strconv.FormatInt(item.PatientId, 10),
			DiagnosisTime:       time.Unix(item.CreatedTime, 0),
			DiagnosisType:       "10",
			DiagnosisTypeItem:   "1001",
			DiagnosisTypeDetail: "100113",
			CreateTime:          time.Unix(item.CreatedTime, 0),
			UpdateTime:          time.Unix(item.UpdatedTime, 0),
			Sjscsj:              time.Now(),
			Xgbz:                0,
		}
		diagnosisList = append(diagnosisList, diagnosis)
	}

	if len(diagnosisList) > 0 {
		err := service.CreateDiagnosis(diagnosisList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       58,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 患者传染病检查记录表（T_HD_INFECTION
func SyncInfection(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 59)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步患者
	patients, _ := service.FindOrgPatientDataOne(org_id)
	var infectionList []*sz.TempHdInfection
	for _, patient := range patients {
		//	查询有没有做传染病检查并返回检验检查时间
		if org_id == 9598 {
			// 龙岗二院
			inspections, _ := service.FindOrgInspectionGroupLgey(org_id, sync_time, time.Now().Unix(), patient.ID)
			if len(inspections) > 0 {
				for _, insp := range inspections {
					inspection_arr, _ := service.FindOrgInspectionGroupLgeyTwo(org_id, insp.InspectDate, patient.ID)
					if len(inspection_arr) > 0 {
						infection := &sz.TempHdInfection{
							Sn:         strconv.FormatInt(patient.ID, 10),
							HospitalId: hospital_id,
							PatientNk:  strconv.FormatInt(patient.ID, 10),
							Hbv:        9,
							Hcv:        9,
							Rpr:        9,
							Hiv:        9,
							Hbsag:      9,
							Hbsab:      9,
							Hbeag:      9,
							Hbeab:      9,
							Hbcab:      9,
							CheckDate:  time.Unix(insp.InspectDate, 0),
							DoctorId:   "599",
							CreateTime: time.Now(),
							Sjscsj:     time.Now(),
							Xgbz:       0,
						}

						for _, infectionDiseases := range inspection_arr {
							infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
							// 乙肝
							if len(infectionDiseases.InspectValue) > 0 {
								if infectionDiseases.ItemId == 62 || infectionDiseases.ItemId == 18001056 || infectionDiseases.ItemId == 18001049 || infectionDiseases.ItemId == 18006001 || infectionDiseases.ItemId == 18131005 || infectionDiseases.ItemId == 18142001 || infectionDiseases.ItemId == 18169001 || infectionDiseases.ItemId == 18245006 || infectionDiseases.ItemId == 178 {
									infection.Hbv = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbv = 1
									}
								}
								// 丙肝
								if infectionDiseases.ItemId == 60 || infectionDiseases.ItemId == 18006002 || infectionDiseases.ItemId == 18130001 || infectionDiseases.ItemId == 18143001 || infectionDiseases.ItemId == 18178001 || infectionDiseases.ItemId == 18245001 || infectionDiseases.ItemId == 179 {
									infection.Hcv = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hcv = 1
									}
								}
								// 梅毒
								if infectionDiseases.ItemId == 112 || infectionDiseases.ItemId == 18001055 || infectionDiseases.ItemId == 18008002 || infectionDiseases.ItemId == 18044001 || infectionDiseases.ItemId == 18051001 || infectionDiseases.ItemId == 18051003 || infectionDiseases.ItemId == 18065001 || infectionDiseases.ItemId == 18065003 || infectionDiseases.ItemId == 18076001 || infectionDiseases.ItemId == 18076003 || infectionDiseases.ItemId == 18078001 || infectionDiseases.ItemId == 18078004 || infectionDiseases.ItemId == 18131007 || infectionDiseases.ItemId == 18141001 || infectionDiseases.ItemId == 18167001 || infectionDiseases.ItemId == 18175002 || infectionDiseases.ItemId == 18176001 || infectionDiseases.ItemId == 18176002 || infectionDiseases.ItemId == 18176004 || infectionDiseases.ItemId == 18230002 || infectionDiseases.ItemId == 18241002 || infectionDiseases.ItemId == 18246002 || infectionDiseases.ItemId == 18246003 || infectionDiseases.ItemId == 112 {
									infection.Rpr = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Rpr = 1
									}
								}
								// 艾滋病
								if infectionDiseases.ItemId == 111 || infectionDiseases.ItemId == 18008001 || infectionDiseases.ItemId == 18001054 || infectionDiseases.ItemId == 18131006 || infectionDiseases.ItemId == 18044002 || infectionDiseases.ItemId == 18051002 || infectionDiseases.ItemId == 18065002 || infectionDiseases.ItemId == 18076002 || infectionDiseases.ItemId == 18078003 || infectionDiseases.ItemId == 18114001 || infectionDiseases.ItemId == 18175001 || infectionDiseases.ItemId == 18176003 || infectionDiseases.ItemId == 18230001 || infectionDiseases.ItemId == 18241001 || infectionDiseases.ItemId == 18246001 || infectionDiseases.ItemId == 111 {
									infection.Rpr = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Rpr = 1
									}
								}
								// HBsAg 乙型肝炎表面抗原;
								if infectionDiseases.ItemId == 62 || infectionDiseases.ItemId == 18006001 || infectionDiseases.ItemId == 18131005 || infectionDiseases.ItemId == 18142001 || infectionDiseases.ItemId == 18169001 || infectionDiseases.ItemId == 18245006 || infectionDiseases.ItemId == 62 {
									infection.Hbsag = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbsag = 1
									}
								}
								// HBsAb  乙型肝炎表面抗体;
								if infectionDiseases.ItemId == 63 || infectionDiseases.ItemId == 18006006 || infectionDiseases.ItemId == 18131004 || infectionDiseases.ItemId == 18142005 || infectionDiseases.ItemId == 18169002 || infectionDiseases.ItemId == 18245005 || infectionDiseases.ItemId == 63 {
									infection.Hbsab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbsab = 1
									}
								}
								// HBeAg 乙肝病毒e抗原;
								if infectionDiseases.ItemId == 64 || infectionDiseases.ItemId == 18006003 || infectionDiseases.ItemId == 18131003 || infectionDiseases.ItemId == 18142004 || infectionDiseases.ItemId == 18169003 || infectionDiseases.ItemId == 18245004 || infectionDiseases.ItemId == 64 {
									infection.Hbeag = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbeag = 1
									}
								}
								// HBeAb 乙型肝炎E抗体;
								if infectionDiseases.ItemId == 65 || infectionDiseases.ItemId == 18006004 || infectionDiseases.ItemId == 18131002 || infectionDiseases.ItemId == 18142003 || infectionDiseases.ItemId == 18169004 || infectionDiseases.ItemId == 18245003 || infectionDiseases.ItemId == 65 {
									infection.Hbeab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbeab = 1
									}
								}
								// HBcAb  乙肝核心抗体;
								if infectionDiseases.ItemId == 66 || infectionDiseases.ItemId == 18006005 || infectionDiseases.ItemId == 18131001 || infectionDiseases.ItemId == 18142002 || infectionDiseases.ItemId == 18169005 || infectionDiseases.ItemId == 18245002 || infectionDiseases.ItemId == 66 {
									infection.Hbcab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbcab = 1
									}
								}
							}
						}
						infectionList = append(infectionList, infection)
					}
				}
			}
		}

		if org_id == 10138 {
			// 深圳百霖
			inspections, _ := service.FindOrgInspectionGroupSzbl(org_id, sync_time, time.Now().Unix(), patient.ID)
			if len(inspections) > 0 {
				for _, insp := range inspections {
					inspection_arr, _ := service.FindOrgInspectionGroupSzblTwo(org_id, insp.InspectDate, patient.ID)
					if len(inspection_arr) > 0 {
						infection := &sz.TempHdInfection{
							Sn:         strconv.FormatInt(patient.ID, 10),
							HospitalId: hospital_id,
							PatientNk:  strconv.FormatInt(patient.ID, 10),
							Hbv:        9,
							Hcv:        9,
							Rpr:        9,
							Hiv:        9,
							Hbsag:      9,
							Hbsab:      9,
							Hbeag:      9,
							Hbeab:      9,
							Hbcab:      9,
							CheckDate:  time.Unix(insp.InspectDate, 0),
							DoctorId:   "2232",
							CreateTime: time.Now(),
							Sjscsj:     time.Now(),
							Xgbz:       0,
						}

						for _, infectionDiseases := range inspection_arr {
							infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
							infection.CheckDate = time.Unix(infectionDiseases.InspectDate, 0)
							// 乙肝
							if infectionDiseases.ItemId == 101380001 || infectionDiseases.ItemId == 101387010 {
								infection.Hbv = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbv = 1
								}
							}
							// 丙肝
							if infectionDiseases.ItemId == 101380006 || infectionDiseases.ItemId == 101387004 {
								infection.Hcv = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hcv = 1
								}
							}
							// 梅毒
							if infectionDiseases.ItemId == 101380009 || infectionDiseases.ItemId == 101387001 {
								infection.Rpr = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Rpr = 1
								}
							}
							// 艾滋病
							if infectionDiseases.ItemId == 101380010 || infectionDiseases.ItemId == 101387005 {
								infection.Rpr = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Rpr = 1
								}
							}
							// HBsAg 乙型肝炎表面抗原;
							if infectionDiseases.ItemId == 101380001 || infectionDiseases.ItemId == 101387010 {
								infection.Hbsag = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbsag = 1
								}
							}
							// HBsAb  乙型肝炎表面抗体;
							if infectionDiseases.ItemId == 101380002 || infectionDiseases.ItemId == 101387009 {
								infection.Hbsab = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbsab = 1
								}
							}
							// HBeAg 乙肝病毒e抗原;
							if infectionDiseases.ItemId == 101380003 || infectionDiseases.ItemId == 101387008 {
								infection.Hbeag = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbeag = 1
								}
							}
							// HBeAb 乙型肝炎E抗体;
							if infectionDiseases.ItemId == 101380004 || infectionDiseases.ItemId == 101387007 {
								infection.Hbeab = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbeab = 1
								}
							}
							// HBcAb  乙肝核心抗体;
							if infectionDiseases.ItemId == 101380005 || infectionDiseases.ItemId == 101387006 {
								infection.Hbcab = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbcab = 1
								}
							}
						}
						infectionList = append(infectionList, infection)
					}
				}
			}
		}

		if org_id == 10278 {
			// 深圳百霖贝尔
			inspections, _ := service.FindOrgInspectionGroupSzblbr(org_id, sync_time, time.Now().Unix(), patient.ID)
			if len(inspections) > 0 {
				for _, insp := range inspections {
					inspection_arr, _ := service.FindOrgInspectionGroupSzblbrTwo(org_id, insp.InspectDate, patient.ID)
					if len(inspection_arr) > 0 {
						infection := &sz.TempHdInfection{
							Sn:         strconv.FormatInt(patient.ID, 10),
							HospitalId: hospital_id,
							PatientNk:  strconv.FormatInt(patient.ID, 10),
							Hbv:        9,
							Hcv:        9,
							Rpr:        9,
							Hiv:        9,
							Hbsag:      9,
							Hbsab:      9,
							Hbeag:      9,
							Hbeab:      9,
							Hbcab:      9,
							CheckDate:  time.Unix(insp.InspectDate, 0),
							DoctorId:   "751",
							CreateTime: time.Now(),
							Sjscsj:     time.Now(),
							Xgbz:       0,
						}

						for _, infectionDiseases := range inspection_arr {
							infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
							infection.CheckDate = time.Unix(infectionDiseases.InspectDate, 0)
							// 乙肝
							if infectionDiseases.ItemId == 101380302 || infectionDiseases.ItemId == 101385607 {
								infection.Hbv = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbv = 1
								}
							}
							// 丙肝
							if infectionDiseases.ItemId == 101380307 || infectionDiseases.ItemId == 101385609 {
								infection.Hcv = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hcv = 1
								}
							}
							// 梅毒
							if infectionDiseases.ItemId == 101380009 || infectionDiseases.ItemId == 101385601 {
								infection.Rpr = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Rpr = 1
								}
							}
							// 艾滋病
							if infectionDiseases.ItemId == 101380301 || infectionDiseases.ItemId == 101380301 {
								infection.Rpr = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Rpr = 1
								}
							}
							// HBsAg 乙型肝炎表面抗原;
							if infectionDiseases.ItemId == 101380302 || infectionDiseases.ItemId == 101385607 {
								infection.Hbsag = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbsag = 1
								}
							}
							// HBsAb  乙型肝炎表面抗体;
							if infectionDiseases.ItemId == 101380303 || infectionDiseases.ItemId == 101385606 {
								infection.Hbsab = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbsab = 1
								}
							}
							// HBeAg 乙肝病毒e抗原;
							if infectionDiseases.ItemId == 101380304 || infectionDiseases.ItemId == 101385605 {
								infection.Hbeag = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbeag = 1
								}
							}
							// HBeAb 乙型肝炎E抗体;
							if infectionDiseases.ItemId == 101380305 || infectionDiseases.ItemId == 101385604 {
								infection.Hbeab = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbeab = 1
								}
							}
							// HBcAb  乙肝核心抗体;
							if infectionDiseases.ItemId == 101380306 || infectionDiseases.ItemId == 101385603 {
								infection.Hbcab = 0
								if strings.Contains(infectionDiseases.InspectValue, "阳性") {
									infection.Hbcab = 1
								}
							}
						}
						infectionList = append(infectionList, infection)
					}
				}
			}
		}

		if org_id == 9504 {
			inspections, _ := service.FindOrgInspectionGroupLgey(org_id, sync_time, time.Now().Unix(), patient.ID)
			if len(inspections) > 0 {
				for _, insp := range inspections {
					inspection_arr, _ := service.FindOrgInspectionGroupTwo(org_id, insp.InspectDate, patient.ID)
					if len(inspection_arr) > 0 {
						infection := &sz.TempHdInfection{
							Sn:         strconv.FormatInt(patient.ID, 10),
							HospitalId: hospital_id,
							PatientNk:  strconv.FormatInt(patient.ID, 10),
							Hbv:        9,
							Hcv:        9,
							Rpr:        9,
							Hiv:        9,
							Hbsag:      9,
							Hbsab:      9,
							Hbeag:      9,
							Hbeab:      9,
							Hbcab:      9,
							CheckDate:  time.Unix(patient.CreatedTime, 0),
							DoctorId:   strconv.FormatInt(patient.RegistrarsId, 10),
							CreateTime: time.Now(),
							Sjscsj:     time.Now(),
							Xgbz:       0,
						}

						for _, infectionDiseases := range inspection_arr {
							infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
							if infectionDiseases.ItemId == 60 {
								infection.Hcv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hcv = 1
								}
							}
							if infectionDiseases.ItemId == 62 {
								infection.Hbsag = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbsag = 1
								}
							}

							if infectionDiseases.ItemId == 63 {
								infection.Hbsab = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbsab = 1
								}
							}

							if infectionDiseases.ItemId == 64 {
								infection.Hbeag = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbeag = 1
								}
							}

							if infectionDiseases.ItemId == 65 {
								infection.Hbeab = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbeab = 1
								}
							}

							if infectionDiseases.ItemId == 66 {
								infection.Hbcab = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbcab = 1
								}
							}

							if infectionDiseases.ItemId == 111 {
								infection.Hiv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hiv = 1
								}
							}

							if infectionDiseases.ItemId == 112 {
								infection.Rpr = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Rpr = 1
								}
							}

							if infectionDiseases.ItemId == 178 {
								infection.Hbv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbv = 1
								}
							}

							if infectionDiseases.ItemId == 179 {
								infection.Hcv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hcv = 1
								}
							}

						}
						infectionList = append(infectionList, infection)
					}
				}
			}
		}

		if org_id == 10580 {
			inspections, _ := service.FindOrgInspectionGroupOne(org_id, sync_time, time.Now().Unix(), patient.ID)
			if len(inspections) > 0 {
				for _, insp := range inspections {
					inspection_arr, _ := service.FindOrgInspectionGroupTwo(org_id, insp.InspectDate, patient.ID)
					if len(inspection_arr) > 0 {
						infection := &sz.TempHdInfection{
							Sn:         strconv.FormatInt(patient.ID, 10),
							HospitalId: hospital_id,
							PatientNk:  strconv.FormatInt(patient.ID, 10),
							Hbv:        9,
							Hcv:        9,
							Rpr:        9,
							Hiv:        9,
							Hbsag:      9,
							Hbsab:      9,
							Hbeag:      9,
							Hbeab:      9,
							Hbcab:      9,
							CheckDate:  time.Unix(patient.CreatedTime, 0),
							DoctorId:   strconv.FormatInt(patient.RegistrarsId, 10),
							CreateTime: time.Now(),
							Sjscsj:     time.Now(),
							Xgbz:       0,
						}

						for _, infectionDiseases := range inspection_arr {
							infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
							if infectionDiseases.ItemId == 60 {
								infection.Hcv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hcv = 1
								}
							}
							if infectionDiseases.ItemId == 62 {
								infection.Hbsag = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbsag = 1
								}
							}

							if infectionDiseases.ItemId == 63 {
								infection.Hbsab = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbsab = 1
								}
							}

							if infectionDiseases.ItemId == 64 {
								infection.Hbeag = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbeag = 1
								}
							}

							if infectionDiseases.ItemId == 65 {
								infection.Hbeab = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbeab = 1
								}
							}

							if infectionDiseases.ItemId == 66 {
								infection.Hbcab = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbcab = 1
								}
							}

							if infectionDiseases.ItemId == 111 {
								infection.Hiv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hiv = 1
								}
							}

							if infectionDiseases.ItemId == 112 {
								infection.Rpr = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Rpr = 1
								}
							}

							if infectionDiseases.ItemId == 178 {
								infection.Hbv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hbv = 1
								}
							}

							if infectionDiseases.ItemId == 179 {
								infection.Hcv = 0
								if infectionDiseases.InspectValue == "阳性" {
									infection.Hcv = 1
								}
							}

						}
						infectionList = append(infectionList, infection)
					}
				}
			}
		}

	}

	if len(infectionList) > 0 {
		err := service.CreateInfection(infectionList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       59,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}



func SyncInfectionByID( org_id int64,ids []int64) {

	org := &sz.DataUploadConfig{
		OrgId:          10138,
		ProvinceId:     19,
		CityId:         291,
		DepartmentName: "深圳市百霖血液透析中心",
		HospitalId:     "MA5DB4KB6",
		InstType:       1,
		DbHost:         "127.0.0.1",
		DbPort:         "1433",
		DbPass:         "1Q2W3e4r!@#$",
		DbUser:         "adapter",
		DbName:         "adapter_2019",
	}
	hospital_id := org.HospitalId
	if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
		orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
		if err != nil {
			utils.ErrorLog("创建数据库连接失败:%v", err)
			return
		}

		// 第一步：根据机构id获取上次同步时间
		//syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 59)
		var sync_time int64
		//if syncLastInfo.ID > 0 {
		//	sync_time = syncLastInfo.SyncTime
		//} else {
		//	sync_time = 0
		//}
		sync_time = 1704038400

		//同步患者
		patients, _ := service.FindOrgPatientDataTwo(org_id,ids)
		var infectionList []*sz.TempHdInfection
		for _, patient := range patients {
			//	查询有没有做传染病检查并返回检验检查时间
			if org_id == 9598 {
				// 龙岗二院
				inspections, _ := service.FindOrgInspectionGroupLgey(org_id, sync_time, time.Now().Unix(), patient.ID)
				if len(inspections) > 0 {
					for _, insp := range inspections {
						inspection_arr, _ := service.FindOrgInspectionGroupLgeyTwo(org_id, insp.InspectDate, patient.ID)
						if len(inspection_arr) > 0 {
							infection := &sz.TempHdInfection{
								Sn:         strconv.FormatInt(patient.ID, 10),
								HospitalId: hospital_id,
								PatientNk:  strconv.FormatInt(patient.ID, 10),
								Hbv:        9,
								Hcv:        9,
								Rpr:        9,
								Hiv:        9,
								Hbsag:      9,
								Hbsab:      9,
								Hbeag:      9,
								Hbeab:      9,
								Hbcab:      9,
								CheckDate:  time.Unix(insp.InspectDate, 0),
								DoctorId:   "599",
								CreateTime: time.Now(),
								Sjscsj:     time.Now(),
								Xgbz:       0,
							}

							for _, infectionDiseases := range inspection_arr {
								infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
								// 乙肝
								if len(infectionDiseases.InspectValue) > 0 {
									if infectionDiseases.ItemId == 62 || infectionDiseases.ItemId == 18001056 || infectionDiseases.ItemId == 18001049 || infectionDiseases.ItemId == 18006001 || infectionDiseases.ItemId == 18131005 || infectionDiseases.ItemId == 18142001 || infectionDiseases.ItemId == 18169001 || infectionDiseases.ItemId == 18245006 || infectionDiseases.ItemId == 178 {
										infection.Hbv = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hbv = 1
										}
									}
									// 丙肝
									if infectionDiseases.ItemId == 60 || infectionDiseases.ItemId == 18006002 || infectionDiseases.ItemId == 18130001 || infectionDiseases.ItemId == 18143001 || infectionDiseases.ItemId == 18178001 || infectionDiseases.ItemId == 18245001 || infectionDiseases.ItemId == 179 {
										infection.Hcv = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hcv = 1
										}
									}
									// 梅毒
									if infectionDiseases.ItemId == 112 || infectionDiseases.ItemId == 18001055 || infectionDiseases.ItemId == 18008002 || infectionDiseases.ItemId == 18044001 || infectionDiseases.ItemId == 18051001 || infectionDiseases.ItemId == 18051003 || infectionDiseases.ItemId == 18065001 || infectionDiseases.ItemId == 18065003 || infectionDiseases.ItemId == 18076001 || infectionDiseases.ItemId == 18076003 || infectionDiseases.ItemId == 18078001 || infectionDiseases.ItemId == 18078004 || infectionDiseases.ItemId == 18131007 || infectionDiseases.ItemId == 18141001 || infectionDiseases.ItemId == 18167001 || infectionDiseases.ItemId == 18175002 || infectionDiseases.ItemId == 18176001 || infectionDiseases.ItemId == 18176002 || infectionDiseases.ItemId == 18176004 || infectionDiseases.ItemId == 18230002 || infectionDiseases.ItemId == 18241002 || infectionDiseases.ItemId == 18246002 || infectionDiseases.ItemId == 18246003 || infectionDiseases.ItemId == 112 {
										infection.Rpr = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Rpr = 1
										}
									}
									// 艾滋病
									if infectionDiseases.ItemId == 111 || infectionDiseases.ItemId == 18008001 || infectionDiseases.ItemId == 18001054 || infectionDiseases.ItemId == 18131006 || infectionDiseases.ItemId == 18044002 || infectionDiseases.ItemId == 18051002 || infectionDiseases.ItemId == 18065002 || infectionDiseases.ItemId == 18076002 || infectionDiseases.ItemId == 18078003 || infectionDiseases.ItemId == 18114001 || infectionDiseases.ItemId == 18175001 || infectionDiseases.ItemId == 18176003 || infectionDiseases.ItemId == 18230001 || infectionDiseases.ItemId == 18241001 || infectionDiseases.ItemId == 18246001 || infectionDiseases.ItemId == 111 {
										infection.Rpr = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Rpr = 1
										}
									}
									// HBsAg 乙型肝炎表面抗原;
									if infectionDiseases.ItemId == 62 || infectionDiseases.ItemId == 18006001 || infectionDiseases.ItemId == 18131005 || infectionDiseases.ItemId == 18142001 || infectionDiseases.ItemId == 18169001 || infectionDiseases.ItemId == 18245006 || infectionDiseases.ItemId == 62 {
										infection.Hbsag = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hbsag = 1
										}
									}
									// HBsAb  乙型肝炎表面抗体;
									if infectionDiseases.ItemId == 63 || infectionDiseases.ItemId == 18006006 || infectionDiseases.ItemId == 18131004 || infectionDiseases.ItemId == 18142005 || infectionDiseases.ItemId == 18169002 || infectionDiseases.ItemId == 18245005 || infectionDiseases.ItemId == 63 {
										infection.Hbsab = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hbsab = 1
										}
									}
									// HBeAg 乙肝病毒e抗原;
									if infectionDiseases.ItemId == 64 || infectionDiseases.ItemId == 18006003 || infectionDiseases.ItemId == 18131003 || infectionDiseases.ItemId == 18142004 || infectionDiseases.ItemId == 18169003 || infectionDiseases.ItemId == 18245004 || infectionDiseases.ItemId == 64 {
										infection.Hbeag = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hbeag = 1
										}
									}
									// HBeAb 乙型肝炎E抗体;
									if infectionDiseases.ItemId == 65 || infectionDiseases.ItemId == 18006004 || infectionDiseases.ItemId == 18131002 || infectionDiseases.ItemId == 18142003 || infectionDiseases.ItemId == 18169004 || infectionDiseases.ItemId == 18245003 || infectionDiseases.ItemId == 65 {
										infection.Hbeab = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hbeab = 1
										}
									}
									// HBcAb  乙肝核心抗体;
									if infectionDiseases.ItemId == 66 || infectionDiseases.ItemId == 18006005 || infectionDiseases.ItemId == 18131001 || infectionDiseases.ItemId == 18142002 || infectionDiseases.ItemId == 18169005 || infectionDiseases.ItemId == 18245002 || infectionDiseases.ItemId == 66 {
										infection.Hbcab = 0
										if strings.Contains(infectionDiseases.InspectValue, "阳性") {
											infection.Hbcab = 1
										}
									}
								}
							}
							infectionList = append(infectionList, infection)
						}
					}
				}
			}

			if org_id == 10138 {
				// 深圳百霖
				inspections, _ := service.FindOrgInspectionGroupSzbl(org_id, sync_time, time.Now().Unix(), patient.ID)
				if len(inspections) > 0 {
					for _, insp := range inspections {
						inspection_arr, _ := service.FindOrgInspectionGroupSzblTwo(org_id, insp.InspectDate, patient.ID)
						if len(inspection_arr) > 0 {
							infection := &sz.TempHdInfection{
								Sn:         strconv.FormatInt(patient.ID, 10),
								HospitalId: org.HospitalId,
								PatientNk:  strconv.FormatInt(patient.ID, 10),
								Hbv:        9,
								Hcv:        9,
								Rpr:        9,
								Hiv:        9,
								Hbsag:      9,
								Hbsab:      9,
								Hbeag:      9,
								Hbeab:      9,
								Hbcab:      9,
								CheckDate:  time.Unix(insp.InspectDate, 0),
								DoctorId:   "2232",
								CreateTime: time.Now(),
								Sjscsj:     time.Now(),
								Xgbz:       0,
							}

							for _, infectionDiseases := range inspection_arr {
								infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
								infection.CheckDate = time.Unix(infectionDiseases.InspectDate, 0)
								// 乙肝
								if infectionDiseases.ItemId == 101380001 || infectionDiseases.ItemId == 101387010 {
									infection.Hbv = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbv = 1
									}
								}
								// 丙肝
								if infectionDiseases.ItemId == 101380006 || infectionDiseases.ItemId == 101387004 {
									infection.Hcv = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hcv = 1
									}
								}
								// 梅毒
								if infectionDiseases.ItemId == 101380009 || infectionDiseases.ItemId == 101387001 {
									infection.Rpr = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Rpr = 1
									}
								}
								// 艾滋病
								if infectionDiseases.ItemId == 101380010 || infectionDiseases.ItemId == 101387005 {
									infection.Rpr = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Rpr = 1
									}
								}
								// HBsAg 乙型肝炎表面抗原;
								if infectionDiseases.ItemId == 101380001 || infectionDiseases.ItemId == 101387010 {
									infection.Hbsag = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbsag = 1
									}
								}
								// HBsAb  乙型肝炎表面抗体;
								if infectionDiseases.ItemId == 101380002 || infectionDiseases.ItemId == 101387009 {
									infection.Hbsab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbsab = 1
									}
								}
								// HBeAg 乙肝病毒e抗原;
								if infectionDiseases.ItemId == 101380003 || infectionDiseases.ItemId == 101387008 {
									infection.Hbeag = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbeag = 1
									}
								}
								// HBeAb 乙型肝炎E抗体;
								if infectionDiseases.ItemId == 101380004 || infectionDiseases.ItemId == 101387007 {
									infection.Hbeab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbeab = 1
									}
								}
								// HBcAb  乙肝核心抗体;
								if infectionDiseases.ItemId == 101380005 || infectionDiseases.ItemId == 101387006 {
									infection.Hbcab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbcab = 1
									}
								}
							}
							infectionList = append(infectionList, infection)
						}
					}
				}
			}

			if org_id == 10278 {
				// 深圳百霖贝尔
				inspections, _ := service.FindOrgInspectionGroupSzblbr(org_id, sync_time, time.Now().Unix(), patient.ID)
				if len(inspections) > 0 {
					for _, insp := range inspections {
						inspection_arr, _ := service.FindOrgInspectionGroupSzblbrTwo(org_id, insp.InspectDate, patient.ID)
						if len(inspection_arr) > 0 {
							infection := &sz.TempHdInfection{
								Sn:         strconv.FormatInt(patient.ID, 10),
								HospitalId: hospital_id,
								PatientNk:  strconv.FormatInt(patient.ID, 10),
								Hbv:        9,
								Hcv:        9,
								Rpr:        9,
								Hiv:        9,
								Hbsag:      9,
								Hbsab:      9,
								Hbeag:      9,
								Hbeab:      9,
								Hbcab:      9,
								CheckDate:  time.Unix(insp.InspectDate, 0),
								DoctorId:   "751",
								CreateTime: time.Now(),
								Sjscsj:     time.Now(),
								Xgbz:       0,
							}

							for _, infectionDiseases := range inspection_arr {
								infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
								infection.CheckDate = time.Unix(infectionDiseases.InspectDate, 0)
								// 乙肝
								if infectionDiseases.ItemId == 101380302 || infectionDiseases.ItemId == 101385607 {
									infection.Hbv = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbv = 1
									}
								}
								// 丙肝
								if infectionDiseases.ItemId == 101380307 || infectionDiseases.ItemId == 101385609 {
									infection.Hcv = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hcv = 1
									}
								}
								// 梅毒
								if infectionDiseases.ItemId == 101380009 || infectionDiseases.ItemId == 101385601 {
									infection.Rpr = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Rpr = 1
									}
								}
								// 艾滋病
								if infectionDiseases.ItemId == 101380301 || infectionDiseases.ItemId == 101380301 {
									infection.Rpr = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Rpr = 1
									}
								}
								// HBsAg 乙型肝炎表面抗原;
								if infectionDiseases.ItemId == 101380302 || infectionDiseases.ItemId == 101385607 {
									infection.Hbsag = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbsag = 1
									}
								}
								// HBsAb  乙型肝炎表面抗体;
								if infectionDiseases.ItemId == 101380303 || infectionDiseases.ItemId == 101385606 {
									infection.Hbsab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbsab = 1
									}
								}
								// HBeAg 乙肝病毒e抗原;
								if infectionDiseases.ItemId == 101380304 || infectionDiseases.ItemId == 101385605 {
									infection.Hbeag = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbeag = 1
									}
								}
								// HBeAb 乙型肝炎E抗体;
								if infectionDiseases.ItemId == 101380305 || infectionDiseases.ItemId == 101385604 {
									infection.Hbeab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbeab = 1
									}
								}
								// HBcAb  乙肝核心抗体;
								if infectionDiseases.ItemId == 101380306 || infectionDiseases.ItemId == 101385603 {
									infection.Hbcab = 0
									if strings.Contains(infectionDiseases.InspectValue, "阳性") {
										infection.Hbcab = 1
									}
								}
							}
							infectionList = append(infectionList, infection)
						}
					}
				}
			}

			if org_id == 9504 {
				inspections, _ := service.FindOrgInspectionGroupLgey(org_id, sync_time, time.Now().Unix(), patient.ID)
				if len(inspections) > 0 {
					for _, insp := range inspections {
						inspection_arr, _ := service.FindOrgInspectionGroupTwo(org_id, insp.InspectDate, patient.ID)
						if len(inspection_arr) > 0 {
							infection := &sz.TempHdInfection{
								Sn:         strconv.FormatInt(patient.ID, 10),
								HospitalId: hospital_id,
								PatientNk:  strconv.FormatInt(patient.ID, 10),
								Hbv:        9,
								Hcv:        9,
								Rpr:        9,
								Hiv:        9,
								Hbsag:      9,
								Hbsab:      9,
								Hbeag:      9,
								Hbeab:      9,
								Hbcab:      9,
								CheckDate:  time.Unix(patient.CreatedTime, 0),
								DoctorId:   strconv.FormatInt(patient.RegistrarsId, 10),
								CreateTime: time.Now(),
								Sjscsj:     time.Now(),
								Xgbz:       0,
							}

							for _, infectionDiseases := range inspection_arr {
								infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
								if infectionDiseases.ItemId == 60 {
									infection.Hcv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hcv = 1
									}
								}
								if infectionDiseases.ItemId == 62 {
									infection.Hbsag = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbsag = 1
									}
								}

								if infectionDiseases.ItemId == 63 {
									infection.Hbsab = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbsab = 1
									}
								}

								if infectionDiseases.ItemId == 64 {
									infection.Hbeag = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbeag = 1
									}
								}

								if infectionDiseases.ItemId == 65 {
									infection.Hbeab = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbeab = 1
									}
								}

								if infectionDiseases.ItemId == 66 {
									infection.Hbcab = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbcab = 1
									}
								}

								if infectionDiseases.ItemId == 111 {
									infection.Hiv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hiv = 1
									}
								}

								if infectionDiseases.ItemId == 112 {
									infection.Rpr = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Rpr = 1
									}
								}

								if infectionDiseases.ItemId == 178 {
									infection.Hbv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbv = 1
									}
								}

								if infectionDiseases.ItemId == 179 {
									infection.Hcv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hcv = 1
									}
								}

							}
							infectionList = append(infectionList, infection)
						}
					}
				}
			}

			if org_id == 10580 {
				inspections, _ := service.FindOrgInspectionGroupOne(org_id, sync_time, time.Now().Unix(), patient.ID)
				if len(inspections) > 0 {
					for _, insp := range inspections {
						inspection_arr, _ := service.FindOrgInspectionGroupTwo(org_id, insp.InspectDate, patient.ID)
						if len(inspection_arr) > 0 {
							infection := &sz.TempHdInfection{
								Sn:         strconv.FormatInt(patient.ID, 10),
								HospitalId: hospital_id,
								PatientNk:  strconv.FormatInt(patient.ID, 10),
								Hbv:        9,
								Hcv:        9,
								Rpr:        9,
								Hiv:        9,
								Hbsag:      9,
								Hbsab:      9,
								Hbeag:      9,
								Hbeab:      9,
								Hbcab:      9,
								CheckDate:  time.Unix(patient.CreatedTime, 0),
								DoctorId:   strconv.FormatInt(patient.RegistrarsId, 10),
								CreateTime: time.Now(),
								Sjscsj:     time.Now(),
								Xgbz:       0,
							}

							for _, infectionDiseases := range inspection_arr {
								infection.Sn = strconv.FormatInt(infectionDiseases.ID, 10)
								if infectionDiseases.ItemId == 60 {
									infection.Hcv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hcv = 1
									}
								}
								if infectionDiseases.ItemId == 62 {
									infection.Hbsag = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbsag = 1
									}
								}

								if infectionDiseases.ItemId == 63 {
									infection.Hbsab = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbsab = 1
									}
								}

								if infectionDiseases.ItemId == 64 {
									infection.Hbeag = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbeag = 1
									}
								}

								if infectionDiseases.ItemId == 65 {
									infection.Hbeab = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbeab = 1
									}
								}

								if infectionDiseases.ItemId == 66 {
									infection.Hbcab = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbcab = 1
									}
								}

								if infectionDiseases.ItemId == 111 {
									infection.Hiv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hiv = 1
									}
								}

								if infectionDiseases.ItemId == 112 {
									infection.Rpr = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Rpr = 1
									}
								}

								if infectionDiseases.ItemId == 178 {
									infection.Hbv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hbv = 1
									}
								}

								if infectionDiseases.ItemId == 179 {
									infection.Hcv = 0
									if infectionDiseases.InspectValue == "阳性" {
										infection.Hcv = 1
									}
								}

							}
							infectionList = append(infectionList, infection)
						}
					}
				}
			}

		}
		if len(infectionList) > 0 {
			err := service.CreateInfection(infectionList, orgDb)
			if err == nil {
				// 第三步：同步成功后，添加同步记录
				upload := &sz.DataUpload{
					SyncType:       59,
					OrgId:          org_id,
					SyncTime:       time.Now().Unix(),
					SyncResultType: 1,
					CreateTime:     time.Now().Unix(),
					UpdateTime:     time.Now().Unix(),
				}
				err := service.CreateUploadRecord(upload)
				if err != nil {
					utils.ErrorLog("%v", err)
				}
			} else {
				//错误处理
			}
		}
		service.CloseDB(orgDb)
	}
	return

}


// 透析并发症记录表（T_HD_COMPLICATION）
func SyncComplication(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 60)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1662134400
	}

	//同步监测记录
	var complicationList []*sz.TempHdComplication
	monitors, _ := service.FindOrgMonitorRecordByLike(org_id, "%肌肉痉挛%", sync_time, time.Now().Unix())
	for _, monitor := range monitors {
		complication := &sz.TempHdComplication{
			Sn:           strconv.FormatInt(monitor.ID, 10),
			HospitalId:   hospital_id,
			PatientNk:    strconv.FormatInt(monitor.PatientId, 10),
			DialysisId:   monitor.DialysisOrderId,
			MonitorId:    monitor.ID,
			NeopathyTime: 1,
			NeopathyType: "3",
			NeopathyDesc: monitor.Symptom,
			CreateTime:   time.Unix(monitor.CreatedTime, 0),
			Sjscsj:       time.Now(),
			Xgbz:         0,
		}
		complicationList = append(complicationList, complication)
	}

	monitorones, _ := service.FindOrgMonitorRecordByLike(org_id, "%胸痛%", sync_time, time.Now().Unix())
	for _, monitor := range monitorones {
		complicationone := &sz.TempHdComplication{
			Sn:           strconv.FormatInt(monitor.ID, 10),
			HospitalId:   hospital_id,
			PatientNk:    strconv.FormatInt(monitor.PatientId, 10),
			DialysisId:   monitor.DialysisOrderId,
			MonitorId:    monitor.ID,
			NeopathyTime: 1,
			NeopathyType: "6",
			NeopathyDesc: monitor.Symptom,
			CreateTime:   time.Unix(monitor.CreatedTime, 0),
			Sjscsj:       time.Now(),
			Xgbz:         0,
		}
		complicationList = append(complicationList, complicationone)
	}

	monitortwos, _ := service.FindOrgMonitorRecordByLike(org_id, "%恶心%", sync_time, time.Now().Unix())
	for _, monitor := range monitortwos {
		complicationtwo := &sz.TempHdComplication{
			Sn:           strconv.FormatInt(monitor.ID, 10),
			HospitalId:   hospital_id,
			PatientNk:    strconv.FormatInt(monitor.PatientId, 10),
			DialysisId:   monitor.DialysisOrderId,
			MonitorId:    monitor.ID,
			NeopathyTime: 1,
			NeopathyType: "7",
			NeopathyDesc: monitor.Symptom,
			CreateTime:   time.Unix(monitor.CreatedTime, 0),
			Sjscsj:       time.Now(),
			Xgbz:         0,
		}
		complicationList = append(complicationList, complicationtwo)
	}

	monitorfours, _ := service.FindOrgMonitorRecordByLike(org_id, "%头痛%", sync_time, time.Now().Unix())
	for _, monitor := range monitorfours {
		complicationfour := &sz.TempHdComplication{
			Sn:           strconv.FormatInt(monitor.ID, 10),
			HospitalId:   hospital_id,
			PatientNk:    strconv.FormatInt(monitor.PatientId, 10),
			DialysisId:   monitor.DialysisOrderId,
			MonitorId:    monitor.ID,
			NeopathyTime: 1,
			NeopathyType: "11",
			NeopathyDesc: monitor.Symptom,
			CreateTime:   time.Unix(monitor.CreatedTime, 0),
			Sjscsj:       time.Now(),
			Xgbz:         0,
		}
		complicationList = append(complicationList, complicationfour)
	}

	monitorthrees, _ := service.FindOrgMonitorRecordByLike(org_id, "%发热%", sync_time, time.Now().Unix())
	for _, monitor := range monitorthrees {
		complicationthree := &sz.TempHdComplication{
			Sn:           strconv.FormatInt(monitor.ID, 10),
			HospitalId:   hospital_id,
			PatientNk:    strconv.FormatInt(monitor.PatientId, 10),
			DialysisId:   monitor.DialysisOrderId,
			MonitorId:    monitor.ID,
			NeopathyTime: 1,
			NeopathyType: "15",
			NeopathyDesc: monitor.Symptom,
			CreateTime:   time.Unix(monitor.CreatedTime, 0),
			Sjscsj:       time.Now(),
			Xgbz:         0,
		}
		complicationList = append(complicationList, complicationthree)
	}

	if len(complicationList) > 0 {
		err := service.CreateComplication(complicationList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       60,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SyncLisReportBc(rdb *gorm.DB, org_id int64, hospital_id string) {
	var sync_time int64
	sync_time = 1704038400
	inspections, _ := service.FindOrgInspection(org_id, sync_time, time.Now().Unix())
	var lisReportList []*sz.TempHdLisReport
	tempFlag := 0
	for _, inspection := range inspections {
		tempFlag = 0
		LabSno := strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10)
		// 判断该检查是否已经同步过
		hdLisReportInfo, _ := service.FindLisReportByLAB(rdb, LabSno)
		if len(hdLisReportInfo) > 0 {
			tempFlag = 0
		} else {
			tempFlag = 1
		}
		if tempFlag == 1 {
			lisReport := &sz.TempHdLisReport{
				LabSno:          strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10),
				HospitalId:      hospital_id,
				PatientNk:       strconv.FormatInt(inspection.PatientId, 10),
				ReportDate:      time.Unix(inspection.InspectDate, 0),
				CheckDate:       "1",
				JzNo:            inspection.Patients.AdmissionNumber,
				MzFlag:          "1",
				ZyNo:            "-",
				MzNo:            inspection.Patients.AdmissionNumber,
				DepartmentCode:  "1001",
				DepartmentName:  "血透中心",
				CardNo:          inspection.Patients.IdCardNo,
				CardType:        "9",
				PatientName:     inspection.Patients.Name,
				DepCode:         "A03.05",
				DepName:         "血透中心",
				InspectedType:   "1",
				ReportCategry:   inspection.ProjectName,
				ApplicationName: inspection.ProjectName,
				ApplicationType: strconv.FormatInt(inspection.ProjectId, 10),
				CheckName:       inspection.ProjectName,
				CheckItemName:   inspection.ProjectName,
				CheckItemCode:   strconv.FormatInt(inspection.ProjectId, 10),
				RecordCcount:    0,
				CheckResult:     "完成",
				DiagnoseName:    "-",
				CreateTime:      time.Unix(inspection.CreatedTime, 0),
				Sjscsj:          time.Now(),
				Xgbz:            0,
			}
			lisReportList = append(lisReportList, lisReport)
		} else {
			continue
		}
	}
	if len(lisReportList) > 0 {
		err := service.CreateLisReport(lisReportList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       61,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 血透患者检测结果表（T_HD_LIS_REPORT）
func SyncLisReport(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 61)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1672502400
	}

	//同步监测记录
	inspections, _ := service.FindOrgInspection(org_id, sync_time, time.Now().Unix())
	var lisReportList []*sz.TempHdLisReport
	tempFlag := 1
	for _, inspection := range inspections {
		tempFlag = 1
		// for _, tempReport := range lisReportList {
		// 	// fmt.Println("2")
		// 	if tempReport.ReportDate == time.Unix(inspection.InspectDate, 0) && tempReport.ApplicationType == strconv.FormatInt(inspection.ProjectId, 10) && tempReport.PatientNk == strconv.FormatInt(inspection.PatientId, 10) {
		// 		tempFlag = 0
		// 		break
		// 	} else {
		// 		continue
		// 	}
		// }
		if tempFlag == 1 {
			lisReport := &sz.TempHdLisReport{
				LabSno:          strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10),
				HospitalId:      hospital_id,
				PatientNk:       strconv.FormatInt(inspection.PatientId, 10),
				ReportDate:      time.Unix(inspection.InspectDate, 0),
				CheckDate:       "1",
				JzNo:            inspection.Patients.AdmissionNumber,
				MzFlag:          "1",
				ZyNo:            "-",
				MzNo:            inspection.Patients.AdmissionNumber,
				DepartmentCode:  "1001",
				DepartmentName:  "血透中心",
				CardNo:          inspection.Patients.IdCardNo,
				CardType:        "9",
				PatientName:     inspection.Patients.Name,
				DepCode:         "A03.05",
				DepName:         "血透中心",
				InspectedType:   "1",
				ReportCategry:   inspection.ProjectName,
				ApplicationName: inspection.ProjectName,
				ApplicationType: strconv.FormatInt(inspection.ProjectId, 10),
				CheckName:       inspection.ProjectName,
				CheckItemName:   inspection.ProjectName,
				CheckItemCode:   strconv.FormatInt(inspection.ProjectId, 10),
				RecordCcount:    0,
				CheckResult:     "完成",
				DiagnoseName:    "-",
				CreateTime:      time.Unix(inspection.CreatedTime, 0),
				Sjscsj:          time.Now(),
				Xgbz:            0,
			}
			lisReportList = append(lisReportList, lisReport)
		} else {
			continue
		}
	}

	if len(lisReportList) > 0 {
		err := service.CreateLisReport(lisReportList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       61,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SyncLisIndicatorsBcUpdate(rdb *gorm.DB, org_id int64, hospital_id string) {
	var sync_time int64
	sync_time = 1704038400

	//同步监测记录
	inspections, _ := service.FindOrgInspectionThree(org_id, sync_time, time.Now().Unix(), "101380701")
	for _, inspection := range inspections {
		LabSno := strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10)
		// 判断该检查是否已经同步过
		service.FindLisINDICATORSByNoUpdate(rdb, LabSno, strconv.FormatInt(inspection.ID, 10), inspection.InspectValue, inspection.XtInspectionReference.Unit, time.Now())

		//if len(hdLisReportInfo.InspectedResultNo) > 0 {
		//	utils.InfoLog("1111111%v:", hdLisReportInfo)
		//	if len(hdLisReportInfo.InspectedResultNo) > 0 {
		//		hdLisReportInfo.InspectedResultDesc = inspection.InspectValue
		//		hdLisReportInfo.InspectedResultValue = inspection.InspectValue
		//		hdLisReportInfo.InspectedResultUnit = inspection.XtInspectionReference.Unit
		//		hdLisReportInfo.UnitType = inspection.XtInspectionReference.Unit
		//		hdLisReportInfo.CreateTime = time.Now()
		//
		//		rdb.Save(&hdLisReportInfo)
		//	}
		//}
	}
}

func SyncLisIndicatorsBc(rdb *gorm.DB, org_id int64, hospital_id string) {
	var sync_time int64
	sync_time = 1704038400

	//同步监测记录
	inspections, _ := service.FindOrgInspectionTwo(org_id, sync_time, time.Now().Unix())
	var lisIndicatorsList []*sz.TempHdLisIndicators
	tempFlag := 0
	for _, inspection := range inspections {
		tempFlag = 0
		LabSno := strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10)
		// 判断该检查是否已经同步过
		hdLisReportInfo, _ := service.FindLisINDICATORSByNo(rdb, LabSno, strconv.FormatInt(inspection.ID, 10))
		if len(hdLisReportInfo) > 0 {
			tempFlag = 0
		} else {
			tempFlag = 1
		}
		if tempFlag == 1 {
			lisIndicators := &sz.TempHdLisIndicators{
				InspectedResultNo:    strconv.FormatInt(inspection.ID, 10),
				HospitalId:           hospital_id,
				LabSno:               strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10),
				ReportDate:           time.Unix(inspection.InspectDate, 0),
				CheckDate:            time.Unix(inspection.InspectDate, 0),
				InspectedIndicate:    inspection.ProjectName,
				InspectedItemEnName:  strconv.FormatInt(inspection.ItemId, 10),
				InspectedItemCnName:  inspection.ItemName,
				InspectedResultDesc:  inspection.InspectValue,
				InspectedResultValue: inspection.InspectValue,
				InspectedResultUnit:  inspection.XtInspectionReference.Unit,
				RefRange:             "-",
				UnitType:             inspection.XtInspectionReference.Unit,
				InspectedResult:      5,
				CreateTime:           time.Unix(inspection.CreatedTime, 0),
				Sjscsj:               time.Now(),
				Xgbz:                 0,
			}
			if len(inspection.XtInspectionReference.Unit) == 0 {
				lisIndicators.InspectedResultUnit = "-"
				lisIndicators.UnitType = "-"
			}

			temp1, _ := strconv.ParseFloat(inspection.InspectValue, 32)

			if inspection.ItemId == 101380701 && inspection.OrgId == 10138 {
				lisIndicators.InspectedResultValue = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
				lisIndicators.InspectedResultDesc = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
				lisIndicators.InspectedResultUnit = "pg/mL"
			}

			if inspection.ItemId == 101380601 && inspection.OrgId == 10278 {
				lisIndicators.InspectedResultValue = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
				lisIndicators.InspectedResultDesc = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
				lisIndicators.InspectedResultUnit = "pg/mL"
			}

			if inspection.XtInspectionReference.RangeType == 1 {
				lisIndicators.RefRange = inspection.XtInspectionReference.RangeMin + "-" + inspection.XtInspectionReference.RangeMax
			} else {
				if len(inspection.XtInspectionReference.RangeOptions) == 0 {
					lisIndicators.RefRange = "-"
				} else {
					lisIndicators.RefRange = inspection.XtInspectionReference.RangeOptions
				}
			}
			lisIndicatorsList = append(lisIndicatorsList, lisIndicators)
		}
	}

	if len(lisIndicatorsList) > 0 {
		err := service.CreateLisIndicators(lisIndicatorsList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       62,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 血透患者检验结果指标表（T_HD_LIS_INDICATORS）
func SyncLisIndicators(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 62)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1672502400
	}

	//同步监测记录
	inspections, _ := service.FindOrgInspectionTwo(org_id, sync_time, time.Now().Unix())
	var lisIndicatorsList []*sz.TempHdLisIndicators

	for _, inspection := range inspections {
		lisIndicators := &sz.TempHdLisIndicators{
			InspectedResultNo:    strconv.FormatInt(inspection.ID, 10),
			HospitalId:           hospital_id,
			LabSno:               strconv.FormatInt(inspection.InspectDate, 10) + strconv.FormatInt(inspection.ProjectId, 10) + strconv.FormatInt(inspection.PatientId, 10),
			ReportDate:           time.Unix(inspection.InspectDate, 0),
			CheckDate:            time.Unix(inspection.InspectDate, 0),
			InspectedIndicate:    inspection.ProjectName,
			InspectedItemEnName:  strconv.FormatInt(inspection.ItemId, 10),
			InspectedItemCnName:  inspection.ItemName,
			InspectedResultDesc:  inspection.InspectValue,
			InspectedResultValue: inspection.InspectValue,
			InspectedResultUnit:  inspection.XtInspectionReference.Unit,
			RefRange:             "-",
			UnitType:             inspection.XtInspectionReference.Unit,
			InspectedResult:      5,
			CreateTime:           time.Unix(inspection.CreatedTime, 0),
			Sjscsj:               time.Now(),
			Xgbz:                 0,
		}
		if len(inspection.XtInspectionReference.Unit) == 0 {
			lisIndicators.InspectedResultUnit = "-"
			lisIndicators.UnitType = "-"
		}

		temp1, _ := strconv.ParseFloat(inspection.InspectValue, 32)

		if inspection.ItemId == 101380701 && inspection.OrgId == 10138 {
			lisIndicators.InspectedResultValue = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
			lisIndicators.InspectedResultDesc = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
			lisIndicators.InspectedResultUnit = "pg/mL"
		}

		if inspection.ItemId == 101380601 && inspection.OrgId == 10278 {
			lisIndicators.InspectedResultValue = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
			lisIndicators.InspectedResultDesc = strconv.FormatFloat(temp1*9.43, 'f', 1, 32)
			lisIndicators.InspectedResultUnit = "pg/mL"
		}

		if inspection.XtInspectionReference.RangeType == 1 {
			lisIndicators.RefRange = inspection.XtInspectionReference.RangeMin + "-" + inspection.XtInspectionReference.RangeMax
		} else {
			if len(inspection.XtInspectionReference.RangeOptions) == 0 {
				lisIndicators.RefRange = "-"
			} else {
				lisIndicators.RefRange = inspection.XtInspectionReference.RangeOptions
			}
		}
		lisIndicatorsList = append(lisIndicatorsList, lisIndicators)
	}

	if len(lisIndicatorsList) > 0 {
		err := service.CreateLisIndicators(lisIndicatorsList, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       62,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 同步透析机透析液细菌培养检测记录表（T_HD_DM_DIALYSATE_BC）
func SyncLisCulture(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 63)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步细菌培养数据
	dialysate, _ := service.FindOrgCulture(org_id, sync_time, time.Now().Unix())

	var lisHdLisCulture []*sz.TempHdLisCulture
	for _, item := range dialysate {
		lisDialysate := &sz.TempHdLisCulture{
			Sn:                      strconv.FormatInt(item.ID, 10),
			HospitalId:              hospital_id,
			EquitmentId:             strconv.FormatInt(item.EquitmentId, 10),
			InspectionTime:          time.Unix(item.SpelingDate, 0),
			IsQualified:             strconv.FormatInt(item.Modifications, 10),
			InspectedValue:          item.DetectionResult + "CFU/mL",
			IsSubstitutionQualified: strconv.FormatInt(item.Modifications, 10),
			CaseOrder:               item.Sort,
			CreateTime:              time.Unix(item.Ctime, 0),
			Sjscsj:                  time.Now(),
			Xgbz:                    "0",
		}
		lisHdLisCulture = append(lisHdLisCulture, lisDialysate)
	}

	if len(lisHdLisCulture) > 0 {
		err := service.CreateLisCulture(lisHdLisCulture, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       63,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 透析机透析液内毒素检测记录表（T_HD_DM_DIALYSATE_EN）
func SyncDialysate(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 64)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//同步透析机透析液内毒素检测记录表
	dialysate, _ := service.FindOrgDialysate(org_id, sync_time, time.Now().Unix())
	var lisHdLisDialysate []*sz.TempHdLisDialysate
	for _, item := range dialysate {
		lisDialysate := &sz.TempHdLisDialysate{
			Sn:             strconv.FormatInt(item.ID, 10),
			HospitalId:     hospital_id,
			EquitmentId:    strconv.FormatInt(item.EquitmentId, 10),
			InspectionTime: time.Unix(item.SamplingDate, 0),
			IsQualified:    strconv.FormatInt(item.Modifications, 10),
			InspectedValue: item.DetectionResultb + "EU/mL",
			CaseOrder:      item.Sort,
			CreateTime:     time.Unix(item.Ctime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           0,
		}
		lisHdLisDialysate = append(lisHdLisDialysate, lisDialysate)
	}
	if len(lisHdLisDialysate) > 0 {
		err := service.CreateLisDialysate(lisHdLisDialysate, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       64,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SyncLisBodyDetection(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 65)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//同步物表消毒记录表
	detection, _ := service.FindOrgBodyDetection(org_id, sync_time, time.Now().Unix())

	var lisHdLisBodyDisinfect []*sz.TempHdLisBodyDisinfect
	for _, item := range detection {
		disinfect := &sz.TempHdLisBodyDisinfect{
			Sn:             strconv.FormatInt(item.ID, 10),
			HospitalId:     hospital_id,
			IsQualified:    strconv.FormatInt(item.CheckOut, 10),
			InspectedValue: item.DetectionResult,
			InspectionTime: time.Unix(item.CreatedTime, 0),
			CaseOrder:      item.Sort,
			CreateTime:     time.Unix(item.Ctime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           "0",
		}
		lisHdLisBodyDisinfect = append(lisHdLisBodyDisinfect, disinfect)
	}
	if len(lisHdLisBodyDisinfect) > 0 {
		err := service.CreateBodyDisinfect(lisHdLisBodyDisinfect, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       65,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SyncLisWaterFc(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 66)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//透析用水游离氯检测表
	waterfc, _ := service.FindOrgWaterFc(org_id, sync_time, time.Now().Unix())
	var lisHdLisWaterFc []*sz.TempHdLisWaterFc
	for _, item := range waterfc {
		disinfect := &sz.TempHdLisWaterFc{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.PassExamination, 10),
			InspectedValue:  item.DetectionResultb,
			CaseOrder:       item.Sort,
			CreateTime:      time.Unix(item.Ctime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            0,
		}
		switch item.Specimenb {
		case 1:
			disinfect.WaterType = "3"
			break
		case 2:
			disinfect.WaterType = "2"
			break
		case 3:
			disinfect.WaterType = "2"
			break
		case 4:
			disinfect.WaterType = "1"
			break
		case 5:
			disinfect.WaterType = "1"
			break
		}

		lisHdLisWaterFc = append(lisHdLisWaterFc, disinfect)
	}
	if len(lisHdLisWaterFc) > 0 {
		err := service.CreateWaterFc(lisHdLisWaterFc, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       66,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 透析用水电解质检测表（T_HD_WATER_EL）
func SyncLisWaterEl(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2008)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//透析用水游离氯检测表
	waterfc, _ := service.FindOrgWaterEl(org_id, sync_time, time.Now().Unix())
	var lisHdLisWaterFc []*sz.TempHdLisWaterEl
	for _, item := range waterfc {
		disinfect := &sz.TempHdLisWaterEl{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			WaterType:       "3",
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.PassExamination, 10),
			InspectedValue:  item.Remakes,
			CaseOrder:       item.Sort,
			CreateTime:      time.Unix(item.Ctime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            0,
		}

		lisHdLisWaterFc = append(lisHdLisWaterFc, disinfect)
	}
	if len(lisHdLisWaterFc) > 0 {
		err := service.CreateWaterEl(lisHdLisWaterFc, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2008,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 透析用水电解质检测表（T_HD_WATER_EL）
func SyncLisWaterTe(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 2009)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//透析用水游离氯检测表
	waterfc, _ := service.FindOrgWaterEl(org_id, sync_time, time.Now().Unix())
	var lisHdLisWaterFc []*sz.TempHdLisWaterTe
	for _, item := range waterfc {
		disinfect := &sz.TempHdLisWaterTe{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			WaterType:       "3",
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.PassExamination, 10),
			CaseOrder:       item.Sort,
			CreateTime:      time.Unix(item.Ctime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            0,
		}

		lisHdLisWaterFc = append(lisHdLisWaterFc, disinfect)
	}
	if len(lisHdLisWaterFc) > 0 {
		err := service.CreateWaterTe(lisHdLisWaterFc, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       2009,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SynLisWaterNc(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 67)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//透析用水游离氯检测表
	waternc, _ := service.FindOrgWaterNc(org_id, sync_time, time.Now().Unix())
	var lisHdLisWaterNc []*sz.TempHdLisWaterNc
	for _, item := range waternc {
		disinfect := &sz.TempHdLisWaterNc{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.PassExamination, 10),
			InspectedValue:  item.DetectionResultb,
			CaseOrder:       item.Sort,
			CreateTime:      time.Unix(item.Ctime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            "0",
		}
		switch item.Specimenb {
		case 1:
			disinfect.WaterType = "3"
			break
		case 2:
			disinfect.WaterType = "2"
			break
		case 3:
			disinfect.WaterType = "2"
			break
		case 4:
			disinfect.WaterType = "1"
			break
		case 5:
			disinfect.WaterType = "1"
			break
		}
		lisHdLisWaterNc = append(lisHdLisWaterNc, disinfect)
	}
	if len(lisHdLisWaterNc) > 0 {
		err := service.CreateWaterNc(lisHdLisWaterNc, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       67,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SynLisWaterPh(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 68)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//透析用水PH值检测表
	waternc, _ := service.FindOrgWaterPh(org_id, sync_time, time.Now().Unix())
	var lisHdLisWaterPh []*sz.TempHdLisWaterPh
	for _, item := range waternc {
		disinfect := &sz.TempHdLisWaterPh{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.PassExamination, 10),
			InspectedValue:  item.DetectionResultb,
			CaseOrder:       item.Sort,
			CreateTime:      time.Unix(item.Ctime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            "0",
		}
		switch item.Specimenb {
		case 1:
			disinfect.WaterType = "3"
			break
		case 2:
			disinfect.WaterType = "2"
			break
		case 3:
			disinfect.WaterType = "2"
			break
		case 4:
			disinfect.WaterType = "1"
			break
		case 5:
			disinfect.WaterType = "1"
			break
		}
		lisHdLisWaterPh = append(lisHdLisWaterPh, disinfect)
	}
	if len(lisHdLisWaterPh) > 0 {
		err := service.CreateWaterPh(lisHdLisWaterPh, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       68,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SynListHadWater(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 69)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//透析用水PH值检测表
	waterwh, _ := service.FindOrgWaterWh(org_id, sync_time, time.Now().Unix())
	var lisHdLisWaterWh []*sz.TempHdLisWaterWh
	for _, item := range waterwh {
		disinfect := &sz.TempHdLisWaterWh{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.PassExamination, 10),
			InspectedValue:  item.DetectionResultb,
			CaseOrder:       item.Sort,
			CreateTime:      time.Unix(item.Ctime, 0),
			Sjscsj:          time.Now(),
			Xgbz:            "0",
		}
		switch item.Specimenb {
		case 1:
			disinfect.WaterType = "3"
			break
		case 2:
			disinfect.WaterType = "2"
			break
		case 3:
			disinfect.WaterType = "2"
			break
		case 4:
			disinfect.WaterType = "1"
			break
		case 5:
			disinfect.WaterType = "1"
			break
		}
		lisHdLisWaterWh = append(lisHdLisWaterWh, disinfect)
	}
	if len(lisHdLisWaterWh) > 0 {
		err := service.CreateWaterWh(lisHdLisWaterWh, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       69,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

func SynListHdCi(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 70)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//导管感染记录表
	hdci, _ := service.FindOrgHdCi(org_id, sync_time, time.Now().Unix())
	var temphdci []*sz.TempHdCi
	for _, item := range hdci {

		ci := &sz.TempHdCi{
			InfectSn:      strconv.FormatInt(item.ID, 10),
			HospitalId:    hospital_id,
			PatientNk:     strconv.FormatInt(item.PatientId, 10),
			AccessId:      strconv.FormatInt(item.ID, 10),
			CiType:        strconv.FormatInt(item.SequelaeType, 10),
			BloodCulture:  strconv.FormatInt(item.BloodCultupe, 10),
			InfectionDate: time.Unix(item.StartTime, 0),
			CreateTime:    time.Unix(item.Ctime, 0),
			Xgbz:          0,
			Sjscsj:        time.Now(),
		}

		temphdci = append(temphdci, ci)
	}
	if len(temphdci) > 0 {
		err := service.CreateHdCi(temphdci, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       70,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

func SynLisHdCiOutCome(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 71)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//导管感染记录表
	hdcioutcome, _ := service.FindOrgHdCiOutCome(org_id, sync_time, time.Now().Unix())
	var temphdcioutcome []*sz.TempHdCiOutCome
	for _, item := range hdcioutcome {

		outcome := &sz.TempHdCiOutCome{
			Sn:         strconv.FormatInt(item.ID, 10),
			HospitalId: hospital_id,
			InfectSn:   strconv.FormatInt(item.ID, 10),
			PatientNk:  strconv.FormatInt(item.PatientId, 10),

			SequelaeType: strconv.FormatInt(item.CiType, 10),
			Sjscsj:       time.Now(),
			Xgbz:         0,

			CreateTime: time.Unix(item.Ctime, 0),
			UpdateTime: time.Unix(item.Mtime, 0),
			Ylyl1:      "",
			Ylyl2:      "",
		}
		if outcome.SequelaeType == "0" {
			outcome.SequelaeType = "9"
		}

		temphdcioutcome = append(temphdcioutcome, outcome)
	}
	if len(temphdcioutcome) > 0 {
		err := service.CreateHdCiOutCome(temphdcioutcome, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       71,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

func SyncLisAirDetection(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 72)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//同步透析室空气消毒记录表
	detection, _ := service.FindOrgArialDetection(org_id, sync_time, time.Now().Unix())
	var lisHdLisAirDisinfect []*sz.TempHdLisAirDisinfect
	for _, item := range detection {
		disinfect := &sz.TempHdLisAirDisinfect{
			Sn:             strconv.FormatInt(item.ID, 10),
			HospitalId:     hospital_id,
			IsQualified:    strconv.FormatInt(item.CheckOut, 10),
			InspectedValue: item.DetectionResult,
			InspectionTime: time.Unix(item.CreatedTime, 0),
			CaseOrder:      item.Sort,
			CreateTime:     time.Unix(item.Ctime, 0),
			Sjscsj:         time.Now(),
			Xgbz:           "0",
		}
		lisHdLisAirDisinfect = append(lisHdLisAirDisinfect, disinfect)
	}
	if len(lisHdLisAirDisinfect) > 0 {
		err := service.CreateAirDisinfect(lisHdLisAirDisinfect, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       72,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

func SyncLisWaterBc(rdb *gorm.DB, org_id int64, hospital_id string) {

	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 73)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//同步细菌培养数据
	dialysate, _ := service.FindOrgCulture(org_id, sync_time, time.Now().Unix())

	var lisHdLisWaterBc []*sz.TempHdLisWaterBc
	for _, item := range dialysate {
		waterbc := &sz.TempHdLisWaterBc{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SpelingDate, 0),
			IsQualified:     strconv.FormatInt(item.Modifications, 10),
			InspectedValue:  item.DetectionResult,
			CaseOrder:       item.Sort,
			Sjscsj:          time.Now(),
			Xgbz:            "0",
			CreateTime:      time.Unix(item.Ctime, 0),
		}
		switch item.Specimen {
		case 1:
			waterbc.WaterType = "3"
			break
		case 2:
			waterbc.WaterType = "2"
			break
		case 3:
			waterbc.WaterType = "2"
			break
		case 4:
			waterbc.WaterType = "1"
			break
		case 5:
			waterbc.WaterType = "1"
			break
		}

		lisHdLisWaterBc = append(lisHdLisWaterBc, waterbc)
	}
	if len(lisHdLisWaterBc) > 0 {
		err := service.CreateLisWaterBc(lisHdLisWaterBc, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       73,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理
		}
	}
}

func SyncLisWaterEn(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 74)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}
	//同步细菌培养数据
	dialysate, _ := service.FindOrgDialysate(org_id, sync_time, time.Now().Unix())
	fmt.Println("dia", dialysate)
	var lisHdLisWaterEn []*sz.TempHdLisWaterEn
	for _, item := range dialysate {
		wateren := &sz.TempHdLisWaterEn{
			Sn:              strconv.FormatInt(item.ID, 10),
			HospitalId:      hospital_id,
			EquitmentId:     strconv.FormatInt(item.EquitmentId, 10),
			InspectionOrgId: "1",
			InspectionTime:  time.Unix(item.SamplingDate, 0),
			IsQualified:     strconv.FormatInt(item.Modifications, 10),
			InspectedValue:  item.DetectionResultb,
			CaseOrder:       item.Sort,
			Sjscsj:          time.Now(),
			Xgbz:            0,
			CreateTime:      time.Unix(item.Ctime, 0),
		}

		switch item.Specimenb {
		case 1:
			wateren.WaterType = "3"
			break
		case 2:
			wateren.WaterType = "2"
			break
		case 3:
			wateren.WaterType = "2"
			break
		case 4:
			wateren.WaterType = "1"
			break
		case 5:
			wateren.WaterType = "1"
			break
		}

		lisHdLisWaterEn = append(lisHdLisWaterEn, wateren)
	}
	if len(lisHdLisWaterEn) > 0 {
		err := service.CreateLisWaterEn(lisHdLisWaterEn, rdb)
		if err == nil {
			// 第三步：同步成功后，添加同步记录
			upload := &sz.DataUpload{
				SyncType:       74,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			err := service.CreateUploadRecord(upload)
			if err != nil {
				utils.ErrorLog("%v", err)
			}
		} else {
			//错误处理

		}
	}
}

// 机构人员字典表
func SyncTBDICPractitioner(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1001)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	roles, _ := service.FindOrgRolesData(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, role := range roles {
		var zwdm, zhiw, zcdm, zhic, lb string
		switch role.UserType {
		case 2:
			zwdm = "234"
			zhiw = "医师"
			zcdm = "420"
			zhic = "中级"
			lb = "11"
			break
		case 3:
			zwdm = "255"
			zhiw = "护士"
			zcdm = "420"
			zhic = "中级"
			lb = "21"
			break
		}

		staff := &sz.TBDICPractitioner{
			GH:       strconv.FormatInt(role.AdminUserId, 10),
			YLJGDM:   hospital_id,
			ZCM:      role.UserName,
			XM:       role.UserName,
			XBBM:     "2",
			SSKS:     "1001",
			SZYWKSMC: "血透中心",
			ZWDM:     zwdm,
			ZHIW:     zhiw,
			ZCDM:     zcdm,
			ZHIC:     zhic,
			NNRYLDQK: "9",
			BZQK:     "2",
			LB:       lb,
			YWSCSJ:   time.Now(),
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTBDICPractitioner(staff, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1001,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 机构人员字典表
func SyncTBDICPractitioner_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1001)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	roles, _ := service.FindOrgRolesData(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, role := range roles {
		var zwdm, zhiw, zcdm, zhic, lb string
		switch role.UserType {
		case 2:
			zwdm = "234"
			zhiw = "医师"
			zcdm = "420"
			zhic = "中级"
			lb = "11"
			break
		case 3:
			zwdm = "255"
			zhiw = "护士"
			zcdm = "420"
			zhic = "中级"
			lb = "21"
			break
		}

		staff := &sz.TBDICPractitioner{
			GH:       strconv.FormatInt(role.AdminUserId, 10),
			YLJGDM:   hospital_id,
			ZCM:      role.UserName,
			XM:       role.UserName,
			XBBM:     "2",
			SSKS:     "1001",
			SZYWKSMC: "血透中心",
			ZWDM:     zwdm,
			ZHIW:     zhiw,
			ZCDM:     zcdm,
			ZHIC:     zhic,
			NNRYLDQK: "9",
			BZQK:     "2",
			LB:       lb,
			YWSCSJ:   time.Now(),
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTBDICPractitioner(staff, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1001,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 药品目录字典表
func SyncTBDICMedicines(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1081)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	drugs, _ := service.FindDrugList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, drug := range drugs {
		medicines := &sz.TBDICMedicines{
			YLJGDM: hospital_id,
			YYZBDM: strconv.FormatInt(drug.ID, 10),
			YPMC:   drug.DrugName,
			TYMC:   drug.DrugName,
			YPGG:   drug.DrugSpec,
			YNJXDA: "1",
			YNJXMC: drug.DrugName,
			SYBZ:   strconv.FormatInt(drug.Status, 10),
			TSBZ:   "0",
			KSSBZ:  "0",
			YPPZWH: drug.Number,
			YPLX:   "1",
			YNZJBZ: "0",
			GJYBZ:  "0",
			SJYBZ:  "0",
			SHJYBZ: "0",
			QJYBZ:  "0",
			YWSCSJ: time.Now(),
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTBDICMedicines(medicines, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1081,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}
func SyncTBDICMedicines_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1081)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	drugs, _ := service.FindDrugList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, drug := range drugs {
		medicines := &sz.TBDICMedicines{
			YLJGDM: hospital_id,
			YYZBDM: strconv.FormatInt(drug.ID, 10),
			YPMC:   drug.DrugName,
			TYMC:   drug.DrugName,
			YPGG:   drug.DrugSpec,
			YNJXDA: "1",
			YNJXMC: drug.DrugName,
			SYBZ:   strconv.FormatInt(drug.Status, 10),
			TSBZ:   "0",
			KSSBZ:  "0",
			YPPZWH: drug.Number,
			YPLX:   "1",
			YNZJBZ: "0",
			GJYBZ:  "0",
			SJYBZ:  "0",
			SHJYBZ: "0",
			QJYBZ:  "0",
			YWSCSJ: time.Now(),
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTBDICMedicines(medicines, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1081,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 药品目录字典表
func SyncTBDICYpdzzd(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1083)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	drugs, _ := service.FindDrugList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, drug := range drugs {
		ypdzzd := &sz.TBDICYpdzzd{
			YLJGDM:     hospital_id,
			YNYPDM:     strconv.FormatInt(drug.ID, 10),
			YPMC:       drug.DrugName,
			YPLX:       "1",
			YPSPWYBSDM: drug.MedicalInsuranceNumber,
			YPSPWYBSMC: drug.DrugName,
			SJSHCSJ:    time.Now(),
			SJSCSJ:     time.Now(),
			XGBZ:       0,
		}
		service.BatchCreateTBDICYpdzzd(ypdzzd, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1083,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTBDICYpdzzd_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1083)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	drugs, _ := service.FindDrugList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, drug := range drugs {
		ypdzzd := &sz.TBDICYpdzzd{
			YLJGDM:     hospital_id,
			YNYPDM:     strconv.FormatInt(drug.ID, 10),
			YPMC:       drug.DrugName,
			YPLX:       "1",
			YPSPWYBSDM: drug.MedicalInsuranceNumber,
			YPSPWYBSMC: drug.DrugName,
			SJSHCSJ:    time.Now(),
			SJSCSJ:     time.Now(),
			XGBZ:       0,
		}
		service.BatchCreateTBDICYpdzzd(ypdzzd, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1083,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 诊疗项目目录字典表
func SyncTBDICZlxmml(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1082)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	projects, _ := service.FindProjectList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, project := range projects {
		zlxmml := &sz.TBDICZlxmml{
			YLJGDM: hospital_id,
			YYZBDM: strconv.FormatInt(project.ID, 10),
			XMMC:   project.ProjectName,
			SFDW:   "元",
			SFDJ:   strconv.FormatFloat(project.Price, 'f', 1, 32),
			SYBZ:   strconv.FormatInt(project.Status, 10),
			YWSCSJ: time.Now(),
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTBDICZlxmml(zlxmml, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1082,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTBDICZlxmml_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1082)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	projects, _ := service.FindProjectList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, project := range projects {
		zlxmml := &sz.TBDICZlxmml{
			YLJGDM: hospital_id,
			YYZBDM: strconv.FormatInt(project.ID, 10),
			XMMC:   project.ProjectName,
			SFDW:   "元",
			SFDJ:   strconv.FormatFloat(project.Price, 'f', 1, 32),
			SYBZ:   strconv.FormatInt(project.Status, 10),
			YWSCSJ: time.Now(),
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTBDICZlxmml(zlxmml, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1082,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 诊疗项目目录字典表
func SyncTBDICZlxmdzzd(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1086)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	projects, _ := service.FindProjectList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, project := range projects {
		zlxmdzzd := &sz.TBDICZlxmdzzd{
			YLJGDM:   hospital_id,
			YNZLXMDM: strconv.FormatInt(project.ID, 10),
			YNZLXMMC: project.ProjectName,
			WJSFDM:   project.MedicalCode,
			WJSFMC:   project.ProjectName,
			SJSHCSJ:  time.Now(),
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTBDICZlxmdzzd(zlxmdzzd, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1086,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}
func SyncTBDICZlxmdzzd_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1086)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	projects, _ := service.FindProjectList(org_id, sync_time, time.Now().Unix())

	//waterMachine, _ := service.FindOrgWaterMachineData(org_id, sync_time, time.Now().Unix())
	// var staffs []*sz.TBDICPractitioner
	for _, project := range projects {
		zlxmdzzd := &sz.TBDICZlxmdzzd{
			YLJGDM:   hospital_id,
			YNZLXMDM: strconv.FormatInt(project.ID, 10),
			YNZLXMMC: project.ProjectName,
			WJSFDM:   project.MedicalCode,
			WJSFMC:   project.ProjectName,
			SJSHCSJ:  time.Now(),
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTBDICZlxmdzzd(zlxmdzzd, rdb)
	}

	// 第三步：同步成功后，添加同步记录
	upload := &sz.DataUpload{
		SyncType:       1086,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTMDICTBED(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1002)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步透析床位分区
	dm, _ := service.FindOrgDeviceNumber(org_id, sync_time, time.Now().Unix())
	// var hdms []*sz.TM_DICT_BED
	for _, item := range dm {
		hdm := &sz.TM_DICT_BED{
			YLJGDM:   hospital_id,
			CWBM:     strconv.FormatInt(item.ID, 10),
			CH:       item.Number,
			SSKSDM:   "1001",
			SSKSMC:   "血透中心",
			CWLX:     "1",
			CWZT:     "0",
			DYZLXMDJ: "0",
			ZYH:      "",
			YWSCSJ:   time.Now(),
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTMDICTBED(hdm, rdb)

	}
	upload := &sz.DataUpload{
		SyncType:       1002,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTMDICTBED_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1002)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步透析床位分区
	dm, _ := service.FindOrgDeviceNumber(org_id, sync_time, time.Now().Unix())
	// var hdms []*sz.TM_DICT_BED
	for _, item := range dm {
		hdm := &sz.TM_DICT_BED{
			YLJGDM:   hospital_id,
			CWBM:     strconv.FormatInt(item.ID, 10),
			CH:       item.Number,
			SSKSDM:   "1001",
			SSKSMC:   "血透中心",
			CWLX:     "1",
			CWZT:     "0",
			DYZLXMDJ: "0",
			ZYH:      "",
			YWSCSJ:   time.Now(),
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTMDICTBED(hdm, rdb)

	}
	upload := &sz.DataUpload{
		SyncType:       1002,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 14.	门诊患者信息表
func SyncTBMZPatientInformation(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1003)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	patients, _ := service.FindOrgPatientData(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		var xbmc string
		if patient.Gender == 1 {
			xbmc = "男"
		} else {
			xbmc = "女"
		}

		tm := time.Unix(patient.Birthday, 0)
		ghrq := tm.Format("20060102")

		p := &sz.TB_MZ_Patient_Information{
			KH:     patient.DialysisNo,
			KLX:    "3",
			YLJGDM: hospital_id,
			FKDQ:   "440300",
			ZJHM:   patient.IdCardNo,
			ZJLXDM: "01",
			ZJLXMC: "身份证",
			XM:     patient.Name,
			CSRQ:   ghrq,
			MZDM:   "1",
			MZMC:   "汉族",
			GJDM:   "156",
			GJMC:   "中国",
			SJHM:   patient.Phone,
			XBDM:   strconv.FormatInt(patient.Gender, 10),
			XBMC:   xbmc,
			HZLXDM: "1",
			HZLXMC: "本市",
			YWSCSJ: time.Unix(patient.CreatedTime, 0),
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTB_MZ_Patient_Information(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1003,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTBMZPatientInformation_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1003)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 0
	}

	//同步员工信息
	patients, _ := service.FindOrgPatientData(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		var xbmc string
		if patient.Gender == 1 {
			xbmc = "男"
		} else {
			xbmc = "女"
		}

		tm := time.Unix(patient.Birthday, 0)
		ghrq := tm.Format("20060102")

		p := &sz.TB_MZ_Patient_Information{
			KH:     patient.DialysisNo,
			KLX:    "3",
			YLJGDM: hospital_id,
			FKDQ:   "440300",
			ZJHM:   patient.IdCardNo,
			ZJLXDM: "01",
			ZJLXMC: "身份证",
			XM:     patient.Name,
			CSRQ:   ghrq,
			MZDM:   "1",
			MZMC:   "汉族",
			GJDM:   "156",
			GJMC:   "中国",
			SJHM:   patient.Phone,
			XBDM:   strconv.FormatInt(patient.Gender, 10),
			XBMC:   xbmc,
			HZLXDM: "1",
			HZLXMC: "本市",
			YWSCSJ: time.Unix(patient.CreatedTime, 0),
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTB_MZ_Patient_Information(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1003,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 15.	挂号表
func SyncTBHISMZReg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1004)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPatient(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		tm := time.Unix(patient.Ctime, 0)
		ghrq := tm.Format("20060102")
		gthsj := tm.Format("2006-01-02 15:04:05")
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		p := &sz.TB_HIS_MZ_Reg{
			GHRQ:     ghrq,
			JZLSH:    strconv.FormatInt(patient.ID, 10),
			GTHBZ:    "1",
			YLJGDM:   hospital_id,
			STFBH:    strconv.FormatInt(patient.ID, 10),
			GTHSJ:    gthsj,
			GHHX:     strconv.FormatInt(patient.ID, 10),
			GHLB:     "04",
			GHMC:     "专科门诊",
			YLFYLYDM: "01",
			YLBXLBDM: "01",
			YBZHBZ:   "0000000000000000",
			SSJYBZ:   "1",
			KSBM:     "1001",
			KSMC:     "血透中心",
			YSBM:     "2232",
			YSXM:     "赵劲",
			TXBZ:     "0",
			WDBZ:     "1",
			KH:       patientInfo.DialysisNo,
			KLX:      "3",
			SFYY:     "0",
			GHRCBS:   "0",
			GHFY:     patient.RegisterCost,
			JMGHF:    patient.RegisterCost,
			ZJF:      patient.TreatmentCost,
			JMZJF:    patient.TreatmentCost,
			QTF:      "0",
			CZYBM:    "1001",
			CZYXM:    "Phony",
			GHFXM:    "003110000060000-311000006",
			ZJFXM:    "003110000060000-311000006",
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTB_HIS_MZ_Reg(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1004,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTBHISMZReg_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1004)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPatient(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		tm := time.Unix(patient.Ctime, 0)
		ghrq := tm.Format("20060102")
		gthsj := tm.Format("2006-01-02 15:04:05")
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		p := &sz.TB_HIS_MZ_Reg{
			GHRQ:     ghrq,
			JZLSH:    strconv.FormatInt(patient.ID, 10),
			GTHBZ:    "1",
			YLJGDM:   hospital_id,
			STFBH:    strconv.FormatInt(patient.ID, 10),
			GTHSJ:    gthsj,
			GHHX:     strconv.FormatInt(patient.ID, 10),
			GHLB:     "04",
			GHMC:     "专科门诊",
			YLFYLYDM: "01",
			YLBXLBDM: "01",
			YBZHBZ:   "0000000000000000",
			SSJYBZ:   "1",
			KSBM:     "1001",
			KSMC:     "血透中心",
			YSBM:     "2232",
			YSXM:     "赵劲",
			TXBZ:     "0",
			WDBZ:     "1",
			KH:       patientInfo.DialysisNo,
			KLX:      "3",
			SFYY:     "0",
			GHRCBS:   "0",
			GHFXM:    "003110000060000-311000006",
			ZJFXM:    "003110000060000-311000006",
			GHFY:     patient.RegisterCost,
			JMGHF:    patient.RegisterCost,
			ZJF:      patient.TreatmentCost,
			JMZJF:    patient.TreatmentCost,
			QTF:      "0",
			CZYBM:    "1001",
			CZYXM:    "Phony",
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTB_HIS_MZ_Reg(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1004,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTB_STAT_YWL_Report(rdb *gorm.DB, org_id int64, hospital_id string) {
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1068)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	syncDate := time.Unix(sync_time, 0).Format("20060102")
	tempDate := time.Now().Format("20060102")
	sync_time_date := time.Unix(sync_time, 0).Format("2006-01-02")
	loc, _ := time.LoadLocation("Local")
	timeLayout := "2006-01-02"

	sync_times, _ := time.ParseInLocation(timeLayout+" 15:04:05", sync_time_date+" 00:00:00", loc)
	sync_time_dd := sync_times.Unix()

	for {
		if syncDate < tempDate {
			// 获取门诊人数
			patientCnt, _ := service.FindOrgHisPatientCnt(org_id, sync_time_dd)
			// 门急诊药品费用
			amtOne, _ := service.FindOrgHisPatientCntTwo(org_id, sync_time_dd)
			fmt.Println(amtOne)
			// 门急诊医疗费用
			amtTwo, _ := service.FindOrgHisPatientCntTwo(org_id, sync_time_dd)

			p := &sz.TB_STAT_YWL_Report{
				YLJGDM:    hospital_id,
				KSBM:      "1001",
				YWSJ:      syncDate,
				MZRC:      patientCnt,
				JZRC:      0,
				TJRC:      0,
				RYRC:      0,
				CYRC:      0,
				CGRC:      0,
				RGBLS:     0,
				ZYRS:      0,
				SYCWS:     37,
				BZCWS:     37,
				SJSYCWS:   37,
				KCS:       0,
				KFTSCS:    0,
				JTBCS:     0,
				SSLS:      0,
				MJZYLFY:   amtOne.Sumamt,
				ZYYLFY:    0,
				MJZYPFY:   amtTwo.Sumamt,
				ZYYPFY:    0,
				MJZYBYLFY: amtOne.Amt,
				ZYYBYLFY:  0,
				MJZYBYPFY: amtTwo.Amt,
				ZYYBYPFY:  0,
				ZYSJFSYS:  0,
				CYYLSR:    0,
				CYYPSR:    0,
				CYYBYLSR:  0,
				CYYBYPSR:  0,
				SJSCSJ:    time.Now(),
				XGBZ:      0,
			}
			service.BatchCreateTB_STAT_YWL_Report(p, rdb)

			sync_time = sync_time + 86400
			syncDate = time.Unix(sync_time, 0).Format("20060102")
		} else {
			upload := &sz.DataUpload{
				SyncType:       1068,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			service.CreateUploadRecord(upload)
			break
		}
	}
}

func SyncTB_STAT_YWL_Report_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1068)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	syncDate := time.Unix(sync_time, 0).Format("20060102")
	tempDate := time.Now().Format("20060102")
	sync_time_date := time.Unix(sync_time, 0).Format("2006-01-02")
	loc, _ := time.LoadLocation("Local")
	timeLayout := "2006-01-02"

	sync_times, _ := time.ParseInLocation(timeLayout+" 15:04:05", sync_time_date+" 00:00:00", loc)
	sync_time_dd := sync_times.Unix()

	for {
		if syncDate < tempDate {
			// 获取门诊人数
			patientCnt, _ := service.FindOrgHisPatientCnt(org_id, sync_time_dd)
			// 门急诊药品费用
			amtOne, _ := service.FindOrgHisPatientCntTwo(org_id, sync_time_dd)
			fmt.Println(amtOne)
			// 门急诊医疗费用
			amtTwo, _ := service.FindOrgHisPatientCntTwo(org_id, sync_time_dd)

			p := &sz.TB_STAT_YWL_Report{
				YLJGDM:    hospital_id,
				KSBM:      "1001",
				YWSJ:      syncDate,
				MZRC:      patientCnt,
				JZRC:      0,
				TJRC:      0,
				RYRC:      0,
				CYRC:      0,
				CGRC:      0,
				RGBLS:     0,
				ZYRS:      0,
				SYCWS:     37,
				BZCWS:     37,
				SJSYCWS:   37,
				KCS:       0,
				KFTSCS:    0,
				JTBCS:     0,
				SSLS:      0,
				MJZYLFY:   amtOne.Sumamt,
				ZYYLFY:    0,
				MJZYPFY:   amtTwo.Sumamt,
				ZYYPFY:    0,
				MJZYBYLFY: amtOne.Amt,
				ZYYBYLFY:  0,
				MJZYBYPFY: amtTwo.Amt,
				ZYYBYPFY:  0,
				ZYSJFSYS:  0,
				CYYLSR:    0,
				CYYPSR:    0,
				CYYBYLSR:  0,
				CYYBYPSR:  0,
				SJSCSJ:    time.Now(),
				XGBZ:      0,
			}
			service.BatchCreateTB_STAT_YWL_Report(p, rdb)

			sync_time = sync_time + 86400
			syncDate = time.Unix(sync_time, 0).Format("20060102")
		} else {
			upload := &sz.DataUpload{
				SyncType:       1068,
				OrgId:          org_id,
				SyncTime:       time.Now().Unix(),
				SyncResultType: 1,
				CreateTime:     time.Now().Unix(),
				UpdateTime:     time.Now().Unix(),
			}
			service.CreateUploadRecord(upload)
			break
		}
	}
}

// 14.	诊断明细表
func SyncTB_YL_MZ_Medical_Record(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1005)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPatient(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		tm := time.Unix(patient.RecordDate, 0)
		ghrq := tm.Format("2006-01-02")
		p := &sz.TB_YL_MZ_Medical_Record{
			YLJGDM:      hospital_id,
			JZLSH:       strconv.FormatInt(patient.ID, 10),
			KH:          patientInfo.DialysisNo,
			KLX:         "3",
			MJZH:        strconv.FormatInt(patient.ID, 10),
			HZXM:        patient.Name,
			JZLX:        "04",
			CZBZ:        "2",
			SFTH:        "0",
			YLBXLBDM:    "01",
			YLFKFSDM:    "01",
			TXBZ:        "0",
			YBZHBZ:      "0000000000000000",
			WDBZ:        "1",
			SFSYZYZLJS:  "0",
			ZYZLJSLB:    "其他",
			SFSYZYZHLJS: "0",
			JZKSBM:      "1001",
			JZKSMC:      "血透中心",
			JZKSRQ:      ghrq,
			ZZYSGH:      "1001",
			ZZYSXM:      "Phony",
			BMLX:        "01",
			JZZDBM:      "N18.500",
			JZZDSM:      "慢性肾脏病5期",
			JZZTDM:      "3",
			JZZTMC:      "结束就诊",
			ZS:          "慢性肾功能不全",
			ZZMS:        "慢性肾脏病5期,需血液透析",
			JZJSSJ:      ghrq,
			YWSCSJ:      time.Now(),
			SJSCSJ:      time.Now(),
			XGBZ:        0,
		}
		service.BatchCreateTB_YL_MZ_Medical_Record(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1005,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 14.	16.	门诊就诊记录表
func SyncTB_Diagnosis_Detail(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1105)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPatient(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		tm := time.Unix(patient.RecordDate, 0)
		ghrq := tm.Format("2006-01-02")
		p := &sz.TB_Diagnosis_Detail{
			ZYZDLSH: strconv.FormatInt(patient.ID, 10),
			YLJGDM:  hospital_id,
			JZLSH:   strconv.FormatInt(patient.ID, 10),
			MZZYBZ:  "1",
			KH:      patientInfo.DialysisNo,
			KLX:     "3",
			ZDLXQF:  "3",
			ZDLB:    "02",
			ZDSJ:    ghrq,
			ZDBM:    "N18.500",
			BMLX:    "02",
			CYZDBZ:  "1",
			YZDBZ:   "2",
			CRBBZ:   "0",
			RYBQ:    "4",
			JLRQSJ:  time.Now(),
			SJSCSJ:  time.Now(),
			XGBZ:    0,
		}
		service.BatchCreateTB_Diagnosis_Detail(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1105,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTB_Diagnosis_Detail_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1105)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPatient(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		tm := time.Unix(patient.RecordDate, 0)
		ghrq := tm.Format("2006-01-02")
		p := &sz.TB_Diagnosis_Detail{
			ZYZDLSH: strconv.FormatInt(patient.ID, 10),
			YLJGDM:  hospital_id,
			JZLSH:   strconv.FormatInt(patient.ID, 10),
			MZZYBZ:  "1",
			KH:      patientInfo.DialysisNo,
			KLX:     "3",
			ZDLXQF:  "3",
			ZDLB:    "02",
			ZDSJ:    ghrq,
			ZDBM:    "N18.500",
			BMLX:    "02",
			CYZDBZ:  "1",
			YZDBZ:   "2",
			CRBBZ:   "0",
			RYBQ:    "4",
			JLRQSJ:  time.Now(),
			SJSCSJ:  time.Now(),
			XGBZ:    0,
		}
		service.BatchCreateTB_Diagnosis_Detail(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1105,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTB_YL_MZ_Medical_Record_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1005)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPatient(org_id, sync_time, time.Now().Unix())

	for _, patient := range patients {
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		tm := time.Unix(patient.RecordDate, 0)
		ghrq := tm.Format("2006-01-02")
		p := &sz.TB_YL_MZ_Medical_Record{
			YLJGDM:      hospital_id,
			JZLSH:       strconv.FormatInt(patient.ID, 10),
			KH:          patientInfo.DialysisNo,
			KLX:         "3",
			MJZH:        strconv.FormatInt(patient.ID, 10),
			HZXM:        patient.Name,
			NLS:         (time.Now().Unix() - patient.Birthday) / 31536000,
			JZLX:        "04",
			CZBZ:        "2",
			SFTH:        "0",
			YLBXLBDM:    "01",
			YLFKFSDM:    "01",
			TXBZ:        "0",
			YBZHBZ:      "0000000000000000",
			WDBZ:        "1",
			SFSYZYZLJS:  "0",
			ZYZLJSLB:    "其他",
			SFSYZYZHLJS: "0",
			JZKSBM:      "1001",
			JZKSMC:      "血透中心",
			JZKSRQ:      ghrq,
			ZZYSGH:      "1001",
			ZZYSXM:      "Phony",
			BMLX:        "01",
			JZZDBM:      "N18.500",
			JZZDSM:      "慢性肾脏病5期",
			JZZTDM:      "3",
			JZZTMC:      "结束就诊",
			ZS:          "慢性肾功能不全",
			ZZMS:        "慢性肾脏病5期,需血液透析",
			JZJSSJ:      ghrq,
			YWSCSJ:      time.Now(),
			SJSCSJ:      time.Now(),
			XGBZ:        0,
		}
		service.BatchCreateTB_YL_MZ_Medical_Record(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1005,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 17.	门诊处方主表
func SyncTB_CIS_Prescription(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1006)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPrescriptionInfo(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		patient_info, _ := service.FindOrgHisPatientInfo(org_id, patient.RecordDate, patient.PatientId)
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		adviceinfo, _ := service.FindOrgHisDoctorAdviceInfoByPid(org_id, patient.ID)
		if patient_info.ID > 0 {
			var cfypje float64
			for _, advice := range adviceinfo {
				cfypje = cfypje + advice.PrescribingNumber*advice.Price
			}
			tm := time.Unix(patient.Ctime, 0)
			ghrq := tm.Format("2006-01-02")
			p := &sz.TB_CIS_Prescription{
				CYH:      strconv.FormatInt(patient.ID, 10),
				YLJGDM:   hospital_id,
				JZLSH:    strconv.FormatInt(patient_info.ID, 10),
				KH:       patientInfo.DialysisNo,
				KLX:      "3",
				CFLX:     "1",
				YPLX:     "3",
				ZYYPCFLB: "9",
				CFJS:     "0",
				JZKSDM:   "1001",
				JZKSMC:   "血透中心",
				KFYS:     "1001",
				KFYSXM:   "Phony",
				KFRQ:     ghrq,
				CFLRSJ:   ghrq,
				SGCFBZ:   "0",
				CFYPJE:   cfypje,
				XYZDDM:   "N18.500",
				XYZDMC:   "慢性肾脏病5期",
				SJSCSJ:   time.Now(),
				XGBZ:     0,
			}
			service.BatchCreateTB_CIS_Prescription(p, rdb)
		}
	}

	upload := &sz.DataUpload{
		SyncType:       1006,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTB_CIS_Prescription_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1006)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisPrescriptionInfo(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		patient_info, _ := service.FindOrgHisPatientInfo(org_id, patient.RecordDate, patient.PatientId)
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		adviceinfo, _ := service.FindOrgHisDoctorAdviceInfoByPid(org_id, patient.ID)
		if patient_info.ID > 0 {
			var cfypje float64
			for _, advice := range adviceinfo {
				cfypje = cfypje + advice.PrescribingNumber*advice.Price
			}
			tm := time.Unix(patient.Ctime, 0)
			ghrq := tm.Format("2006-01-02")
			p := &sz.TB_CIS_Prescription{
				CYH:      strconv.FormatInt(patient.ID, 10),
				YLJGDM:   hospital_id,
				JZLSH:    strconv.FormatInt(patient_info.ID, 10),
				KH:       patientInfo.DialysisNo,
				KLX:      "3",
				CFLX:     "1",
				YPLX:     "3",
				ZYYPCFLB: "9",
				CFJS:     "0",
				JZKSDM:   "1001",
				JZKSMC:   "血透中心",
				KFYS:     "1001",
				KFYSXM:   "Phony",
				KFRQ:     ghrq,
				CFLRSJ:   ghrq,
				SGCFBZ:   "0",
				CFYPJE:   cfypje,
				TFBZ:     "2",
				XYZDDM:   "N18.500",
				XYZDMC:   "慢性肾脏病5期",
				SJSCSJ:   time.Now(),
				XGBZ:     0,
			}
			service.BatchCreateTB_CIS_Prescription(p, rdb)
		}
	}

	upload := &sz.DataUpload{
		SyncType:       1006,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 门诊处方明细表
func SyncTB_CIS_Prescription_Detail(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1007)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisDoctorAdviceInfo(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		prescription, _ := service.FindOrgHisPrescriptionById(patient.PrescriptionId)
		prescription_info, _ := service.FindOrgHisPrescriptionInfoByNumber(org_id, prescription.PrescriptionNumber)
		patient_info, _ := service.FindOrgHisPatientInfo(org_id, prescription_info.RecordDate, prescription_info.PatientId)
		basedrug, _ := service.FindBaseDrugLibById(patient.DrugId)
		if patient_info.ID > 0 {
			var yf, ypyf string
			if len(patient.DeliveryWay) == 0 || patient.DeliveryWay == "口服" {
				yf = "1"
				ypyf = "口服"
			} else {
				yf = "4"
				ypyf = "注射用药"
			}

			p := &sz.TB_CIS_Prescription_Detail{
				CYH:       strconv.FormatInt(prescription.ID, 10),
				CFMXH:     prescription.PrescriptionNumber,
				YLJGDM:    hospital_id,
				JZLSH:     strconv.FormatInt(patient_info.ID, 10),
				XMBM:      strconv.FormatInt(patient.DrugId, 10),
				XMBMYB:    patient.MedListCodg,
				XMMC:      patient.AdviceName,
				XMSL:      patient.PrescribingNumber,
				XMDW:      patient.PrescribingNumberUnit,
				XMDJ:      patient.Price,
				XMJE:      patient.Price * patient.PrescribingNumber,
				XMLB:      "01",
				YWFLDM:    "1",
				SFJJ:      "0",
				SFPS:      "0",
				YPGG:      basedrug.DrugSpec,
				SCPH:      basedrug.SocialSecurityDirectoryCode,
				YXQZ:      "2023-09-01",
				SYPCDM:    "QD",
				SYPC:      "每天一次",
				JL:        patient.SingleDose,
				DW:        patient.SingleDoseUnit,
				MCSL:      patient.SingleDose,
				MCDW:      patient.SingleDoseUnit,
				YF:        yf,
				YPYF:      ypyf,
				YYTS:      patient.Day,
				YWSYZJL:   patient.PrescribingNumber,
				YWSYZJLDW: patient.PrescribingNumberUnit,

				SJSCSJ: time.Now(),
				XGBZ:   0,
			}
			service.BatchCreateTB_CIS_Prescription_Detail(p, rdb)
		}
	}

	upload := &sz.DataUpload{
		SyncType:       1007,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}
func SyncTB_CIS_Prescription_Detail_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1007)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisDoctorAdviceInfo(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		prescription, _ := service.FindOrgHisPrescriptionById(patient.PrescriptionId)
		prescription_info, _ := service.FindOrgHisPrescriptionInfoByNumber(org_id, prescription.PrescriptionNumber)
		patient_info, _ := service.FindOrgHisPatientInfo(org_id, prescription_info.RecordDate, prescription_info.PatientId)
		basedrug, _ := service.FindBaseDrugLibById(patient.DrugId)
		if patient_info.ID > 0 {
			var yf, ypyf string
			if len(patient.DeliveryWay) == 0 || patient.DeliveryWay == "口服" {
				yf = "1"
				ypyf = "口服"
			} else {
				yf = "4"
				ypyf = "注射用药"
			}
			if len(patient.MedListCodg) == 0 {
				patient.MedListCodg = "ZZZZZZZZZZZZZZZ"
			}

			p := &sz.TB_CIS_Prescription_Detail{
				CYH:       strconv.FormatInt(prescription.ID, 10),
				CFMXH:     prescription.PrescriptionNumber,
				YLJGDM:    hospital_id,
				JZLSH:     strconv.FormatInt(patient_info.ID, 10),
				XMBM:      strconv.FormatInt(patient.DrugId, 10),
				XMBMYB:    patient.MedListCodg,
				XMMC:      patient.AdviceName,
				XMSL:      patient.PrescribingNumber,
				XMDW:      patient.PrescribingNumberUnit,
				XMDJ:      patient.Price,
				XMJE:      patient.Price * patient.PrescribingNumber,
				XMLB:      "01",
				YWFLDM:    "1",
				SFJJ:      "0",
				SFPS:      "0",
				YPGG:      basedrug.DrugSpec,
				SCPH:      basedrug.SocialSecurityDirectoryCode,
				YXQZ:      "2026-09-01",
				SYPCDM:    "QD",
				SYPC:      "每天一次",
				JL:        patient.SingleDose,
				DW:        patient.SingleDoseUnit,
				MCSL:      patient.SingleDose,
				MCDW:      patient.SingleDoseUnit,
				YF:        yf,
				YPYF:      ypyf,
				YYTS:      patient.Day,
				YWSYZJL:   patient.PrescribingNumber,
				YWSYZJLDW: patient.PrescribingNumberUnit,

				SJSCSJ: time.Now(),
				XGBZ:   0,
			}

			service.BatchCreateTB_CIS_Prescription_Detail(p, rdb)
		}
	}

	upload := &sz.DataUpload{
		SyncType:       1007,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

// 门诊处方明细表
func SyncTB_HIS_MZ_Charge(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1008)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisOrder(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		orderInfos, _ := service.GetHisOrderInfoByNumber(patient.Number)
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		var bedCostTotal float64 = 0                        //床位总费
		var operationCostTotal float64 = 0                  //手术费
		var otherCostTotal float64 = 0                      //其他费用
		var materialCostTotal float64 = 0                   //材料费
		var westernMedicineCostTotal float64 = 0            //西药费
		var chineseTraditionalMedicineCostTotal float64 = 0 //中成药
		var checkCostTotal float64 = 0                      //检查费
		var laboratoryCostTotal float64 = 0                 //化验费
		var treatCostTotal float64 = 0                      //治疗费用

		decimal.DivisionPrecision = 2

		for _, item := range orderInfos {
			if item.MedChrgitmType == "01" { //床位费
				bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "03" { //检查费
				checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "04" { //化验费
				laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "05" { //治疗费
				treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "06" { //手术费
				operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "08" { //材料费
				materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "09" { //西药费
				westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "11" { //中成费
				chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "14" { //其他费
				otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}
		}

		tm := time.Unix(patient.SettleAccountsDate, 0)
		ghrq := tm.Format("20060102")
		p := &sz.TB_HIS_MZ_Charge{
			STFRQ:    ghrq,
			STFBH:    patient.Number,
			STFBZ:    "1",
			YLJGDM:   hospital_id,
			GHBM:     strconv.FormatInt(patient.HisPatientId, 10),
			KH:       patientInfo.DialysisNo,
			KLX:      "3",
			FPH:      "/",
			YLFKFSDM: "01",
			YLBXLBDM: "01",
			YBZHBZ:   "0000000000000000",
			SSJYBZ:   "1",
			ZLLX:     "04",
			WDBZ:     "1",
			STFSJ:    ghrq,
			STFZE:    patient.MedfeeSumamt,
			SSJE:     patient.MedfeeSumamt,
			YHJE:     0,
			ZFJE:     patient.PsnPartAmt,
			YBJZ:     0,
			YBJJ:     patient.FundPaySumamt,
			YBZE:     patient.InscpScpAmt,
			YBZF:     patient.AcctPay,
			YBFWWZF:  patient.OverlmtSelfPay,
			TXFYE:    "0",
			TXYF:     "0",
			GHF:      "0",
			ZLF:      "0",
			ZHF:      treatCostTotal,
			JCF:      checkCostTotal,
			SSF:      operationCostTotal,
			WSCLF:    operationCostTotal,
			CWF:      bedCostTotal,
			HLF:      "0",
			YSFWF:    "0",
			YBZLF:    "0",
			HYF:      laboratoryCostTotal,
			TSF:      "0",
			SPF:      "0",
			XYF:      westernMedicineCostTotal,
			ZCYF:     chineseTraditionalMedicineCostTotal,
			ZYZJF:    "0",
			ZCAF:     "0",
			QTF:      otherCostTotal,
			CFZS:     "1",
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}

		service.BatchCreateTB_HIS_MZ_Charge(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1008,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}
func SyncTB_HIS_MZ_Charge_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1008)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisOrder(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		orderInfos, _ := service.GetHisOrderInfoByNumber(patient.Number)
		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		var bedCostTotal float64 = 0                        //床位总费
		var operationCostTotal float64 = 0                  //手术费
		var otherCostTotal float64 = 0                      //其他费用
		var materialCostTotal float64 = 0                   //材料费
		var westernMedicineCostTotal float64 = 0            //西药费
		var chineseTraditionalMedicineCostTotal float64 = 0 //中成药
		var checkCostTotal float64 = 0                      //检查费
		var laboratoryCostTotal float64 = 0                 //化验费
		var treatCostTotal float64 = 0                      //治疗费用

		decimal.DivisionPrecision = 2

		for _, item := range orderInfos {
			if item.MedChrgitmType == "01" { //床位费
				bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "03" { //检查费
				checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "04" { //化验费
				laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "05" { //治疗费
				treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "06" { //手术费
				operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "08" { //材料费
				materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "09" { //西药费
				westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "11" { //中成费
				chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}

			if item.MedChrgitmType == "14" { //其他费
				otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
			}
		}

		tm := time.Unix(patient.SettleAccountsDate, 0)
		ghrq := tm.Format("20060102")
		p := &sz.TB_HIS_MZ_Charge{
			STFRQ:    ghrq,
			STFBH:    patient.Number,
			STFBZ:    "1",
			YLJGDM:   hospital_id,
			GHBM:     strconv.FormatInt(patient.HisPatientId, 10),
			KH:       patientInfo.DialysisNo,
			KLX:      "3",
			FPH:      "/",
			YLFKFSDM: "01",
			YLBXLBDM: "01",
			YBZHBZ:   "0000000000000000",
			SSJYBZ:   "1",
			ZLLX:     "04",
			WDBZ:     "1",
			STFSJ:    ghrq,
			STFZE:    patient.MedfeeSumamt,
			SSJE:     patient.MedfeeSumamt,
			YHJE:     0,
			ZFJE:     patient.PsnPartAmt,
			YBJZ:     0,
			YBJJ:     patient.FundPaySumamt,
			YBZE:     patient.InscpScpAmt,
			YBZF:     patient.AcctPay,
			YBFWWZF:  patient.OverlmtSelfPay,
			TXFYE:    "0",
			TXYF:     "0",
			GHF:      "0",
			ZLF:      "0",
			ZHF:      treatCostTotal,
			JCF:      checkCostTotal,
			SSF:      operationCostTotal,
			WSCLF:    operationCostTotal,
			CWF:      bedCostTotal,
			HLF:      "0",
			YSFWF:    "0",
			YBZLF:    "0",
			HYF:      laboratoryCostTotal,
			TSF:      "0",
			SPF:      "0",
			XYF:      westernMedicineCostTotal,
			ZCYF:     chineseTraditionalMedicineCostTotal,
			ZYZJF:    "0",
			ZCAF:     "0",
			QTF:      otherCostTotal,
			CFZS:     "1",
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}

		service.BatchCreateTB_HIS_MZ_Charge(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1008,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}

func SyncTB_HIS_MZ_BL_Detail(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 20009)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1718899200
	}
	//同步员工信息
	patients, _ := service.FindNewOrgHisOrder(org_id, sync_time, time.Now().Unix())
	for _, p := range patients {
		pp, _ := service.FindOrgPatientInfoById(p.PatientId)

		role, _ := service.FindUserRoleData(org_id, p.HisPatient.Doctor)

		// 转换时间戳为time.Time类型
		t := time.Unix(p.HisPatient.Ctime, 0)
		t2 := time.Unix(p.HisPatient.RecordDate, 0)

		// 格式化时间为日期
		date := t.Format("2006-01-02 15:04:05")
		date2 := t2.Format("2006-01-02 15:04:05")

		p := &sz.TB_HIS_MZ_BL_Detail{

			YLJGDM: hospital_id,
			BLLSH:  p.Number,
			JZLSH:  strconv.FormatInt(p.HisPatientId, 10),
			KH:     pp.DialysisNo,
			KLX:    "3",
			HZXM:   pp.Name,
			JZLX:   "04",
			JZRQSJ: date2,
			MJZH:   p.HisPatient.Number,
			CZBZ:   "2",
			YSGH:   role.DoctorNumber,
			YSXM:   role.UserName,
			JLRQSJ: date,
			SJSCSJ: time.Now(),
			XGBZ:   0,
		}
		service.BatchCreateTB_HIS_MZ_BL_Detail(p, rdb)
	}

	upload := &sz.DataUpload{
		SyncType:       20009,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)

}


// 20.	门诊收费明细表
func SyncTB_HIS_MZ_Fee_Detail(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1009)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisOrderInfo(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		// order,_ := service.GetHisOrderByNumber(patient.OrderNumber)
		var MedListCodg, AdviceName, SingleDoseUnit, MXXMBM string
		if patient.AdviceId > 0 {
			advice, _ := service.GetHisDoctorAdviceInfo(patient.AdviceId)
			MedListCodg = advice.MedListCodg
			AdviceName = advice.AdviceName
			SingleDoseUnit = advice.SingleDoseUnit
			MXXMBM = strconv.FormatInt(advice.DrugId, 10)
		} else {
			advice, _ := service.GetHisPrescriptionProjectInfo(patient.ProjectId)
			MedListCodg = advice.MedListCodg
			if advice.ID > 0 {
				if advice.Type == 2 {
					project, _ := service.GetHisProjectInfo(advice.ProjectId)
					AdviceName = project.ProjectName
					SingleDoseUnit = project.Unit
					MXXMBM = strconv.FormatInt(project.ID, 10)
				} else {
					project, _ := service.GetGoodInfo(advice.ProjectId)
					AdviceName = project.GoodName
					SingleDoseUnit = project.PackingUnit
					MXXMBM = strconv.FormatInt(project.ID, 10)
				}
			}
		}

		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		tm := time.Unix(patient.Ctime, 0)
		ghrq := tm.Format("20060102")
		var mxfylb string
		mxfylb = "99"
		if patient.MedChrgitmType == "01" { //床位费
			mxfylb = "18"
		}

		if patient.MedChrgitmType == "03" { //检查费
			mxfylb = "06"
		}

		if patient.MedChrgitmType == "04" { //化验费
			mxfylb = "07"
		}

		if patient.MedChrgitmType == "05" { //治疗费
			mxfylb = "03"
		}

		if patient.MedChrgitmType == "06" { //手术费
			mxfylb = "04"
		}

		if patient.MedChrgitmType == "08" { //材料费
			mxfylb = "05"
		}

		if patient.MedChrgitmType == "09" { //西药费
			mxfylb = "12"
		}

		if patient.MedChrgitmType == "11" { //中成费
			mxfylb = "13"
		}

		if patient.MedChrgitmType == "14" { //其他费
			mxfylb = "99"
		}
		p := &sz.TB_HIS_MZ_Fee_Detail{
			SFMXID:   strconv.FormatInt(patient.ID, 10),
			TFBZ:     "1",
			YLJGDM:   hospital_id,
			JZLSH:    strconv.FormatInt(patient.HisPatientId, 10),
			STFBH:    patient.OrderNumber,
			KH:       patientInfo.DialysisNo,
			KLX:      "3",
			ZLLX:     "04",
			YLFKFSDM: "01",
			FPH:      "/",
			STFSJ:    ghrq,
			MXFYLB:   mxfylb,
			MXXMBM:   MXXMBM,
			MXXMBMYB: MedListCodg,
			MXXMMC:   AdviceName,
			MXXMDW:   SingleDoseUnit,
			MXXMDJ:   patient.Pric,
			MXXMSL:   patient.Cnt,
			MXXMJE:   patient.DetItemFeeSumamt,
			KDKSBM:   "1001",
			KDKSMC:   "血透中心",
			KDRGH:    "1001",
			KDRXM:    "Phony",
			ZXKSBM:   "1001",
			ZXKSMC:   "血透中心",
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTB_HIS_MZ_Fee_Detail(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1009,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}
func SyncTB_HIS_MZ_Fee_Detail_pg(rdb *gorm.DB, org_id int64, hospital_id string) {
	// 第一步：根据机构id获取上次同步时间
	syncLastInfo, _ := service.GetSyncTimeByOrgId(org_id, 1009)
	var sync_time int64
	if syncLastInfo.ID > 0 {
		sync_time = syncLastInfo.SyncTime
	} else {
		sync_time = 1714492800
	}

	//同步员工信息
	patients, _ := service.FindOrgHisOrderInfo(org_id, sync_time, time.Now().Unix())
	for _, patient := range patients {
		// order,_ := service.GetHisOrderByNumber(patient.OrderNumber)
		var MedListCodg, AdviceName, SingleDoseUnit, MXXMBM string
		if patient.AdviceId > 0 {
			advice, _ := service.GetHisDoctorAdviceInfo(patient.AdviceId)
			MedListCodg = advice.MedListCodg
			AdviceName = advice.AdviceName
			SingleDoseUnit = advice.SingleDoseUnit
			MXXMBM = strconv.FormatInt(advice.DrugId, 10)
		} else {
			advice, _ := service.GetHisPrescriptionProjectInfo(patient.ProjectId)
			MedListCodg = advice.MedListCodg
			if advice.ID > 0 {
				if advice.Type == 2 {
					project, _ := service.GetHisProjectInfo(advice.ProjectId)
					AdviceName = project.ProjectName
					SingleDoseUnit = project.Unit
					MXXMBM = strconv.FormatInt(project.ID, 10)
				} else {
					project, _ := service.GetGoodInfo(advice.ProjectId)
					AdviceName = project.GoodName
					SingleDoseUnit = project.PackingUnit
					MXXMBM = strconv.FormatInt(project.ID, 10)
				}
			}
		}

		patientInfo, _ := service.FindOrgPatientInfoById(patient.PatientId)
		tm := time.Unix(patient.Ctime, 0)
		ghrq := tm.Format("20060102")
		var mxfylb string
		mxfylb = "99"
		if patient.MedChrgitmType == "01" { //床位费
			mxfylb = "18"
		}

		if patient.MedChrgitmType == "03" { //检查费
			mxfylb = "06"
		}

		if patient.MedChrgitmType == "04" { //化验费
			mxfylb = "07"
		}

		if patient.MedChrgitmType == "05" { //治疗费
			mxfylb = "03"
		}

		if patient.MedChrgitmType == "06" { //手术费
			mxfylb = "04"
		}

		if patient.MedChrgitmType == "08" { //材料费
			mxfylb = "05"
		}

		if patient.MedChrgitmType == "09" { //西药费
			mxfylb = "12"
		}

		if patient.MedChrgitmType == "11" { //中成费
			mxfylb = "13"
		}

		if patient.MedChrgitmType == "14" { //其他费
			mxfylb = "99"
		}
		p := &sz.TB_HIS_MZ_Fee_Detail{
			SFMXID:   strconv.FormatInt(patient.ID, 10),
			TFBZ:     "1",
			YLJGDM:   hospital_id,
			JZLSH:    strconv.FormatInt(patient.HisPatientId, 10),
			STFBH:    patient.OrderNumber,
			KH:       patientInfo.DialysisNo,
			KLX:      "3",
			ZLLX:     "04",
			YLFKFSDM: "01",
			FPH:      "/",
			STFSJ:    ghrq,
			MXFYLB:   mxfylb,
			MXXMBM:   MXXMBM,
			MXXMBMYB: MedListCodg,
			MXXMMC:   AdviceName,
			MXXMDW:   SingleDoseUnit,
			MXXMDJ:   patient.Pric,
			MXXMSL:   patient.Cnt,
			MXXMJE:   patient.DetItemFeeSumamt,
			KDKSBM:   "1001",
			KDKSMC:   "血透中心",
			KDRGH:    "1001",
			KDRXM:    "Phony",
			ZXKSBM:   "1001",
			ZXKSMC:   "血透中心",
			SJSCSJ:   time.Now(),
			XGBZ:     0,
		}
		service.BatchCreateTB_HIS_MZ_Fee_Detail(p, rdb)

	}

	upload := &sz.DataUpload{
		SyncType:       1009,
		OrgId:          org_id,
		SyncTime:       time.Now().Unix(),
		SyncResultType: 1,
		CreateTime:     time.Now().Unix(),
		UpdateTime:     time.Now().Unix(),
	}
	service.CreateUploadRecord(upload)
}
