package controllers import ( "XT_New/enums" "XT_New/service" "fmt" "github.com/astaxie/beego" "github.com/shopspring/decimal" "time" ) type HisSummaryApiController struct { BaseAuthAPIController } func HisSummaryApiRegistRouters() { beego.Router("/api/gethissummarydetaillist", &HisSummaryApiController{}, "Get:GetHisSummaryDetailList") beego.Router("/api/his/getgatherdetailist", &HisSummaryApiController{}, "Get:GetGatherDetaiList") beego.Router("/api/his/getdetailpatients", &HisSummaryApiController{}, "Get:GetDetailPatients") } func (this *HisSummaryApiController) GetHisSummaryDetailList() { start_time := this.GetString("start_time") end_time := this.GetString("end_time") keyword := this.GetString("keyword") item_type, _ := this.GetInt64("type") patient_id, _ := this.GetInt64("patient_id") adminUser := this.GetAdminUserInfo() timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) if err != nil { } startRecordDateTime := startTime.Unix() endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) if err != nil { } endRecordDateTime := endTime.Unix() list, err := service.GetHisSummaryDetailList(keyword, item_type, patient_id, adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime) patient, _ := service.GetPatientByID(adminUser.CurrentOrgId, patient_id) his_patient, _ := service.GetHisSummaryPatientInfo(adminUser.CurrentOrgId, patient_id, startRecordDateTime, endRecordDateTime) order, _ := service.GetHisLastOrder(adminUser.CurrentOrgId, patient_id, startRecordDateTime, endRecordDateTime) his_record_patient, _ := service.GetHisSummaryPatientInfoSix(adminUser.CurrentOrgId, patient_id, startRecordDateTime, endRecordDateTime) //获取所有的科室 hisDepatment, _ := service.GetHisDepatment(adminUser.CurrentOrgId) if err == nil { this.ServeSuccessJSON(map[string]interface{}{ "list": list, "patient": patient, "his_patient": his_patient, "hisDepatment": hisDepatment, "order": order, "his_record_patient": his_record_patient, }) return } else { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } } func (this *HisSummaryApiController) GetGatherDetaiList() { start_time := this.GetString("start_time") end_time := this.GetString("end_time") keyword := this.GetString("keyword") item_type, _ := this.GetInt64("type") patient_id, _ := this.GetInt64("patient_id") adminUser := this.GetAdminUserInfo() timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) if err != nil { } startRecordDateTime := startTime.Unix() endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) if err != nil { } endRecordDateTime := endTime.Unix() //查询该病人这段时间的记录单号 orderInfo, _ := service.GetGatherHisOrder(keyword, item_type, patient_id, adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime) org_id := this.GetAdminUserInfo().CurrentOrgId appid := this.GetAdminUserInfo().CurrentAppId var order_info []*service.HisOrderInfo var MdtrtId string patient, _ := service.GetPatientByID(org_id, patient_id) for _, item := range orderInfo { orderinfo, _ := service.GetHisOrderDetailByNumber(item.Number, org_id) //number = item.Number MdtrtId = item.MdtrtId for _, it := range orderinfo { order_info = append(order_info, it) } } his, _ := service.GetHisPatientInfoFive(org_id, patient_id, startRecordDateTime, endRecordDateTime) record, _ := service.GetInHospitalRecordByNumber(MdtrtId) //获取所有客户 adminInfo, _ := service.GetAllDoctorSix(org_id, appid) //获取最后一次排班 schedule, _ := service.GetHisSchedule(patient_id, org_id, startRecordDateTime, endRecordDateTime) fmt.Println("scheudlwe3223333232233232232323232323232323", schedule) bedNumber, _ := service.GetAllBedNumberSix(org_id) 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 //治疗费用 var zhenChaCostTotal float64 = 0 //其他费用 decimal.DivisionPrecision = 2 var BalanceAccountsType int64 if his.ID > 0 { BalanceAccountsType = his.BalanceAccountsType } else { BalanceAccountsType = record.BalanceAccountsType } his_patient, _ := service.GetHisSummaryPatientInfo(adminUser.CurrentOrgId, patient_id, startRecordDateTime, endRecordDateTime) //获取所有的科室 hisDepatment, _ := service.GetHisDepatment(adminUser.CurrentOrgId) //统计 prescription, _ := service.GetHisPrescriptionTenty(adminUser.CurrentOrgId, patient_id, startRecordDateTime, endRecordDateTime, keyword, item_type) //orderlist, _ := service.GetHisChargeOrder(adminUser.CurrentOrgId, patient_id, startRecordDateTime, endRecordDateTime, keyword, item_type) var medicalInsuranceLevel = "医保等级" medicalInsuranceLevelParent, _ := service.GetDrugDataConfig(0, medicalInsuranceLevel) medicalInsuranceLevelList, _ := service.GetParentDataConfig(medicalInsuranceLevelParent.ID, adminUser.CurrentOrgId) if BalanceAccountsType != 2 && BalanceAccountsType > 0 { for _, item := range order_info { if org_id == 10215 { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.MedChrgitmType == "02" { //诊察费 zhenChaCostTotal, _ = decimal.NewFromFloat(zhenChaCostTotal).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" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费 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" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } } else if org_id == 10188 || org_id == 10217 { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.MedChrgitmType == "02" { //诊察费 zhenChaCostTotal, _ = decimal.NewFromFloat(zhenChaCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.MedChrgitmType == "03" { //检查费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.MedChrgitmType == "04" { //化验费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.MedChrgitmType == "05" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费 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" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } } else { 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" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费 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" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" || item.MedChrgitmType == "02" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } } } this.ServeSuccessJSON(map[string]interface{}{ "order": orderInfo, "order_info": order_info, "patient": patient, "admin_info": adminInfo, "his_hospital": record, "bedCostTotal": bedCostTotal, "operationCostTotal": operationCostTotal, "otherCostTotal": otherCostTotal, "materialCostTotal": materialCostTotal, "westernMedicineCostTotal": westernMedicineCostTotal, "chineseTraditionalMedicineCostTotal": chineseTraditionalMedicineCostTotal, "checkCostTotal": checkCostTotal, "zhenChaCostTotal": zhenChaCostTotal, "laboratoryCostTotal": laboratoryCostTotal, "treatCostTotal": treatCostTotal, "his_patient": his_patient, "hisDepatment": hisDepatment, "prescription": prescription, "schedule": schedule, "bedNumber": bedNumber, }) } else { for _, item := range order_info { item.FulamtOwnpayAmt = item.DetItemFeeSumamt if item.HisDoctorAdviceInfo.ID > 0 && item.HisPrescriptionProject.ID == 0 { //药品 item.MedChrgitmType = "09" } if item.HisPrescriptionProject.ID > 0 && item.HisDoctorAdviceInfo.ID == 0 { if item.HisPrescriptionProject.Type == 2 { if this.GetAdminUserInfo().CurrentOrgId == 10215 { switch item.HisPrescriptionProject.VMHisProject.CostClassify { case 0: item.MedChrgitmType = "0" break case 1: item.MedChrgitmType = "14" break case 2: item.MedChrgitmType = "05" break case 3: item.MedChrgitmType = "03" break case 4: item.MedChrgitmType = "03" break case 5: item.MedChrgitmType = "08" break case 6: item.MedChrgitmType = "14" break case 7: item.MedChrgitmType = "14" break case 8: item.MedChrgitmType = "03" break case 9: item.MedChrgitmType = "14" break case 10: item.MedChrgitmType = "14" break case 11: item.MedChrgitmType = "06" break case 12: item.MedChrgitmType = "12" break case 13: item.MedChrgitmType = "01" break case 14: item.MedChrgitmType = "04" break case 15: item.MedChrgitmType = "14" break } } else { switch item.HisPrescriptionProject.VMHisProject.CostClassify { case 1: item.MedChrgitmType = "14" break case 2: item.MedChrgitmType = "05" break case 3: item.MedChrgitmType = "04" break case 4: item.MedChrgitmType = "14" break case 5: item.MedChrgitmType = "08" break case 6: item.MedChrgitmType = "14" break case 7: item.MedChrgitmType = "14" break case 8: item.MedChrgitmType = "03" break case 9: item.MedChrgitmType = "14" break } } } else if item.HisPrescriptionProject.Type == 3 { item.MedChrgitmType = "08" } } } for _, item := range order_info { if org_id == 10215 { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.MedChrgitmType == "02" { //诊察费 zhenChaCostTotal, _ = decimal.NewFromFloat(zhenChaCostTotal).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" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费 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" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } } else { 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" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费 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" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" || item.MedChrgitmType == "02" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } } } this.ServeSuccessJSON(map[string]interface{}{ "order": orderInfo, "order_info": order_info, "patient": patient, "admin_info": adminInfo, "his_hospital": record, "bedCostTotal": bedCostTotal, "operationCostTotal": operationCostTotal, "otherCostTotal": otherCostTotal, "materialCostTotal": materialCostTotal, "westernMedicineCostTotal": westernMedicineCostTotal, "chineseTraditionalMedicineCostTotal": chineseTraditionalMedicineCostTotal, "checkCostTotal": checkCostTotal, "zhenChaCostTotal": zhenChaCostTotal, "laboratoryCostTotal": laboratoryCostTotal, "treatCostTotal": treatCostTotal, "his_patient": his_patient, "hisDepatment": hisDepatment, "prescription": prescription, "balanceAccountsType": BalanceAccountsType, "medicalInsuranceLevelList": medicalInsuranceLevelList, "schedule": schedule, "bedNumber": bedNumber, }) } } func (this *HisSummaryApiController) GetDetailPatients() { keyword := this.GetString("keyword") orgId := this.GetAdminUserInfo().CurrentOrgId patients, err := service.GetDetailPatients(keyword, orgId) if err == nil { this.ServeSuccessJSON(map[string]interface{}{ "patient": patients, }) return } else { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } }