csx 4 年 前
コミット
4b8cc203eb
共有5 個のファイルを変更した727 個の追加93 個の削除を含む
  1. 134 13
      controllers/gdyb_controller.go
  2. 362 1
      controllers/his_api_controller.go
  3. 92 68
      models/his_models.go
  4. 129 11
      service/gdyb_service.go
  5. 10 0
      service/his_service.go

+ 134 - 13
controllers/gdyb_controller.go ファイルの表示

@@ -8,6 +8,7 @@ import (
8 8
 	"fmt"
9 9
 	"github.com/astaxie/beego"
10 10
 	"io/ioutil"
11
+	"unsafe"
11 12
 )
12 13
 
13 14
 type GdybController struct {
@@ -24,13 +25,12 @@ func GdybRegistRouters() {
24 25
 	beego.Router("/gdyb/seven", &GdybController{}, "get:PostSeven")
25 26
 	beego.Router("/gdyb/eight", &GdybController{}, "get:PostEight")
26 27
 	beego.Router("/gdyb/nine", &GdybController{}, "get:PostNine")
27
-
28
-	//beego.Router("/gdyb/tem", &GdybController{}, "get:PostTen")
28
+	beego.Router("/gdyb/ten", &GdybController{}, "get:PostTen")
29
+	beego.Router("/gdyb/eleven", &GdybController{}, "get:PostEleven")
30
+	beego.Router("/gdyb/twelve", &GdybController{}, "get:PostTwelve")
29 31
 
30 32
 }
31 33
 
32
-//provinces, _ := service.GetDistrictsByUpid(0)21
33
-
34 34
 type Result struct {
35 35
 	ErrMsg      interface{} `json:"err_msg"`
36 36
 	InfRefmsgid string      `json:"inf_refmsgid"`
@@ -312,12 +312,133 @@ func (c *GdybController) PostNine() {
312 312
 	})
313 313
 }
314 314
 
315
-//func (c *GdybController) PostTen() {
316
-//	fixmedins_type := c.GetString("fixmedins_type")
317
-//	//fixmedins_type := c.GetString("org_name")
318
-//
319
-//	result := service.Gdyb1201(fixmedins_type)
320
-//	c.ServeSuccessJSON(map[string]interface{}{
321
-//		"pre": result,
322
-//	})
323
-//}
315
+func (c *GdybController) PostTen() {
316
+	insutype := c.GetString("insutype")
317
+	clrType := c.GetString("clr_type")
318
+	setlOptins := c.GetString("setl_optins")
319
+	stmtBegndate := c.GetString("stmt_begndate")
320
+	stmtEnddate := c.GetString("stm_enddate")
321
+	medfeeSumamt, _ := c.GetFloat("medfee_sumamt", 0)
322
+	fundPaySumamt, _ := c.GetFloat("fund_pay_sumamt", 0)
323
+	acctPay, _ := c.GetFloat("acct_pay", 0)
324
+	fixmedinsSetlCnt, _ := c.GetInt64("fixmedins_setl_cnt", 0)
325
+	fixmedins_code := c.GetString("fixmedins_code")
326
+	insuplc_admdvs := c.GetString("insuplc_admdvs")
327
+	mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
328
+	secret_key := c.GetString("secret_key")
329
+	org_name := c.GetString("org_name")
330
+	doctor := c.GetString("doctor")
331
+
332
+	baseParams := models.BaseParams{
333
+		SecretKey:      secret_key,
334
+		FixmedinsCode:  fixmedins_code,
335
+		InsuplcAdmdvs:  insuplc_admdvs,
336
+		MdtrtareaAdmvs: mdtrtarea_admvs,
337
+		OrgName:        org_name,
338
+		Doctor:         doctor,
339
+	}
340
+	businessParams := models.BusinessParams{
341
+		Insutype:         insutype,
342
+		ClrType:          clrType,
343
+		SetlOptins:       setlOptins,
344
+		StmtBegndate:     stmtBegndate,
345
+		StmtEnddate:      stmtEnddate,
346
+		MedfeeSumamt:     medfeeSumamt,
347
+		FundPaySumamt:    fundPaySumamt,
348
+		AcctPay:          acctPay,
349
+		FixmedinsSetlCnt: fixmedinsSetlCnt,
350
+	}
351
+
352
+	result := service.Gdyb3201(baseParams, businessParams)
353
+	var dat map[string]interface{}
354
+	if err := json.Unmarshal([]byte(result), &dat); err == nil {
355
+		fmt.Println(dat)
356
+	} else {
357
+		fmt.Println(err)
358
+	}
359
+	c.ServeSuccessJSON(map[string]interface{}{
360
+		"pre": result,
361
+	})
362
+}
363
+
364
+func (c *GdybController) PostEleven() {
365
+	file_byte := c.GetString("file_byte")
366
+	file_name := c.GetString("file_name")
367
+	fixmedins_code := c.GetString("fixmedins_code")
368
+	insuplc_admdvs := c.GetString("insuplc_admdvs")
369
+	mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
370
+	secret_key := c.GetString("secret_key")
371
+	org_name := c.GetString("org_name")
372
+	doctor := c.GetString("doctor")
373
+
374
+	baseParams := models.BaseParams{
375
+		SecretKey:      secret_key,
376
+		FixmedinsCode:  fixmedins_code,
377
+		InsuplcAdmdvs:  insuplc_admdvs,
378
+		MdtrtareaAdmvs: mdtrtarea_admvs,
379
+		OrgName:        org_name,
380
+		Doctor:         doctor,
381
+	}
382
+
383
+	x := (*[2]uintptr)(unsafe.Pointer(&file_byte))
384
+	h := [3]uintptr{x[0], x[1], x[1]}
385
+	bytes := *(*[]byte)(unsafe.Pointer(&h))
386
+
387
+	result := service.Gdyb9101(baseParams, file_name, bytes)
388
+	var dat map[string]interface{}
389
+	if err := json.Unmarshal([]byte(result), &dat); err == nil {
390
+		fmt.Println(dat)
391
+	} else {
392
+		fmt.Println(err)
393
+	}
394
+	c.ServeSuccessJSON(map[string]interface{}{
395
+		"pre": result,
396
+	})
397
+}
398
+
399
+func (c *GdybController) PostTwelve() {
400
+	fileQuryNo := c.GetString("file_qury_no")
401
+	setlOptins := c.GetString("setl_optins")
402
+	stmtBegndate := c.GetString("stmt_begndate")
403
+	stmtEnddate := c.GetString("stm_enddate")
404
+	medfeeSumamt, _ := c.GetFloat("medfee_sumamt", 0)
405
+	fundPaySumamt, _ := c.GetFloat("fund_pay_sumamt", 0)
406
+	fixmedinsSetlCnt, _ := c.GetInt64("fixmedins_setl_cnt", 0)
407
+	fixmedins_code := c.GetString("fixmedins_code")
408
+	insuplc_admdvs := c.GetString("insuplc_admdvs")
409
+	mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
410
+	secret_key := c.GetString("secret_key")
411
+	org_name := c.GetString("org_name")
412
+	doctor := c.GetString("doctor")
413
+	cashPayamt, _ := c.GetFloat("cash_payamt", 0)
414
+
415
+	baseParams := models.BaseParams{
416
+		SecretKey:      secret_key,
417
+		FixmedinsCode:  fixmedins_code,
418
+		InsuplcAdmdvs:  insuplc_admdvs,
419
+		MdtrtareaAdmvs: mdtrtarea_admvs,
420
+		OrgName:        org_name,
421
+		Doctor:         doctor,
422
+	}
423
+	businessParams := models.BusinessParams{
424
+		FileQuryNo:       fileQuryNo,
425
+		SetlOptins:       setlOptins,
426
+		StmtBegndate:     stmtBegndate,
427
+		StmtEnddate:      stmtEnddate,
428
+		MedfeeSumamt:     medfeeSumamt,
429
+		FundPaySumamt:    fundPaySumamt,
430
+		FixmedinsSetlCnt: fixmedinsSetlCnt,
431
+		CashPayamt:       cashPayamt,
432
+	}
433
+
434
+	result := service.Gdyb3202(baseParams, businessParams)
435
+	var dat map[string]interface{}
436
+	if err := json.Unmarshal([]byte(result), &dat); err == nil {
437
+		fmt.Println(dat)
438
+	} else {
439
+		fmt.Println(err)
440
+	}
441
+	c.ServeSuccessJSON(map[string]interface{}{
442
+		"pre": result,
443
+	})
444
+}

