csx 3 лет назад
Родитель
Сommit
dfee6ca45b
2 измененных файлов: 75 добавлений и 47 удалений
  1. 68 45
      controllers/his_api_controller.go
  2. 7 2
      service/his_service.go

+ 68 - 45
controllers/his_api_controller.go Просмотреть файл

3557
 func (c *HisApiController) GetFaPiaoData() {
3557
 func (c *HisApiController) GetFaPiaoData() {
3558
 	order_id, _ := c.GetInt64("order_id")
3558
 	order_id, _ := c.GetInt64("order_id")
3559
 	patient_id, _ := c.GetInt64("patient_id")
3559
 	patient_id, _ := c.GetInt64("patient_id")
3560
+	number := c.GetString("number")
3560
 
3561
 
3561
 	adminUser := c.GetAdminUserInfo()
3562
 	adminUser := c.GetAdminUserInfo()
3562
 	order, _ := service.GetHisOrderByID(order_id)
3563
 	order, _ := service.GetHisOrderByID(order_id)
3566
 
3567
 
3567
 	department, _ := service.GetDepartMentDetail(patientPrescription.Departments)
3568
 	department, _ := service.GetDepartMentDetail(patientPrescription.Departments)
3568
 
3569
 
3569
-	his, _ := service.GetHisPatientInfo(adminUser.CurrentOrgId, patient_id, order.SettleAccountsDate)
3570
+	his, _ := service.GetHisPatientInfoThree(adminUser.CurrentOrgId, number)
3571
+
3572
+	prescriptions, _ := service.GetHisPrescriptionThree(adminUser.CurrentOrgId, patient_id, order.Number)
3570
 
3573
 
3571
 	var bedCostTotal float64 = 0         //床位总费
3574
 	var bedCostTotal float64 = 0         //床位总费
3572
 	var bedCostSelfTotal float64 = 0     //床位自费
3575
 	var bedCostSelfTotal float64 = 0     //床位自费
3606
 
3609
 
3607
 	decimal.DivisionPrecision = 2
3610
 	decimal.DivisionPrecision = 2
3608
 
3611
 
3609
-	for _, item := range orderInfos {
3610
-		if item.MedChrgitmType == "01" { //床位费
3611
-			bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3612
-			bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3613
-			bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3614
-		}
3612
+	if his.BalanceAccountsType == 2 {
3613
+		for _, item := range prescriptions {
3614
+			if item.Type == 1 {
3615
+				for _, subItem := range item.HisDoctorAdviceInfo {
3616
+					westernMedicineCostTotal = westernMedicineCostTotal + (subItem.PrescribingNumber * subItem.Price)
3617
+				}
3615
 
3618
 
3616
-		if item.MedChrgitmType == "03" { //检查费
3617
-			checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3618
-			checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3619
-			checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3619
+			} else {
3620
+				for _, subItem := range item.HisPrescriptionProject {
3621
+					if subItem.Type == 2 {
3622
+						treatCostTotal = treatCostTotal + (float64(subItem.Count) * subItem.Price)
3623
+					} else {
3624
+						materialCostTotal = materialCostTotal + (float64(subItem.Count) * subItem.Price)
3625
+					}
3626
+				}
3627
+			}
3620
 		}
3628
 		}
3629
+	} else {
3630
+		for _, item := range orderInfos {
3631
+			if item.MedChrgitmType == "01" { //床位费
3632
+				bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3633
+				bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3634
+				bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3635
+			}
3621
 
3636
 
3622
-		if item.MedChrgitmType == "04" { //化验费
3623
-			laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3624
-			laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3625
-			laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3626
-		}
3637
+			if item.MedChrgitmType == "03" { //检查
3638
+				checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3639
+				checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3640
+				checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3641
+			}
3627
 
3642
 
3628
-		if item.MedChrgitmType == "05" { //治疗
3629
-			treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3630
-			treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3631
-			treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3632
-		}
3643
+			if item.MedChrgitmType == "04" { //化验
3644
+				laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3645
+				laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3646
+				laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3647
+			}
3633
 
3648
 
3634
-		if item.MedChrgitmType == "06" { //手术
3635
-			operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3636
-			operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3637
-			operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3638
-		}
3649
+			if item.MedChrgitmType == "05" { //治疗
3650
+				treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3651
+				treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3652
+				treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3653
+			}
3639
 
3654
 
3640
-		if item.MedChrgitmType == "08" { //材料
3641
-			materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3642
-			materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3643
-			materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3644
-		}
3655
+			if item.MedChrgitmType == "06" { //手术
3656
+				operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3657
+				operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3658
+				operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3659
+			}
3645
 
3660
 
3646
-		if item.MedChrgitmType == "09" { //西药
3647
-			westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3648
-			westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3649
-			westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3650
-		}
3661
+			if item.MedChrgitmType == "08" { //材料
3662
+				materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3663
+				materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3664
+				materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3665
+			}
3651
 
3666
 
3652
-		if item.MedChrgitmType == "11" { //中成费
3653
-			chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3654
-			chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3655
-			chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3656
-		}
3667
+			if item.MedChrgitmType == "09" { //西药费
3668
+				westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3669
+				westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3670
+				westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3671
+			}
3672
+
3673
+			if item.MedChrgitmType == "11" { //中成费
3674
+				chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3675
+				chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3676
+				chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3677
+			}
3678
+
3679
+			if item.MedChrgitmType == "14" { //其他费
3680
+				otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3681
+				otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3682
+				otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3683
+			}
3657
 
3684
 
3658
-		if item.MedChrgitmType == "14" { //其他费
3659
-			otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
3660
-			otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
3661
-			otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
3662
 		}
3685
 		}
3663
 
3686
 
3664
 	}
3687
 	}

+ 7 - 2
service/his_service.go Просмотреть файл

299
 	return
299
 	return
300
 }
300
 }
