Browse Source

医保对接

csx 3 years ago
parent
commit
dfee6ca45b
2 changed files with 75 additions and 47 deletions
  1. 68 45
      controllers/his_api_controller.go
  2. 7 2
      service/his_service.go

+ 68 - 45
controllers/his_api_controller.go View File

@@ -3557,6 +3557,7 @@ func (c *HisApiController) GetCompareData() {
3557 3557
 func (c *HisApiController) GetFaPiaoData() {
3558 3558
 	order_id, _ := c.GetInt64("order_id")
3559 3559
 	patient_id, _ := c.GetInt64("patient_id")
3560
+	number := c.GetString("number")
3560 3561
 
3561 3562
 	adminUser := c.GetAdminUserInfo()
3562 3563
 	order, _ := service.GetHisOrderByID(order_id)
@@ -3566,7 +3567,9 @@ func (c *HisApiController) GetFaPiaoData() {
3566 3567
 
3567 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 3574
 	var bedCostTotal float64 = 0         //床位总费
3572 3575
 	var bedCostSelfTotal float64 = 0     //床位自费
@@ -3606,59 +3609,79 @@ func (c *HisApiController) GetFaPiaoData() {
3606 3609
 
3607 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 View File

@@ -299,6 +299,11 @@ func GetHisPatientInfoTwo(org_id int64, patient_id int64, record_date int64) (in
299 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 307
 func GetHisPatientInfoList(org_id int64, patient_id int64, record_date int64) (info []*models.HisPatient, err error) {
303 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 309
 	return
@@ -472,7 +477,7 @@ func GetUnChargeHisPrescriptionFive(org_id int64, patient_id int64, his_patient_
472 477
 		}).Preload("TempHisOrder", func(db *gorm.DB) *gorm.DB {
473 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 481
 		Find(&prescription).Error
477 482
 	return
478 483
 }
@@ -1811,7 +1816,7 @@ func GetNewAllChargeHisPatientList(org_id int64, keywords string, record_date in
1811 1816
 	db = db.Preload("HisPatient", func(db *gorm.DB) *gorm.DB {
1812 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 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 1822
 	for _, item := range patients {