csx 3 år sedan
förälder
incheckning
ac654fd09f
4 ändrade filer med 331 tillägg och 195 borttagningar
  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 Visa fil

309
 	adminRole, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, admin_user_id)
309
 	adminRole, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, admin_user_id)
310
 	his, _ := service.GetHisPatientInfo(adminInfo.CurrentOrgId, patient_id, theTime.Unix())
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
 	if his.ID == 0 {
353
 	if his.ID == 0 {
313
 
354
 
314
 		var doctor_name string
355
 		var doctor_name string
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
 		mz_number := year + month + day + strconv.FormatInt(patient_id, 10)
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
 		//1.判断读卡类型
380
 		//1.判断读卡类型
340
 		//2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码
381
 		//2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码
341
 		//yiliao_number, id_card_number,verifyCode, err, ret4 := ReadBasCardGetNumber(number)
382
 		//yiliao_number, id_card_number,verifyCode, err, ret4 := ReadBasCardGetNumber(number)
342
-		verifyCode := "000000|101036689af21e741240e8e734bfc24a"
343
 		yiliao_number := "%GAAFSAKSXSUKKWDKHDAD?;07734724145330238292?"
383
 		yiliao_number := "%GAAFSAKSXSUKKWDKHDAD?;07734724145330238292?"
344
-		id_card_number := "142729195704031523"
384
+		//id_card_number := "142729195704031523"
345
 		dept_code := "0305"
385
 		dept_code := "0305"
346
-		version_code := "111"
347
 		ret4 := 0
386
 		ret4 := 0
348
 		is_yidi = 1
387
 		is_yidi = 1
349
 		if err != nil {
388
 		if err != nil {
353
 		if ret4 == 0 { //本地卡流程
392
 		if ret4 == 0 { //本地卡流程
354
 			if is_yidi == 1 { //本地就医流程
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
 				} else {
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
 					return
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
 			} else { //异地就医流程
455
 			} else { //异地就医流程
422
 				//异地走鉴权流程
456
 				//异地走鉴权流程
423
 				//authResult := CardAuth(number)
457
 				//authResult := CardAuth(number)
424
 				//fmt.Println(authResult)
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
 		} else { //异地卡流程
519
 		} else { //异地卡流程
487
 			//fmt.Println(readCardBasResult)
521
 			//fmt.Println(readCardBasResult)
488
 			//是否异地就医,是的话走鉴权流程,不是的话走门诊挂号
522
 			//是否异地就医,是的话走鉴权流程,不是的话走门诊挂号
489
 			if is_yidi == 1 { //1本地就医
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
 				var dat map[string]interface{}
525
 				var dat map[string]interface{}
492
 				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
526
 				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
493
 					fmt.Println(dat)
527
 					fmt.Println(dat)
544
 			} else { //异地就医需要走鉴权流程
578
 			} else { //异地就医需要走鉴权流程
545
 				//authResult := CardAuth(number)
579
 				//authResult := CardAuth(number)
546
 				//fmt.Println(authResult)
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
 				var dat map[string]interface{}
582
 				var dat map[string]interface{}
549
 				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
583
 				if err := json.Unmarshal([]byte(resp_result), &dat); err == nil {
550
 					fmt.Println(dat)
584
 					fmt.Println(dat)
604
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
638
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
605
 		return
639
 		return
606
 	}
640
 	}
607
-
608
 }
641
 }
609
 
642
 
610
 //上传明细----预结算----确认订单
643
 //上传明细----预结算----确认订单
680
 
713
 
681
 	var doctor_name string
714
 	var doctor_name string
682
 	var doctor_code string
715
 	var doctor_code string
716
+
717
+	var drug_doctor_code string
718
+	drug_doctor_code = "H24962918"
719
+
683
 	if adminRole.ID == 0 {
720
 	if adminRole.ID == 0 {
684
 		doctor_name = "黄亦轩"
721
 		doctor_name = "黄亦轩"
685
-		doctor_code = "H24962918"
722
+		doctor_code = "1"
686
 	} else {
723
 	} else {
687
 		doctor_name = adminRole.UserName
724
 		doctor_name = adminRole.UserName
688
 		doctor_code = strconv.FormatInt(admin_user_id, 10)
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
 	var customs []*models.CustomDetail
729
 	var customs []*models.CustomDetail
696
 	for _, item := range prescriptions {
730
 	for _, item := range prescriptions {
697
 		if item.Type == 1 { //药品
731
 		if item.Type == 1 { //药品
807
 		if stop > len(customs) {
841
 		if stop > len(customs) {
808
 			stop = len(customs)
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
 		fmt.Println(result)
845
 		fmt.Println(result)
812
 
846
 
813
 		var dat map[string]interface{}
847
 		var dat map[string]interface{}
942
 				total = total + (subItem.Price * float64(subItem.Count))
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
 		result_two := service.SzybFY004(doctor_name, doctor_code, miConfig.Code, total, verifyCode, number, mz_number, version_code)
980
 		result_two := service.SzybFY004(doctor_name, doctor_code, miConfig.Code, total, verifyCode, number, mz_number, version_code)
950
 		var dat map[string]interface{}
981
 		var dat map[string]interface{}
951
 		if err := json.Unmarshal([]byte(result_two), &dat); err == nil {
982
 		if err := json.Unmarshal([]byte(result_two), &dat); err == nil {
1064
 			var doctor_name string
1095
 			var doctor_name string
1065
 			var doctor_code string
1096
 			var doctor_code string
1066
 			if roles.ID == 0 {
1097
 			if roles.ID == 0 {
1067
-
1068
 				doctor_name = "黄亦轩"
1098
 				doctor_name = "黄亦轩"
1069
 				doctor_code = "H24962918"
1099
 				doctor_code = "H24962918"
1070
-
1071
 			} else {
1100
 			} else {
1072
 				doctor_name = roles.UserName
1101
 				doctor_name = roles.UserName
1073
 				doctor_code = strconv.FormatInt(admin_user_id, 10)
1102
 				doctor_code = strconv.FormatInt(admin_user_id, 10)
1074
-
1075
 			}
1103
 			}
1076
-
1077
 			number := his.MzNumber
1104
 			number := his.MzNumber
1078
 			mz_number := his.Number
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
 			//yiliao_number, id_card_number,verifyCode,versionCode, err, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code)
1109
 			//yiliao_number, id_card_number,verifyCode,versionCode, err, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code)
1084
-
1085
 			yiliao_number := his.YiliaoNumber
1110
 			yiliao_number := his.YiliaoNumber
1086
 			result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code)
1111
 			result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code)
1087
 			var dat map[string]interface{}
1112
 			var dat map[string]interface{}

+ 5 - 0
models/sz_his_models.go Visa fil

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

+ 59 - 3
service/gdyb_service.go Visa fil

1200
 	input := make(map[string]interface{})
1200
 	input := make(map[string]interface{})
1201
 	inputData := make(map[string]interface{})
1201
 	inputData := make(map[string]interface{})
1202
 	inputMessage["infno"] = "5203" // 交易编码
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
 	input["data"] = inputData
1206
 	input["data"] = inputData
1207
 	inputMessage["input"] = input //交易输入
1207
 	inputMessage["input"] = input //交易输入
1208
 	bytesData, err := json.Marshal(inputMessage)
1208
 	bytesData, err := json.Marshal(inputMessage)
1943
 	err := writeDb.Save(&record).Error
1943
 	err := writeDb.Save(&record).Error
1944
 	return err
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 Visa fil

12
 	_ "unsafe"
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
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
17
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
18
 	inputData := make(map[string]interface{})
18
 	inputData := make(map[string]interface{})
24
 	inputData["bzz269"] = "000000"
24
 	inputData["bzz269"] = "000000"
25
 	inputData["aka130"] = "11"
25
 	inputData["aka130"] = "11"
26
 	inputData["akf001"] = dept_code
26
 	inputData["akf001"] = dept_code
27
-	inputData["bkc368"] = "2"
28
-	inputData["akc264"] = 10.00
27
+	inputData["akc264"] = price
29
 	inputData["bke384"] = inputMessage["serialNumber"]
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
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
129
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
80
 	inputData := make(map[string]interface{})
130
 	inputData := make(map[string]interface{})
103
 		feedetailInfo["ake006"] = item.CodeName
153
 		feedetailInfo["ake006"] = item.CodeName
104
 		feedetailInfo["akc225"] = item.Price
154
 		feedetailInfo["akc225"] = item.Price
105
 		feedetailInfo["akc226"] = item.Count
155
 		feedetailInfo["akc226"] = item.Count
156
+		feedetailInfo["akc264"] = item.Total
106
 		feedetailInfo["aka067"] = "元"
157
 		feedetailInfo["aka067"] = "元"
107
 		feedetailInfo["akc271"] = item.ChargeOrderDate
158
 		feedetailInfo["akc271"] = item.ChargeOrderDate
108
-		feedetailInfo["bkc320"] = "H24962918"
109
-		feedetailInfo["akc264"] = item.Total
159
+		feedetailInfo["bkc320"] = drug_doctor_code
110
 
160
 
111
 		feedetail = append(feedetail, feedetailInfo)
161
 		feedetail = append(feedetail, feedetailInfo)
112
 	}
162
 	}