ソースを参照

Merge branch 'master' of http://git.shengws.com/csx/gdyb

XMLWAN 4 年 前
コミット
8f24da9a54
共有11 個のファイルを変更した3414 個の追加2143 個の削除を含む
  1. 4 3
      conf/app.conf
  2. 6 2
      controllers/sg/gdyb_controller.go
  3. 453 91
      controllers/sg/his_api_controller.go
  4. 2452 1965
      controllers/sz/sz_his_api_controller.go
  5. 4 0
      enums/error_code.go
  6. BIN
      gdyb
  7. 33 0
      models/gdyb_models.go
  8. 3 0
      models/his_models.go
  9. 409 82
      service/gdyb_service.go
  10. 6 0
      service/his_service.go
  11. 44 0
      service/sz_his_service.go

+ 4 - 3
conf/app.conf ファイルの表示

@@ -1,6 +1,6 @@
1 1
 appname = 血透
2 2
 httpport = 9532
3
-runmode = dev
3
+runmode = prod
4 4
 
5 5
 #
6 6
 copyrequestbody = true
@@ -44,13 +44,14 @@ appsecret="61ee2e6268497d5aa9de0b0187c39aea"
44 44
 
45 45
 
46 46
 [prod]
47
-org_id = 9504
47
+org_id = 10028
48 48
 mobile_token_expiration_second = 86400
49 49
 httpdomain = https://api.xt.kuyicloud.com
50 50
 sso_domain = https://sso.kuyicloud.com
51 51
 call_domain = https://hf.sgjyun.com
52 52
 front_end_domain = "https://xt.kuyicloud.com/#"
53
-url = "http://192.168.1.88:6666/szsi-portal/transData"
53
+url  = "http://192.168.1.228:17001/szsi-portal/transData"
54
+#url = "http://192.168.1.88:6666/szsi-portal/transData"
54 55
 readmysqlhost = shengws1.mysql.rds.aliyuncs.com
55 56
 readmysqlport = 3306
56 57
 readmysqluser = syh

+ 6 - 2
controllers/sg/gdyb_controller.go ファイルの表示

