浏览代码

Merge branch '20201014_xt_api_new_branch' of http://git.shengws.com/csx/XT_New into 20201014_xt_api_new_branch

XMLWAN 4 年前
父节点
当前提交
edff63f0a1
共有 4 个文件被更改,包括 397 次插入7 次删除
  1. 337 6
      controllers/his_api_controller.go
  2. 3 0
      models/his_models.go
  3. 51 0
      service/gdyb_service.go
  4. 6 1
      service/his_service.go

+ 337 - 6
controllers/his_api_controller.go 查看文件

@@ -22,6 +22,8 @@ import (
22 22
 	"strconv"
23 23
 	"strings"
24 24
 	"time"
25
+	"syscall"
26
+	"unsafe"
25 27
 )
26 28
 
27 29
 type HisApiController struct {
@@ -56,9 +58,13 @@ func HisManagerApiRegistRouters() {
56 58
 	beego.Router("/api/register/get", &HisApiController{}, "get:GetRegisterInfo")
57 59
 	beego.Router("/api/upload/get", &HisApiController{}, "get:GetUploadInfo")
58 60
 
61
+	beego.Router("/api/settle/query", &HisApiController{}, "get:GetSettleAccounts")
62
+
59 63
 	beego.Router("/api/checkaccount/get", &HisApiController{}, "get:GetCheckAccount")
60 64
 	beego.Router("/api/checkdetailaccount/get", &HisApiController{}, "get:GetCheckDetailAccount")
61 65
 
66
+	beego.Router("/api/checkdetailaccount/get", &HisApiController{}, "get:GetCheckDetailAccount")
67
+
62 68
 	beego.Router("/api/refund/post", &HisApiController{}, "get:Refund")
63 69
 
64 70
 	beego.Router("/api/medicalinsurance/config", &HisApiController{}, "get:GetMedicalInsuranceConfig")
@@ -68,9 +74,59 @@ func HisManagerApiRegistRouters() {
68 74
 	beego.Router("/api/hisprescription/get", &DialysisApiController{}, "Get:GetLastOrNextHisPrescription")
69 75
 
70 76
 	beego.Router("/api/callhisprescription/get", &DialysisApiController{}, "Get:GetCallHisPrescription")
77
+	beego.Router("/api/sscard", &HisApiController{}, "get:Sscard")
78
+
79
+}
80
+
81
+func (c *HisApiController) Sscard() {
82
+	r := CardInit()
83
+	if (r==0) {
84
+		GetBaseInfo()
85
+	}
86
+	c.ServeSuccessJSON(map[string]interface{}{
87
+		"list":    "11",
88
+	})
89
+
90
+}
71 91
 
92
+func GetBaseInfo() (error) {
93
+    handle := syscall.MustLoadDLL("SSCard.dll")
94
+    ReadCardBas := handle.MustFindProc("ReadCardBas")
95
+  
96
+	str := make([]byte,256)
97
+	str1 := make([]byte,256)
98
+	r,_,ferr := ReadCardBas.Call((uintptr)(unsafe.Pointer(&str[0])),IntPtr(1024),(uintptr)(unsafe.Pointer(&str1[0])),IntPtr(1024))
99
+	if ferr != nil {
100
+        fmt.Println("ReadCardBas 报错", ferr.Error())
101
+        return  ferr
102
+	}
103
+	
104
+	fmt.Println(string(str))
105
+
106
+	fmt.Println(r)
107
+    return  nil
72 108
 }
73 109
 
110
+func CardInit() int{
111
+	DllTestDef := syscall.MustLoadDLL("SSCard.dll")
112
+    add := DllTestDef.MustFindProc("Init")
113
+    ret, _, err := add.Call(StrPtr("http://igb.hsa.gdgov.cn/gdyb_inf/poc/api/card/initDll"),StrPtr("440200"))
114
+    if err != nil {
115
+        fmt.Println("SSCard的运算结果为:", ret)
116
+    }
117
+	result := int(ret)
118
+	return result
119
+}
120
+
121
+func IntPtr(n int) uintptr {
122
+    return uintptr(n)
123
+}
124
+ 
125
+func StrPtr(s string) uintptr {
126
+    return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
127
+}
128
+
129
+
74 130
 func (c *HisApiController) GetHisPatientList() {
75 131
 	types, _ := c.GetInt64("type", 0)
76 132
 	record_date := c.GetString("record_date")
@@ -1227,13 +1283,14 @@ type ResultSeven struct {
1227 1283
 			Gend            string  `json:"gend"`
1228 1284
 			HifesPay        float64 `json:"hifes_pay"`
1229 1285
 			HifmiPay        float64 `json:"hifmi_pay"`
1230
-			HifobPay        float64 `json:"hifob_pay"`
1231 1286
 			HifpPay         float64 `json:"hifp_pay"`
1232 1287
 			HospPartAmt     float64 `json:"hosp_part_amt"`
1233 1288
 			InscpScpAmt     float64 `json:"inscp_scp_amt"`
1234 1289
 			Insutype        string  `json:"insutype"`
1235 1290
 			MafPay          float64 `json:"maf_pay"`
1236 1291
 			MdtrtCertType   string  `json:"mdtrt_cert_type"`
1292
+			HifobPay        float64 `json:"hifob_pay"`
1293
+
1237 1294
 			MdtrtID         string  `json:"mdtrt_id"`
1238 1295
 			MedType         string  `json:"med_type"`
1239 1296
 			MedfeeSumamt    float64 `json:"medfee_sumamt"`
@@ -1307,6 +1364,55 @@ type ResultTen struct {
1307 1364
 	WarnMsg     interface{} `json:"warn_msg"`
1308 1365
 }
1309 1366
 
1367
+type ResultEleven struct {
1368
+	Cainfo      string `json:"cainfo"`
1369
+	ErrMsg      string `json:"err_msg"`
1370
+	InfRefmsgid string `json:"inf_refmsgid"`
1371
+	Infcode     int64  `json:"infcode"`
1372
+	Output      struct {
1373
+		Setlinfo struct {
1374
+			FixmedinsName   string  `json:"fixmedins_name"`
1375
+			FixmedinsCode   string  `json:"fixmedins_code"`
1376
+			PsnNo           string  `json:"psn_no"`
1377
+			PsnName         string  `json:"psn_name"`
1378
+			HifobPay        float64 `json:"hifob_pay"`
1379
+			Gend            string  `json:"gend"`
1380
+			Brdy            string  `json:"brdy"`
1381
+			PsnCertType     string  `json:"psn_cert_type"`
1382
+			PsnType         string  `json:"psn_type"`
1383
+			EmpName         string  `json:"emp_name"`
1384
+			Certno          string  `json:"certno"`
1385
+			Insutype        string  `json:"insutype"`
1386
+			MedfeeSumamt    float64 `json:"medfee_sumamt"`
1387
+			FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"`
1388
+			OverlmtSelfpay  float64 `json:"overlmt_selfpay"`
1389
+			PreselfpayAmt   float64 `json:"preselfpay_amt"`
1390
+			InscpScpAmt     float64 `json:"inscp_scp_amt"`
1391
+			ActPayDedc      float64 `json:"act_pay_dedc"`
1392
+			HifpPay         float64 `json:"hifp_pay"`
1393
+			PoolPropSelfpay float64 `json:"pool_prop_selfpay"`
1394
+			CvlservPay      float64 `json:"cvlserv_pay"`
1395
+			HifesPay        float64 `json:"hifes_pay"`
1396
+			HifmiPay        float64 `json:"hifmi_pay"`
1397
+			MafPay          float64 `json:"maf_pay"`
1398
+			OthPay          float64 `json:"oth_pay"`
1399
+			FundPaySumamt   float64 `json:"fund_pay_sumamt"`
1400
+			PsnPay          float64 `json:"psn_pay"`
1401
+			AcctPay         float64 `json:"acct_pay"`
1402
+			CashPayamt      float64 `json:"cash_payamt"`
1403
+			Balc            float64 `json:"balc"`
1404
+			AcctMulaidPay   float64 `json:"acct_mulaid_pay"`
1405
+			MedinsSetlId    string  `json:"medins_setl_id"`
1406
+			RefdSetlFlag    string  `json:"refd_setl_flag"`
1407
+			SetlTime        string  `json:"setl_time"`
1408
+		} `json:"setlinfo"`
1409
+	} `json:"output"`
1410
+	RefmsgTime  string      `json:"refmsg_time"`
1411
+	RespondTime string      `json:"respond_time"`
1412
+	Signtype    interface{} `json:"signtype"`
1413
+	WarnMsg     interface{} `json:"warn_msg"`
1414
+}
1415
+
1310 1416
 type Custom struct {
1311 1417
 	DetItemFeeSumamt string
1312 1418
 	Cut              string
@@ -1595,9 +1701,7 @@ func (c *HisApiController) GetRegisterInfo() {
1595 1701
 		c.ServeSuccessJSON(map[string]interface{}{
1596 1702
 			"his_info": hisPatient,
1597 1703
 		})
1598
-
1599 1704
 	}
1600
-
1601 1705
 }
1602 1706
 
1603 1707
 //上传明细----结算
@@ -2184,6 +2288,7 @@ func (c *HisApiController) Refund() {
2184 2288
 	}
2185 2289
 }
2186 2290
 
2291
+//对账
2187 2292
 func (c *HisApiController) GetCheckAccount() {
2188 2293
 	start_time := c.GetString("start_time")
2189 2294
 	end_time := c.GetString("end_time")
@@ -2210,6 +2315,15 @@ func (c *HisApiController) GetCheckAccount() {
2210 2315
 		medfee_sumamt, _ = decimal.NewFromFloat(medfee_sumamt).Add(decimal.NewFromFloat(item.MedfeeSumamt)).Float64()
2211 2316
 		acct_pay, _ = decimal.NewFromFloat(acct_pay).Add(decimal.NewFromFloat(item.AcctPay)).Float64()
2212 2317
 		fund_pay_sumamt, _ = decimal.NewFromFloat(fund_pay_sumamt).Add(decimal.NewFromFloat(item.FundPaySumamt)).Float64()
2318
+
2319
+	}
2320
+
2321
+	var user_name string
2322
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, adminUser.AdminUser.Id)
2323
+	if role.ID == 0 {
2324
+		user_name = "xxx"
2325
+	} else {
2326
+		user_name = role.UserName
2213 2327
 	}
2214 2328
 
2215 2329
 	if config.IsOpen == 1 {
@@ -2228,7 +2342,7 @@ func (c *HisApiController) GetCheckAccount() {
2228 2342
 			"&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs +
2229 2343
 			"&secret_key=" + miConfig.SecretKey +
2230 2344
 			"&org_name=" + miConfig.OrgName +
2231
-			"&doctor=某人"
2345
+			"&doctor=" + user_name
2232 2346
 
2233 2347
 		fmt.Println(api)
2234 2348
 		resp, requestErr := http.Get(api)
@@ -2269,6 +2383,8 @@ func (c *HisApiController) GetCheckAccount() {
2269 2383
 		}
2270 2384
 	}
2271 2385
 }
2386
+
2387
+//对账明细
2272 2388
 func (c *HisApiController) GetCheckDetailAccount() {
2273 2389
 	start_time := c.GetString("start_time")
2274 2390
 	end_time := c.GetString("end_time")
@@ -2332,13 +2448,21 @@ func (c *HisApiController) GetCheckDetailAccount() {
2332 2448
 
2333 2449
 	if config.IsOpen == 1 {
2334 2450
 
2451
+		var user_name string
2452
+		role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, adminUser.AdminUser.Id)
2453
+		if role.ID == 0 {
2454
+			user_name = "xxx"
2455
+		} else {
2456
+			user_name = role.UserName
2457
+		}
2458
+
2335 2459
 		baseParams := models.BaseParams{
2336 2460
 			SecretKey:      miConfig.SecretKey,
2337 2461
 			FixmedinsCode:  miConfig.Code,
2338 2462
 			InsuplcAdmdvs:  miConfig.InsuplcAdmdvs,
2339 2463
 			MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs,
2340 2464
 			OrgName:        miConfig.OrgName,
2341
-			Doctor:         "某人",
2465
+			Doctor:         user_name,
2342 2466
 		}
2343 2467
 
2344 2468
 		result := service.Gdyb9101(baseParams, zip_name, ReadFile(zip_path))
@@ -2373,7 +2497,7 @@ func (c *HisApiController) GetCheckDetailAccount() {
2373 2497
 				"&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs +
2374 2498
 				"&secret_key=" + miConfig.SecretKey +
2375 2499
 				"&org_name=" + miConfig.OrgName +
2376
-				"&doctor=某人"
2500
+				"&doctor=" + user_name
2377 2501
 			resp, requestErr := http.Get(api)
2378 2502
 			if requestErr != nil {
2379 2503
 				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
@@ -2414,6 +2538,213 @@ func (c *HisApiController) GetCheckDetailAccount() {
2414 2538
 	}
2415 2539
 }
2416 2540
 
2541
+func (c *HisApiController) GetSettleAccounts() {
2542
+	//id, _ := c.GetInt64("id")
2543
+	//record_time := c.GetString("record_time")
2544
+	order_id, _ := c.GetInt64("order_id")
2545
+
2546
+	//timeLayout := "2006-01-02"
2547
+	//loc, _ := time.LoadLocation("Local")
2548
+	//
2549
+	//theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc)
2550
+	//if err != nil {
2551
+	//	c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
2552
+	//	return
2553
+	//}
2554
+	//recordDateTime := theTime.Unix()
2555
+	adminUser := c.GetAdminUserInfo()
2556
+	//his, _ := service.GetVMHisPatientInfo(adminUser.CurrentOrgId, id, recordDateTime)
2557
+	order, _ := service.GetHisOrderByID(order_id)
2558
+	orderInfos, _ := service.GetHisOrderInfoByNumber(order.Number)
2559
+
2560
+	var bedCostTotal float64 = 0         //床位总费
2561
+	var bedCostSelfTotal float64 = 0     //床位自费
2562
+	var bedCostPartSelfTotal float64 = 0 //床位部分项目自费
2563
+
2564
+	var operationCostTotal float64 = 0         //手术费
2565
+	var operationCostSelfTotal float64 = 0     //手术费
2566
+	var operationCostPartSelfTotal float64 = 0 //手术费
2567
+
2568
+	var otherCostTotal float64 = 0         //其他费用
2569
+	var otherCostSelfTotal float64 = 0     //其他费用
2570
+	var otherCostPartSelfTotal float64 = 0 //其他费用
2571
+
2572
+	var materialCostTotal float64 = 0         //材料费
2573
+	var materialCostSelfTotal float64 = 0     //材料费
2574
+	var materialCostPartSelfTotal float64 = 0 //材料费
2575
+
2576
+	var westernMedicineCostTotal float64 = 0         //西药费
2577
+	var westernMedicineCostSelfTotal float64 = 0     //西药费
2578
+	var westernMedicineCostPartSelfTotal float64 = 0 //西药费
2579
+
2580
+	var chineseTraditionalMedicineCostTotal float64 = 0         //中成药
2581
+	var chineseTraditionalMedicineCostSelfTotal float64 = 0     //中成药
2582
+	var chineseTraditionalMedicineCostPartSelfTotal float64 = 0 //中成药
2583
+
2584
+	var checkCostTotal float64 = 0         //检查费
2585
+	var checkCostSelfTotal float64 = 0     //检查费
2586
+	var checkCostPartSelfTotal float64 = 0 //检查费
2587
+
2588
+	var laboratoryCostTotal float64 = 0         //化验费
2589
+	var laboratoryCostSelfTotal float64 = 0     //化验费
2590
+	var laboratoryCostPartSelfTotal float64 = 0 //化验费
2591
+
2592
+	var treatCostTotal float64 = 0         //治疗费用
2593
+	var treatCostSelfTotal float64 = 0     //治疗费用
2594
+	var treatCostPartSelfTotal float64 = 0 //治疗费用
2595
+
2596
+	decimal.DivisionPrecision = 2
2597
+
2598
+	for _, item := range orderInfos {
2599
+		if item.MedChrgitmType == "01" { //床位费
2600
+
2601
+			bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2602
+			bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2603
+			bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2604
+
2605
+		}
2606
+
2607
+		if item.MedChrgitmType == "03" { //检查费
2608
+
2609
+			checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2610
+			checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2611
+			checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2612
+
2613
+		}
2614
+
2615
+		if item.MedChrgitmType == "04" { //化验费
2616
+
2617
+			laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2618
+			laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2619
+			laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2620
+
2621
+		}
2622
+
2623
+		if item.MedChrgitmType == "05" { //治疗费
2624
+
2625
+			treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2626
+			treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2627
+			treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2628
+
2629
+		}
2630
+
2631
+		if item.MedChrgitmType == "06" { //手术费
2632
+
2633
+			operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2634
+			operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2635
+			operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2636
+
2637
+		}
2638
+
2639
+		if item.MedChrgitmType == "08" { //材料费
2640
+
2641
+			materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2642
+			materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2643
+			materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2644
+
2645
+		}
2646
+
2647
+		if item.MedChrgitmType == "09" { //西药费
2648
+
2649
+			westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2650
+			westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2651
+			westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2652
+
2653
+		}
2654
+
2655
+		if item.MedChrgitmType == "11" { //中成费
2656
+
2657
+			chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2658
+			chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2659
+			chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2660
+
2661
+		}
2662
+
2663
+		if item.MedChrgitmType == "14" { //其他费
2664
+			otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
2665
+			otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2666
+			otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64()
2667
+		}
2668
+
2669
+	}
2670
+
2671
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
2672
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
2673
+
2674
+	var user_name string
2675
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, adminUser.AdminUser.Id)
2676
+	if role.ID == 0 {
2677
+		user_name = "xxx"
2678
+	} else {
2679
+		user_name = role.UserName
2680
+	}
2681
+
2682
+	baseParams := models.BaseParams{
2683
+		SecretKey:      miConfig.SecretKey,
2684
+		FixmedinsCode:  miConfig.Code,
2685
+		InsuplcAdmdvs:  miConfig.InsuplcAdmdvs,
2686
+		MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs,
2687
+		OrgName:        miConfig.OrgName,
2688
+		Doctor:         user_name,
2689
+	}
2690
+
2691
+	businessParams := models.BusinessParams{
2692
+		PsnNo:   order.PsnNo,
2693
+		MdtrtId: order.MdtrtId,
2694
+		SetlId:  order.SetlId,
2695
+	}
2696
+
2697
+	if config.IsOpen == 1 {
2698
+		result := service.Gdyb5203(baseParams, businessParams)
2699
+		var dat map[string]interface{}
2700
+		if err := json.Unmarshal([]byte(result), &dat); err == nil {
2701
+			fmt.Println(dat)
2702
+		} else {
2703
+			fmt.Println(err)
2704
+		}
2705
+		userJSONBytes, _ := json.Marshal(dat)
2706
+		var res ResultEleven
2707
+		if err := json.Unmarshal(userJSONBytes, &res); err != nil {
2708
+			utils.ErrorLog("解析失败:%v", err)
2709
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2710
+			return
2711
+		}
2712
+		if res.Infcode == 0 {
2713
+			c.ServeSuccessJSON(map[string]interface{}{
2714
+				"info":                                        res.Output.Setlinfo,
2715
+				"bedCostTotal":                                bedCostTotal,
2716
+				"bedCostSelfTotal":                            bedCostSelfTotal,
2717
+				"bedCostPartSelfTotal":                        bedCostPartSelfTotal,
2718
+				"operationCostTotal":                          operationCostTotal,
2719
+				"operationCostSelfTotal":                      operationCostSelfTotal,
2720
+				"operationCostPartSelfTotal":                  operationCostPartSelfTotal,
2721
+				"otherCostTotal":                              otherCostTotal,
2722
+				"otherCostSelfTotal":                          otherCostSelfTotal,
2723
+				"otherCostPartSelfTotal":                      otherCostPartSelfTotal,
2724
+				"materialCostTotal":                           materialCostTotal,
2725
+				"materialCostSelfTotal":                       materialCostSelfTotal,
2726
+				"materialCostPartSelfTotal":                   materialCostPartSelfTotal,
2727
+				"westernMedicineCostTotal":                    westernMedicineCostTotal,
2728
+				"westernMedicineCostSelfTotal":                westernMedicineCostSelfTotal,
2729
+				"westernMedicineCostPartSelfTotal":            westernMedicineCostPartSelfTotal,
2730
+				"chineseTraditionalMedicineCostTotal":         chineseTraditionalMedicineCostTotal,
2731
+				"chineseTraditionalMedicineCostSelfTotal":     chineseTraditionalMedicineCostSelfTotal,
2732
+				"chineseTraditionalMedicineCostPartSelfTotal": chineseTraditionalMedicineCostPartSelfTotal,
2733
+				"checkCostTotal":                              checkCostTotal,
2734
+				"checkCostSelfTotal":                          checkCostSelfTotal,
2735
+				"checkCostPartSelfTotal":                      checkCostPartSelfTotal,
2736
+				"laboratoryCostTotal":                         laboratoryCostTotal,
2737
+				"laboratoryCostSelfTotal":                     laboratoryCostSelfTotal,
2738
+				"laboratoryCostPartSelfTotal":                 laboratoryCostPartSelfTotal,
2739
+				"treatCostTotal":                              treatCostTotal,
2740
+				"treatCostSelfTotal":                          treatCostSelfTotal,
2741
+				"treatCostPartSelfTotal":                      treatCostPartSelfTotal,
2742
+			})
2743
+		}
2744
+	}
2745
+
2746
+}
2747
+
2417 2748
 func (this *HisApiController) AdditionalCharge() {
2418 2749
 
2419 2750
 	dataBody := make(map[string]interface{}, 0)

+ 3 - 0
models/his_models.go 查看文件

@@ -943,4 +943,7 @@ type BusinessParams struct {
943 943
 	FixmedinsSetlCnt int64
944 944
 	FileQuryNo       string
945 945
 	CashPayamt       float64
946
+	PsnNo            string
947
+	MdtrtId          string
948
+	SetlId           string
946 949
 }

+ 51 - 0
service/gdyb_service.go 查看文件

@@ -977,6 +977,57 @@ func Gdyb3202(baseParams models.BaseParams, businessParams models.BusinessParams
977 977
 	return str
978 978
 }
979 979
 
980
+func Gdyb5203(baseParams models.BaseParams, businessParams models.BusinessParams) string {
981
+	// 生成签名
982
+	nonce := GetRandomString(32)
983
+	timestamp := time.Now().Unix()
984
+	signature := setSignature(timestamp, nonce, baseParams.SecretKey)
985
+
986
+	// 生成输入报文
987
+	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
988
+	input := make(map[string]interface{})
989
+	inputData := make(map[string]interface{})
990
+	inputMessage["infno"] = "5203" // 交易编码
991
+	inputData["psn_no"] = businessParams.PsnNo
992
+	inputData["setl_id"] = businessParams.SetlId
993
+	inputData["mdtrt_id"] = businessParams.MdtrtId
994
+	input["data"] = inputData
995
+	inputMessage["input"] = input //交易输入
996
+	bytesData, err := json.Marshal(inputMessage)
997
+	fmt.Println(string(bytesData))
998
+	if err != nil {
999
+		fmt.Println(err.Error())
1000
+		return err.Error()
1001
+	}
1002
+	reader := bytes.NewReader(bytesData)
1003
+
1004
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/5203"
1005
+	request, err := http.NewRequest("POST", url, reader)
1006
+	if err != nil {
1007
+		fmt.Println(err.Error())
1008
+		return err.Error()
1009
+	}
1010
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1011
+	request.Header.Set("x-tif-paasid", "test_hosp")
1012
+	request.Header.Set("x-tif-signature", signature)
1013
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1014
+	request.Header.Set("x-tif-nonce", nonce)
1015
+	client := http.Client{}
1016
+	resp, err := client.Do(request)
1017
+	if err != nil {
1018
+		fmt.Println(err.Error())
1019
+		return err.Error()
1020
+	}
1021
+	respBytes, err := ioutil.ReadAll(resp.Body)
1022
+	if err != nil {
1023
+		fmt.Println(err.Error())
1024
+		return err.Error()
1025
+	}
1026
+	str := string(respBytes)
1027
+	fmt.Println(str)
1028
+	return str
1029
+}
1030
+
980 1031
 //  门诊结算撤销
981 1032
 //func Gdyb4101(psnNo string, mdtrtId string, setlId string) string {
982 1033
 //	// 生成签名

+ 6 - 1
service/his_service.go 查看文件

@@ -795,7 +795,12 @@ func GetCallHisPrescriptions(start_time int64, end_time int64, org_id int64, pat
795 795
 }
796 796
 
797 797
 func GetHisOrderByID(order_id int64) (order models.HisOrder, err error) {
798
-	err = readDb.Model(&models.HisOrder{}).Where("id = ?", order_id).First(&order).Error
798
+	err = readDb.Model(&models.HisOrder{}).Where("id = ? AND status = 1", order_id).First(&order).Error
799
+	return
800
+}
801
+
802
+func GetHisOrderInfoByNumber(order_number string) (order []*models.HisOrderInfo, err error) {
803
+	err = readDb.Model(&models.HisOrderInfo{}).Where("order_number = ? AND status = 1", order_number).Find(&order).Error
799 804
 	return
800 805
 }
801 806