csx 3 years ago
parent
commit
ac654fd09f
4 changed files with 331 additions and 195 deletions
  1. 167 142
      controllers/sz/sz_his_api_controller.go
  2. 5 0
      models/sz_his_models.go
  3. 59 3
      service/gdyb_service.go
  4. 100 50
      service/sz_his_service.go

+ 167 - 142
controllers/sz/sz_his_api_controller.go View File

@@ -309,6 +309,47 @@ func (c *SZHisApiController) GetRegisterInfo() {
309 309
 	adminRole, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, admin_user_id)
310 310
 	his, _ := service.GetHisPatientInfo(adminInfo.CurrentOrgId, patient_id, theTime.Unix())
311 311
 
312
+	var custom_code string
313
+	var custom_project_name string
314
+	var allPrice float64
315
+
316
+	switch register_type {
317
+	case 1:
318
+		custom_code = "110100002"
319
+		custom_project_name = "普通门诊"
320
+		allPrice = registration_fee + medical_expenses
321
+		break
322
+	case 2:
323
+		custom_code = "110200002-2"
324
+		custom_project_name = "主任医师"
325
+		allPrice = registration_fee + medical_expenses
326
+
327
+		break
328
+	case 3:
329
+		custom_code = "110200002-3"
330
+		custom_project_name = "副主任医师"
331
+		allPrice = registration_fee + medical_expenses
332
+
333
+		break
334
+	case 4:
335
+		custom_code = "110200003"
336
+		custom_project_name = "急诊诊查费"
337
+		allPrice = registration_fee + medical_expenses
338
+
339
+		break
340
+	case 5:
341
+		custom_code = "110200002-1"
342
+		custom_project_name = "专家"
343
+		allPrice = registration_fee + medical_expenses
344
+
345
+		break
346
+	case 6:
347
+		custom_code = "0"
348
+		custom_project_name = "免受诊金"
349
+		allPrice = 0
350
+		break
351
+	}
352
+
312 353
 	if his.ID == 0 {
313 354
 
314 355
 		var doctor_name string
@@ -330,20 +371,18 @@ func (c *SZHisApiController) GetRegisterInfo() {
330 371
 
331 372
 		//流水号
332 373
 		//
333
-		//number := miConfig.Code + year + month + day +
334
-		//	fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
374
+		number := miConfig.Code + year + month + day +
375
+			fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
335 376
 		mz_number := year + month + day + strconv.FormatInt(patient_id, 10)
336
-		number := miConfig.Code + year + month + day + "2233445"
337
-		//verifyCode := ReadCardGetCode("MZ002" + "|" + number + "|" + miConfig.Code)
377
+		//number := miConfig.Code + year + month + day + "2233445"
378
+		verifyCode, version_code := ReadCardGetCode("MZ002" + "|" + number + "|" + miConfig.Code)
338 379
 
339 380
 		//1.判断读卡类型
340 381
 		//2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码
341 382
 		//yiliao_number, id_card_number,verifyCode, err, ret4 := ReadBasCardGetNumber(number)
342
-		verifyCode := "000000|101036689af21e741240e8e734bfc24a"
343 383
 		yiliao_number := "%GAAFSAKSXSUKKWDKHDAD?;07734724145330238292?"
344
-		id_card_number := "142729195704031523"
384
+		//id_card_number := "142729195704031523"
345 385
 		dept_code := "0305"
346
-		version_code := "111"
347 386
 		ret4 := 0
348 387
 		is_yidi = 1
349 388
 		if err != nil {
@@ -353,133 +392,128 @@ func (c *SZHisApiController) GetRegisterInfo() {
353 392
 		if ret4 == 0 { //本地卡流程
354 393
 			if is_yidi == 1 { //本地就医流程
355 394
 				//根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错
356
-				tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId)
357
-				if tempPatient.ID == patient_id {
358
-					//挂号
359
-					resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, dept_code, yiliao_number, verifyCode, number, mz_number, version_code)
360
-
361
-					var dat map[string]interface{}
362
-					if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
363
-						fmt.Println(dat)
364
-					} else {
365
-						fmt.Println(err)
366
-					}
367
-
368
-					userJSONBytes, _ := json.Marshal(dat)
369
-
370
-					var res ResultOne
371
-					if err := json.Unmarshal(userJSONBytes, &res); err != nil {
372
-						utils.ErrorLog("解析失败:%v", err)
373
-						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
374
-						return
375
-					}
376
-
377
-					if res.Transreturncode == "00000000" {
378
-
379
-						his := models.VMHisPatient{
380
-							Name:                   name,
381
-							Gender:                 gender,
382
-							Birthday:               birthUnix,
383
-							MedicalTreatmentType:   medical_care,
384
-							IdType:                 certificates,
385
-							IdCardNo:               id_card,
386
-							BalanceAccountsType:    settlementValue,
387
-							SocialType:             social_type,
388
-							MedicalInsuranceNumber: medical_insurance_card,
389
-							RegisterType:           register_type,
390
-							RegisterCost:           registration_fee,
391
-							TreatmentCost:          medical_expenses,
392
-							Status:                 1,
393
-							Ctime:                  time.Now().Unix(),
394
-							Mtime:                  time.Now().Unix(),
395
-							Iinfo:                  resp_result,
396
-							PatientId:              patient.ID,
397
-							RecordDate:             theTime.Unix(),
398
-							UserOrgId:              adminInfo.CurrentOrgId,
399
-							AdminUserId:            admin_user_id,
400
-							IsReturn:               1,
401
-							IdCardType:             id_card_type,
402
-							Doctor:                 doctor,
403
-							Departments:            department,
404
-							YiliaoNumber:           yiliao_number,
405
-							MzNumber:               number,
406
-							Number:                 mz_number,
407
-						}
408
-						service.CreateHisPatientTwo(&his)
409
-						c.ServeSuccessJSON(map[string]interface{}{
410
-							"msg": "挂号成功",
411
-						})
412
-					} else {
413
-
414
-					}
415
-
395
+				//tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId)
396
+				//if tempPatient.ID == patient_id {
397
+				//挂号
398
+				resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, dept_code, yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice)
399
+				var dat map[string]interface{}
400
+				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
401
+					fmt.Println(dat)
416 402
 				} else {
417
-					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException)
403
+					fmt.Println(err)
404
+				}
405
+				userJSONBytes, _ := json.Marshal(dat)
406
+				var res ResultOne
407
+				if err := json.Unmarshal(userJSONBytes, &res); err != nil {
408
+					utils.ErrorLog("解析失败:%v", err)
409
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
418 410
 					return
419 411
 				}
412
+				if res.Transreturncode == "00000000" {
413
+					his := models.VMHisPatient{
414
+						Name:                   name,
415
+						Gender:                 gender,
416
+						Birthday:               birthUnix,
417
+						MedicalTreatmentType:   medical_care,
418
+						IdType:                 certificates,
419
+						IdCardNo:               id_card,
420
+						BalanceAccountsType:    settlementValue,
421
+						SocialType:             social_type,
422
+						MedicalInsuranceNumber: medical_insurance_card,
423
+						RegisterType:           register_type,
424
+						RegisterCost:           registration_fee,
425
+						TreatmentCost:          medical_expenses,
426
+						Status:                 1,
427
+						Ctime:                  time.Now().Unix(),
428
+						Mtime:                  time.Now().Unix(),
429
+						Iinfo:                  resp_result,
430
+						PatientId:              patient.ID,
431
+						RecordDate:             theTime.Unix(),
432
+						UserOrgId:              adminInfo.CurrentOrgId,
433
+						AdminUserId:            admin_user_id,
434
+						IsReturn:               1,
435
+						IdCardType:             id_card_type,
436
+						Doctor:                 doctor,
437
+						Departments:            department,
438
+						YiliaoNumber:           yiliao_number,
439
+						MzNumber:               number,
440
+						Number:                 mz_number,
441
+					}
442
+					service.CreateHisPatientTwo(&his)
443
+					c.ServeSuccessJSON(map[string]interface{}{
444
+						"msg": "挂号成功",
445
+					})
446
+				} else {
447
+
448
+				}
449
+				//
450
+				//} else {
451
+				//	c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException)
452
+				//	return
453
+				//}
420 454
 
421 455
 			} else { //异地就医流程
422 456
 				//异地走鉴权流程
423 457
 				//authResult := CardAuth(number)
424 458
 				//fmt.Println(authResult)
425 459
 
426
-				tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId)
427
-				if tempPatient.ID == patient_id {
428
-					resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code)
429
-					var dat map[string]interface{}
430
-					if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
431
-						fmt.Println(dat)
432
-					} else {
433
-						fmt.Println(err)
434
-					}
435
-
436
-					userJSONBytes, _ := json.Marshal(dat)
460
+				//tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId)
461
+				//if tempPatient.ID == patient_id {
462
+				resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice)
463
+				var dat map[string]interface{}
464
+				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
465
+					fmt.Println(dat)
466
+				} else {
467
+					fmt.Println(err)
468
+				}
437 469
 