@@ -162,8 +162,12 @@ func (c *GdybController) PostFour() {
162 162
 	mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
163 163
 	secret_key := c.GetString("secret_key")
164 164
 
165
-	result := service.Gdyb2203(psnNo, mdtrtId, doctor, department, diag, org_name, med_type, doctor_id, fixmedins_code, diag_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, sick_code, sick_name)
166
-
165
+	var result string
166
+	if c.GetAdminUserInfo().CurrentOrgId == 10106 {
167
+		result = service.Gdyb2203A(psnNo, mdtrtId, doctor, department, diag, org_name, med_type, doctor_id, fixmedins_code, diag_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, sick_code, sick_name)
168
+	} else {
169
+		result = service.Gdyb2203(psnNo, mdtrtId, doctor, department, diag, org_name, med_type, doctor_id, fixmedins_code, diag_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, sick_code, sick_name)
170
+	}
167 171
 	var dat map[string]interface{}
168 172
 	if err := json.Unmarshal([]byte(result), &dat); err == nil {
169 173
 

+ 453 - 91
controllers/sg/his_api_controller.go ファイルの表示

@@ -56,6 +56,14 @@ func HisManagerApiRegistRouters() {
56 56
 	beego.Router("/api/310", &HisApiController{}, "get:Check310")
57 57
 	beego.Router("/api/390", &HisApiController{}, "get:Check390")
58 58
 
59
+	//备案撤销相关接口
60
+	beego.Router("/api/checkcode/get", &HisApiController{}, "get:GetCheckCode")
61
+	beego.Router("/api/uncheckcode/get", &HisApiController{}, "get:UnCheckCode")
62
+	beego.Router("/api/psn/putonrecord", &HisApiController{}, "get:PsnPutOnRecord")
63
+	beego.Router("/api/psn/unputonrecord", &HisApiController{}, "get:PsnUnPutOnRecord")
64
+	beego.Router("/api/psn/ncds/putonrecord", &HisApiController{}, "get:PsnPutNCDSOnRecord")
65
+	beego.Router("/api/psn/ncds/unputonrecord", &HisApiController{}, "get:PsnPutUnNCDSOnRecord")
66
+
59 67
 }
60 68
 
61 69
 //func (c *HisApiController) TestPay() {
@@ -203,7 +211,6 @@ func (c *HisApiController) GetHisPatientInfo() {
203 211
 		Idetinfos, _ := json.Marshal(res.Output.Idetinfo)
204 212
 		infoStr := string(Iinfos)
205 213
 		idetinfoStr := string(Idetinfos)
206
-
207 214
 		if res.Infcode == 0 {
208 215
 			his := models.VMHisPatient{
209 216
 				Status:      1,
@@ -231,7 +238,6 @@ func (c *HisApiController) GetHisPatientInfo() {
231 238
 			return
232 239
 		}
233 240
 	}
234
-
235 241
 }
236 242
 
237 243
 //func (c *HisApiController) Sscard() {
@@ -811,6 +817,33 @@ type ResultTwelve struct {
811 817
 	WarnMsg     interface{} `json:"warn_msg"`
812 818
 }
813 819
 
820
+type ResultThirteen struct {
821
+	ErrMsg      string `json:"err_msg"`
822
+	InfRefmsgid string `json:"inf_refmsgid"`
823
+	Infcode     int64  `json:"infcode"`
824
+	Output      struct {
825
+		Result struct {
826
+			TrtDclaDetlSn string `json:"trt_dcla_detl_sn"`
827
+		} `json:"result"`
828
+	} `json:"output"`
829
+	RefmsgTime  string      `json:"refmsg_time"`
830
+	RespondTime string      `json:"respond_time"`
831
+	Signtype    interface{} `json:"signtype"`
832
+	WarnInfo    interface{} `json:"warn_info"`
833
+}
834
+
835
+type ResultFourteen struct {
836
+	ErrMsg      string `json:"err_msg"`
837
+	InfRefmsgid string `json:"inf_refmsgid"`
838
+	Infcode     int64  `json:"infcode"`
839
+	Output      struct {
840
+	} `json:"output"`
841
+	RefmsgTime  string      `json:"refmsg_time"`
842
+	RespondTime string      `json:"respond_time"`
843
+	Signtype    interface{} `json:"signtype"`
844
+	WarnInfo    interface{} `json:"warn_info"`
845
+}
846
+
814 847
 type Custom struct {
815 848
 	DetItemFeeSumamt string
816 849
 	Cut              string
@@ -2738,9 +2771,7 @@ func (c *HisApiController) GetCheckAccount() {
2738 2771
 	startime, _ := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
2739 2772
 	endtime, _ := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
2740 2773
 	orders, _ := service.GetOrderByTime(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId, insutype, clr_type)
2741
-
2742 2774
 	orders_two, _ := service.GetOrderByTimeThree(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId, insutype, clr_type)
2743
-
2744 2775
 	fixmedins_setl_cnt := int64(len(orders_two))
2745 2776
 
2746 2777
 	//撤销的算2条数据为一笔
@@ -2764,7 +2795,6 @@ func (c *HisApiController) GetCheckAccount() {
2764 2795
 	} else {
2765 2796
 		user_name = role.UserName
2766 2797
 	}
2767
-
2768 2798
 	if config.IsOpen == 1 {
2769 2799
 		api := "http://127.0.0.1:9532/" + "gdyb/ten?" +
2770 2800
 			"insutype=" + insutype +
@@ -2802,46 +2832,48 @@ func (c *HisApiController) GetCheckAccount() {
2802 2832
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2803 2833
 			return
2804 2834
 		}
2805
-
2806 2835
 		respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
2807 2836
 		userJSONBytes, _ := json.Marshal(respJSON)
2808
-
2809 2837
 		var res ResultEight
2810 2838
 		if err := json.Unmarshal(userJSONBytes, &res); err != nil {
2811 2839
 			utils.ErrorLog("解析失败:%v", err)
2812 2840
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2813 2841
 			return
2814 2842
 		}
2815
-
2816 2843
 		if res.Infcode == 0 {
2817
-			micc := &models.MedicalInsuranceCostCompare{
2818
-				StartTime: startime.Unix(),
2819
-				EndTime:   endtime.Unix(),
2820
-				Insutype:  insutype,
2821
-				CheckType: 1,
2822
-				Num:       fixmedins_setl_cnt,
2823
-				Mtime:     time.Now().Unix(),
2824
-				Status:    1,
2825
-				UserOrgId: adminUser.CurrentOrgId,
2826
-				CostTotal: medfee_sumamt,
2827
-				FuncTotal: fund_pay_sumamt,
2828
-				PsnPay:    acct_pay,
2829
-				Creator:   admin_user_id,
2830
-				Ctime:     time.Now().Unix(),
2831
-			}
2832
-
2833
-			err := service.CreateMedicalInsuranceCostCompareRecord(micc)
2844
+			if res.Output.Stmtinfo.StmtRslt == "0" {
2845
+				micc := &models.MedicalInsuranceCostCompare{
2846
+					StartTime: startime.Unix(),
2847
+					EndTime:   endtime.Unix(),
2848
+					Insutype:  insutype,
2849
+					CheckType: 1,
2850
+					Num:       fixmedins_setl_cnt,
2851
+					Mtime:     time.Now().Unix(),
2852
+					Status:    1,
2853
+					UserOrgId: adminUser.CurrentOrgId,
2854
+					CostTotal: medfee_sumamt,
2855
+					FuncTotal: fund_pay_sumamt,
2856
+					PsnPay:    acct_pay,
2857
+					Creator:   admin_user_id,
2858
+					Ctime:     time.Now().Unix(),
2859
+				}
2860
+				err := service.CreateMedicalInsuranceCostCompareRecord(micc)
2861
+				if err == nil {
2862
+					c.ServeSuccessJSON(map[string]interface{}{
2863
+						"stmt_rslt":      res.Output.Stmtinfo.StmtRslt,
2864
+						"stmt_rslt_dscr": res.Output.Stmtinfo.StmtRsltDscr,
2865
+					})
2834 2866
 
2835
-			if err == nil {
2867
+				} else {
2868
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2869
+				}
2870
+			} else {
2836 2871
 				c.ServeSuccessJSON(map[string]interface{}{
2837
-					"stmt_rslt":      res.Output.Stmtinfo.StmtRslt,
2838
-					"stmt_rslt_dscr": res.Output.Stmtinfo.StmtRsltDscr,
2872
+					"code": -10,
2873
+					"msg":  res.ErrMsg,
2839 2874
 				})
2840 2875
 
2841
-			} else {
2842
-				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2843 2876
 			}
2844
-
2845 2877
 		} else {
2846 2878
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2847 2879
 		}
@@ -3347,46 +3379,6 @@ func (c *HisApiController) GetSettleAccounts() {
3347 3379
 
3348 3380
 }
3349 3381
 
3350
-func (c *HisApiController) GetCode() {
3351
-
3352
-	name := c.GetString("name")
3353
-	codg := c.GetString("codg")
3354
-
3355
-	adminUser := c.GetAdminUserInfo()
3356
-
3357
-	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3358
-	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3359
-
3360
-	var user_name string
3361
-	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, adminUser.AdminUser.Id)
3362
-	if role.ID == 0 {
3363
-		user_name = "xxx"
3364
-	} else {
3365
-		user_name = role.UserName
3366
-	}
3367
-
3368
-	baseParams := &models.BaseParams{
3369
-		SecretKey:      miConfig.SecretKey,
3370
-		FixmedinsCode:  miConfig.Code,
3371
-		InsuplcAdmdvs:  miConfig.InsuplcAdmdvs,
3372
-		MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs,
3373
-		OrgName:        miConfig.OrgName,
3374
-		Doctor:         user_name,
3375
-	}
3376
-
3377
-	if config.IsOpen == 1 {
3378
-		result := service.Gdyb3301(baseParams, name, codg)
3379
-		var dat map[string]interface{}
3380
-		if err := json.Unmarshal([]byte(result), &dat); err == nil {
3381
-			fmt.Println(dat)
3382
-		} else {
3383
-			fmt.Println(err)
3384
-		}
3385
-
3386
-	}
3387
-
3388
-}
3389
-
3390 3382
 func (c *HisApiController) CheckTreatment() {
3391 3383
 	patient_id, _ := c.GetInt64("patient_id", 0)
3392 3384
 	record_time := c.GetString("record_time")
@@ -3647,6 +3639,396 @@ func (c *HisApiController) GetUploadDiag() {
3647 3639
 
3648 3640
 }
3649 3641
 
3642
+func (c *HisApiController) GetCheckCode() {
3643
+	name := c.GetString("name")
3644
+	codg := c.GetString("codg")
3645
+	list_type_code := c.GetString("list_type_code")
3646
+	admin_user_id, _ := c.GetInt64("admin_user_id")
3647
+
3648
+	adminUser := c.GetAdminUserInfo()
3649
+
3650
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3651
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3652
+
3653
+	var user_name string
3654
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id)
3655
+	if role.ID == 0 {
3656
+		user_name = "xxx"
3657
+	} else {
3658
+		user_name = role.UserName
3659
+	}
3660
+
3661
+	baseParams := &models.BaseParams{
3662
+		SecretKey:      miConfig.SecretKey,
3663
+		FixmedinsCode:  miConfig.Code,
3664
+		InsuplcAdmdvs:  miConfig.InsuplcAdmdvs,
3665
+		MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs,
3666
+		OrgName:        miConfig.OrgName,
3667
+		Doctor:         user_name,
3668
+	}
3669
+
3670
+	if config.IsOpen == 1 {
3671
+		result := service.Gdyb3301(baseParams, name, codg, list_type_code, "", "")
3672
+		var dat map[string]interface{}
3673
+		if err := json.Unmarshal([]byte(result), &dat); err == nil {
3674
+			fmt.Println(dat)
3675
+		} else {
3676
+			fmt.Println(err)
3677
+		}
3678
+
3679
+	}
3680
+
3681
+}
3682
+func (c *HisApiController) UnCheckCode() {
3683
+	name := c.GetString("name")
3684
+	codg := c.GetString("codg")
3685
+	list_type_code := c.GetString("list_type_code")
3686
+	admin_user_id, _ := c.GetInt64("admin_user_id")
3687
+
3688
+	adminUser := c.GetAdminUserInfo()
3689
+
3690
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3691
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3692
+
3693
+	var user_name string
3694
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id)
3695
+	if role.ID == 0 {
3696
+		user_name = "xxx"
3697
+	} else {
3698
+		user_name = role.UserName
3699
+	}
3700
+
3701
+	baseParams := &models.BaseParams{
3702
+		SecretKey:      miConfig.SecretKey,
3703
+		FixmedinsCode:  miConfig.Code,
3704
+		InsuplcAdmdvs:  miConfig.InsuplcAdmdvs,
3705
+		MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs,
3706
+		OrgName:        miConfig.OrgName,
3707
+		Doctor:         user_name,
3708
+	}
3709
+
3710
+	if config.IsOpen == 1 {
3711
+		result := service.Gdyb3302(baseParams, name, codg, list_type_code)
3712
+		var dat map[string]interface{}
3713
+		if err := json.Unmarshal([]byte(result), &dat); err == nil {
3714
+			fmt.Println(dat)
3715
+		} else {
3716
+			fmt.Println(err)
3717
+		}
3718
+
3719
+	}
3720
+
3721
+}
3722
+func (c *HisApiController) PsnPutOnRecord() {
3723
+	record_type, _ := c.GetInt64("type")
3724
+	patient_id, _ := c.GetInt64("patient_id")
3725
+	admin_user_id, _ := c.GetInt64("admin_user_id")
3726
+	start_time := c.GetString("start_time")
3727
+	end_time := c.GetString("end_time")
3728
+
3729
+	adminUser := c.GetAdminUserInfo()
3730
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3731
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3732
+
3733
+	var patients []*models.Patients
3734
+	if record_type == 1 { //全部备案
3735
+
3736
+		patient, _ := service.GetAllPatient(adminUser.CurrentOrgId)
3737
+		patients = append(patients, patient...)
3738
+
3739
+	} else { //单个备案
3740
+		patient, _ := service.GetPatientByID(adminUser.CurrentOrgId, patient_id)
3741
+		patients = append(patients, patient)
3742
+
3743
+	}
3744
+
3745
+	var user_name string
3746
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id)
3747
+	if role.ID == 0 {
3748
+		user_name = "xxx"
3749
+	} else {
3750
+		user_name = role.UserName
3751
+	}
3752
+
3753
+	if config.IsOpen == 1 {
3754
+		for _, item := range patients {
3755
+			api := "http://127.0.0.1:9532/" + "gdyb/one?cert_no=" + item.IdCardNo + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey
3756
+			resp, requestErr := http.Get(api)
3757
+			if requestErr != nil {
3758
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3759
+				return
3760
+			}
3761
+			defer resp.Body.Close()
3762
+			body, ioErr := ioutil.ReadAll(resp.Body)
3763
+			if ioErr != nil {
3764
+				utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
3765
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3766
+				return
3767
+			}
3768
+			var respJSON map[string]interface{}
3769
+
3770
+			if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
3771
+				utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
3772
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3773
+				return
3774
+			}
3775
+
3776
+			userJSON := respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
3777
+			userJSONBytes, _ := json.Marshal(userJSON)
3778
+			var res ResultTwo
3779
+			if err := json.Unmarshal(userJSONBytes, &res); err != nil {
3780
+				utils.ErrorLog("解析失败:%v", err)
3781
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3782
+				return
3783
+			}
3784
+
3785
+			if res.Infcode == 0 {
3786
+				result := service.Gdyb2505(res.Output.Baseinfo.PsnNo, user_name, miConfig.OrgName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, start_time, end_time)
3787
+				var dat map[string]interface{}
3788
+				if err := json.Unmarshal([]byte(result), &dat); err == nil {
3789
+					fmt.Println(dat)
3790
+				} else {
3791
+					fmt.Println(err)
3792
+				}
3793
+
3794
+				userJSONBytes, _ := json.Marshal(dat)
3795
+
3796
+				var res2 ResultThirteen
3797
+				if err := json.Unmarshal(userJSONBytes, &res2); err != nil {
3798
+					utils.ErrorLog("解析失败:%v", err)
3799
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3800
+					return
3801
+				}
3802
+				if res2.Infcode == 0 {
3803
+					psnResult := &models.GdybPsnRecord{
3804
+						UserOrgId:     adminUser.CurrentOrgId,
3805
+						PatientId:     item.ID,
3806
+						PsnNo:         res.Output.Baseinfo.PsnNo,
3807
+						Ctime:         time.Now().Unix(),
3808
+						Mtime:         time.Now().Unix(),
3809
+						Status:        1,
3810
+						IsCancel:      1,
3811
+						TrtDclaDetlSn: res2.Output.Result.TrtDclaDetlSn,
3812
+					}
3813
+					service.CreatePsnRecord(psnResult)
3814
+
3815
+				} else {
3816
+					c.ServeSuccessJSON(map[string]interface{}{
3817
+						"failed_code": -10,
3818
+						"msg":         res2.ErrMsg,
3819
+					})
3820
+					return
3821
+				}
3822
+
3823
+			}
3824
+
3825
+		}
3826
+	}
3827
+
3828
+}
3829
+func (c *HisApiController) PsnUnPutOnRecord() {
3830
+	id, _ := c.GetInt64("id")
3831
+	//record_type, _ := c.GetInt64("type")
3832
+	admin_user_id, _ := c.GetInt64("admin_user_id")
3833
+
3834
+	adminUser := c.GetAdminUserInfo()
3835
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3836
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3837
+
3838
+	var user_name string
3839
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id)
3840
+	if role.ID == 0 {
3841
+		user_name = "xxx"
3842
+	} else {
3843
+		user_name = role.UserName
3844
+	}
3845
+
3846
+	psn_record, _ := service.GetPsnRecordById(id)
3847
+	if psn_record.ID == 0 {
3848
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorPsnRecordNoExistWrong)
3849
+		return
3850
+	}
3851
+	if config.IsOpen == 1 {
3852
+		result := service.Gdyb2506(psn_record.PsnNo, user_name, miConfig.OrgName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, psn_record.TrtDclaDetlSn)
3853
+		var dat map[string]interface{}
3854
+		if err := json.Unmarshal([]byte(result), &dat); err == nil {
3855
+			fmt.Println(dat)
3856
+		} else {
3857
+			fmt.Println(err)
3858
+		}
3859
+
3860
+		userJSONBytes, _ := json.Marshal(dat)
3861
+		var res ResultFourteen
3862
+		if err := json.Unmarshal(userJSONBytes, &res); err != nil {
3863
+			utils.ErrorLog("解析失败:%v", err)
3864
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3865
+			return
3866
+		}
3867
+		if res.Infcode == 0 {
3868
+			psn_record.IsCancel = 2
3869
+			service.CreatePsnRecord(&psn_record)
3870
+		} else {
3871
+			c.ServeSuccessJSON(map[string]interface{}{
3872
+				"failed_code": -10,
3873
+				"msg":         res.ErrMsg,
3874
+			})
3875
+			return
3876
+		}
3877
+	}
3878
+
3879
+}
3880
+func (c *HisApiController) PsnPutNCDSOnRecord() {
3881
+	record_type, _ := c.GetInt64("type")
3882
+	patient_id, _ := c.GetInt64("patient_id")
3883
+	admin_user_id, _ := c.GetInt64("admin_user_id")
3884
+	adminUser := c.GetAdminUserInfo()
3885
+	var patients []*models.Patients
3886
+	if record_type == 1 { //全部备案
3887
+		patient, _ := service.GetAllPatient(adminUser.CurrentOrgId)
3888
+		patients = append(patients, patient...)
3889
+	} else { //单个备案
3890
+		patient, _ := service.GetPatientByID(adminUser.CurrentOrgId, patient_id)
3891
+		patients = append(patients, patient)
3892
+	}
3893
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3894
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3895
+	var user_name string
3896
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id)
3897
+	if role.ID == 0 {
3898
+		user_name = "xxx"
3899
+	} else {
3900
+		user_name = role.UserName
3901
+	}
3902
+
3903
+	if config.IsOpen == 1 {
3904
+		for _, item := range patients {
3905
+			api := "http://127.0.0.1:9532/" + "gdyb/one?cert_no=" + item.IdCardNo + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey
3906
+			resp, requestErr := http.Get(api)
3907
+			if requestErr != nil {
3908
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3909
+				return
3910
+			}
3911
+			defer resp.Body.Close()
3912
+			body, ioErr := ioutil.ReadAll(resp.Body)
3913
+			if ioErr != nil {
3914
+				utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
3915
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3916
+				return
3917
+			}
3918
+			var respJSON map[string]interface{}
3919
+
3920
+			if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
3921
+				utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
3922
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3923
+				return
3924
+			}
3925
+
3926
+			userJSON := respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
3927
+			userJSONBytes, _ := json.Marshal(userJSON)
3928
+			var res ResultTwo
3929
+			if err := json.Unmarshal(userJSONBytes, &res); err != nil {
3930
+				utils.ErrorLog("解析失败:%v", err)
3931
+				c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3932
+				return
3933
+			}
3934
+
3935
+			if res.Infcode == 0 {
3936
+				result := service.Gdyb2503(res.Output.Baseinfo.PsnNo, res.Output.Iinfo[0].Insutype, miConfig.OrgName, user_name, miConfig.Code, strconv.FormatInt(admin_user_id, 10), miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, "慢性肾功能不全(血透治疗)", "M07803")
3937
+				var dat map[string]interface{}
3938
+				if err := json.Unmarshal([]byte(result), &dat); err == nil {
3939
+					fmt.Println(dat)
3940
+				} else {
3941
+					fmt.Println(err)
3942
+				}
3943
+
3944
+				userJSONBytes, _ := json.Marshal(dat)
3945
+
3946
+				var res2 ResultThirteen
3947
+				if err := json.Unmarshal(userJSONBytes, &res2); err != nil {
3948
+					utils.ErrorLog("解析失败:%v", err)
3949
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
3950
+					return
3951
+				}
3952
+
3953
+				//patient, _ := service.GetPatientByIDCard(item.IdCardNo, adminUser.CurrentOrgId)
3954
+
3955
+				if res2.Infcode == 0 {
3956
+					psnResult := &models.GdybPsnNcdsRecord{
3957
+						UserOrgId:     adminUser.CurrentOrgId,
3958
+						PatientId:     item.ID,
3959
+						PsnNo:         res.Output.Baseinfo.PsnNo,
3960
+						Ctime:         time.Now().Unix(),
3961
+						Mtime:         time.Now().Unix(),
3962
+						Status:        1,
3963
+						IsCancel:      1,
3964
+						TrtDclaDetlSn: res2.Output.Result.TrtDclaDetlSn,
3965
+					}
3966
+					service.CreatePsnNCDSRecord(psnResult)
3967
+
3968
+				} else {
3969
+					c.ServeSuccessJSON(map[string]interface{}{
3970
+						"failed_code": -10,
3971
+						"msg":         res2.ErrMsg,
3972
+					})
3973
+					return
3974
+				}
3975
+			}
3976
+
3977
+		}
3978
+
3979
+	}
3980
+
3981
+}
3982
+func (c *HisApiController) PsnPutUnNCDSOnRecord() {
3983
+	id, _ := c.GetInt64("id")
3984
+	admin_user_id, _ := c.GetInt64("admin_user_id")
3985
+	adminUser := c.GetAdminUserInfo()
3986
+	miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId)
3987
+	config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId)
3988
+
3989
+	var user_name string
3990
+	role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id)
3991
+	if role.ID == 0 {
3992
+		user_name = "xxx"
3993
+	} else {
3994
+		user_name = role.UserName
3995
+	}
3996
+
3997
+	psn_record, _ := service.GetPsnNCDSRecordById(id)
3998
+	if psn_record.ID == 0 {
3999
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorPsnRecordNoExistWrong)
4000
+		return
4001
+	}
4002
+	if config.IsOpen == 1 {
4003
+		result := service.Gdyb2504(psn_record.PsnNo, miConfig.OrgName, user_name, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, psn_record.TrtDclaDetlSn)
4004
+		var dat map[string]interface{}
4005
+		if err := json.Unmarshal([]byte(result), &dat); err == nil {
4006
+			fmt.Println(dat)
4007
+		} else {
4008
+			fmt.Println(err)
4009
+		}
4010
+
4011
+		userJSONBytes, _ := json.Marshal(dat)
4012
+		var res ResultFourteen
4013
+		if err := json.Unmarshal(userJSONBytes, &res); err != nil {
4014
+			utils.ErrorLog("解析失败:%v", err)
4015
+			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
4016
+			return
4017
+		}
4018
+		if res.Infcode == 0 {
4019
+			psn_record.IsCancel = 2
4020
+			service.CreatePsnNCDSRecord(&psn_record)
4021
+		} else {
4022
+			c.ServeSuccessJSON(map[string]interface{}{
4023
+				"failed_code": -10,
4024
+				"msg":         res.ErrMsg,
4025
+			})
4026
+			return
4027
+		}
4028
+	}
4029
+
4030
+}
4031
+
3650 4032
 func PathExists(path string) (bool, error) {
3651 4033
 	_, err := os.Stat(path)
3652 4034
 	if err == nil {
@@ -3760,23 +4142,3 @@ func RemoveRepeatedCode(arr []string) (newArr []string) {
3760 4142
 	}
3761 4143
 	return
3762 4144
 }
3763
-
3764
-//func ShowMessage1(caption, text string, style uintptr) (result int) {
3765
-//	user32, _ := syscall.LoadLibrary("SSCard.dll")
3766
-//	messageBox, _ := syscall.GetProcAddress(user32, "MessageBoxW")
3767
-//	defer syscall.FreeLibrary(user32)
3768
-//
3769
-//	ret, _, _ := syscall.Syscall9(messageBox,
3770
-//		4,
3771
-//		0,
3772
-//		StrPtr(text),
3773
-//		StrPtr(caption),
3774
-//		style,
3775
-//		0, 0, 0, 0, 0)
3776
-//	result = int(ret)
3777
-//	return
3778
-//}
3779
-
3780
-//func StrPtr3(s string) uintptr {
3781
-//	return uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s)))
3782
-//}

File diff suppressed because it is too large
+ 2452 - 1965
controllers/sz/sz_his_api_controller.go


+ 4 - 0
enums/error_code.go ファイルの表示

@@ -247,6 +247,8 @@ const ( // ErrorCode
247 247
 	ErrorNoReadCardException = 30005
248 248
 
249 249
 	ErrorCodeParamSickTypeWrong = 30006
250
+
251
+	ErrorPsnRecordNoExistWrong = 30007
250 252
 )
251 253
 
252 254
 var ErrCodeMsgs = map[int]string{
@@ -476,6 +478,8 @@ var ErrCodeMsgs = map[int]string{
476 478
 	ErrorNoReadCardException: "无法读取除社保卡以外的卡",
477 479
 
478 480
 	ErrorCodeParamSickTypeWrong: "医生所开处方的疾病类型不能为空",
481
+
482
+	ErrorPsnRecordNoExistWrong: "人员备案信息不存在",
479 483
 }
480 484
 
481 485
 type SGJError struct {


+ 33 - 0
models/gdyb_models.go ファイルの表示

@@ -0,0 +1,33 @@
1
+package models
2
+
3
+type GdybPsnRecord struct {
4
+	ID            int64  `gorm:"column:id" json:"id" form:"id"`
5
+	UserOrgId     int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
6
+	PatientId     int64  `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
7
+	PsnNo         string `gorm:"column:psn_no" json:"psn_no" form:"psn_no"`
8
+	Ctime         int64  `gorm:"column:ctime" json:"ctime" form:"ctime"`
9
+	Mtime         int64  `gorm:"column:mtime" json:"mtime" form:"mtime"`
10
+	Status        int64  `gorm:"column:status" json:"status" form:"status"`
11
+	IsCancel      int64  `gorm:"column:is_cancel" json:"is_cancel" form:"is_cancel"`
12
+	TrtDclaDetlSn string `gorm:"column:trt_dcla_detl_sn" json:"trt_dcla_detl_sn" form:"trt_dcla_detl_sn"`
13
+}
14
+
15
+func (GdybPsnRecord) TableName() string {
16
+	return "gdyb_psn_record"
17
+}
18
+
19
+type GdybPsnNcdsRecord struct {
20
+	ID            int64  `gorm:"column:id" json:"id" form:"id"`
21
+	UserOrgId     int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
22
+	PatientId     int64  `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
23
+	PsnNo         string `gorm:"column:psn_no" json:"psn_no" form:"psn_no"`
24
+	Ctime         int64  `gorm:"column:ctime" json:"ctime" form:"ctime"`
25
+	Mtime         int64  `gorm:"column:mtime" json:"mtime" form:"mtime"`
26
+	Status        int64  `gorm:"column:status" json:"status" form:"status"`
27
+	IsCancel      int64  `gorm:"column:is_cancel" json:"is_cancel" form:"is_cancel"`
28
+	TrtDclaDetlSn string `gorm:"column:trt_dcla_detl_sn" json:"trt_dcla_detl_sn" form:"trt_dcla_detl_sn"`
29
+}
30
+
31
+func (GdybPsnNcdsRecord) TableName() string {
32
+	return "gdyb_psn_ncds_record"
33
+}

+ 3 - 0
models/his_models.go ファイルの表示

@@ -119,6 +119,7 @@ type HisPatient struct {
119 119
 	SocialType             int64   `gorm:"column:social_type" json:"social_type" form:"social_type"`
120 120
 	YiliaoNumber           string  `gorm:"column:yiliao_number" json:"yiliao_number" form:"yiliao_number"`
121 121
 	MzNumber               string  `gorm:"column:mz_number" json:"mz_number" form:"mz_number"`
122
+	PatientInfo            string  `gorm:"column:patient_info" json:"patient_info" form:"patient_info"`
122 123
 }
123 124
 
124 125
 func (HisPatient) TableName() string {
@@ -577,6 +578,7 @@ type XtHisPatient struct {
577 578
 	SocialType             int64   `gorm:"column:social_type" json:"social_type" form:"social_type"`
578 579
 	YiliaoNumber           string  `gorm:"column:yiliao_number" json:"yiliao_number" form:"yiliao_number"`
579 580
 	MzNumber               string  `gorm:"column:mz_number" json:"mz_number" form:"mz_number"`
581
+	PatientInfo            string  `gorm:"column:patient_info" json:"patient_info" form:"patient_info"`
580 582
 }
581 583
 
582 584
 func (XtHisPatient) TableName() string {
@@ -767,6 +769,7 @@ type VMHisPatient struct {
767 769
 	IdCardType             int64   `gorm:"column:id_card_type" json:"id_card_type" form:"id_card_type"`
768 770
 	YiliaoNumber           string  `gorm:"column:yiliao_number" json:"yiliao_number" form:"yiliao_number"`
769 771
 	MzNumber               string  `gorm:"column:mz_number" json:"mz_number" form:"mz_number"`
772
+	PatientInfo            string  `gorm:"column:patient_info" json:"patient_info" form:"patient_info"`
770 773
 }
771 774
 
772 775
 func (VMHisPatient) TableName() string {

+ 409 - 82
service/gdyb_service.go ファイルの表示

@@ -370,6 +370,91 @@ func Gdyb2203(psnNo string, mdtrtId string, doctor string, department string, di
370 370
 	return str
371 371
 }
372 372
 
373
+// 门诊就诊信息上传
374
+func Gdyb2203A(psnNo string, mdtrtId string, doctor string, department string, diag string, org_name string, med_type string, doctor_id int64, fixmedins_code string, diag_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_code string, sick_name string) string {
375
+	// 生成签名
376
+	nonce := GetRandomString(32)
377
+	timestamp := time.Now().Unix()
378
+	signature := setSignature(timestamp, nonce, secret_key)
379
+	tempTime := time.Unix(timestamp, 0)
380
+	timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
381
+
382
+	// 生成输入报文
383
+	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
384
+	input := make(map[string]interface{})
385
+	inputData := make(map[string]interface{})
386
+	diseinfo := make([]map[string]interface{}, 0)
387
+
388
+	inputMessage["infno"] = "2203A"       // 交易编码
389
+	inputData["mdtrt_id"] = mdtrtId       // 就诊 ID(来自2201接口返回)
390
+	inputData["psn_no"] = psnNo           // 人员编号 (来自1101接口返回)
391
+	inputData["med_type"] = med_type      // 医疗类别 16门诊特殊病
392
+	inputData["begntime"] = timeFormatOne // 开始时间
393
+	inputData["main_cond_dscr"] = ""      // 主要病情描述
394
+	inputData["dise_codg"] = sick_code    // 病种编码
395
+	inputData["dise_name"] = sick_name    // 病种名称
396
+	inputData["birctrl_type"] = ""        // 计划生育手术类别
397
+	inputData["birctrl_matn_date"] = ""   // 计划生育手术或生育日期
398
+
399
+	inputData["matn_type"] = "" // 生育类别
400
+	inputData["geso_val"] = ""  // 孕周数
401
+
402
+	diseinfo_sun := make(map[string]interface{})
403
+	diseinfo_sun["diag_type"] = "1"           // 诊断类别
404
+	diseinfo_sun["diag_srt_no"] = "1"         // 诊断排序号
405
+	diseinfo_sun["diag_code"] = diag_code     // 诊断代码
406
+	diseinfo_sun["diag_name"] = diag          // 诊断名称
407
+	diseinfo_sun["diag_dept"] = department    // 诊断科室
408
+	diseinfo_sun["dise_dor_no"] = doctor_id   // 诊断医生编码
409
+	diseinfo_sun["dise_dor_name"] = doctor    // 诊断医生姓名
410
+	diseinfo_sun["diag_time"] = timeFormatOne // 诊断时间
411
+	diseinfo_sun["vali_flag"] = "1"           // 有效标志
412
+
413
+	diseinfo = append(diseinfo, diseinfo_sun)
414
+	input["diseinfo"] = diseinfo
415
+	input["mdtrtinfo"] = inputData
416
+	inputMessage["input"] = input //交易输入
417
+
418
+	bytesData, err := json.Marshal(inputMessage)
419
+	fmt.Println(string(bytesData))
420
+	if err != nil {
421
+		fmt.Println(err.Error())
422
+		return err.Error()
423
+	}
424
+	reader := bytes.NewReader(bytesData)
425
+
426
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2203A"
427
+	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2203"
428
+
429
+	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2203"
430
+	request, err := http.NewRequest("POST", url, reader)
431
+	if err != nil {
432
+		fmt.Println(err.Error())
433
+		return err.Error()
434
+	}
435
+
436
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
437
+	request.Header.Set("x-tif-paasid", "sg03_prd")
438
+	request.Header.Set("x-tif-signature", signature)
439
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
440
+	request.Header.Set("x-tif-nonce", nonce)
441
+
442
+	client := http.Client{}
443
+	resp, err := client.Do(request)
444
+	if err != nil {
445
+		fmt.Println(err.Error())
446
+		return err.Error()
447
+	}
448
+	respBytes, err := ioutil.ReadAll(resp.Body)
449
+	if err != nil {
450
+		fmt.Println(err.Error())
451
+		return err.Error()
452
+	}
453
+	str := string(respBytes)
454
+	fmt.Println(str)
455
+	return str
456
+}
457
+
373 458
 type Custom struct {
374 459
 	DetItemFeeSumamt string
375 460
 	Cut              string
@@ -1242,7 +1327,7 @@ func Gdyb5203(baseParams models.BaseParams, businessParams models.BusinessParams
1242 1327
 	return str
1243 1328
 }
1244 1329
 
1245
-func Gdyb3301(baseParams *models.BaseParams, name string, codg string) string {
1330
+func Gdyb2001(baseParams models.BaseParams, psn_no string, insutype string, med_type string) string {
1246 1331
 	// 生成签名
1247 1332
 	nonce := GetRandomString(32)
1248 1333
 	timestamp := time.Now().Unix()
@@ -1252,15 +1337,66 @@ func Gdyb3301(baseParams *models.BaseParams, name string, codg string) string {
1252 1337
 	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
1253 1338
 	input := make(map[string]interface{})
1254 1339
 	inputData := make(map[string]interface{})
1255
-	inputMessage["infno"] = "3301" // 交易编码
1340
+	inputMessage["infno"] = "2001" // 交易编码
1341
+	inputData["psn_no"] = psn_no
1342
+	inputData["insutype"] = insutype
1343
+	inputData["med_type"] = med_type
1344
+	inputData["begntime"] = "2021-01-01 00:00:00"
1345
+	input["data"] = inputData
1346
+	inputMessage["input"] = input //交易输入
1347
+	bytesData, err := json.Marshal(inputMessage)
1348
+	fmt.Println(string(bytesData))
1349
+	if err != nil {
1350
+		fmt.Println(err.Error())
1351
+		return err.Error()
1352
+	}
1353
+	reader := bytes.NewReader(bytesData)
1354
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/3301"
1355
+
1356
+	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/5203"
1357
+	request, err := http.NewRequest("POST", url, reader)
1358
+	if err != nil {
1359
+		fmt.Println(err.Error())
1360
+		return err.Error()
1361
+	}
1362
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1363
+	request.Header.Set("x-tif-paasid", "sg03_prd")
1364
+	request.Header.Set("x-tif-signature", signature)
1365
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1366
+	request.Header.Set("x-tif-nonce", nonce)
1367
+	client := http.Client{}
1368
+	resp, err := client.Do(request)
1369
+	if err != nil {
1370
+		fmt.Println(err.Error())
1371
+		return err.Error()
1372
+	}
1373
+	respBytes, err := ioutil.ReadAll(resp.Body)
1374
+	if err != nil {
1375
+		fmt.Println(err.Error())
1376
+		return err.Error()
1377
+	}
1378
+	str := string(respBytes)
1379
+	fmt.Println(str)
1380
+	return str
1381
+}
1256 1382
 
1257
-	inputData["fixmedins_hilist_id"] = baseParams.FixmedinsCode
1383
+func Gdyb3301(baseParams *models.BaseParams, name string, codg string, list_type_code string, start_time string, ent_time string) string {
1384
+	// 生成签名
1385
+	nonce := GetRandomString(32)
1386
+	timestamp := time.Now().Unix()
1387
+	signature := setSignature(timestamp, nonce, baseParams.SecretKey)
1258 1388
 
1389
+	// 生成输入报文
1390
+	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
1391
+	input := make(map[string]interface{})
1392
+	inputData := make(map[string]interface{})
1393
+	inputMessage["infno"] = "3301" // 交易编码
1394
+	inputData["fixmedins_hilist_id"] = codg
1259 1395
 	inputData["fixmedins_hilist_name"] = name
1260
-	inputData["list_type"] = "西药"
1396
+	inputData["list_type"] = list_type_code
1261 1397
 	inputData["med_list_codg"] = codg
1262
-	inputData["begndate"] = "2021-01-01"
1263
-	inputData["enddate"] = "2021-01-07"
1398
+	inputData["begndate"] = start_time
1399
+	inputData["enddate"] = ent_time
1264 1400
 
1265 1401
 	inputData["aprvno"] = ""
1266 1402
 	inputData["dosform"] = ""
@@ -1308,8 +1444,7 @@ func Gdyb3301(baseParams *models.BaseParams, name string, codg string) string {
1308 1444
 	fmt.Println(str)
1309 1445
 	return str
1310 1446
 }
1311
-
1312
-func Gdyb2001(baseParams models.BaseParams, psn_no string, insutype string, med_type string) string {
1447
+func Gdyb3302(baseParams *models.BaseParams, name string, codg string, list_type_code string) string {
1313 1448
 	// 生成签名
1314 1449
 	nonce := GetRandomString(32)
1315 1450
 	timestamp := time.Now().Unix()
@@ -1319,12 +1454,15 @@ func Gdyb2001(baseParams models.BaseParams, psn_no string, insutype string, med_
1319 1454
 	inputMessage := SetInputMessage(nonce, timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs)
1320 1455
 	input := make(map[string]interface{})
1321 1456
 	inputData := make(map[string]interface{})
1322
-	inputMessage["infno"] = "2001" // 交易编码
1323
-	inputData["psn_no"] = psn_no
1324
-	inputData["insutype"] = insutype
1325
-	inputData["med_type"] = med_type
1326
-	inputData["begntime"] = "2021-01-01 00:00:00"
1327
-	input["data"] = inputData
1457
+	inputMessage["infno"] = "3302" // 交易编码
1458
+	inputData["fixmedins_hilist_id"] = codg
1459
+	inputData["fixmedins_hilist_name"] = name
1460
+	inputData["list_type"] = list_type_code
1461
+	inputData["med_list_codg"] = codg
1462
+	inputData["begndate"] = "2021-01-01"
1463
+	inputData["enddate"] = "2099-01-07"
1464
+
1465
+	input["catalogcompin"] = inputData
1328 1466
 	inputMessage["input"] = input //交易输入
1329 1467
 	bytesData, err := json.Marshal(inputMessage)
1330 1468
 	fmt.Println(string(bytesData))
@@ -1333,7 +1471,7 @@ func Gdyb2001(baseParams models.BaseParams, psn_no string, insutype string, med_
1333 1471
 		return err.Error()
1334 1472
 	}
1335 1473
 	reader := bytes.NewReader(bytesData)
1336
-	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/3301"
1474
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/3302"
1337 1475
 
1338 1476
 	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/5203"
1339 1477
 	request, err := http.NewRequest("POST", url, reader)
@@ -1361,6 +1499,237 @@ func Gdyb2001(baseParams models.BaseParams, psn_no string, insutype string, med_
1361 1499
 	fmt.Println(str)
1362 1500
 	return str
1363 1501
 }
1502
+func Gdyb2505(psnNo string, doctor string, org_name string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, start_time string, end_time string) string {
1503
+	// 生成签名
1504
+	nonce := GetRandomString(32)
1505
+	timestamp := time.Now().Unix()
1506
+	signature := setSignature(timestamp, nonce, secret_key)
1507
+
1508
+	// 生成输入报文
1509
+	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
1510
+	input := make(map[string]interface{})
1511
+	inputData := make(map[string]interface{})
1512
+	inputMessage["infno"] = "2505"
1513
+	inputData["psn_no"] = psnNo
1514
+	inputData["biz_appy_type"] = "03"
1515
+	inputData["begndate"] = start_time
1516
+	inputData["enddate"] = end_time
1517
+	inputData["fixmedins_code"] = fixmedins_code
1518
+	inputData["fixmedins_name"] = org_name
1519
+	inputData["tel"] = ""
1520
+	inputData["addr"] = ""
1521
+	inputData["agnter_name"] = ""
1522
+	inputData["agnter_cert_type"] = ""
1523
+	inputData["agnter_certno"] = ""
1524
+	inputData["agnter_tel"] = ""
1525
+	inputData["agnter_addr"] = ""
1526
+	inputData["agnter_rlts"] = ""
1527
+	inputData["fix_srt_no"] = ""
1528
+	inputData["memo"] = ""
1529
+	input["data"] = inputData
1530
+	inputMessage["input"] = input //交易输入
1531
+	bytesData, err := json.Marshal(inputMessage)
1532
+	if err != nil {
1533
+		fmt.Println(err.Error())
1534
+		return err.Error()
1535
+	}
1536
+	reader := bytes.NewReader(bytesData)
1537
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2505"
1538
+	request, err := http.NewRequest("POST", url, reader)
1539
+	if err != nil {
1540
+		fmt.Println(err.Error())
1541
+		return err.Error()
1542
+	}
1543
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1544
+	request.Header.Set("x-tif-paasid", "sg03_prd")
1545
+	request.Header.Set("x-tif-signature", signature)
1546
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1547
+	request.Header.Set("x-tif-nonce", nonce)
1548
+	client := http.Client{}
1549
+	resp, err := client.Do(request)
1550
+	if err != nil {
1551
+		fmt.Println(err.Error())
1552
+		return err.Error()
1553
+	}
1554
+	respBytes, err := ioutil.ReadAll(resp.Body)
1555
+	if err != nil {
1556
+		fmt.Println(err.Error())
1557
+		return err.Error()
1558
+	}
1559
+	str := string(respBytes)
1560
+	fmt.Println(str)
1561
+	return str
1562
+}
1563
+func Gdyb2506(psnNo string, doctor string, org_name string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, trt_dcla_detl_sn string) string {
1564
+	// 生成签名
1565
+	nonce := GetRandomString(32)
1566
+	timestamp := time.Now().Unix()
1567
+	signature := setSignature(timestamp, nonce, secret_key)
1568
+	// 生成输入报文
1569
+	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
1570
+	input := make(map[string]interface{})
1571
+	inputData := make(map[string]interface{})
1572
+	inputMessage["infno"] = "2506"
1573
+	inputData["psn_no"] = psnNo
1574
+	inputData["trt_dcla_detl_sn"] = trt_dcla_detl_sn
1575
+	inputData["memo"] = ""
1576
+	input["data"] = inputData
1577
+	inputMessage["input"] = input //交易输入
1578
+	bytesData, err := json.Marshal(inputMessage)
1579
+	fmt.Println(string(bytesData))
1580
+	if err != nil {
1581
+		fmt.Println(err.Error())
1582
+		return err.Error()
1583
+	}
1584
+	reader := bytes.NewReader(bytesData)
1585
+
1586
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2506"
1587
+	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2203"
1588
+
1589
+	//url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2203"
1590
+	request, err := http.NewRequest("POST", url, reader)
1591
+	if err != nil {
1592
+		fmt.Println(err.Error())
1593
+		return err.Error()
1594
+	}
1595
+
1596
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1597
+	request.Header.Set("x-tif-paasid", "sg03_prd")
1598
+	request.Header.Set("x-tif-signature", signature)
1599
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1600
+	request.Header.Set("x-tif-nonce", nonce)
1601
+
1602
+	client := http.Client{}
1603
+	resp, err := client.Do(request)
1604
+	if err != nil {
1605
+		fmt.Println(err.Error())
1606
+		return err.Error()
1607
+	}
1608
+	respBytes, err := ioutil.ReadAll(resp.Body)
1609
+	if err != nil {
1610
+		fmt.Println(err.Error())
1611
+		return err.Error()
1612
+	}
1613
+	str := string(respBytes)
1614
+	fmt.Println(str)
1615
+	return str
1616
+}
1617
+func Gdyb2503(psnNo string, insutype string, org_name string, doctor string, fixmedins_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_name string, sick_code string) string {
1618
+	// 生成签名
1619
+	nonce := GetRandomString(32)
1620
+	timestamp := time.Now().Unix()
1621
+	signature := setSignature(timestamp, nonce, secret_key)
1622
+	tempTime := time.Unix(timestamp, 0)
1623
+	//timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
1624
+
1625
+	timeFormatTwo := tempTime.Format("2006-01-02")
1626
+
1627
+	// 生成输入报文
1628
+	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
1629
+	input := make(map[string]interface{})
1630
+	inputData := make(map[string]interface{})
1631
+	inputMessage["infno"] = "2503"                 // 交易编码
1632
+	inputData["psn_no"] = psnNo                    // 人员编号 (来自1101接口返回)
1633
+	inputData["insutype"] = insutype               // 险种类型(来自1101接口返回)
1634
+	inputData["opsp_dise_code"] = sick_code        // 险种类型(来自1101接口返回)
1635
+	inputData["opsp_dise_name"] = sick_name        // 险种类型(来自1101接口返回)
1636
+	inputData["insu_optins"] = insuplc_admdvs      // 险种类型(来自1101接口返回)
1637
+	inputData["ide_fixmedins_no"] = fixmedins_code // 险种类型(来自1101接口返回)
1638
+	inputData["ide_fixmedins_name"] = org_name     // 险种类型(来自1101接口返回)
1639
+	inputData["hosp_ide_date"] = timeFormatTwo     // 险种类型(来自1101接口返回)
1640
+	inputData["diag_dr_codg"] = doctor_id          // 开始时间
1641
+	inputData["diag_dr_name"] = doctor             // 开始时间
1642
+	inputData["begndate"] = timeFormatTwo          // 医师编码
1643
+	inputData["tel"] = ""                          // 医师编码
1644
+	inputData["addr"] = ""                         // 医师编码
1645
+	inputData["enddate"] = ""                      // 医师编码
1646
+
1647
+	input["data"] = inputData
1648
+	inputMessage["input"] = input //交易输入
1649
+	bytesData, err := json.Marshal(inputMessage)
1650
+	fmt.Println(string(bytesData))
1651
+	if err != nil {
1652
+		fmt.Println(err.Error())
1653
+		return err.Error()
1654
+	}
1655
+	reader := bytes.NewReader(bytesData)
1656
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2503"
1657
+	request, err := http.NewRequest("POST", url, reader)
1658
+	if err != nil {
1659
+		fmt.Println(err.Error())
1660
+		return err.Error()
1661
+	}
1662
+
1663
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1664
+	request.Header.Set("x-tif-paasid", "sg03_prd")
1665
+	request.Header.Set("x-tif-signature", signature)
1666
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1667
+	request.Header.Set("x-tif-nonce", nonce)
1668
+
1669
+	client := http.Client{}
1670
+	resp, err := client.Do(request)
1671
+	if err != nil {
1672
+		fmt.Println(err.Error())
1673
+		return err.Error()
1674
+	}
1675
+	respBytes, err := ioutil.ReadAll(resp.Body)
1676
+	if err != nil {
1677
+		fmt.Println(err.Error())
1678
+		return err.Error()
1679
+	}
1680
+	str := string(respBytes)
1681
+	fmt.Println(str)
1682
+	return str
1683
+}
1684
+func Gdyb2504(psnNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, trt_dcla_detl_sn string) string {
1685
+	// 生成签名
1686
+	nonce := GetRandomString(32)
1687
+	timestamp := time.Now().Unix()
1688
+	signature := setSignature(timestamp, nonce, secret_key)
1689
+
1690
+	// 生成输入报文
1691
+	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
1692
+	input := make(map[string]interface{})
1693
+	inputData := make(map[string]interface{})
1694
+	inputMessage["infno"] = "2504"                   // 交易编码
1695
+	inputData["psn_no"] = psnNo                      // 人员编号 (来自1101接口返回)
1696
+	inputData["trt_dcla_detl_sn"] = trt_dcla_detl_sn // 人员编号 (来自1101接口返回)
1697
+	input["data"] = inputData
1698
+	inputMessage["input"] = input //交易输入
1699
+	bytesData, err := json.Marshal(inputMessage)
1700
+	fmt.Println(string(bytesData))
1701
+	if err != nil {
1702
+		fmt.Println(err.Error())
1703
+		return err.Error()
1704
+	}
1705
+	reader := bytes.NewReader(bytesData)
1706
+	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2504"
1707
+	request, err := http.NewRequest("POST", url, reader)
1708
+	if err != nil {
1709
+		fmt.Println(err.Error())
1710
+		return err.Error()
1711
+	}
1712
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1713
+	request.Header.Set("x-tif-paasid", "sg03_prd")
1714
+	request.Header.Set("x-tif-signature", signature)
1715
+	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1716
+	request.Header.Set("x-tif-nonce", nonce)
1717
+
1718
+	client := http.Client{}
1719
+	resp, err := client.Do(request)
1720
+	if err != nil {
1721
+		fmt.Println(err.Error())
1722
+		return err.Error()
1723
+	}
1724
+	respBytes, err := ioutil.ReadAll(resp.Body)
1725
+	if err != nil {
1726
+		fmt.Println(err.Error())
1727
+		return err.Error()
1728
+	}
1729
+	str := string(respBytes)
1730
+	fmt.Println(str)
1731
+	return str
1732
+}
1364 1733
 
1365 1734
 //func Gdyb2503(psnNo string, doctor string, department string, diag string, org_name string, med_type string, doctor_id int64, fixmedins_code string, diag_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_code string, sick_name string) string {
1366 1735
 //	// 生成签名
@@ -1441,73 +1810,6 @@ func Gdyb2001(baseParams models.BaseParams, psn_no string, insutype string, med_
1441 1810
 //	fmt.Println(str)
1442 1811
 //	return str
1443 1812
 //}
1444
-func Gdyb2503(psnNo string, insutype string, org_name string, doctor string, fixmedins_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_name string, sick_code string) string {
1445
-	// 生成签名
1446
-	nonce := GetRandomString(32)
1447
-	timestamp := time.Now().Unix()
1448
-	signature := setSignature(timestamp, nonce, secret_key)
1449
-	tempTime := time.Unix(timestamp, 0)
1450
-	//timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
1451
-
1452
-	timeFormatTwo := tempTime.Format("2006-01-02")
1453
-
1454
-	// 生成输入报文
1455
-	inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
1456
-	input := make(map[string]interface{})
1457
-	inputData := make(map[string]interface{})
1458
-	inputMessage["infno"] = "2503"                 // 交易编码
1459
-	inputData["psn_no"] = psnNo                    // 人员编号 (来自1101接口返回)
1460
-	inputData["insutype"] = insutype               // 险种类型(来自1101接口返回)
1461
-	inputData["opsp_dise_code"] = sick_code        // 险种类型(来自1101接口返回)
1462
-	inputData["opsp_dise_name"] = sick_name        // 险种类型(来自1101接口返回)
1463
-	inputData["insu_optins"] = "440229"            // 险种类型(来自1101接口返回)
1464
-	inputData["ide_fixmedins_no"] = fixmedins_code // 险种类型(来自1101接口返回)
1465
-	inputData["ide_fixmedins_name"] = org_name     // 险种类型(来自1101接口返回)
1466
-	inputData["hosp_ide_date"] = timeFormatTwo     // 险种类型(来自1101接口返回)
1467
-	inputData["diag_dr_codg"] = doctor_id          // 开始时间
1468
-	inputData["diag_dr_name"] = doctor             // 开始时间
1469
-	inputData["begndate"] = timeFormatTwo          // 医师编码
1470
-	inputData["tel"] = ""                          // 医师编码
1471
-	inputData["addr"] = ""                         // 医师编码
1472
-	inputData["enddate"] = ""                      // 医师编码
1473
-
1474
-	input["data"] = inputData
1475
-	inputMessage["input"] = input //交易输入
1476
-	bytesData, err := json.Marshal(inputMessage)
1477
-	fmt.Println(string(bytesData))
1478
-	if err != nil {
1479
-		fmt.Println(err.Error())
1480
-		return err.Error()
1481
-	}
1482
-	reader := bytes.NewReader(bytesData)
1483
-	url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2503"
1484
-	request, err := http.NewRequest("POST", url, reader)
1485
-	if err != nil {
1486
-		fmt.Println(err.Error())
1487
-		return err.Error()
1488
-	}
1489
-
1490
-	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
1491
-	request.Header.Set("x-tif-paasid", "sg03_prd")
1492
-	request.Header.Set("x-tif-signature", signature)
1493
-	request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
1494
-	request.Header.Set("x-tif-nonce", nonce)
1495
-
1496
-	client := http.Client{}
1497
-	resp, err := client.Do(request)
1498
-	if err != nil {
1499
-		fmt.Println(err.Error())
1500
-		return err.Error()
1501
-	}
1502
-	respBytes, err := ioutil.ReadAll(resp.Body)
1503
-	if err != nil {
1504
-		fmt.Println(err.Error())
1505
-		return err.Error()
1506
-	}
1507
-	str := string(respBytes)
1508
-	fmt.Println(str)
1509
-	return str
1510
-}
1511 1813
 
1512 1814
 func Gdyb5301(psnNo string, insutype string, org_name string, doctor string, fixmedins_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_name string, sick_code string) string {
1513 1815
 	// 生成签名
@@ -1999,3 +2301,28 @@ func CreateMedicalInsuranceCostCompareRecord(record *models.MedicalInsuranceCost
1999 2301
 //	str := string(respBytes)
2000 2302
 //	return str
2001 2303
 //}
2304
+
2305
+func CreatePsnRecord(record *models.GdybPsnRecord) {
2306
+	writeDb.Save(&record)
2307
+	return
2308
+}
2309
+
2310
+func GetPsnRecordById(id int64) (record models.GdybPsnRecord, err error) {
2311
+	err = readDb.Model(&models.GdybPsnRecord{}).Where("id = ?").First(&record).Error
2312
+	return
2313
+}
2314
+
2315
+func CreatePsnNCDSRecord(record *models.GdybPsnNcdsRecord) {
2316
+	writeDb.Save(&record)
2317
+	return
2318
+}
2319
+
2320
+func GetPsnNCDSRecordById(id int64) (record models.GdybPsnNcdsRecord, err error) {
2321
+	err = readDb.Model(&models.GdybPsnNcdsRecord{}).Where("id = ?").First(&record).Error
2322
+	return
2323
+}
2324
+
2325
+func GetPatientsByIds(ids []string, current_org_id int64) (patients []*models.Patients, err error) {
2326
+	err = readDb.Model(&models.Patients{}).Where("id IN (?) AND user_org_id = ?", ids, current_org_id).Find(&patients).Error
2327
+	return
2328
+}

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

@@ -18,6 +18,7 @@ type HisPatient struct {
18 18
 	HisPrescription []*HisPrescription `gorm:"ForeignKey:PatientId,RecordDate;AssociationForeignKey:ID,RecordDate" json:"prescription"`
19 19
 	PatientId       int64              `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
20 20
 	Number          string             `gorm:"column:number" json:"number" form:"number"`
21
+	PatientInfo     string             `gorm:"column:patient_info" json:"patient_info" form:"patient_info"`
21 22
 }
22 23
 
23 24
 func (HisPatient) TableName() string {
@@ -1096,3 +1097,8 @@ func GetBatchDoctorList(idss []int64) (role []*models.SgjUserAdminRole, err erro
1096 1097
 	return role, err
1097 1098
 
1098 1099
 }
1100
+
1101
+func GetAllPatient(org_id int64) (patients []*models.Patients, err error) {
1102
+	err = readDb.Model(&models.Patients{}).Where("user_org_id = ? AND status = 1 AND lapseto = 1", org_id).Find(&patients).Error
1103
+	return
1104
+}

+ 44 - 0
service/sz_his_service.go ファイルの表示

@@ -14,6 +14,50 @@ import (
14 14
 	_ "unsafe"
15 15
 )
16 16
 
17
+func SzybXX001(doctor string, doctor_code string, fixmedins_code string, account string, verify_code string, serial_number string, version_code string) string {
18
+	// 生成输入报文
19
+	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
20
+	inputData := make(map[string]interface{})
21
+	inputMessage["transType"] = "XX001"         // 交易编码
22
+	inputMessage["transVersion"] = version_code // 交易编码
23
+
24
+	inputData["aaz500"] = account
25
+	inputData["bzz269"] = "000000"
26
+	inputData["bke384"] = inputMessage["serialNumber"]
27
+	inputMessage["transBody"] = inputData
28
+	bytesData, err := json.Marshal(inputMessage)
29
+	fmt.Println(string(bytesData))
30
+	if err != nil {
31
+		fmt.Println(err.Error())
32
+		return err.Error()
33
+	}
34
+	reader := bytes.NewReader(bytesData)
35
+	//url := "http://192.168.1.228:17001/szsi-portal/transData"
36
+	url := "http://192.168.1.88:6666/szsi-portal/transData"
37
+
38
+	request, err := http.NewRequest("POST", url, reader)
39
+	if err != nil {
40
+		fmt.Println(err.Error())
41
+		return err.Error()
42
+	}
43
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
44
+	client := http.Client{}
45
+	resp, err := client.Do(request)
46
+	if err != nil {
47
+		fmt.Println(err.Error())
48
+		return err.Error()
49
+	}
50
+	respBytes, err := ioutil.ReadAll(resp.Body)
51
+	if err != nil {
52
+		fmt.Println(err.Error())
53
+		return err.Error()
54
+	}
55
+	fmt.Println(string(respBytes))
56
+	str := string(respBytes)
57
+	return str
58
+
59
+}
60
+
17 61
 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, medical_care int64) string {
18 62
 	// 生成输入报文
19 63
 	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)