301
 
301
 
302
+func GetHisPatientInfoThree(org_id int64, number string) (info models.HisPatient, err error) {
303
+	err = readDb.Model(&models.HisPatient{}).Where("user_org_id = ? AND status = 1 AND number = ?", org_id, number).First(&info).Error
304
+	return
305
+}
306
+
302
 func GetHisPatientInfoList(org_id int64, patient_id int64, record_date int64) (info []*models.HisPatient, err error) {
307
 func GetHisPatientInfoList(org_id int64, patient_id int64, record_date int64) (info []*models.HisPatient, err error) {
303
 	err = readDb.Model(&models.HisPatient{}).Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ?", org_id, record_date, patient_id).Find(&info).Error
308
 	err = readDb.Model(&models.HisPatient{}).Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ?", org_id, record_date, patient_id).Find(&info).Error
304
 	return
309
 	return
472
 		}).Preload("TempHisOrder", func(db *gorm.DB) *gorm.DB {
477
 		}).Preload("TempHisOrder", func(db *gorm.DB) *gorm.DB {
473
 		return db.Where("status = 1 AND user_org_id = ?", org_id)
478
 		return db.Where("status = 1 AND user_org_id = ?", org_id)
474
 	}).
479
 	}).
475
-		Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND his_patient_id = ? AND order_status <> 2 AND order_status <> 3 AND p_type = ?", org_id, record_date, patient_id, his_patient_id, p_type).
480
+		Where("(user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND order_status <> 2 AND order_status <> 3 AND p_type = ?) AND  (his_patient_id = ? OR his_patient_id = 0)", org_id, record_date, patient_id, p_type, his_patient_id).
476
 		Find(&prescription).Error
481
 		Find(&prescription).Error
477
 	return
482
 	return
478
 }
483
 }
1811
 	db = db.Preload("HisPatient", func(db *gorm.DB) *gorm.DB {
1816
 	db = db.Preload("HisPatient", func(db *gorm.DB) *gorm.DB {
1812
 		return db.Where("status = 1 AND user_org_id = ? AND record_date = ?", org_id, record_date).Preload("VMHisOrders", "user_org_id = ? AND status = 1 AND settle_accounts_date = ? ", org_id, record_date)
1817
 		return db.Where("status = 1 AND user_org_id = ? AND record_date = ?", org_id, record_date).Preload("VMHisOrders", "user_org_id = ? AND status = 1 AND settle_accounts_date = ? ", org_id, record_date)
1813
 	})
1818
 	})
1814
-	db = db.Preload("HisPrescription", "user_org_id = ? AND status = 1 AND record_date = ? AND p_type <> 1", org_id, record_date)
1819
+	db = db.Preload("HisPrescription", "user_org_id = ? AND status = 1 AND record_date = ? AND p_type <> 1 AND order_status <>", org_id, record_date)
1815
 	err = db.Preload("VMHisPrescriptionInfo", "user_org_id = ? AND status = 1 AND record_date = ? AND p_type <> 1", org_id, record_date).Find(&patients).Error
1820
 	err = db.Preload("VMHisPrescriptionInfo", "user_org_id = ? AND status = 1 AND record_date = ? AND p_type <> 1", org_id, record_date).Find(&patients).Error
1816
 
1821
 
1817
 	for _, item := range patients {
1822
 	for _, item := range patients {