438
-					var res ResultOne
439
-					if err := json.Unmarshal(userJSONBytes, &res); err != nil {
440
-						utils.ErrorLog("解析失败:%v", err)
441
-						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
442
-						return
443
-					}
444
-					if res.Transreturncode == "00000000" {
445
-						his := models.VMHisPatient{
446
-							Name:                   name,
447
-							Gender:                 gender,
448
-							Birthday:               birthUnix,
449
-							MedicalTreatmentType:   medical_care,
450
-							IdType:                 certificates,
451
-							IdCardNo:               id_card,
452
-							BalanceAccountsType:    settlementValue,
453
-							SocialType:             social_type,
454
-							MedicalInsuranceNumber: medical_insurance_card,
455
-							RegisterType:           register_type,
456
-							RegisterCost:           registration_fee,
457
-							TreatmentCost:          medical_expenses,
458
-							Status:                 1,
459
-							Ctime:                  time.Now().Unix(),
460
-							Mtime:                  time.Now().Unix(),
461
-							Iinfo:                  resp_result,
462
-							PatientId:              patient.ID,
463
-							RecordDate:             theTime.Unix(),
464
-							UserOrgId:              adminInfo.CurrentOrgId,
465
-							AdminUserId:            admin_user_id,
466
-							IsReturn:               1,
467
-							IdCardType:             id_card_type,
468
-							Doctor:                 doctor,
469
-							Departments:            department,
470
-							YiliaoNumber:           yiliao_number,
471
-							MzNumber:               number,
472
-							Number:                 mz_number,
473
-						}
474
-						service.CreateHisPatientTwo(&his)
475
-						c.ServeSuccessJSON(map[string]interface{}{
476
-							"msg": "挂号成功",
477
-						})
478
-					} else {
470
+				userJSONBytes, _ := json.Marshal(dat)
479 471
 
472
+				var res ResultOne
473
+				if err := json.Unmarshal(userJSONBytes, &res); err != nil {
474
+					utils.ErrorLog("解析失败:%v", err)
475
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
476
+					return
477
+				}
478
+				if res.Transreturncode == "00000000" {
479
+					his := models.VMHisPatient{
480
+						Name:                   name,
481
+						Gender:                 gender,
482
+						Birthday:               birthUnix,
483
+						MedicalTreatmentType:   medical_care,
484
+						IdType:                 certificates,
485
+						IdCardNo:               id_card,
486
+						BalanceAccountsType:    settlementValue,
487
+						SocialType:             social_type,
488
+						MedicalInsuranceNumber: medical_insurance_card,
489
+						RegisterType:           register_type,
490
+						RegisterCost:           registration_fee,
491
+						TreatmentCost:          medical_expenses,
492
+						Status:                 1,
493
+						Ctime:                  time.Now().Unix(),
494
+						Mtime:                  time.Now().Unix(),
495
+						Iinfo:                  resp_result,
496
+						PatientId:              patient.ID,
497
+						RecordDate:             theTime.Unix(),
498
+						UserOrgId:              adminInfo.CurrentOrgId,
499
+						AdminUserId:            admin_user_id,
500
+						IsReturn:               1,
501
+						IdCardType:             id_card_type,
502
+						Doctor:                 doctor,
503
+						Departments:            department,
504
+						YiliaoNumber:           yiliao_number,
505
+						MzNumber:               number,
506
+						Number:                 mz_number,
480 507
 					}
508
+					service.CreateHisPatientTwo(&his)
509
+					c.ServeSuccessJSON(map[string]interface{}{
510
+						"msg": "挂号成功",
511
+					})
512
+				} else {
481 513
 
482 514
 				}
515
+
516
+				//}
483 517
 			}
