package mobile_api_controllers import ( "XT_New/enums" "XT_New/models" "XT_New/service" _ "XT_New/utils" _ "encoding/json" "fmt" _ "github.com/astaxie/beego" "github.com/jinzhu/gorm" _ "strings" // "fmt" _ "reflect" _ "strconv" "time" ) type CheckWeightApiController struct { MobileBaseAPIAuthController } func (c *CheckWeightApiController) SaveBloodPressure() { id, _ := c.GetInt64("patient", 0) dialysistype, _ := c.GetInt64("dialysistype", 0) systolic_blood_pressure, _ := c.GetFloat("systolic_blood_pressure", 0) //收缩压 diastolic_blood_pressure, _ := c.GetFloat("diastolic_blood_pressure", 0) //舒张压 pulse_frequency, _ := c.GetFloat("pulse_frequency", 0) //脉率 if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if dialysistype <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if systolic_blood_pressure <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if diastolic_blood_pressure <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientByIdWithDiseases(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } thisTime := time.Now() scheduleDateStart := thisTime.Format("2006-01-02") + " 00:00:00" timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) theAssessmentDateTime := theStartTime.Unix() if dialysistype == 1 { // 保存透前相关数据 // 获取透析处方 dialysisPrescribe, getDialysisPrescribeErr := service.MobileGetDialysisPrescribe(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getDialysisPrescribeErr != nil { c.ErrorLog("获取透析处方失败:%v", getDialysisPrescribeErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } // 获取透析模版 dialysisSolution, getDialysisSolutionErr := service.MobileGetDialysisSolution(adminUserInfo.Org.Id, id) if getDialysisSolutionErr != nil { c.ErrorLog("获取透析方案失败:%v", getDialysisSolutionErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } // 插入透析处方 if dialysisPrescribe == nil && dialysisSolution != nil { var newprescribe models.DialysisPrescription newprescribe.UserOrgId = dialysisSolution.UserOrgId newprescribe.PatientId = dialysisSolution.PatientId newprescribe.Anticoagulant = dialysisSolution.Anticoagulant newprescribe.AnticoagulantShouji = dialysisSolution.AnticoagulantShouji newprescribe.AnticoagulantWeichi = dialysisSolution.AnticoagulantWeichi newprescribe.AnticoagulantZongliang = dialysisSolution.AnticoagulantZongliang newprescribe.AnticoagulantGaimingcheng = dialysisSolution.AnticoagulantGaimingcheng newprescribe.AnticoagulantGaijiliang = dialysisSolution.AnticoagulantGaijiliang newprescribe.ModeId = dialysisSolution.ModeId newprescribe.DialysisDuration = dialysisSolution.DialysisDuration newprescribe.ReplacementWay = dialysisSolution.ReplacementWay newprescribe.HemodialysisMachine = dialysisSolution.HemodialysisMachine newprescribe.BloodFilter = dialysisSolution.BloodFilter newprescribe.PerfusionApparatus = dialysisSolution.PerfusionApparatus newprescribe.BloodFlowVolume = dialysisSolution.BloodFlowVolume newprescribe.DisplaceLiqui = dialysisSolution.DisplaceLiqui newprescribe.Glucose = dialysisSolution.Glucose newprescribe.DialysateFlow = dialysisSolution.DialysateFlow newprescribe.Kalium = dialysisSolution.Kalium newprescribe.Sodium = dialysisSolution.Sodium newprescribe.Calcium = dialysisSolution.Calcium newprescribe.Bicarbonate = dialysisSolution.Bicarbonate newprescribe.DialysateTemperature = dialysisSolution.DialysateTemperature newprescribe.Conductivity = dialysisSolution.Conductivity newprescribe.BodyFluid = dialysisSolution.BodyFluid newprescribe.SpecialMedicine = dialysisSolution.SpecialMedicine newprescribe.SpecialMedicineOther = dialysisSolution.SpecialMedicineOther newprescribe.DisplaceLiquiPart = dialysisSolution.DisplaceLiquiPart newprescribe.DisplaceLiquiValue = dialysisSolution.DisplaceLiquiValue newprescribe.BloodAccess = dialysisSolution.BloodAccess newprescribe.Ultrafiltration = dialysisSolution.Ultrafiltration newprescribe.DialysisDurationHour = dialysisSolution.DialysisDurationHour newprescribe.DialysisDurationMinute = dialysisSolution.DialysisDurationMinute newprescribe.TargetUltrafiltration = dialysisSolution.TargetUltrafiltration newprescribe.DialysateFormulation = dialysisSolution.DialysateFormulation newprescribe.Dialyzer = dialysisSolution.Dialyzer newprescribe.ReplacementTotal = dialysisSolution.ReplacementTotal newprescribe.DialyzerPerfusionApparatus = dialysisSolution.DialyzerPerfusionApparatus newprescribe.BodyFluidOther = dialysisSolution.BodyFluidOther newprescribe.TargetKtv = dialysisSolution.TargetKtv newprescribe.CreatedTime = time.Now().Unix() newprescribe.UpdatedTime = time.Now().Unix() newprescribe.RecordDate = theAssessmentDateTime // newprescribe.DewaterAmount = dewater_amount // newprescribe.TargetUltrafiltration = dewater_amount newprescribe.Status = 1 err := service.AddSigleRecord(&newprescribe) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } if dialysisPrescribe == nil && dialysisSolution == nil { var newprescribe models.DialysisPrescription newprescribe.UserOrgId = adminUserInfo.Org.Id newprescribe.PatientId = id newprescribe.CreatedTime = time.Now().Unix() newprescribe.UpdatedTime = time.Now().Unix() newprescribe.RecordDate = theAssessmentDateTime // newprescribe.DewaterAmount = dewater_amount // newprescribe.TargetUltrafiltration = dewater_amount newprescribe.Status = 1 err := service.AddSigleRecord(&newprescribe) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } if dialysisPrescribe != nil { dialysisPrescribe.UpdatedTime = time.Now().Unix() dialysisPrescribe.RecordDate = theAssessmentDateTime // dialysisPrescribe.DewaterAmount = dewater_amount // dialysisPrescribe.TargetUltrafiltration = dewater_amount dialysisPrescribe.Status = 1 updateErr := service.UpDateDialysisPrescription(dialysisPrescribe) if updateErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } theEvaluation, getPEErr := service.MobileGetPredialysisEvaluation(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getPEErr != nil { c.ErrorLog("获取透前评估失败:%v", getPEErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var evaluation models.PredialysisEvaluation if theEvaluation != nil { evaluation = *theEvaluation } // 如果今天没有透前评估,则插入新的数据 if theEvaluation == nil { evaluation.CreatedTime = time.Now().Unix() evaluation.Status = 1 evaluation.AssessmentDate = theAssessmentDateTime evaluation.PatientId = id evaluation.UserOrgId = adminUserInfo.Org.Id // 获取上一次透前评估信息,部分数据是需要从上一次透前评估继承 lastPredialysisEvaluation, _ := service.MobileGetLastTimePredialysisEvaluation(adminUserInfo.Org.Id, id, theAssessmentDateTime) // 获取上一次透后评估,插入本次透前评估的上次透后体重(weight_after_last_transparency)字段 assessmentAfterDislysis, getAADErr := service.MobileGetLastTimeAssessmentAfterDislysis(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getAADErr != nil { c.ErrorLog("获取透后评估失败:%v", getAADErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } // 获取干体重,先从干体重配置里去读,如果没有,则读取上一次透前评估的干体重 weight, err := service.FindLastDryWeightAdjust(adminUserInfo.Org.Id, id) if err == gorm.ErrRecordNotFound { evaluation.DryWeight = lastPredialysisEvaluation.DryWeight } else { evaluation.DryWeight = weight.DryWeight } if assessmentAfterDislysis != nil { evaluation.WeightAfterLastTransparency = assessmentAfterDislysis.WeightAfter } if lastPredialysisEvaluation != nil { evaluation.BloodAccessPartId = lastPredialysisEvaluation.BloodAccessPartId evaluation.BloodAccessPartOperaId = lastPredialysisEvaluation.BloodAccessPartOperaId evaluation.AdditionalWeight = lastPredialysisEvaluation.AdditionalWeight // 衣物重 } } else { evaluation.UpdatedTime = time.Now().Unix() } evaluation.SystolicBloodPressure = systolic_blood_pressure // 收缩压 evaluation.DiastolicBloodPressure = diastolic_blood_pressure // 舒张压 evaluation.PulseFrequency = pulse_frequency // 脉率 evaluation.AssessmentTime = time.Now().Unix() err := service.UpadatePredialysisEvaluation(&evaluation) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate) return } c.ServeSuccessJSON(map[string]interface{}{ "msg": "ok", "evaluation": evaluation, }) return } else { // 保存透后相关数据 assessmentAfterDislysis, getAADErr := service.MobileGetAssessmentAfterDislysis(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getAADErr != nil { c.ErrorLog("获取透后评估失败:%v", getAADErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var afterevaluation models.AssessmentAfterDislysis if assessmentAfterDislysis != nil { afterevaluation = *assessmentAfterDislysis } if assessmentAfterDislysis == nil { afterevaluation.CreatedTime = time.Now().Unix() afterevaluation.Status = 1 afterevaluation.AssessmentDate = theAssessmentDateTime afterevaluation.PatientId = id afterevaluation.UserOrgId = adminUserInfo.Org.Id } else { afterevaluation.UpdatedTime = time.Now().Unix() } afterevaluation.SystolicBloodPressure = systolic_blood_pressure // 收缩压 afterevaluation.DiastolicBloodPressure = diastolic_blood_pressure // 舒张压 afterevaluation.PulseFrequency = pulse_frequency // 脉率 err := service.UpdateAssessmentAfterDislysisRecord(&afterevaluation) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "assessmentAfterDislysis": afterevaluation, }) } } } func (c *CheckWeightApiController) SavePatientInfoDialysis() { id, _ := c.GetInt64("patient", 0) dialysistype, _ := c.GetInt64("dialysistype", 0) if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if dialysistype <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientByIdWithDiseases(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } thisTime := time.Now() scheduleDateStart := thisTime.Format("2006-01-02") + " 00:00:00" // scheduleDateEnd := thisTime.Format("2006-01-02") + " 23:59:59" timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) // theEndTime, _ := time.ParseInLocation(timeLayout, scheduleDateEnd, loc) theAssessmentDateTime := theStartTime.Unix() // endTime := theEndTime.Unix() // dry_weight,_ := c.GetFloat("dry_weight",0) // 干体重 weighing_before, _ := c.GetFloat("weighing_before", 0) // 透前体重 dewater_amount, _ := c.GetFloat("dewater_amount", 0) // 目标脱水量(L) weight_after, _ := c.GetFloat("weight_after", 0) // 透后体重 weight_loss, _ := c.GetFloat("weight_loss", 0) // 体重减少 schedual, _ := service.MobileGetSchedualDetail(adminUserInfo.Org.Id, patient.ID, theStartTime.Unix()) //dialysisSolution,_ := service.MobileGetDialysisSolutionByModeId(adminUserInfo.Org.Id,patient.ID,schedual.ModeId) //dialysisPrescribe, _ := service.MobileGetDialysisPrescribeByModeId(adminUserInfo.Org.Id, patient.ID, theStartTime.Unix(),schedual.ModeId) //dialysisPrescribe, _ := service.MobileGetDialysisPrescribeByModeId(adminUserInfo.Org.Id, patient.ID, theStartTime.Unix(),schedual.ModeId) //dialysisPrescribe, _ := service.MobileGetDialysisPrescribeByModeId(adminUserInfo.Org.Id, patient.ID, theStartTime.Unix(),schedual.ModeId) // 查询当前用户今天有没有排班,没有排班,则不处理 // daySchedule, _ := service.GetPatientScheduleFormDay(adminUserInfo.Org.Id, theAssessmentDateTime, endTime, id) // if(len(daySchedule) <= 0) { // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "ok", // }) // return // } if dialysistype == 1 { // 保存透前相关数据 // 获取透析处方 var lastDialysisPrescribe *models.DialysisPrescription var dialysisSolution *models.DialysisSolution var dialysisPrescribe *models.DialysisPrescription var system_dialysisPrescribe *models.SystemPrescription var mode_id int64 dialysisPrescribe, _ = service.MobileGetDialysisPrescribe(adminUserInfo.Org.Id, id, theAssessmentDateTime) if schedual != nil { // 获取透析模版 dialysisSolution, _ = service.MobileGetDialysisSolutionByModeId(adminUserInfo.Org.Id, id, schedual.ModeId) system_dialysisPrescribe, _ = service.MobileGetSystemDialysisPrescribeByModeId(adminUserInfo.Org.Id, schedual.ModeId) lastDialysisPrescribe, _ = service.MobileGetLastDialysisPrescribeByModeId(adminUserInfo.Org.Id, id, schedual.ModeId) mode_id = schedual.ModeId } else { // 获取透析模版 dialysisSolution, _ = service.MobileGetDialysisSolution(adminUserInfo.Org.Id, id) if dialysisPrescribe == nil && dialysisSolution != nil { mode_id = dialysisSolution.ModeId } if dialysisPrescribe == nil && dialysisSolution == nil { mode_id = 0 } } // 插入透析处方 if dialysisPrescribe == nil && dialysisSolution != nil { var newprescribe models.DialysisPrescription newprescribe.UserOrgId = dialysisSolution.UserOrgId newprescribe.PatientId = dialysisSolution.PatientId newprescribe.Anticoagulant = dialysisSolution.Anticoagulant newprescribe.AnticoagulantShouji = dialysisSolution.AnticoagulantShouji newprescribe.AnticoagulantWeichi = dialysisSolution.AnticoagulantWeichi newprescribe.AnticoagulantZongliang = dialysisSolution.AnticoagulantZongliang newprescribe.AnticoagulantGaimingcheng = dialysisSolution.AnticoagulantGaimingcheng newprescribe.AnticoagulantGaijiliang = dialysisSolution.AnticoagulantGaijiliang newprescribe.ModeId = dialysisSolution.ModeId newprescribe.DialysisDuration = dialysisSolution.DialysisDuration newprescribe.ReplacementWay = dialysisSolution.ReplacementWay newprescribe.HemodialysisMachine = dialysisSolution.HemodialysisMachine newprescribe.BloodFilter = dialysisSolution.BloodFilter newprescribe.PerfusionApparatus = dialysisSolution.PerfusionApparatus newprescribe.BloodFlowVolume = dialysisSolution.BloodFlowVolume newprescribe.DisplaceLiqui = dialysisSolution.DisplaceLiqui newprescribe.Glucose = dialysisSolution.Glucose newprescribe.DialysateFlow = dialysisSolution.DialysateFlow newprescribe.Kalium = dialysisSolution.Kalium newprescribe.Sodium = dialysisSolution.Sodium newprescribe.Calcium = dialysisSolution.Calcium newprescribe.Bicarbonate = dialysisSolution.Bicarbonate newprescribe.DialysateTemperature = dialysisSolution.DialysateTemperature newprescribe.Conductivity = dialysisSolution.Conductivity newprescribe.BodyFluid = dialysisSolution.BodyFluid newprescribe.SpecialMedicine = dialysisSolution.SpecialMedicine newprescribe.SpecialMedicineOther = dialysisSolution.SpecialMedicineOther newprescribe.DisplaceLiquiPart = dialysisSolution.DisplaceLiquiPart newprescribe.DisplaceLiquiValue = dialysisSolution.DisplaceLiquiValue newprescribe.BloodAccess = dialysisSolution.BloodAccess newprescribe.Ultrafiltration = dialysisSolution.Ultrafiltration newprescribe.DialysisDurationHour = dialysisSolution.DialysisDurationHour newprescribe.DialysisDurationMinute = dialysisSolution.DialysisDurationMinute newprescribe.TargetUltrafiltration = dialysisSolution.TargetUltrafiltration newprescribe.DialysateFormulation = dialysisSolution.DialysateFormulation newprescribe.Dialyzer = dialysisSolution.Dialyzer newprescribe.ReplacementTotal = dialysisSolution.ReplacementTotal newprescribe.DialyzerPerfusionApparatus = dialysisSolution.DialyzerPerfusionApparatus newprescribe.BodyFluidOther = dialysisSolution.BodyFluidOther newprescribe.TargetKtv = dialysisSolution.TargetKtv newprescribe.CreatedTime = time.Now().Unix() newprescribe.UpdatedTime = time.Now().Unix() newprescribe.RecordDate = theAssessmentDateTime newprescribe.DewaterAmount = dewater_amount newprescribe.TargetUltrafiltration = dewater_amount newprescribe.Status = 1 err := service.AddSigleRecord(&newprescribe) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } if dialysisPrescribe == nil && dialysisSolution == nil { if lastDialysisPrescribe != nil { var newprescribe models.DialysisPrescription newprescribe.UserOrgId = lastDialysisPrescribe.UserOrgId newprescribe.PatientId = lastDialysisPrescribe.PatientId newprescribe.Anticoagulant = lastDialysisPrescribe.Anticoagulant newprescribe.AnticoagulantShouji = lastDialysisPrescribe.AnticoagulantShouji newprescribe.AnticoagulantWeichi = lastDialysisPrescribe.AnticoagulantWeichi newprescribe.AnticoagulantZongliang = lastDialysisPrescribe.AnticoagulantZongliang newprescribe.AnticoagulantGaimingcheng = lastDialysisPrescribe.AnticoagulantGaimingcheng newprescribe.AnticoagulantGaijiliang = lastDialysisPrescribe.AnticoagulantGaijiliang newprescribe.ModeId = lastDialysisPrescribe.ModeId newprescribe.DialysisDuration = lastDialysisPrescribe.DialysisDuration newprescribe.ReplacementWay = lastDialysisPrescribe.ReplacementWay newprescribe.HemodialysisMachine = lastDialysisPrescribe.HemodialysisMachine newprescribe.BloodFilter = lastDialysisPrescribe.BloodFilter newprescribe.PerfusionApparatus = lastDialysisPrescribe.PerfusionApparatus newprescribe.BloodFlowVolume = lastDialysisPrescribe.BloodFlowVolume newprescribe.DisplaceLiqui = lastDialysisPrescribe.DisplaceLiqui newprescribe.Glucose = lastDialysisPrescribe.Glucose newprescribe.DialysateFlow = lastDialysisPrescribe.DialysateFlow newprescribe.Kalium = lastDialysisPrescribe.Kalium newprescribe.Sodium = lastDialysisPrescribe.Sodium newprescribe.Calcium = lastDialysisPrescribe.Calcium newprescribe.Bicarbonate = lastDialysisPrescribe.Bicarbonate newprescribe.DialysateTemperature = lastDialysisPrescribe.DialysateTemperature newprescribe.Conductivity = lastDialysisPrescribe.Conductivity newprescribe.BodyFluid = lastDialysisPrescribe.BodyFluid newprescribe.SpecialMedicine = lastDialysisPrescribe.SpecialMedicine newprescribe.SpecialMedicineOther = lastDialysisPrescribe.SpecialMedicineOther newprescribe.DisplaceLiquiPart = lastDialysisPrescribe.DisplaceLiquiPart newprescribe.DisplaceLiquiValue = lastDialysisPrescribe.DisplaceLiquiValue newprescribe.BloodAccess = lastDialysisPrescribe.BloodAccess newprescribe.Ultrafiltration = lastDialysisPrescribe.Ultrafiltration newprescribe.DialysisDurationHour = lastDialysisPrescribe.DialysisDurationHour newprescribe.DialysisDurationMinute = lastDialysisPrescribe.DialysisDurationMinute newprescribe.DialysateFormulation = lastDialysisPrescribe.DialysateFormulation newprescribe.Dialyzer = lastDialysisPrescribe.Dialyzer newprescribe.ReplacementTotal = lastDialysisPrescribe.ReplacementTotal newprescribe.DialyzerPerfusionApparatus = lastDialysisPrescribe.DialyzerPerfusionApparatus newprescribe.BodyFluidOther = lastDialysisPrescribe.BodyFluidOther newprescribe.TargetKtv = lastDialysisPrescribe.TargetKtv newprescribe.CreatedTime = time.Now().Unix() newprescribe.UpdatedTime = time.Now().Unix() newprescribe.RecordDate = theAssessmentDateTime newprescribe.DewaterAmount = dewater_amount newprescribe.TargetUltrafiltration = dewater_amount newprescribe.Status = 1 err := service.AddSigleRecord(&newprescribe) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } else if system_dialysisPrescribe != nil { var newprescribe models.DialysisPrescription newprescribe.UserOrgId = system_dialysisPrescribe.UserOrgId newprescribe.PatientId = id newprescribe.Anticoagulant = system_dialysisPrescribe.Anticoagulant newprescribe.AnticoagulantShouji = system_dialysisPrescribe.AnticoagulantShouji newprescribe.AnticoagulantWeichi = system_dialysisPrescribe.AnticoagulantWeichi newprescribe.AnticoagulantZongliang = system_dialysisPrescribe.AnticoagulantZongliang newprescribe.AnticoagulantGaimingcheng = system_dialysisPrescribe.AnticoagulantGaimingcheng newprescribe.AnticoagulantGaijiliang = system_dialysisPrescribe.AnticoagulantGaijiliang newprescribe.ModeId = system_dialysisPrescribe.ModeId newprescribe.DialysisDuration = system_dialysisPrescribe.DialysisDuration newprescribe.ReplacementWay = system_dialysisPrescribe.ReplacementWay newprescribe.HemodialysisMachine = system_dialysisPrescribe.HemodialysisMachine newprescribe.BloodFilter = system_dialysisPrescribe.BloodFilter newprescribe.PerfusionApparatus = system_dialysisPrescribe.PerfusionApparatus newprescribe.BloodFlowVolume = system_dialysisPrescribe.BloodFlowVolume newprescribe.DisplaceLiqui = system_dialysisPrescribe.DisplaceLiqui newprescribe.Glucose = system_dialysisPrescribe.Glucose newprescribe.DialysateFlow = system_dialysisPrescribe.DialysateFlow newprescribe.Kalium = system_dialysisPrescribe.Kalium newprescribe.Sodium = system_dialysisPrescribe.Sodium newprescribe.Calcium = system_dialysisPrescribe.Calcium newprescribe.Bicarbonate = system_dialysisPrescribe.Bicarbonate newprescribe.DialysateTemperature = system_dialysisPrescribe.DialysateTemperature newprescribe.Conductivity = system_dialysisPrescribe.Conductivity newprescribe.BodyFluid = system_dialysisPrescribe.BodyFluid newprescribe.SpecialMedicine = system_dialysisPrescribe.SpecialMedicine newprescribe.SpecialMedicineOther = system_dialysisPrescribe.SpecialMedicineOther newprescribe.DisplaceLiquiPart = system_dialysisPrescribe.DisplaceLiquiPart newprescribe.DisplaceLiquiValue = system_dialysisPrescribe.DisplaceLiquiValue newprescribe.BloodAccess = system_dialysisPrescribe.BloodAccess newprescribe.Ultrafiltration = system_dialysisPrescribe.Ultrafiltration newprescribe.DialysisDurationHour = system_dialysisPrescribe.DialysisDurationHour newprescribe.DialysisDurationMinute = system_dialysisPrescribe.DialysisDurationMinute newprescribe.DialysateFormulation = system_dialysisPrescribe.DialysateFormulation newprescribe.Dialyzer = system_dialysisPrescribe.Dialyzer newprescribe.ReplacementTotal = system_dialysisPrescribe.ReplacementTotal newprescribe.DialyzerPerfusionApparatus = system_dialysisPrescribe.DialyzerPerfusionApparatus newprescribe.BodyFluidOther = system_dialysisPrescribe.BodyFluidOther newprescribe.TargetKtv = system_dialysisPrescribe.TargetKtv newprescribe.CreatedTime = time.Now().Unix() newprescribe.UpdatedTime = time.Now().Unix() newprescribe.RecordDate = theAssessmentDateTime newprescribe.DewaterAmount = dewater_amount newprescribe.TargetUltrafiltration = dewater_amount newprescribe.Status = 1 fmt.Println(newprescribe.DewaterAmount) fmt.Println(newprescribe.TargetUltrafiltration) err := service.AddSigleRecord(&newprescribe) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } else { var newprescribe models.DialysisPrescription newprescribe.UserOrgId = adminUserInfo.Org.Id newprescribe.PatientId = id newprescribe.ModeId = mode_id newprescribe.CreatedTime = time.Now().Unix() newprescribe.UpdatedTime = time.Now().Unix() newprescribe.RecordDate = theAssessmentDateTime newprescribe.DewaterAmount = dewater_amount newprescribe.TargetUltrafiltration = dewater_amount newprescribe.Status = 1 err := service.AddSigleRecord(&newprescribe) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } } if dialysisPrescribe != nil { dialysisPrescribe.UpdatedTime = time.Now().Unix() dialysisPrescribe.RecordDate = theAssessmentDateTime dialysisPrescribe.DewaterAmount = dewater_amount dialysisPrescribe.TargetUltrafiltration = dewater_amount dialysisPrescribe.Status = 1 updateErr := service.UpDateDialysisPrescription(dialysisPrescribe) if updateErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCommitFail) } } theEvaluation, getPEErr := service.MobileGetPredialysisEvaluation(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getPEErr != nil { c.ErrorLog("获取透前评估失败:%v", getPEErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var evaluation models.PredialysisEvaluation if theEvaluation != nil { evaluation = *theEvaluation } // 如果今天没有透前评估,则插入新的数据 if theEvaluation == nil { evaluation.CreatedTime = time.Now().Unix() evaluation.Status = 1 evaluation.AssessmentDate = theAssessmentDateTime evaluation.PatientId = id evaluation.UserOrgId = adminUserInfo.Org.Id // 获取上一次透前评估信息,部分数据是需要从上一次透前评估继承 lastPredialysisEvaluation, _ := service.MobileGetLastTimePredialysisEvaluation(adminUserInfo.Org.Id, id, theAssessmentDateTime) // 获取上一次透后评估,插入本次透前评估的上次透后体重(weight_after_last_transparency)字段 assessmentAfterDislysis, getAADErr := service.MobileGetLastTimeAssessmentAfterDislysis(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getAADErr != nil { c.ErrorLog("获取透后评估失败:%v", getAADErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } // 获取干体重,先从干体重配置里去读,如果没有,则读取上一次透前评估的干体重 weight, err := service.FindLastDryWeightAdjust(adminUserInfo.Org.Id, id) if err == gorm.ErrRecordNotFound { if lastPredialysisEvaluation != nil { evaluation.DryWeight = lastPredialysisEvaluation.DryWeight } else { evaluation.DryWeight = 0 } } else { evaluation.DryWeight = weight.DryWeight } if assessmentAfterDislysis != nil { evaluation.WeightAfterLastTransparency = assessmentAfterDislysis.WeightAfter } if lastPredialysisEvaluation != nil { evaluation.BloodAccessPartId = lastPredialysisEvaluation.BloodAccessPartId evaluation.BloodAccessPartOperaId = lastPredialysisEvaluation.BloodAccessPartOperaId evaluation.AdditionalWeight = lastPredialysisEvaluation.AdditionalWeight evaluation.Temperature = lastPredialysisEvaluation.Temperature evaluation.BreathingRate = lastPredialysisEvaluation.BreathingRate evaluation.Catheter = lastPredialysisEvaluation.Catheter evaluation.InternalFistula = lastPredialysisEvaluation.InternalFistula evaluation.PulseFrequency = lastPredialysisEvaluation.PulseFrequency evaluation.Complication = lastPredialysisEvaluation.Complication evaluation.LastPostDialysis = lastPredialysisEvaluation.LastPostDialysis evaluation.DialysisInterphase = lastPredialysisEvaluation.DialysisInterphase evaluation.SymptomBeforeDialysis = lastPredialysisEvaluation.SymptomBeforeDialysis evaluation.PunctureNeedle = lastPredialysisEvaluation.PunctureNeedle evaluation.PunctureWay = lastPredialysisEvaluation.PunctureWay } } else { evaluation.UpdatedTime = time.Now().Unix() } evaluation.WeightBefore = weighing_before evaluation.AssessmentTime = time.Now().Unix() err := service.UpadatePredialysisEvaluation(&evaluation) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate) return } c.ServeSuccessJSON(map[string]interface{}{ "msg": "ok", "evaluation": evaluation, }) return } else { // 保存透后相关数据 assessmentAfterDislysis, getAADErr := service.MobileGetAssessmentAfterDislysis(adminUserInfo.Org.Id, id, theAssessmentDateTime) if getAADErr != nil { c.ErrorLog("获取透后评估失败:%v", getAADErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var afterevaluation models.AssessmentAfterDislysis if assessmentAfterDislysis != nil { afterevaluation = *assessmentAfterDislysis } if assessmentAfterDislysis == nil { afterevaluation.CreatedTime = time.Now().Unix() afterevaluation.Status = 1 afterevaluation.AssessmentDate = theAssessmentDateTime afterevaluation.PatientId = id afterevaluation.UserOrgId = adminUserInfo.Org.Id } else { afterevaluation.UpdatedTime = time.Now().Unix() } afterevaluation.WeightAfter = weight_after afterevaluation.WeightLoss = weight_loss // if (adminUserInfo.Org.Id == 9538){ // afterevaluation.ActualUltrafiltration = weight_loss * 1000 //中能建的计量单位是毫升(ml) // } else { // afterevaluation.ActualUltrafiltration = weight_loss // 计量单位是L // } err := service.UpdateAssessmentAfterDislysisRecord(&afterevaluation) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "assessmentAfterDislysis": afterevaluation, }) } } } func (c *CheckWeightApiController) GetPatientInfoDialysis() { id, _ := c.GetInt64("patient", 0) if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientByIdWithDiseases(adminUserInfo.Org.Id, id) if patient.ID <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } var dialysisinfo map[string]interface{} dialysisinfo = make(map[string]interface{}) dialysisinfo["id"] = patient.ID dialysisinfo["name"] = patient.Name dialysisinfo["dialysis_no"] = patient.DialysisNo thisTime := time.Now() scheduleDateStart := thisTime.Format("2006-01-02") + " 00:00:00" scheduleDateEnd := thisTime.Format("2006-01-02") + " 23:59:59" timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) theEndTime, _ := time.ParseInLocation(timeLayout, scheduleDateEnd, loc) startTime := theStartTime.Unix() endTime := theEndTime.Unix() // 判断当前用户是透析前还是透析后 var dialysistype int _, dialysisOrder := service.FindDialysisRecordById(adminUserInfo.Org.Id, id, startTime) if dialysisOrder == nil { dialysistype = 1 } else { dialysistype = 2 } // 获取当前或者下次排班信息 var sc map[string]interface{} sc = make(map[string]interface{}) if dialysistype == 1 { daySchedule, _ := service.GetPatientScheduleFormDay(adminUserInfo.Org.Id, startTime, endTime, id) if len(daySchedule) <= 0 { sc["code"] = 1 sc["msg"] = "抱歉,您今天没有排版!" sc["mode"] = 0 sc["data"] = daySchedule } else { if daySchedule[0].Schedule.ID > 0 { sc["code"] = 0 sc["msg"] = "" sc["mode"] = daySchedule[0].Schedule.ModeId sc["data"] = daySchedule } else { sc["code"] = 1 sc["msg"] = "抱歉,您今天没有排版!" sc["mode"] = 0 sc["data"] = daySchedule } } } else { nextSchedule, _ := service.GetNextSchedule(adminUserInfo.Org.Id, endTime, id) if len(nextSchedule) <= 0 { sc["code"] = 1 sc["msg"] = "抱歉,您后续没有排版!" sc["mode"] = 0 sc["data"] = nextSchedule } else { if nextSchedule[0].Schedule.ID > 0 { sc["code"] = 0 sc["msg"] = "" sc["mode"] = nextSchedule[0].Schedule.ModeId sc["data"] = nextSchedule } else { sc["code"] = 1 sc["msg"] = "抱歉,您后续没有排版!" sc["mode"] = 0 sc["data"] = nextSchedule } } } switch sc["mode"] { case 1: sc["mode"] = "HD" case 2: sc["mode"] = "HDF" case 3: sc["mode"] = "HD+HP" case 4: sc["mode"] = "HP" case 5: sc["mode"] = "HF" case 6: sc["mode"] = "SCUF" case 7: sc["mode"] = "IUF" case 8: sc["mode"] = "HFHD" case 9: sc["mode"] = "HFHD+HP" case 10: sc["mode"] = "PHF" case 11: sc["mode"] = "HFR" case 12: sc["mode"] = "HDF+HP" case 13: sc["mode"] = "CRRT" case 14: sc["mode"] = "腹水回输" case 15: sc["mode"] = "HD前置换" case 16: sc["mode"] = "HD后置换" case 17: sc["mode"] = "HDF前置换" case 18: sc["mode"] = "HDF后置换" default: sc["mode"] = "HD" } // 获取患者透前干体重或者获取患者透前体重 var dry_weight map[string]interface{} dry_weight = make(map[string]interface{}) if dialysistype == 1 { lastPredialysisEvaluation, getLPEErr := service.MobileGetLastTimePredialysisEvaluation(adminUserInfo.Org.Id, id, endTime) weight, err := service.FindLastDryWeightAdjust(adminUserInfo.Org.Id, id) if err == gorm.ErrRecordNotFound { if getLPEErr != nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { if lastPredialysisEvaluation == nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { // 传输的干体重实际为干体重加上衣服重 dry_weight["code"] = 0 dry_weight["dry_weight"] = lastPredialysisEvaluation.DryWeight + lastPredialysisEvaluation.AdditionalWeight } } } else { if err != nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { dry_weight["code"] = 0 if getLPEErr != nil { dry_weight["code"] = 0 dry_weight["dry_weight"] = weight.DryWeight } else { if lastPredialysisEvaluation == nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = weight.DryWeight } else { // 传输的干体重实际为干体重加上衣服重 dry_weight["code"] = 0 dry_weight["dry_weight"] = weight.DryWeight + lastPredialysisEvaluation.AdditionalWeight } } } } } else { predialysisEvaluation, getPEErr := service.MobileGetPredialysisEvaluation(adminUserInfo.Org.Id, id, startTime) if getPEErr != nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { if predialysisEvaluation == nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { dry_weight["code"] = 0 dry_weight["dry_weight"] = predialysisEvaluation.WeightBefore } } } c.ServeSuccessJSON(map[string]interface{}{ "dialysistype": dialysistype, "patient": dialysisinfo, "schedule": sc, "dryweight": dry_weight, }) return } func (c *CheckWeightApiController) GetPatientInfoBeforeDialysis() { id, _ := c.GetInt64("patient", 0) if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientByIdWithDiseases(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } var dialysisinfo map[string]interface{} dialysisinfo = make(map[string]interface{}) dialysisinfo["id"] = patient.ID dialysisinfo["name"] = patient.Name dialysisinfo["dialysis_no"] = patient.DialysisNo thisTime := time.Now() scheduleDateStart := thisTime.Format("2006-01-02") + " 00:00:00" scheduleDateEnd := thisTime.Format("2006-01-02") + " 23:59:59" fmt.Println(scheduleDateStart, scheduleDateEnd) timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) theEndTime, _ := time.ParseInLocation(timeLayout, scheduleDateEnd, loc) fmt.Println(theStartTime, theEndTime) startTime := theStartTime.Unix() endTime := theEndTime.Unix() var sc map[string]interface{} sc = make(map[string]interface{}) //一天只有排班一次 daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, startTime, endTime, id) if daySchedule.ID > 0 { switch daySchedule.ModeId { case 1: sc["mode"] = "HD" case 2: sc["mode"] = "HDF" case 3: sc["mode"] = "HD+HP" case 4: sc["mode"] = "HP" case 5: sc["mode"] = "HF" case 6: sc["mode"] = "SCUF" case 7: sc["mode"] = "IUF" case 8: sc["mode"] = "HFHD" case 9: sc["mode"] = "HFHD+HP" case 10: sc["mode"] = "PHF" case 11: sc["mode"] = "HFR" case 12: sc["mode"] = "HDF+HP" case 13: sc["mode"] = "CRRT" case 14: sc["mode"] = "腹水回输" case 15: sc["mode"] = "HD前置换" case 16: sc["mode"] = "HD后置换" case 17: sc["mode"] = "HDF前置换" case 18: sc["mode"] = "HDF后置换" default: sc["mode"] = "HD" } sc["code"] = 0 sc["msg"] = "" sc["data"] = daySchedule } else { sc["code"] = 1 sc["msg"] = "抱歉,您今天没有排版!" sc["mode"] = "" sc["data"] = daySchedule } fmt.Println(sc) type dryWeight struct { code int dry_weight float64 } var dry_weight map[string]interface{} dry_weight = make(map[string]interface{}) lastPredialysisEvaluation, getLPEErr := service.MobileGetLastTimePredialysisEvaluation(adminUserInfo.Org.Id, id, startTime) if getLPEErr != nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { if lastPredialysisEvaluation == nil { dry_weight["code"] = 1 dry_weight["dry_weight"] = nil } else { dry_weight["code"] = 0 dry_weight["dry_weight"] = lastPredialysisEvaluation.DryWeight } } c.ServeSuccessJSON(map[string]interface{}{ "patient": dialysisinfo, "schedule": sc, "dryweight": dry_weight, }) return }