+ 362 - 1
controllers/his_api_controller.go ファイルの表示

@@ -5,14 +5,19 @@ import (
5 5
 	"XT_New/models"
6 6
 	"XT_New/service"
7 7
 	"XT_New/utils"
8
+	"archive/zip"
8 9
 	"bytes"
9 10
 	"encoding/json"
10 11
 	"fmt"
11 12
 	"github.com/astaxie/beego"
12 13
 	"github.com/jinzhu/gorm"
14
+	"github.com/shopspring/decimal"
15
+	"io"
13 16
 	"io/ioutil"
14 17
 	"math/rand"
15 18
 	"net/http"
19
+	"os"
20
+	"path/filepath"
16 21
 	"reflect"
17 22
 	"strconv"
18 23
 	"strings"
@@ -51,6 +56,9 @@ func HisManagerApiRegistRouters() {
51 56
 	beego.Router("/api/register/get", &HisApiController{}, "get:GetRegisterInfo")
52 57
 	beego.Router("/api/upload/get", &HisApiController{}, "get:GetUploadInfo")
53 58
 
59
+	beego.Router("/api/checkaccount/get", &HisApiController{}, "get:GetCheckAccount")
60
+	beego.Router("/api/checkdetailaccount/get", &HisApiController{}, "get:GetCheckDetailAccount")
61
+
54 62
 	beego.Router("/api/refund/post", &HisApiController{}, "post:Refund")
55 63
 
56 64
 	beego.Router("/api/medicalinsurance/config", &HisApiController{}, "get:GetMedicalInsuranceConfig")
@@ -1238,6 +1246,39 @@ type ResultSeven struct {
1238 1246
 	Signtype    interface{} `json:"signtype"`
1239 1247
 	WarnMsg     interface{} `json:"warn_msg"`
1240 1248
 }
1249
+
1250
+type ResultEight struct {
1251
+	Cainfo      string `json:"cainfo"`
1252
+	ErrMsg      string `json:"err_msg"`
1253
+	InfRefmsgid string `json:"inf_refmsgid"`
1254
+	Infcode     int64  `json:"infcode"`
1255
+	Output      struct {
1256
+		Stmtinfo struct {
1257
+			SetlOptins   string `json:"setl_optins"`
1258
+			StmtRslt     string `json:"stmt_rslt"`
1259
+			StmtRsltDscr string `json:"stmt_rslt_dscr"`
1260
+		} `json:"stmtinfo"`
1261
+	} `json:"output"`
1262
+	RefmsgTime  string      `json:"refmsg_time"`
1263
+	RespondTime string      `json:"respond_time"`
1264
+	Signtype    interface{} `json:"signtype"`
1265
+	WarnMsg     interface{} `json:"warn_msg"`
1266
+}
1267
+
1268
+type ResultNine struct {
1269
+	Cainfo      string `json:"cainfo"`
1270
+	ErrMsg      string `json:"err_msg"`
1271
+	InfRefmsgid string `json:"inf_refmsgid"`
1272
+	Infcode     int64  `json:"infcode"`
1273
+	Output      struct {
1274
+		FileQuryNo string `json:"file_qury_no"`
1275
+	} `json:"output"`
1276
+	RefmsgTime  string      `json:"refmsg_time"`
1277
+	RespondTime string      `json:"respond_time"`
1278
+	Signtype    interface{} `json:"signtype"`
1279
+	WarnMsg     interface{} `json:"warn_msg"`
1280
+}
1281
+
1241 1282
 type Custom struct {
1242 1283
 	DetItemFeeSumamt string
1243 1284
 	Cut              string
@@ -1650,6 +1691,7 @@ func (c *HisApiController) GetUploadInfo() {
1650 1691
 				FoundPrice:            found_price,
1651 1692
 				MedicalInsurancePrice: medical_insurance_price,
1652 1693
 				PrivatePrice:          private_price,
1694
+				IsMedicineInsurance:   1,
1653 1695
 			}
1654 1696
 			err = service.CreateOrder(order)
1655 1697
 			if err != nil {
@@ -2021,10 +2063,10 @@ func (c *HisApiController) Refund() {
2021 2063
 	recordDateTime := theTime.Unix()
2022 2064
 
2023 2065
 	his, _ := service.GetVMHisPatientInfo(adminUser.CurrentOrgId, patient_id, recordDateTime)
2024
-	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
2025 2066
 	patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime)
2026 2067
 	order, _ := service.GetHisOrderByID(order_id)
2027 2068
 
2069
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
2028 2070
 	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
2029 2071
 	if config.IsOpen == 1 { //对接了医保,走医保流程
2030 2072
 		api := "http://127.0.0.1:9531/" + "gdyb/nine?psn_no=" + his.PsnNo +
@@ -2095,6 +2137,228 @@ func (c *HisApiController) Refund() {
2095 2137
 	}
2096 2138
 }
2097 2139
 
2140
+func (c *HisApiController) GetCheckAccount() {
2141
+	start_time := c.GetString("start_time")
2142
+	end_time := c.GetString("end_time")
2143
+	insutype := c.GetString("insutype")
2144
+	clr_type := c.GetString("clr_type")
2145
+
2146
+	adminUser := c.GetAdminUserInfo()
2147
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
2148
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
2149
+
2150
+	timeLayout := "2006-01-02"
2151
+	loc, _ := time.LoadLocation("Local")
2152
+	startime, _ := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
2153
+	endtime, _ := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
2154
+	orders, _ := service.GetOrderByTime(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId, insutype, clr_type)
2155
+
2156
+	decimal.DivisionPrecision = 2
2157
+	var medfee_sumamt float64
2158
+	var acct_pay float64
2159
+	var fund_pay_sumamt float64
2160
+	fixmedins_setl_cnt := int64(len(orders))
2161
+
2162
+	for _, item := range orders {
2163
+		medfee_sumamt, _ = decimal.NewFromFloat(medfee_sumamt).Add(decimal.NewFromFloat(item.MedfeeSumamt)).Float64()
2164
+		acct_pay, _ = decimal.NewFromFloat(acct_pay).Add(decimal.NewFromFloat(item.AcctPay)).Float64()
2165
+		fund_pay_sumamt, _ = decimal.NewFromFloat(fund_pay_sumamt).Add(decimal.NewFromFloat(item.FundPaySumamt)).Float64()
2166
+	}
2167
+
2168
+	if config.IsOpen == 1 {
2169
+		api := "http://127.0.0.1:9532/" + "gdyb/ten?insutype=" + insutype +
2170
+			"&clr_type=" + clr_type +
2171
+			"&setl_optins=" + miConfig.OrgName +
2172
+			"&stmt_begndate=" + start_time +
2173
+			"&stm_enddate=" + end_time +
2174
+			"&medfee_sumamt=" + fmt.Sprintf("%2f", medfee_sumamt) +
2175
+			"&fund_pay_sumamt=" + fmt.Sprintf("%2f", fund_pay_sumamt) +
2176
+			"&acct_pay=" + fmt.Sprintf("%2f", acct_pay) +
2177
+			"&fixmedins_setl_cnt=" + strconv.FormatInt(fixmedins_setl_cnt, 10) +
2178
+			"&fixmedins_code=" + miConfig.Code +
2179
+			"&insuplc_admdvs=" + miConfig.InsuplcAdmdvs +
2180
+			"&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs +
2181
+			"&secret_key=" + miConfig.SecretKey +
2182
+			"&org_name=" + miConfig.OrgName +
2183
+			"&doctor="
2184
+
2185
+		resp, requestErr := http.Get(api)
2186
+		if requestErr != nil {
2187
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2188
+			return
2189
+		}
2190
+		body, ioErr := ioutil.ReadAll(resp.Body)
2191
+		if ioErr != nil {
2192
+			utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
2193
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2194
+			return
2195
+		}
2196
+		var respJSON map[string]interface{}
2197
+		if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
2198
+			utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
2199
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2200
+			return
2201
+		}
2202
+		respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
2203
+		userJSONBytes, _ := json.Marshal(respJSON)
2204
+
2205
+		var res ResultEight
2206
+		if err := json.Unmarshal(userJSONBytes, &res); err != nil {
2207
+			utils.ErrorLog("解析失败:%v", err)
2208
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2209
+			return
2210
+		}
2211
+		if res.Infcode == 0 {
2212
+			c.ServeSuccessJSON(map[string]interface{}{
2213
+				"stmt_rslt":      res.Output.Stmtinfo.StmtRslt,
2214
+				"stmt_rslt_dscr": res.Output.Stmtinfo.StmtRsltDscr,
2215
+			})
2216
+		} else {
2217
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2218
+		}
2219
+	}
2220
+}
2221
+func (c *HisApiController) GetCheckDetailAccount() {
2222
+	start_time := c.GetString("start_time")
2223
+	end_time := c.GetString("end_time")
2224
+
2225
+	adminUser := c.GetAdminUserInfo()
2226
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
2227
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
2228
+
2229
+	timeLayout := "2006-01-02"
2230
+	loc, _ := time.LoadLocation("Local")
2231
+	startime, _ := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
2232
+	endtime, _ := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
2233
+	orders, _ := service.GetOrderByTimeTwo(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId)
2234
+
2235
+	Mkdir(miConfig.OrgName)
2236
+	file := strconv.FormatInt(adminUser.CurrentOrgId, 10) + strconv.FormatInt(time.Now().Unix(), 10)
2237
+	file_name := file + ".txt"
2238
+	zip_name := file + ".zip"
2239
+	zip_path := miConfig.OrgName + "/" + zip_name
2240
+	file_path := miConfig.OrgName + "/" + file_name
2241
+
2242
+	decimal.DivisionPrecision = 2
2243
+	var medfee_sumamt float64
2244
+	var psn_cash_pay float64
2245
+	var fund_pay_sumamt float64
2246
+	fixmedins_setl_cnt := int64(len(orders))
2247
+
2248
+	for _, item := range orders {
2249
+		medfee_sumamt, _ = decimal.NewFromFloat(medfee_sumamt).Add(decimal.NewFromFloat(item.MedfeeSumamt)).Float64()
2250
+		psn_cash_pay, _ = decimal.NewFromFloat(psn_cash_pay).Add(decimal.NewFromFloat(item.PsnCashPay)).Float64()
2251
+		fund_pay_sumamt, _ = decimal.NewFromFloat(fund_pay_sumamt).Add(decimal.NewFromFloat(item.FundPaySumamt)).Float64()
2252
+	}
2253
+
2254
+	f, err := os.Create(miConfig.OrgName + "/" + file_name)
2255
+	defer f.Close()
2256
+	if err != nil {
2257
+		fmt.Println(err.Error())
2258
+	} else {
2259
+		for _, item := range orders {
2260
+			var refd_setl_flag string
2261
+			if item.OrderStatus == 2 {
2262
+				refd_setl_flag = "0"
2263
+			}
2264
+			if item.OrderStatus == 3 {
2265
+				refd_setl_flag = "1"
2266
+			}
2267
+			var str string
2268
+			str = item.SetlId + "	" +
2269
+				item.MdtrtId + "	" +
2270
+				item.PsnNo + "	" +
2271
+				fmt.Sprintf("%2f", item.MedfeeSumamt) + "	" +
2272
+				fmt.Sprintf("%2f", item.FundPaySumamt) + "	" +
2273
+				fmt.Sprintf("%2f", item.AcctPay) + "	" + refd_setl_flag + "\n"
2274
+			_, err = f.Write([]byte(str))
2275
+		}
2276
+
2277
+	}
2278
+	Zip(file_path, zip_path)
2279
+	if config.IsOpen == 1 {
2280
+		api := "http://127.0.0.1:9532/" + "gdyb/eleven?" +
2281
+			"file_byte=" + string(ReadFile(zip_path)) +
2282
+			"&file_name=" + zip_name +
2283
+			"&fixmedins_code=" + miConfig.Code +
2284
+			"&insuplc_admdvs=" + miConfig.InsuplcAdmdvs +
2285
+			"&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs +
2286
+			"&secret_key=" + miConfig.SecretKey +
2287
+			"&org_name=" + miConfig.OrgName +
2288
+			"&doctor="
2289
+
2290
+		resp, requestErr := http.Get(api)
2291
+		if requestErr != nil {
2292
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2293
+			return
2294
+		}
2295
+		body, ioErr := ioutil.ReadAll(resp.Body)
2296
+		if ioErr != nil {
2297
+			utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
2298
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2299
+			return
2300
+		}
2301
+		var respJSON map[string]interface{}
2302
+		if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
2303
+			utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
2304
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2305
+			return
2306
+		}
2307
+		respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
2308
+		userJSONBytes, _ := json.Marshal(respJSON)
2309
+
2310
+		var res ResultNine
2311
+		if err := json.Unmarshal(userJSONBytes, &res); err != nil {
2312
+			utils.ErrorLog("解析失败:%v", err)
2313
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2314
+			return
2315
+		}
2316
+		if res.Infcode == 0 {
2317
+
2318
+			api := "http://127.0.0.1:9532/" + "gdyb/twelve?" +
2319
+				"file_qury_no=" + res.Output.FileQuryNo +
2320
+				"&setl_optins=" + miConfig.OrgName +
2321
+				"&stmt_begndate=" + start_time +
2322
+				"&stm_enddate=" + end_time +
2323
+				"&medfee_sumamt=" + fmt.Sprintf("%2f", medfee_sumamt) +
2324
+				"&fund_pay_sumamt=" + fmt.Sprintf("%2f", fund_pay_sumamt) +
2325
+				"&cash_payamt=" + fmt.Sprintf("%2f", psn_cash_pay) +
2326
+				"&fixmedins_setl_cnt=" + strconv.FormatInt(fixmedins_setl_cnt, 10) +
2327
+				"&fixmedins_code=" + miConfig.Code +
2328
+				"&insuplc_admdvs=" + miConfig.InsuplcAdmdvs +
2329
+				"&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs +
2330
+				"&secret_key=" + miConfig.SecretKey +
2331
+				"&org_name=" + miConfig.OrgName +
2332
+				"&doctor="
2333
+
2334
+			resp, requestErr := http.Get(api)
2335
+			if requestErr != nil {
2336
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2337
+				return
2338
+			}
2339
+			body, ioErr := ioutil.ReadAll(resp.Body)
2340
+			if ioErr != nil {
2341
+				utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
2342
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2343
+				return
2344
+			}
2345
+			var respJSON map[string]interface{}
2346
+			if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
2347
+				utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
2348
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2349
+				return
2350
+			}
2351
+			respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
2352
+			userJSONBytes, _ := json.Marshal(respJSON)
2353
+			fmt.Println(respJSON)
2354
+			fmt.Println(userJSONBytes)
2355
+
2356
+		} else {
2357
+
2358
+		}
2359
+	}
2360
+}
2361
+
2098 2362
 func (this *HisApiController) AdditionalCharge() {
2099 2363
 
2100 2364
 	dataBody := make(map[string]interface{}, 0)
@@ -2229,3 +2493,100 @@ func (this *DialysisApiController) GetCallHisPrescription() {
2229 2493
 		return
2230 2494
 	}
2231 2495
 }
2496
+
2497
+func PathExists(path string) (bool, error) {
2498
+	_, err := os.Stat(path)
2499
+	if err == nil {
2500
+		return true, nil
2501
+	}
2502
+	if os.IsNotExist(err) {
2503
+		return false, nil
2504
+	}
2505
+	return false, err
2506
+}
2507
+
2508
+//创建文件夹
2509
+func Mkdir(dir string) {
2510
+	// 创建文件夹
2511
+	exist, err := PathExists(dir)
2512
+	if err != nil {
2513
+		fmt.Println(err.Error())
2514
+	} else {
2515
+		if exist {
2516
+			fmt.Println(dir + "文件夹已存在!")
2517
+		} else {
2518
+			// 文件夹名称,权限
2519
+			err := os.Mkdir(dir, os.ModePerm)
2520
+			if err != nil {
2521
+				fmt.Println(dir+"文件夹创建失败:", err.Error())
2522
+			} else {
2523
+				fmt.Println(dir + "文件夹创建成功!")
2524
+			}
2525
+		}
2526
+	}
2527
+}
2528
+
2529
+//压缩文件
2530
+func Zip(srcFile string, destZip string) error {
2531
+	zipfile, err := os.Create(destZip)
2532
+	if err != nil {
2533
+		return err
2534
+	}
2535
+	defer zipfile.Close()
2536
+
2537
+	archive := zip.NewWriter(zipfile)
2538
+	defer archive.Close()
2539
+
2540
+	filepath.Walk(srcFile, func(path string, info os.FileInfo, err error) error {
2541
+		if err != nil {
2542
+			return err
2543
+		}
2544
+
2545
+		header, err := zip.FileInfoHeader(info)
2546
+		if err != nil {
2547
+			return err
2548
+		}
2549
+
2550
+		header.Name = strings.TrimPrefix(path, filepath.Dir(srcFile)+"/")
2551
+		// header.Name = path
2552
+		if info.IsDir() {
2553
+			header.Name += "/"
2554
+		} else {
2555
+			header.Method = zip.Deflate
2556
+		}
2557
+
2558
+		writer, err := archive.CreateHeader(header)
2559
+		if err != nil {
2560
+			return err
2561
+		}
2562
+
2563
+		if !info.IsDir() {
2564
+			file, err := os.Open(path)
2565
+			if err != nil {
2566
+				return err
2567
+			}
2568
+			defer file.Close()
2569
+			_, err = io.Copy(writer, file)
2570
+		}
2571
+		return err
2572
+	})
2573
+
2574
+	return err
2575
+}
2576
+
2577
+func ReadFile(filePath string) []byte {
2578
+	f, err := os.Open(filePath)
2579
+	if err != nil {
2580
+		fmt.Println("read file fail", err)
2581
+		return nil
2582
+	}
2583
+	defer f.Close()
2584
+
2585
+	fd, err := ioutil.ReadAll(f)
2586
+	if err != nil {
2587
+		fmt.Println("read to fd fail", err)
2588
+		return nil
2589
+	}
2590
+
2591
+	return fd
2592
+}

+ 92 - 68
models/his_models.go ファイルの表示

@@ -579,74 +579,74 @@ func (XtHisPatient) TableName() string {
579 579
 }
580 580
 
581 581
 type HisOrder struct {
582
-	ID                 int64     `gorm:"column:id" json:"id" form:"id"`
583
-	UserOrgId          int64     `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
584
-	HisPatientId       int64     `gorm:"column:his_patient_id" json:"his_patient_id" form:"his_patient_id"`
585
-	SettleAccountsDate int64     `gorm:"column:settle_accounts_date" json:"settle_accounts_date" form:"settle_accounts_date"`
586
-	Ctime              int64     `gorm:"column:ctime" json:"ctime" form:"ctime"`
587
-	Mtime              int64     `gorm:"column:mtime" json:"mtime" form:"mtime"`
588
-	Status             int64     `gorm:"column:status" json:"status" form:"status"`
589
-	Number             string    `gorm:"column:number" json:"number" form:"number"`
590
-	PatientId          int64     `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
591
-	Infcode            int64     `gorm:"column:infcode" json:"infcode" form:"infcode"`
592
-	WarnMsg            string    `gorm:"column:warn_msg" json:"warn_msg" form:"warn_msg"`
593
-	Cainfo             string    `gorm:"column:cainfo" json:"cainfo" form:"cainfo"`
594
-	ErrMsg             string    `gorm:"column:err_msg" json:"err_msg" form:"err_msg"`
595
-	RespondTime        string    `gorm:"column:respond_time" json:"respond_time" form:"respond_time"`
596
-	InfRefmsgid        string    `gorm:"column:inf_refmsgid" json:"inf_refmsgid" form:"inf_refmsgid"`
597
-	OrderStatus        int64     `gorm:"column:order_status" json:"order_status" form:"order_status"`
598
-	MdtrtId            string    `gorm:"column:mdtrt_id" json:"mdtrt_id" form:"mdtrt_id"`
599
-	SetlId             string    `gorm:"column:setl_id" json:"setl_id" form:"setl_id"`
600
-	PsnNo              string    `gorm:"column:psn_no" json:"psn_no" form:"psn_no"`
601
-	PsnName            string    `gorm:"column:psn_name" json:"psn_name" form:"psn_name"`
602
-	PsnCertType        string    `gorm:"column:psn_cert_type" json:"psn_cert_type" form:"psn_cert_type"`
603
-	Certno             string    `gorm:"column:certno" json:"certno" form:"certno"`
604
-	Gend               string    `gorm:"column:gend" json:"gend" form:"gend"`
605
-	Naty               string    `gorm:"column:naty" json:"naty" form:"naty"`
606
-	Brdy               time.Time `gorm:"column:brdy" json:"brdy" form:"brdy"`
607
-	Age                float64   `gorm:"column:age" json:"age" form:"age"`
608
-	Insutype           string    `gorm:"column:insutype" json:"insutype" form:"insutype"`
609
-	PsnType            string    `gorm:"column:psn_type" json:"psn_type" form:"psn_type"`
610
-	CvlservFlag        string    `gorm:"column:cvlserv_flag" json:"cvlserv_flag" form:"cvlserv_flag"`
611
-	SetlTime           string    `gorm:"column:setl_time" json:"setl_time" form:"setl_time"`
612
-	MdtrtCertType      string    `gorm:"column:mdtrt_cert_type" json:"mdtrt_cert_type" form:"mdtrt_cert_type"`
613
-	MedType            string    `gorm:"column:med_type" json:"med_type" form:"med_type"`
614
-	MedfeeSumamt       float64   `gorm:"column:medfee_sumamt" json:"medfee_sumamt" form:"medfee_sumamt"`
615
-	FulamtOwnpayAmt    float64   `gorm:"column:fulamt_ownpay_amt" json:"fulamt_ownpay_amt" form:"fulamt_ownpay_amt"`
616
-	OverlmtSelfPay     float64   `gorm:"column:overlmt_self_pay" json:"overlmt_self_pay" form:"overlmt_self_pay"`
617
-	PreselfpayAmt      float64   `gorm:"column:preselfpay_amt" json:"preselfpay_amt" form:"preselfpay_amt"`
618
-	InscpScpAmt        float64   `gorm:"column:inscp_scp_amt" json:"inscp_scp_amt" form:"inscp_scp_amt"`
619
-	ActPayDedc         float64   `gorm:"column:act_pay_dedc" json:"act_pay_dedc" form:"act_pay_dedc"`
620
-	HifpPay            float64   `gorm:"column:hifp_pay" json:"hifp_pay" form:"hifp_pay"`
621
-	CvlservPay         float64   `gorm:"column:cvlserv_pay" json:"cvlserv_pay" form:"cvlserv_pay"`
622
-	PoolPropSelfpay    float64   `gorm:"column:pool_prop_selfpay" json:"pool_prop_selfpay" form:"pool_prop_selfpay"`
623
-	HifesPay           float64   `gorm:"column:hifes_pay" json:"hifes_pay" form:"hifes_pay"`
624
-	HifmiPay           float64   `gorm:"column:hifmi_pay" json:"hifmi_pay" form:"hifmi_pay"`
625
-	HifobPay           float64   `gorm:"column:hifob_pay" json:"hifob_pay" form:"hifob_pay"`
626
-	MafPay             float64   `gorm:"column:maf_pay" json:"maf_pay" form:"maf_pay"`
627
-	OthPay             float64   `gorm:"column:oth_pay" json:"oth_pay" form:"oth_pay"`
628
-	FundPaySumamt      float64   `gorm:"column:fund_pay_sumamt" json:"fund_pay_sumamt" form:"fund_pay_sumamt"`
629
-	PsnPartAmt         float64   `gorm:"column:psn_part_amt" json:"psn_part_amt" form:"psn_part_amt"`
630
-	AcctPay            float64   `gorm:"column:acct_pay" json:"acct_pay" form:"acct_pay"`
631
-	PsnCashPay         float64   `gorm:"column:psn_cash_pay" json:"psn_cash_pay" form:"psn_cash_pay"`
632
-	HospPartAmt        float64   `gorm:"column:hosp_part_amt" json:"hosp_part_amt" form:"hosp_part_amt"`
633
-	Balc               float64   `gorm:"column:balc" json:"balc" form:"balc"`
634
-	AcctMulaidPay      float64   `gorm:"column:acct_mulaid_pay" json:"acct_mulaid_pay" form:"acct_mulaid_pay"`
635
-	MedinsSetlId       string    `gorm:"column:medins_setl_id" json:"medins_setl_id" form:"medins_setl_id"`
636
-	ClrOptins          string    `gorm:"column:clr_optins" json:"clr_optins" form:"clr_optins"`
637
-	ClrWay             string    `gorm:"column:clr_way" json:"clr_way" form:"clr_way"`
638
-	ClrType            string    `gorm:"column:clr_type" json:"clr_type" form:"clr_type"`
639
-	SetlDetail         string    `gorm:"column:setl_detail" json:"setl_detail" form:"setl_detail"`
640
-
641
-	PayWay                int64   `gorm:"column:pay_way" json:"pay_way" form:"pay_way"`
642
-	PayPrice              float64 `gorm:"column:pay_price" json:"pay_price" form:"pay_price"`
643
-	PayCardNo             string  `gorm:"column:pay_card_no" json:"pay_card_no" form:"pay_card_no"`
644
-	DiscountPrice         float64 `gorm:"column:discount_price" json:"discount_price" form:"discount_price"`
645
-	PreferentialPrice     float64 `gorm:"column:preferential_price" json:"preferential_price" form:"preferential_price"`
646
-	RealityPrice          float64 `gorm:"column:reality_price" json:"reality_price" form:"reality_price"`
647
-	FoundPrice            float64 `gorm:"column:found_price" json:"found_price" form:"found_price"`
648
-	MedicalInsurancePrice float64 `gorm:"column:medical_insurance_price" json:"medical_insurance_price" form:"medical_insurance_price"`
649
-	PrivatePrice          float64 `gorm:"column:private_price" json:"private_price" form:"private_price"`
582
+	ID                    int64     `gorm:"column:id" json:"id" form:"id"`
583
+	UserOrgId             int64     `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
584
+	HisPatientId          int64     `gorm:"column:his_patient_id" json:"his_patient_id" form:"his_patient_id"`
585
+	SettleAccountsDate    int64     `gorm:"column:settle_accounts_date" json:"settle_accounts_date" form:"settle_accounts_date"`
586
+	Ctime                 int64     `gorm:"column:ctime" json:"ctime" form:"ctime"`
587
+	Mtime                 int64     `gorm:"column:mtime" json:"mtime" form:"mtime"`
588
+	Status                int64     `gorm:"column:status" json:"status" form:"status"`
589
+	Number                string    `gorm:"column:number" json:"number" form:"number"`
590
+	PatientId             int64     `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
591
+	Infcode               int64     `gorm:"column:infcode" json:"infcode" form:"infcode"`
592
+	WarnMsg               string    `gorm:"column:warn_msg" json:"warn_msg" form:"warn_msg"`
593
+	Cainfo                string    `gorm:"column:cainfo" json:"cainfo" form:"cainfo"`
594
+	ErrMsg                string    `gorm:"column:err_msg" json:"err_msg" form:"err_msg"`
595
+	RespondTime           string    `gorm:"column:respond_time" json:"respond_time" form:"respond_time"`
596
+	InfRefmsgid           string    `gorm:"column:inf_refmsgid" json:"inf_refmsgid" form:"inf_refmsgid"`
597
+	OrderStatus           int64     `gorm:"column:order_status" json:"order_status" form:"order_status"`
598
+	MdtrtId               string    `gorm:"column:mdtrt_id" json:"mdtrt_id" form:"mdtrt_id"`
599
+	SetlId                string    `gorm:"column:setl_id" json:"setl_id" form:"setl_id"`
600
+	PsnNo                 string    `gorm:"column:psn_no" json:"psn_no" form:"psn_no"`
601
+	PsnName               string    `gorm:"column:psn_name" json:"psn_name" form:"psn_name"`
602
+	PsnCertType           string    `gorm:"column:psn_cert_type" json:"psn_cert_type" form:"psn_cert_type"`
603
+	Certno                string    `gorm:"column:certno" json:"certno" form:"certno"`
604
+	Gend                  string    `gorm:"column:gend" json:"gend" form:"gend"`
605
+	Naty                  string    `gorm:"column:naty" json:"naty" form:"naty"`
606
+	Brdy                  time.Time `gorm:"column:brdy" json:"brdy" form:"brdy"`
607
+	Age                   float64   `gorm:"column:age" json:"age" form:"age"`
608
+	Insutype              string    `gorm:"column:insutype" json:"insutype" form:"insutype"`
609
+	PsnType               string    `gorm:"column:psn_type" json:"psn_type" form:"psn_type"`
610
+	CvlservFlag           string    `gorm:"column:cvlserv_flag" json:"cvlserv_flag" form:"cvlserv_flag"`
611
+	SetlTime              string    `gorm:"column:setl_time" json:"setl_time" form:"setl_time"`
612
+	MdtrtCertType         string    `gorm:"column:mdtrt_cert_type" json:"mdtrt_cert_type" form:"mdtrt_cert_type"`
613
+	MedType               string    `gorm:"column:med_type" json:"med_type" form:"med_type"`
614
+	MedfeeSumamt          float64   `gorm:"column:medfee_sumamt" json:"medfee_sumamt" form:"medfee_sumamt"`
615
+	FulamtOwnpayAmt       float64   `gorm:"column:fulamt_ownpay_amt" json:"fulamt_ownpay_amt" form:"fulamt_ownpay_amt"`
616
+	OverlmtSelfPay        float64   `gorm:"column:overlmt_self_pay" json:"overlmt_self_pay" form:"overlmt_self_pay"`
617
+	PreselfpayAmt         float64   `gorm:"column:preselfpay_amt" json:"preselfpay_amt" form:"preselfpay_amt"`
618
+	InscpScpAmt           float64   `gorm:"column:inscp_scp_amt" json:"inscp_scp_amt" form:"inscp_scp_amt"`
619
+	ActPayDedc            float64   `gorm:"column:act_pay_dedc" json:"act_pay_dedc" form:"act_pay_dedc"`
620
+	HifpPay               float64   `gorm:"column:hifp_pay" json:"hifp_pay" form:"hifp_pay"`
621
+	CvlservPay            float64   `gorm:"column:cvlserv_pay" json:"cvlserv_pay" form:"cvlserv_pay"`
622
+	PoolPropSelfpay       float64   `gorm:"column:pool_prop_selfpay" json:"pool_prop_selfpay" form:"pool_prop_selfpay"`
623
+	HifesPay              float64   `gorm:"column:hifes_pay" json:"hifes_pay" form:"hifes_pay"`
624
+	HifmiPay              float64   `gorm:"column:hifmi_pay" json:"hifmi_pay" form:"hifmi_pay"`
625
+	HifobPay              float64   `gorm:"column:hifob_pay" json:"hifob_pay" form:"hifob_pay"`
626
+	MafPay                float64   `gorm:"column:maf_pay" json:"maf_pay" form:"maf_pay"`
627
+	OthPay                float64   `gorm:"column:oth_pay" json:"oth_pay" form:"oth_pay"`
628
+	FundPaySumamt         float64   `gorm:"column:fund_pay_sumamt" json:"fund_pay_sumamt" form:"fund_pay_sumamt"`
629
+	PsnPartAmt            float64   `gorm:"column:psn_part_amt" json:"psn_part_amt" form:"psn_part_amt"`
630
+	AcctPay               float64   `gorm:"column:acct_pay" json:"acct_pay" form:"acct_pay"`
631
+	PsnCashPay            float64   `gorm:"column:psn_cash_pay" json:"psn_cash_pay" form:"psn_cash_pay"`
632
+	HospPartAmt           float64   `gorm:"column:hosp_part_amt" json:"hosp_part_amt" form:"hosp_part_amt"`
633
+	Balc                  float64   `gorm:"column:balc" json:"balc" form:"balc"`
634
+	AcctMulaidPay         float64   `gorm:"column:acct_mulaid_pay" json:"acct_mulaid_pay" form:"acct_mulaid_pay"`
635
+	MedinsSetlId          string    `gorm:"column:medins_setl_id" json:"medins_setl_id" form:"medins_setl_id"`
636
+	ClrOptins             string    `gorm:"column:clr_optins" json:"clr_optins" form:"clr_optins"`
637
+	ClrWay                string    `gorm:"column:clr_way" json:"clr_way" form:"clr_way"`
638
+	ClrType               string    `gorm:"column:clr_type" json:"clr_type" form:"clr_type"`
639
+	SetlDetail            string    `gorm:"column:setl_detail" json:"setl_detail" form:"setl_detail"`
640
+	IsMedicineInsurance   int64     `gorm:"column:is_medicine_insurance" json:"is_medicine_insurance" form:"is_medicine_insurance"`
641
+	PayWay                int64     `gorm:"column:pay_way" json:"pay_way" form:"pay_way"`
642
+	PayPrice              float64   `gorm:"column:pay_price" json:"pay_price" form:"pay_price"`
643
+	PayCardNo             string    `gorm:"column:pay_card_no" json:"pay_card_no" form:"pay_card_no"`
644
+	DiscountPrice         float64   `gorm:"column:discount_price" json:"discount_price" form:"discount_price"`
645
+	PreferentialPrice     float64   `gorm:"column:preferential_price" json:"preferential_price" form:"preferential_price"`
646
+	RealityPrice          float64   `gorm:"column:reality_price" json:"reality_price" form:"reality_price"`
647
+	FoundPrice            float64   `gorm:"column:found_price" json:"found_price" form:"found_price"`
648
+	MedicalInsurancePrice float64   `gorm:"column:medical_insurance_price" json:"medical_insurance_price" form:"medical_insurance_price"`
649
+	PrivatePrice          float64   `gorm:"column:private_price" json:"private_price" form:"private_price"`
650 650
 
651 651
 	HisOrderInfo        HisOrderInfo        `gorm:"ForeignKey:ID;AssociationForeignKey:OrderId" json:"order_info"`
652 652
 	Patients            Patients            `gorm:"ForeignKey:PatientId;AssociationForeignKey:ID" json:"patient"`
@@ -920,3 +920,27 @@ type HisXtDiagnoseConfig struct {
920 920
 func (HisXtDiagnoseConfig) TableName() string {
921 921
 	return "his_xt_diagnose_config"
922 922
 }
923
+
924
+type BaseParams struct {
925
+	SecretKey      string
926
+	FixmedinsCode  string
927
+	InsuplcAdmdvs  string
928
+	MdtrtareaAdmvs string
929
+	OrgName        string
930
+	Doctor         string
931
+}
932
+
933
+type BusinessParams struct {
934
+	Insutype         string
935
+	ClrType          string
936
+	SetlOptins       string
937
+	MdtrtareaAdmvs   string
938
+	StmtBegndate     string
939
+	StmtEnddate      string
940
+	MedfeeSumamt     float64
941
+	FundPaySumamt    float64
942
+	AcctPay          float64
943
+	FixmedinsSetlCnt int64
944
+	FileQuryNo       string
945
+	CashPayamt       float64
946
+}

+ 129 - 11
service/gdyb_service.go ファイルの表示

@@ -32,7 +32,7 @@ func Gdyb1101(certNo string, org_name string, doctor string, fixmedins_code stri
32 32
 	inputData := make(map[string]interface{})
33 33
 	inputMessage["infno"] = "1101"      // 交易编码
34 34
 	inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
35
-	inputData["mdtrt_cert_no"] = ""     // 就诊凭证编号
35
+	inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
36 36
 	inputData["card_sn"] = ""           // 卡识别码
37 37
 	inputData["begntime"] = ""          // 开始时间
38 38
 	inputData["psn_cert_type"] = ""     // 人员证件类型
@@ -622,7 +622,7 @@ func Gdyb2207(psnNo string, mdtrtId string, chrgBchno string, certNo string, ins
622 622
 
623 623
 	inputData["psn_no"] = psnNo         // 人员编号 (来自1101接口返回)
624 624
 	inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
625
-	inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
625
+	inputData["mdtrt_cert_no"] = ""     // 就诊凭证编号
626 626
 	inputData["med_type"] = "11"        // 医疗类别 11 普通门诊  12 门诊挂号
627 627
 	inputData["medfee_sumamt"] = total  // 医疗费总额
628 628
 	inputData["psn_setlway"] = "01"     // 个人结算方式 01 按项目结 02 按定额结算
@@ -729,22 +729,83 @@ func Gdyb2208(psnNo string, mdtrtId string, setlId string, org_name string, doct
729 729
 	return str
730 730
 }
731 731
 
732
-//  门诊结算撤销
733
-func Gdyb3201(psnNo string, mdtrtId string, setlId string, org_name string, doctor string, secret_key string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string) string {
732
+//  医药机构费用结算对总账 func Gdyb3201( org_name string, doctor string, secret_key string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string) string {
733
+func Gdyb3201(baseParams models.BaseParams, businessParams models.BusinessParams) string {
734 734
 	// 生成签名
735 735
 	nonce := GetRandomString(32)
736 736
 	timestamp := time.Now().Unix()
737
-	signature := setSignature(timestamp, nonce, secret_key)
737
+	signature := setSignature(timestamp, nonce, baseParams.SecretKey)
738 738
 
739 739
 	// 生成输入报文
740
-	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
740
+	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
741 741
 	input := make(map[string]interface{})
742 742
 	inputData := make(map[string]interface{})
743
-	inputMessage["infno"] = "2208" // 交易编码
743
+	inputMessage["infno"] = "3201"                                    // 交易编码
744
+	inputData["insutype"] = businessParams.Insutype                   // 险种
745
+	inputData["clr_type"] = businessParams.ClrType                    // 就诊 ID(来自2201接口返回)
746
+	inputData["setl_optins"] = baseParams.OrgName                     // 结算经办机构
747
+	inputData["stmt_begndate"] = businessParams.StmtBegndate          // 对帐开始时间
748
+	inputData["stmt_enddate"] = businessParams.StmtEnddate            //对帐结束时间
749
+	inputData["medfee_sumamt"] = businessParams.StmtEnddate           //医疗费总额
750
+	inputData["fund_pay_sumamt"] = businessParams.StmtEnddate         //基金支付总额
751
+	inputData["acct_pay"] = businessParams.AcctPay                    //个人账户支付金额
752
+	inputData["fixmedins_setl_cnt"] = businessParams.FixmedinsSetlCnt //定点医药机构结算笔数
744 753
 
745
-	inputData["psn_no"] = psnNo     // 人员编号 (来自1101接口返回)
746
-	inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
747
-	inputData["setl_id"] = setlId   // 结算 ID
754
+	input["data"] = inputData
755
+	inputMessage["input"] = input //交易输入
756
+
757
+	bytesData, err := json.Marshal(inputMessage)
758
+	fmt.Println(string(bytesData))
759
+	if err != nil {
760
+		fmt.Println(err.Error())
761
+		return err.Error()
762
+	}
763
+	reader := bytes.NewReader(bytesData)
764
+
765
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/3102"
766
+	request, err := http.NewRequest("POST", url, reader)
767
+	if err != nil {
768
+		fmt.Println(err.Error())
769
+		return err.Error()
770
+	}
771
+
772
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
773
+	request.Header.Set("x-tif-paasid", "test_hosp")
774
+	request.Header.Set("x-tif-signature", signature)
775
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
776
+	request.Header.Set("x-tif-nonce", nonce)
777
+
778
+	client := http.Client{}
779
+	resp, err := client.Do(request)
780
+	if err != nil {
781
+		fmt.Println(err.Error())
782
+		return err.Error()
783
+	}
784
+	respBytes, err := ioutil.ReadAll(resp.Body)
785
+	if err != nil {
786
+		fmt.Println(err.Error())
787
+		return err.Error()
788
+	}
789
+	str := string(respBytes)
790
+	fmt.Println(str)
791
+	return str
792
+}
793
+
794
+//文件上传
795
+func Gdyb9101(baseParams models.BaseParams, file_name string, file_byte []byte) string {
796
+	// 生成签名
797
+	nonce := GetRandomString(32)
798
+	timestamp := time.Now().Unix()
799
+	signature := setSignature(timestamp, nonce, baseParams.SecretKey)
800
+
801
+	// 生成输入报文
802
+	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
803
+	input := make(map[string]interface{})
804
+	inputData := make(map[string]interface{})
805
+	inputMessage["in"] = "3201"                            // 交易编码
806
+	inputData["file_name"] = file_name                     //文件名
807
+	inputData["in"] = file_byte                            //文件数据
808
+	inputData["fixmedins_code"] = baseParams.FixmedinsCode //编码
748 809
 
749 810
 	input["data"] = inputData
750 811
 	inputMessage["input"] = input //交易输入
@@ -757,7 +818,7 @@ func Gdyb3201(psnNo string, mdtrtId string, setlId string, org_name string, doct
757 818
 	}
758 819
 	reader := bytes.NewReader(bytesData)
759 820
 
760
-	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2208"
821
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/9101"
761 822
 	request, err := http.NewRequest("POST", url, reader)
762 823
 	if err != nil {
763 824
 		fmt.Println(err.Error())
@@ -786,6 +847,63 @@ func Gdyb3201(psnNo string, mdtrtId string, setlId string, org_name string, doct
786 847
 	return str
787 848
 }
788 849
 
850
+func Gdyb3202(baseParams models.BaseParams, businessParams models.BusinessParams) string {
851
+	// 生成签名
852
+	nonce := GetRandomString(32)
853
+	timestamp := time.Now().Unix()
854
+	signature := setSignature(timestamp, nonce, baseParams.SecretKey)
855
+
856
+	// 生成输入报文
857
+	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
858
+	input := make(map[string]interface{})
859
+	inputData := make(map[string]interface{})
860
+	inputMessage["infno"] = "3201"                                    // 交易编码
861
+	inputData["file_qury_no"] = businessParams.FileQuryNo             // 险种
862
+	inputData["setl_optins"] = baseParams.OrgName                     // 结算经办机构
863
+	inputData["stmt_begndate"] = businessParams.StmtBegndate          // 对帐开始时间
864
+	inputData["stmt_enddate"] = businessParams.StmtEnddate            //对帐结束时间
865
+	inputData["medfee_sumamt"] = businessParams.StmtEnddate           //医疗费总额
866
+	inputData["fund_pay_sumamt"] = businessParams.StmtEnddate         //基金支付总额
867
+	inputData["cash_payamt"] = businessParams.CashPayamt              //现金支付金额
868
+	inputData["fixmedins_setl_cnt"] = businessParams.FixmedinsSetlCnt //定点医药机构结算笔数
869
+
870
+	input["data"] = inputData
871
+	inputMessage["input"] = input //交易输入
872
+	bytesData, err := json.Marshal(inputMessage)
873
+	fmt.Println(string(bytesData))
874
+	if err != nil {
875
+		fmt.Println(err.Error())
876
+		return err.Error()
877
+	}
878
+	reader := bytes.NewReader(bytesData)
879
+
880
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/3202"
881
+	request, err := http.NewRequest("POST", url, reader)
882
+	if err != nil {
883
+		fmt.Println(err.Error())
884
+		return err.Error()
885
+	}
886
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
887
+	request.Header.Set("x-tif-paasid", "test_hosp")
888
+	request.Header.Set("x-tif-signature", signature)
889
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
890
+	request.Header.Set("x-tif-nonce", nonce)
891
+	client := http.Client{}
892
+	resp, err := client.Do(request)
893
+	if err != nil {
894
+		fmt.Println(err.Error())
895
+		return err.Error()
896
+	}
897
+	respBytes, err := ioutil.ReadAll(resp.Body)
898
+	if err != nil {
899
+		fmt.Println(err.Error())
900
+		return err.Error()
901
+	}
902
+	str := string(respBytes)
903
+	fmt.Println(str)
904
+	return str
905
+}
906
+
789 907
 //  门诊结算撤销
790 908
 //func Gdyb4101(psnNo string, mdtrtId string, setlId string) string {
791 909
 //	// 生成签名

+ 10 - 0
service/his_service.go ファイルの表示

@@ -798,3 +798,13 @@ func GetHisOrderByID(order_id int64) (order models.HisOrder, err error) {
798 798
 	err = readDb.Model(&models.HisOrder{}).Where("id = ?", order_id).First(&order).Error
799 799
 	return
800 800
 }
801
+
802
+func GetOrderByTime(start_time int64, end_time int64, org_id int64, insutype string, clr_type string) (orders []*models.HisOrder, err error) {
803
+	err = readDb.Model(&models.HisOrder{}).Where("user_org_id = ? AND status = 1 AND is_medicine_insurance = 1 AND settle_accounts_date <= ? AND settle_accounts_date >= ? AND insutype = ? AND clr_type = ? ", org_id, end_time, start_time, insutype, clr_type).Find(&orders).Error
804
+	return
805
+}
806
+
807
+func GetOrderByTimeTwo(start_time int64, end_time int64, org_id int64) (orders []*models.HisOrder, err error) {
808
+	err = readDb.Model(&models.HisOrder{}).Where("user_org_id = ? AND status = 1 AND is_medicine_insurance = 1 AND settle_accounts_date <= ? AND settle_accounts_date >= ? ", org_id, end_time, start_time).Find(&orders).Error
809
+	return
810
+}