484 518
 
485 519
 		} else { //异地卡流程
@@ -487,7 +521,7 @@ func (c *SZHisApiController) GetRegisterInfo() {
487 521
 			//fmt.Println(readCardBasResult)
488 522
 			//是否异地就医,是的话走鉴权流程,不是的话走门诊挂号
489 523
 			if is_yidi == 1 { //1本地就医
490
-				resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code)
524
+				resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice)
491 525
 				var dat map[string]interface{}
492 526
 				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
493 527
 					fmt.Println(dat)
@@ -544,7 +578,7 @@ func (c *SZHisApiController) GetRegisterInfo() {
544 578
 			} else { //异地就医需要走鉴权流程
545 579
 				//authResult := CardAuth(number)
546 580
 				//fmt.Println(authResult)
547
-				resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code)
581
+				resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice)
548 582
 				var dat map[string]interface{}
549 583
 				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
550 584
 					fmt.Println(dat)
@@ -604,7 +638,6 @@ func (c *SZHisApiController) GetRegisterInfo() {
604 638
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
605 639
 		return
606 640
 	}
607
-
608 641
 }
609 642
 
610 643
 //上传明细----预结算----确认订单
@@ -680,18 +713,19 @@ func (c *SZHisApiController) GetUploadInfo() {
680 713
 
681 714
 	var doctor_name string
682 715
 	var doctor_code string
716
+
717
+	var drug_doctor_code string
718
+	drug_doctor_code = "H24962918"
719
+
683 720
 	if adminRole.ID == 0 {
684 721
 		doctor_name = "黄亦轩"
685
-		doctor_code = "H24962918"
722
+		doctor_code = "1"
686 723
 	} else {
687 724
 		doctor_name = adminRole.UserName
688 725
 		doctor_code = strconv.FormatInt(admin_user_id, 10)
689
-
690 726
 	}
691 727
 
692
-	//verifyCode,version_code := ReadCardGetCode("FY001" + "|" + number + "|" + miConfig.Code)
693
-	version_code := "0.03"
694
-	verifyCode := "000000|890f2e14e4a90d93c2deb4a35b5dabdc"
728
+	verifyCode, version_code := ReadCardGetCode("FY001" + "|" + number + "|" + miConfig.Code)
695 729
 	var customs []*models.CustomDetail
696 730
 	for _, item := range prescriptions {
697 731
 		if item.Type == 1 { //药品
@@ -807,7 +841,7 @@ func (c *SZHisApiController) GetUploadInfo() {
807 841
 		if stop > len(customs) {
808 842
 			stop = len(customs)
809 843
 		}
810
-		result := service.SzybFY001(doctor_name, doctor_code, miConfig.Code, customs[start-1:stop], verifyCode, number, mz_number, version_code)
844
+		result := service.SzybFY001(doctor_name, doctor_code, miConfig.Code, customs[start-1:stop], verifyCode, number, mz_number, version_code, drug_doctor_code)
811 845
 		fmt.Println(result)
812 846
 
813 847
 		var dat map[string]interface{}
@@ -942,10 +976,7 @@ func (c *SZHisApiController) GetUploadInfo() {
942 976
 				total = total + (subItem.Price * float64(subItem.Count))
943 977
 			}
944 978
 		}
945
-		//	//verifyCode := ReadCardGetCode("FY004" + "|" + number + "|" + miConfig.Code)
946
-
947
-		verifyCode := "000000|2c14888db47a025ddfc1ff917c7e98e9"
948
-
979
+		verifyCode, version_code := ReadCardGetCode("FY004" + "|" + number + "|" + miConfig.Code)
949 980
 		result_two := service.SzybFY004(doctor_name, doctor_code, miConfig.Code, total, verifyCode, number, mz_number, version_code)
950 981
 		var dat map[string]interface{}
951 982
 		if err := json.Unmarshal([]byte(result_two), &dat); err == nil {
@@ -1064,24 +1095,18 @@ func (c *SZHisApiController) GetSettleInfo() {
1064 1095
 			var doctor_name string
1065 1096
 			var doctor_code string
1066 1097
 			if roles.ID == 0 {
1067
-
1068 1098
 				doctor_name = "黄亦轩"
1069 1099
 				doctor_code = "H24962918"
1070
-
1071 1100
 			} else {
1072 1101
 				doctor_name = roles.UserName
1073 1102
 				doctor_code = strconv.FormatInt(admin_user_id, 10)
1074
-
1075 1103
 			}
1076
-
1077 1104
 			number := his.MzNumber
1078 1105
 			mz_number := his.Number
1079
-
1080
-			//verifyCode := ReadCardGetCode("FY005" + "|" + number + "|" + miConfig.Code)
1081
-			verifyCode := "000000|eb7acc3ec61eb5e3fd12a3586ad3a9c5"
1082
-			version_code := "0.03"
1106
+			verifyCode, version_code := ReadCardGetCode("FY005" + "|" + number + "|" + miConfig.Code)
1107
+			//verifyCode := "000000|eb7acc3ec61eb5e3fd12a3586ad3a9c5"
1108
+			//version_code := "0.03"
1083 1109
 			//yiliao_number, id_card_number,verifyCode,versionCode, err, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code)
1084
-
1085 1110
 			yiliao_number := his.YiliaoNumber
1086 1111
 			result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code)
1087 1112
 			var dat map[string]interface{}

+ 5 - 0
models/sz_his_models.go View File

@@ -73,3 +73,8 @@ type DocDetail struct {
73 73
 	StaffCode                               string //医护人员编码
74 74
 	EndTime                                 int64  // 结束日期
75 75
 }
76
+
77
+type RegisterDetail struct {
78
+	PrescriptionNumber string
79
+	PrescriptionNumber string
80
+}

+ 59 - 3
service/gdyb_service.go View File

@@ -1200,9 +1200,9 @@ func Gdyb5203(baseParams models.BaseParams, businessParams models.BusinessParams
1200 1200
 	input := make(map[string]interface{})
1201 1201
 	inputData := make(map[string]interface{})
1202 1202
 	inputMessage["infno"] = "5203" // 交易编码
1203
-	inputData["psn_no"] = businessParams.PsnNo
1204
-	inputData["setl_id"] = businessParams.SetlId
1205
-	inputData["mdtrt_id"] = businessParams.MdtrtId
1203
+	inputData["psn_no"] = "44020000001104246641"
1204
+	inputData["setl_id"] = "3029927"
1205
+	inputData["mdtrt_id"] = "3966681"
1206 1206
 	input["data"] = inputData
1207 1207
 	inputMessage["input"] = input //交易输入
1208 1208
 	bytesData, err := json.Marshal(inputMessage)
@@ -1943,3 +1943,59 @@ func CreateMedicalInsuranceCostCompareRecord(record *models.MedicalInsuranceCost
1943 1943
 	err := writeDb.Save(&record).Error
1944 1944
 	return err
1945 1945
 }
1946
+
1947
+//func Gdyb5203(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string) string {
1948
+//	// 生成签名
1949
+//	nonce := GetRandomString(32)
1950
+//	timestamp := time.Now().Unix()
1951
+//	signature := setSignature(timestamp, nonce, secret_key)
1952
+//
1953
+//	// 生成输入报文
1954
+//	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
1955
+//	input := make(map[string]interface{})
1956
+//	inputData := make(map[string]interface{})
1957
+//	inputMessage["infno"] = "5203" // 交易编码
1958
+//
1959
+//	inputData["fixmedins_type"] = "1"
1960
+//	inputData["fixmedins_name"] = org_name
1961
+//	inputData["fixmedins_code"] = fixmedins_code
1962
+//	input["medinsinfo"] = inputData
1963
+//	inputMessage["input"] = input //交易输入
1964
+//
1965
+//	bytesData, err := json.Marshal(inputMessage)
1966
+//	fmt.Println(string(bytesData))
1967
+//	if err != nil {
1968
+//		fmt.Println(err.Error())
1969
+//		return err.Error()
1970
+//	}
1971
+//	reader := bytes.NewReader(bytesData)
1972
+//	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/1201"
1973
+//	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/1201"
1974
+//	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/1101"
1975
+//	request, err := http.NewRequest("POST", url, reader)
1976
+//	if err != nil {
1977
+//		fmt.Println(err.Error())
1978
+//		return err.Error()
1979
+//	}
1980
+//
1981
+//	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1982
+//	request.Header.Set("x-tif-paasid", "sg03_prd")
1983
+//	request.Header.Set("x-tif-signature", signature)
1984
+//	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1985
+//	request.Header.Set("x-tif-nonce", nonce)
1986
+//
1987
+//	client := http.Client{}
1988
+//	resp, err := client.Do(request)
1989
+//	if err != nil {
1990
+//		fmt.Println(err.Error())
1991
+//		return err.Error()
1992
+//	}
1993
+//	respBytes, err := ioutil.ReadAll(resp.Body)
1994
+//	if err != nil {
1995
+//		fmt.Println(err.Error())
1996
+//		return err.Error()
1997
+//	}
1998
+//	fmt.Println(string(respBytes))
1999
+//	str := string(respBytes)
2000
+//	return str
2001
+//}

+ 100 - 50
service/sz_his_service.go View File

@@ -12,7 +12,7 @@ import (
12 12
 	_ "unsafe"
13 13
 )
14 14
 
15
-func SzybMZ002(doctor string, doctor_code string, fixmedins_code string, dept_code string, account string, verify_code string, serial_number string, mz_number string, version_code string) string {
15
+func SzybMZ002(doctor string, doctor_code string, fixmedins_code string, dept_code string, account string, verify_code string, serial_number string, mz_number string, version_code string, custom_code string, project_name string, price float64) string {
16 16
 	// 生成输入报文
17 17
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
18 18
 	inputData := make(map[string]interface{})
@@ -24,57 +24,107 @@ func SzybMZ002(doctor string, doctor_code string, fixmedins_code string, dept_co
24 24
 	inputData["bzz269"] = "000000"
25 25
 	inputData["aka130"] = "11"
26 26
 	inputData["akf001"] = dept_code
27
-	inputData["bkc368"] = "2"
28
-	inputData["akc264"] = 10.00
27
+	inputData["akc264"] = price
29 28
 	inputData["bke384"] = inputMessage["serialNumber"]
30 29
 
31
-	inputData["listsize"] = 1
32
-	timestamp := time.Now().Unix()
33
-	tempTime := time.Unix(timestamp, 0)
34
-	timeFormat := tempTime.Format("20060102150405")
35
-	feedetail := make([]map[string]interface{}, 0)
36
-	feedetailInfo := make(map[string]interface{})
37
-	feedetailInfo["aae072"] = timeFormat
38
-	feedetailInfo["bkf500"] = timeFormat
39
-	feedetailInfo["ake001"] = "110100002"
40
-	feedetailInfo["ake005"] = "110100002"
41
-	feedetailInfo["ake006"] = "普通门诊诊查费"
42
-	feedetailInfo["aae019"] = 10.00
43
-	feedetail = append(feedetail, feedetailInfo)
44
-	inputData["inputlist"] = feedetail
45
-	inputMessage["transBody"] = inputData
46
-	bytesData, err := json.Marshal(inputMessage)
47
-	fmt.Println(string(bytesData))
48
-	if err != nil {
49
-		fmt.Println(err.Error())
50
-		return err.Error()
51
-	}
52
-	reader := bytes.NewReader(bytesData)
53
-	url := "http://192.168.1.228:17001/szsi-portal/transData"
54
-	request, err := http.NewRequest("POST", url, reader)
55
-	if err != nil {
56
-		fmt.Println(err.Error())
57
-		return err.Error()
58
-	}
59
-
60
-	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
61
-
62
-	client := http.Client{}
63
-	resp, err := client.Do(request)
64
-	if err != nil {
65
-		fmt.Println(err.Error())
66
-		return err.Error()
67
-	}
68
-	respBytes, err := ioutil.ReadAll(resp.Body)
69
-	if err != nil {
70
-		fmt.Println(err.Error())
71
-		return err.Error()
30
+	switch custom_code {
31
+	case "110100002":
32
+		inputData["bkc368"] = "1"
33
+		break
34
+	case "110200002-2":
35
+		inputData["bkc368"] = "3"
36
+		break
37
+	case "110200002-3":
38
+		inputData["bkc368"] = "2"
39
+		break
40
+	case "110200003":
41
+		break
42
+	case "110200002-1":
43
+		inputData["bkc368"] = "5"
44
+		break
45
+	}
46
+
47
+	if custom_code == "0" {
48
+		inputData["bkc368"] = "4"
49
+		inputData["listsize"] = 0
50
+		inputMessage["transBody"] = inputData
51
+		bytesData, err := json.Marshal(inputMessage)
52
+		fmt.Println(string(bytesData))
53
+		if err != nil {
54
+			fmt.Println(err.Error())
55
+			return err.Error()
56
+		}
57
+		reader := bytes.NewReader(bytesData)
58
+		url := "http://192.168.1.228:17001/szsi-portal/transData"
59
+		request, err := http.NewRequest("POST", url, reader)
60
+		if err != nil {
61
+			fmt.Println(err.Error())
62
+			return err.Error()
63
+		}
64
+		request.Header.Set("Content-Type", "application/json;charset=UTF-8")
65
+		client := http.Client{}
66
+		resp, err := client.Do(request)
67
+		if err != nil {
68
+			fmt.Println(err.Error())
69
+			return err.Error()
70
+		}
71
+		respBytes, err := ioutil.ReadAll(resp.Body)
72
+		if err != nil {
73
+			fmt.Println(err.Error())
74
+			return err.Error()
75
+		}
76
+		fmt.Println(string(respBytes))
77
+		str := string(respBytes)
78
+		return str
79
+	} else {
80
+		inputData["listsize"] = 1
81
+		timestamp := time.Now().Unix()
82
+		tempTime := time.Unix(timestamp, 0)
83
+		timeFormat := tempTime.Format("20060102150405")
84
+		feedetail := make([]map[string]interface{}, 0)
85
+		feedetailInfo := make(map[string]interface{})
86
+		feedetailInfo["aae072"] = timeFormat
87
+		feedetailInfo["bkf500"] = timeFormat
88
+		feedetailInfo["ake001"] = custom_code
89
+		feedetailInfo["ake005"] = custom_code
90
+		feedetailInfo["ake006"] = project_name
91
+		feedetailInfo["aae019"] = price
92
+		feedetail = append(feedetail, feedetailInfo)
93
+		inputData["inputlist"] = feedetail
94
+		inputMessage["transBody"] = inputData
95
+		bytesData, err := json.Marshal(inputMessage)
96
+		fmt.Println(string(bytesData))
97
+		if err != nil {
98
+			fmt.Println(err.Error())
99
+			return err.Error()
100
+		}
101
+		reader := bytes.NewReader(bytesData)
102
+		url := "http://192.168.1.228:17001/szsi-portal/transData"
103
+		request, err := http.NewRequest("POST", url, reader)
104
+		if err != nil {
105
+			fmt.Println(err.Error())
106
+			return err.Error()
107
+		}
108
+
109
+		request.Header.Set("Content-Type", "application/json;charset=UTF-8")
110
+
111
+		client := http.Client{}
112
+		resp, err := client.Do(request)
113
+		if err != nil {
114
+			fmt.Println(err.Error())
115
+			return err.Error()
116
+		}
117
+		respBytes, err := ioutil.ReadAll(resp.Body)
118
+		if err != nil {
119
+			fmt.Println(err.Error())
120
+			return err.Error()
121
+		}
122
+		fmt.Println(string(respBytes))
123
+		str := string(respBytes)
124
+		return str
72 125
 	}
73
-	fmt.Println(string(respBytes))
74
-	str := string(respBytes)
75
-	return str
76 126
 }
77
-func SzybFY001(doctor string, doctor_code string, fixmedins_code string, datas []*models.CustomDetail, verify_code string, serial_number string, mz_number string, version_code string) string {
127
+func SzybFY001(doctor string, doctor_code string, fixmedins_code string, datas []*models.CustomDetail, verify_code string, serial_number string, mz_number string, version_code string, drug_doctor_code string) string {
78 128
 	// 生成输入报文
79 129
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
80 130
 	inputData := make(map[string]interface{})
@@ -103,10 +153,10 @@ func SzybFY001(doctor string, doctor_code string, fixmedins_code string, datas [
103 153
 		feedetailInfo["ake006"] = item.CodeName
104 154
 		feedetailInfo["akc225"] = item.Price
105 155
 		feedetailInfo["akc226"] = item.Count
156
+		feedetailInfo["akc264"] = item.Total
106 157
 		feedetailInfo["aka067"] = "元"
107 158
 		feedetailInfo["akc271"] = item.ChargeOrderDate
108
-		feedetailInfo["bkc320"] = "H24962918"
109
-		feedetailInfo["akc264"] = item.Total
159
+		feedetailInfo["bkc320"] = drug_doctor_code
110 160
 
111 161
 		feedetail = append(feedetail, feedetailInfo)
112 162
 	}