Преглед изворни кода

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

XMLWAN пре 4 година
родитељ
комит
c2f6423e2b

+ 113 - 0
controllers/gdyb_controller.go Прегледај датотеку

@@ -0,0 +1,113 @@
1
+package controllers
2
+
3
+import (
4
+	"XT_New/service"
5
+	"github.com/astaxie/beego"
6
+)
7
+
8
+type GdybController struct {
9
+	BaseAuthAPIController
10
+}
11
+
12
+func GdybRegistRouters() {
13
+	beego.Router("/gdyb/one", &GdybController{}, "get:PostOne")
14
+	beego.Router("/gdyb/two", &GdybController{}, "get:PostTwo")
15
+	beego.Router("/gdyb/three", &GdybController{}, "get:PostThree")
16
+	beego.Router("/gdyb/four", &GdybController{}, "get:PostFour")
17
+	beego.Router("/gdyb/five", &GdybController{}, "get:PostFive")
18
+	beego.Router("/gdyb/six", &GdybController{}, "get:PostSix")
19
+	beego.Router("/gdyb/seven", &GdybController{}, "get:PostSeven")
20
+	beego.Router("/gdyb/eight", &GdybController{}, "get:PostEight")
21
+	beego.Router("/gdyb/nine", &GdybController{}, "get:PostNine")
22
+}
23
+
24
+//provinces, _ := service.GetDistrictsByUpid(0)21
25
+
26
+func (c *GdybController) PostOne() {
27
+	certNo := c.GetString("cert_no")
28
+	result := service.Gdyb1101(certNo)
29
+	c.ServeSuccessJSON(map[string]interface{}{
30
+		"pre": result,
31
+	})
32
+}
33
+
34
+func (c *GdybController) PostTwo() {
35
+	psnNo := c.GetString("psn_no")
36
+	insutype := c.GetString("insutype")
37
+	certNo := c.GetString("cert_no")
38
+	result := service.Gdyb2201(psnNo,insutype,certNo)
39
+	c.ServeSuccessJSON(map[string]interface{}{
40
+		"pre": result,
41
+	})
42
+}
43
+
44
+func (c *GdybController) PostThree() {
45
+	psnNo := c.GetString("psn_no")
46
+	mdtrtId := c.GetString("mdtrt_id")
47
+	result := service.Gdyb2202(psnNo,mdtrtId)
48
+	c.ServeSuccessJSON(map[string]interface{}{
49
+		"pre": result,
50
+	})
51
+}
52
+
53
+func (c *GdybController) PostFour() {
54
+	psnNo := c.GetString("psn_no")
55
+	mdtrtId := c.GetString("mdtrt_id")
56
+	result := service.Gdyb2203(psnNo,mdtrtId)
57
+	c.ServeSuccessJSON(map[string]interface{}{
58
+		"pre": result,
59
+	})
60
+}
61
+
62
+func (c *GdybController) PostFive() {
63
+	psnNo := c.GetString("psn_no")
64
+	mdtrtId := c.GetString("mdtrt_id")
65
+	result := service.Gdyb2204(psnNo,mdtrtId)
66
+	c.ServeSuccessJSON(map[string]interface{}{
67
+		"pre": result,
68
+	})
69
+}
70
+
71
+func (c *GdybController) PostSix() {
72
+	psnNo := c.GetString("psn_no")
73
+	mdtrtId := c.GetString("mdtrt_id")
74
+	chrgBchno := c.GetString("chrg_bchno")
75
+	result := service.Gdyb2205(psnNo,mdtrtId,chrgBchno)
76
+	c.ServeSuccessJSON(map[string]interface{}{
77
+		"pre": result,
78
+	})
79
+}
80
+
81
+func (c *GdybController) PostSeven() {
82
+	psnNo := c.GetString("psn_no")
83
+	mdtrtId := c.GetString("mdtrt_id")
84
+	chrgBchno := c.GetString("chrg_bchno")
85
+	certNo := c.GetString("cert_no")
86
+	insutype := c.GetString("insutype")
87
+	result := service.Gdyb2206(psnNo,mdtrtId,chrgBchno,certNo,insutype)
88
+	c.ServeSuccessJSON(map[string]interface{}{
89
+		"pre": result,
90
+	})
91
+}
92
+
93
+func (c *GdybController) PostEight() {
94
+	psnNo := c.GetString("psn_no")
95
+	mdtrtId := c.GetString("mdtrt_id")
96
+	chrgBchno := c.GetString("chrg_bchno")
97
+	certNo := c.GetString("cert_no")
98
+	insutype := c.GetString("insutype")
99
+	result := service.Gdyb2207(psnNo,mdtrtId,chrgBchno,certNo,insutype)
100
+	c.ServeSuccessJSON(map[string]interface{}{
101
+		"pre": result,
102
+	})
103
+}
104
+
105
+func (c *GdybController) PostNine() {
106
+	psnNo := c.GetString("psn_no")
107
+	mdtrtId := c.GetString("mdtrt_id")
108
+	setlId := c.GetString("setl_id")
109
+	result := service.Gdyb2208(psnNo,mdtrtId,setlId)
110
+	c.ServeSuccessJSON(map[string]interface{}{
111
+		"pre": result,
112
+	})
113
+}

+ 4 - 0
controllers/mobile_api_controllers/check_weight_api_controller.go Прегледај датотеку

@@ -354,6 +354,10 @@ func (c *CheckWeightApiController) SavePatientInfoDialysis() {
354 354
 		var system_dialysisPrescribe *models.SystemPrescription
355 355
 
356 356
 		var mode_id int64
357
+		weightfirst, err := service.FindLastDryWeightAdjust(adminUserInfo.Org.Id, id)
358
+		if weightfirst.DryWeight > weighing_before {
359
+			return
360
+		}
357 361
 
358 362
 		dialysisPrescribe, _ = service.MobileGetDialysisPrescribe(adminUserInfo.Org.Id, id, theAssessmentDateTime)
359 363
 		if schedual != nil {

+ 1 - 0
routers/router.go Прегледај датотеку

@@ -72,4 +72,5 @@ func init() {
72 72
 	controllers.SelfDrugRouters()
73 73
 	new_m_api.NewDrugApiControllersRegisterRouters()
74 74
 	controllers.HisProjectRouters()
75
+	controllers.GdybRegistRouters()
75 76
 }

+ 718 - 0
service/gdyb_service.go Прегледај датотеку

@@ -0,0 +1,718 @@
1
+package service
2
+
3
+import (
4
+	"time"
5
+	"net/http"
6
+    "encoding/json"
7
+    "fmt"
8
+    "bytes"
9
+    "io/ioutil"
10
+	_"unsafe"
11
+	"math/rand"
12
+    "crypto/sha256"
13
+    "encoding/hex"
14
+    "strconv"
15
+)
16
+
17
+const (
18
+    SceretKey  = "RhaDw4H0RUbWYyTxmRKM1eSeN0qyGLds"   //     secretKey 私钥
19
+    FixmedinsCOde = "H44022900214"  // 定点医药机构编号
20
+)
21
+
22
+// 人员基本信息
23
+func Gdyb1101(certNo string) (string) {
24
+    // 生成签名
25
+	nonce := GetRandomString(32)
26
+    timestamp := time.Now().Unix()
27
+    signature := setSignature(timestamp,nonce)
28
+
29
+    // 生成输入报文
30
+    inputMessage := SetInputMessage(nonce,timestamp)
31
+    input := make(map[string]interface{})
32
+    inputData := make(map[string]interface{})
33
+    inputMessage["infno"] = "1101"                      // 交易编码
34
+    inputData["mdtrt_cert_type"] = "02"                 // 就诊凭证类型
35
+    inputData["mdtrt_cert_no"] = certNo                 // 就诊凭证编号
36
+    inputData["card_sn"] = ""                           // 卡识别码
37
+    inputData["begntime"] = ""                          // 开始时间
38
+    inputData["psn_cert_type"] = ""                     // 人员证件类型
39
+    inputData["certno"] = ""                            // 证件号码
40
+    inputData["psn_name"] = ""                          // 人员姓名
41
+    input["data"] = inputData
42
+    inputMessage["input"] = input                       //交易输入
43
+
44
+    bytesData, err := json.Marshal(inputMessage)
45
+    fmt.Println(string(bytesData))
46
+    if err != nil {
47
+        fmt.Println(err.Error() )
48
+        return err.Error()
49
+    }
50
+    reader := bytes.NewReader(bytesData)
51
+    
52
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/1101"
53
+    request, err := http.NewRequest("POST", url, reader)
54
+    if err != nil {
55
+        fmt.Println(err.Error())
56
+        return err.Error()
57
+	}
58
+
59
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
60
+    request.Header.Set("x-tif-paasid", "test_hosp")
61
+    request.Header.Set("x-tif-signature", signature)
62
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
63
+    request.Header.Set("x-tif-nonce", nonce)
64
+
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
+    str := string(respBytes)
77
+    fmt.Println(str)
78
+    return str
79
+}
80
+
81
+// 门诊挂号
82
+func Gdyb2201(psnNo string,insutype string,certNo string) (string) {
83
+    // 生成签名
84
+	nonce := GetRandomString(32)
85
+    timestamp := time.Now().Unix()
86
+    signature := setSignature(timestamp,nonce)
87
+    tempTime := time.Unix(timestamp, 0)
88
+    timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
89
+
90
+    // 生成输入报文
91
+    inputMessage := SetInputMessage(nonce,timestamp)
92
+    input := make(map[string]interface{})
93
+    inputData := make(map[string]interface{})
94
+    inputMessage["infno"] = "2201"                      // 交易编码
95
+    inputData["psn_no"] = psnNo                  // 人员编号 (来自1101接口返回)
96
+    inputData["insutype"] = insutype                      // 险种类型(来自1101接口返回)
97
+    inputData["begntime"] = timeFormatOne               // 开始时间
98
+    inputData["mdtrt_cert_type"] = "02"                 // 就诊凭证类型
99
+    inputData["mdtrt_cert_no"] = certNo   // 就诊凭证编号
100
+    inputData["ipt_otp_no"] = "10000110"                // 住院/门诊号
101
+    inputData["atddr_no"] = "1002"                      // 医师编码
102
+    inputData["dr_name"] = "刘志刚"                      // 医师姓名
103
+    inputData["dept_code"] = "3002"                     // 科室编码
104
+    inputData["dept_name"] = "血透中心"                  // 科室名称
105
+    inputData["caty"] = "A03.06"                        // 科别
106
+
107
+
108
+    input["data"] = inputData
109
+    inputMessage["input"] = input                       //交易输入
110
+
111
+    bytesData, err := json.Marshal(inputMessage)
112
+    fmt.Println(string(bytesData))
113
+    if err != nil {
114
+        fmt.Println(err.Error() )
115
+        return err.Error()
116
+    }
117
+    reader := bytes.NewReader(bytesData)
118
+    
119
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2201"
120
+    request, err := http.NewRequest("POST", url, reader)
121
+    if err != nil {
122
+        fmt.Println(err.Error())
123
+        return err.Error()
124
+	}
125
+
126
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
127
+    request.Header.Set("x-tif-paasid", "test_hosp")
128
+    request.Header.Set("x-tif-signature", signature)
129
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
130
+    request.Header.Set("x-tif-nonce", nonce)
131
+
132
+    client := http.Client{}
133
+    resp, err := client.Do(request)
134
+    if err != nil {
135
+        fmt.Println(err.Error())
136
+        return err.Error()
137
+    }
138
+    respBytes, err := ioutil.ReadAll(resp.Body)
139
+    if err != nil {
140
+        fmt.Println(err.Error())
141
+        return err.Error()
142
+    }
143
+    str := string(respBytes)
144
+    fmt.Println(str)
145
+    return str
146
+}
147
+
148
+// 门诊挂号撤销
149
+func Gdyb2202(psnNo string,mdtrtId string) (string) {
150
+    // 生成签名
151
+	nonce := GetRandomString(32)
152
+    timestamp := time.Now().Unix()
153
+    signature := setSignature(timestamp,nonce)
154
+  
155
+    // 生成输入报文
156
+    inputMessage := SetInputMessage(nonce,timestamp)
157
+    input := make(map[string]interface{})
158
+    inputData := make(map[string]interface{})
159
+    inputMessage["infno"] = "2202"                      // 交易编码
160
+    inputData["psn_no"] = psnNo                  // 人员编号 (来自1101接口返回)
161
+    inputData["mdtrt_id"] = mdtrtId                      // 就诊 ID(来自2201接口返回)
162
+    inputData["ipt_otp_no"] = "10000110"               // 住院/门诊号
163
+   
164
+    input["data"] = inputData
165
+    inputMessage["input"] = input                       //交易输入
166
+
167
+    bytesData, err := json.Marshal(inputMessage)
168
+    fmt.Println(string(bytesData))
169
+    if err != nil {
170
+        fmt.Println(err.Error() )
171
+        return err.Error()
172
+    }
173
+    reader := bytes.NewReader(bytesData)
174
+    
175
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2202"
176
+    request, err := http.NewRequest("POST", url, reader)
177
+    if err != nil {
178
+        fmt.Println(err.Error())
179
+        return err.Error()
180
+	}
181
+
182
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
183
+    request.Header.Set("x-tif-paasid", "test_hosp")
184
+    request.Header.Set("x-tif-signature", signature)
185
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
186
+    request.Header.Set("x-tif-nonce", nonce)
187
+
188
+    client := http.Client{}
189
+    resp, err := client.Do(request)
190
+    if err != nil {
191
+        fmt.Println(err.Error())
192
+        return err.Error()
193
+    }
194
+    respBytes, err := ioutil.ReadAll(resp.Body)
195
+    if err != nil {
196
+        fmt.Println(err.Error())
197
+        return err.Error()
198
+    }
199
+    str := string(respBytes)
200
+    fmt.Println(str)
201
+    return str
202
+}
203
+
204
+// 门诊就诊信息上传
205
+func Gdyb2203(psnNo string,mdtrtId string) (string) {
206
+    // 生成签名
207
+	nonce := GetRandomString(32)
208
+    timestamp := time.Now().Unix()
209
+    signature := setSignature(timestamp,nonce)
210
+    tempTime := time.Unix(timestamp, 0)
211
+    timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
212
+  
213
+    // 生成输入报文
214
+    inputMessage := SetInputMessage(nonce,timestamp)
215
+    input := make(map[string]interface{})
216
+    inputData := make(map[string]interface{})
217
+    diseinfo := make([]map[string]interface{},0)
218
+  
219
+    inputMessage["infno"] = "2203"                      // 交易编码
220
+    inputData["mdtrt_id"] = mdtrtId                   // 就诊 ID(来自2201接口返回)
221
+    inputData["psn_no"] = psnNo                  // 人员编号 (来自1101接口返回)
222
+    inputData["med_type"] = "11"               // 医疗类别
223
+    inputData["begntime"] = timeFormatOne               // 开始时间
224
+    inputData["main_cond_dscr"] = ""               // 主要病情描述
225
+    inputData["dise_codg"] = ""               // 病种编码
226
+    inputData["dise_name"] = ""               // 病种名称
227
+    inputData["birctrl_type"] = ""               // 计划生育手术类别
228
+    inputData["birctrl_matn_date"] = ""               // 计划生育手术或生育日期
229
+
230
+    diseinfo_sun := make(map[string]interface{})
231
+    diseinfo_sun["diag_type"] = "1"               // 诊断类别
232
+    diseinfo_sun["diag_srt_no"] = "1"               // 诊断排序号
233
+    diseinfo_sun["diag_code"] = "A04.902"               // 诊断代码
234
+    diseinfo_sun["diag_name"] = "细菌性腹泻"               // 诊断名称
235
+    diseinfo_sun["diag_dept"] = "肾内科"               // 诊断科室
236
+    diseinfo_sun["dise_dor_no"] = "1002"               // 诊断医生编码
237
+    diseinfo_sun["dise_dor_name"] = "马桂平"               // 诊断医生姓名
238
+    diseinfo_sun["diag_time"] = timeFormatOne               // 诊断时间
239
+    diseinfo_sun["vali_flag"] = "1"               // 有效标志
240
+
241
+    diseinfo = append(diseinfo,diseinfo_sun)
242
+    input["diseinfo"] = diseinfo
243
+    input["mdtrtinfo"] = inputData
244
+    inputMessage["input"] = input                       //交易输入
245
+
246
+    bytesData, err := json.Marshal(inputMessage)
247
+    fmt.Println(string(bytesData))
248
+    if err != nil {
249
+        fmt.Println(err.Error() )
250
+        return err.Error()
251
+    }
252
+    reader := bytes.NewReader(bytesData)
253
+    
254
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2203"
255
+    request, err := http.NewRequest("POST", url, reader)
256
+    if err != nil {
257
+        fmt.Println(err.Error())
258
+        return err.Error()
259
+	}
260
+
261
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
262
+    request.Header.Set("x-tif-paasid", "test_hosp")
263
+    request.Header.Set("x-tif-signature", signature)
264
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
265
+    request.Header.Set("x-tif-nonce", nonce)
266
+
267
+    client := http.Client{}
268
+    resp, err := client.Do(request)
269
+    if err != nil {
270
+        fmt.Println(err.Error())
271
+        return err.Error()
272
+    }
273
+    respBytes, err := ioutil.ReadAll(resp.Body)
274
+    if err != nil {
275
+        fmt.Println(err.Error())
276
+        return err.Error()
277
+    }
278
+    str := string(respBytes)
279
+    fmt.Println(str)
280
+    return str
281
+}
282
+
283
+//  门诊费用明细信息上传
284
+func Gdyb2204(psnNo string,mdtrtId string) (string) {
285
+    // 生成签名
286
+	nonce := GetRandomString(32)
287
+    timestamp := time.Now().Unix()
288
+    signature := setSignature(timestamp,nonce)
289
+    tempTime := time.Unix(timestamp, 0)
290
+    timeFormat := tempTime.Format("20060102150405")
291
+    timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
292
+    chrgBchno := rand.Intn(100000)+10000
293
+    
294
+    // 生成输入报文
295
+    inputMessage := SetInputMessage(nonce,timestamp)
296
+    input := make(map[string]interface{})
297
+    feedetail := make([]map[string]interface{},0)
298
+    feedetailInfo := make(map[string]interface{})
299
+    inputMessage["infno"] = "2204"                      // 交易编码
300
+    var randNum int
301
+
302
+    randNum = rand.Intn(10000)+1000
303
+    feedetailInfo["feedetl_sn"] = timeFormat + strconv.FormatInt(int64(randNum),10)                // 费用明细流水号
304
+    feedetailInfo["mdtrt_id"] = mdtrtId                    // 就诊 ID(来自2201接口返回)
305
+    feedetailInfo["psn_no"] = psnNo                  // 人员编号 (来自1101接口返回)
306
+    feedetailInfo["chrg_bchno"] = timeFormat + strconv.FormatInt(int64(chrgBchno),10)                  // 收费批次号
307
+    feedetailInfo["dise_codg"] = ""                  // 病种编码
308
+    feedetailInfo["rxno"] = ""                  // 处方号
309
+    feedetailInfo["rx_circ_flag"] = "0"                  // 外购处方标志
310
+    feedetailInfo["fee_ocur_time"] = timeFormatOne                  // 费用发生时间
311
+    feedetailInfo["med_list_codg"] = "XN05AEQ010B001010101435"                  // 医疗目录编码
312
+    feedetailInfo["medins_list_codg"] = FixmedinsCOde                 // 医药机构目录编码
313
+    feedetailInfo["det_item_fee_sumamt"] = "10.00"                 // 明细项目费用总额
314
+    feedetailInfo["cnt"] = "1"                 // 数量
315
+    feedetailInfo["pric"] = "10.00"                 // 单价
316
+    feedetailInfo["sin_dos_dscr"] = ""                 // 单次剂量描述
317
+    feedetailInfo["used_frqu_dscr"] = ""                 // 使用频次描述
318
+    feedetailInfo["prd_days"] = "0"                 // 周期天数
319
+    feedetailInfo["medc_way_dscr"] = ""                 // 用药途径描述
320
+    feedetailInfo["bilg_dept_codg"] = "3002"                 // 开单科室编码
321
+    feedetailInfo["bilg_dept_name"] = "血透中心"                 // 开单科室名称
322
+    feedetailInfo["bilg_dr_codg"] = "1002"                 // 开单医生编码
323
+    feedetailInfo["bilg_dr_name"] = "刘志刚"                 // 开单医师姓名
324
+    feedetailInfo["acord_dept_codg"] = ""                 // 受单科室编码
325
+    feedetailInfo["acord_dept_name"] = ""                 // 受单科室名称
326
+    feedetailInfo["orders_dr_code"] = ""                 // 受单医生编码
327
+    feedetailInfo["orders_dr_name"] = ""                 // 受单医生姓名
328
+    feedetailInfo["hosp_appr_flag"] = "1"                 // 医院审批标志
329
+    feedetailInfo["tcmdrug_used_way"] = ""                 // 中药使用方式
330
+    feedetailInfo["etip_flag"] = ""                 // 外检标志
331
+    feedetailInfo["etip_hosp_code"] = ""                 // 外检医院编码
332
+    feedetailInfo["dscg_tkdrug_flag"] = ""                 // 出院带药标志
333
+    feedetailInfo["matn_fee_flag"] = ""                 // 生育费用标志
334
+
335
+    feedetail = append(feedetail,feedetailInfo)
336
+    feedetailInfo1 := make(map[string]interface{})
337
+    randNum = rand.Intn(10000)+1000
338
+    feedetailInfo1["feedetl_sn"] = timeFormat + strconv.FormatInt(int64(randNum),10)                // 费用明细流水号
339
+    feedetailInfo1["mdtrt_id"] = mdtrtId                    // 就诊 ID(来自2201接口返回)
340
+    feedetailInfo1["psn_no"] = psnNo                  // 人员编号 (来自1101接口返回)
341
+    feedetailInfo1["chrg_bchno"] = timeFormat + strconv.FormatInt(int64(chrgBchno),10)                  // 收费批次号
342
+    feedetailInfo1["dise_codg"] = ""                  // 病种编码
343
+    feedetailInfo1["rxno"] = ""                  // 处方号
344
+    feedetailInfo1["rx_circ_flag"] = "0"                  // 外购处方标志
345
+    feedetailInfo1["fee_ocur_time"] = timeFormatOne                  // 费用发生时间
346
+    feedetailInfo1["med_list_codg"] = "ZA01AAJ0628010100974"                  // 医疗目录编码
347
+    feedetailInfo1["medins_list_codg"] = FixmedinsCOde                 // 医药机构目录编码
348
+    feedetailInfo1["det_item_fee_sumamt"] = "10.00"                 // 明细项目费用总额
349
+    feedetailInfo1["cnt"] = "1"                 // 数量
350
+    feedetailInfo1["pric"] = "10.00"                 // 单价
351
+    feedetailInfo1["sin_dos_dscr"] = ""                 // 单次剂量描述
352
+    feedetailInfo1["used_frqu_dscr"] = ""                 // 使用频次描述
353
+    feedetailInfo1["prd_days"] = "0"                 // 周期天数
354
+    feedetailInfo1["medc_way_dscr"] = ""                 // 用药途径描述
355
+    feedetailInfo1["bilg_dept_codg"] = "3002"                 // 开单科室编码
356
+    feedetailInfo1["bilg_dept_name"] = "血透中心"                 // 开单科室名称
357
+    feedetailInfo1["bilg_dr_codg"] = "1002"                 // 开单医生编码
358
+    feedetailInfo1["bilg_dr_name"] = "刘志刚"                 // 开单医师姓名
359
+    feedetailInfo1["acord_dept_codg"] = ""                 // 受单科室编码
360
+    feedetailInfo1["acord_dept_name"] = ""                 // 受单科室名称
361
+    feedetailInfo1["orders_dr_code"] = ""                 // 受单医生编码
362
+    feedetailInfo1["orders_dr_name"] = ""                 // 受单医生姓名
363
+    feedetailInfo1["hosp_appr_flag"] = "1"                 // 医院审批标志
364
+    feedetailInfo1["tcmdrug_used_way"] = ""                 // 中药使用方式
365
+    feedetailInfo1["etip_flag"] = ""                 // 外检标志
366
+    feedetailInfo1["etip_hosp_code"] = ""                 // 外检医院编码
367
+    feedetailInfo1["dscg_tkdrug_flag"] = ""                 // 出院带药标志
368
+    feedetailInfo1["matn_fee_flag"] = ""                 // 生育费用标志
369
+
370
+    feedetail = append(feedetail,feedetailInfo1)
371
+
372
+    input["feedetail"] = feedetail
373
+    inputMessage["input"] = input                       //交易输入
374
+
375
+    bytesData, err := json.Marshal(inputMessage)
376
+    fmt.Println(string(bytesData))
377
+    if err != nil {
378
+        fmt.Println(err.Error() )
379
+        return err.Error()
380
+    }
381
+    reader := bytes.NewReader(bytesData)
382
+    
383
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2204"
384
+    request, err := http.NewRequest("POST", url, reader)
385
+    if err != nil {
386
+        fmt.Println(err.Error())
387
+        return err.Error()
388
+	}
389
+
390
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
391
+    request.Header.Set("x-tif-paasid", "test_hosp")
392
+    request.Header.Set("x-tif-signature", signature)
393
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
394
+    request.Header.Set("x-tif-nonce", nonce)
395
+
396
+    client := http.Client{}
397
+    resp, err := client.Do(request)
398
+    if err != nil {
399
+        fmt.Println(err.Error())
400
+        return err.Error()
401
+    }
402
+    respBytes, err := ioutil.ReadAll(resp.Body)
403
+    if err != nil {
404
+        fmt.Println(err.Error())
405
+        return err.Error()
406
+    }
407
+    str := string(respBytes)
408
+    fmt.Println(str)
409
+    return str
410
+}
411
+
412
+//  门诊费用明细信息撤销
413
+func Gdyb2205(psnNo string,mdtrtId string,chrgBchno string) (string) {
414
+    // 生成签名
415
+	nonce := GetRandomString(32)
416
+    timestamp := time.Now().Unix()
417
+    signature := setSignature(timestamp,nonce)
418
+   
419
+    
420
+    // 生成输入报文
421
+    inputMessage := SetInputMessage(nonce,timestamp)
422
+    input := make(map[string]interface{})
423
+    inputData := make(map[string]interface{})
424
+    inputMessage["infno"] = "2205"                      // 交易编码
425
+
426
+    inputData["mdtrt_id"] = mdtrtId                    // 就诊 ID(来自2201接口返回)
427
+    inputData["chrg_bchno"] = chrgBchno       // 收费批次号(来自2204生成的)
428
+    inputData["psn_no"] = psnNo                  // 人员编号 (来自1101接口返回)
429
+
430
+    
431
+
432
+    input["data"] = inputData
433
+    inputMessage["input"] = input                       //交易输入
434
+
435
+    bytesData, err := json.Marshal(inputMessage)
436
+    fmt.Println(string(bytesData))
437
+    if err != nil {
438
+        fmt.Println(err.Error() )
439
+        return err.Error()
440
+    }
441
+    reader := bytes.NewReader(bytesData)
442
+    
443
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2205"
444
+    request, err := http.NewRequest("POST", url, reader)
445
+    if err != nil {
446
+        fmt.Println(err.Error())
447
+        return err.Error()
448
+	}
449
+
450
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
451
+    request.Header.Set("x-tif-paasid", "test_hosp")
452
+    request.Header.Set("x-tif-signature", signature)
453
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
454
+    request.Header.Set("x-tif-nonce", nonce)
455
+
456
+    client := http.Client{}
457
+    resp, err := client.Do(request)
458
+    if err != nil {
459
+        fmt.Println(err.Error())
460
+        return err.Error()
461
+    }
462
+    respBytes, err := ioutil.ReadAll(resp.Body)
463
+    if err != nil {
464
+        fmt.Println(err.Error())
465
+        return err.Error()
466
+    }
467
+    str := string(respBytes)
468
+    fmt.Println(str)
469
+    return str
470
+}
471
+
472
+//  门诊预结算
473
+func Gdyb2206(psnNo string,mdtrtId string,chrgBchno string,certNo string,insutype string) (string) {
474
+    // 生成签名
475
+	nonce := GetRandomString(32)
476
+    timestamp := time.Now().Unix()
477
+    signature := setSignature(timestamp,nonce)
478
+   
479
+    
480
+    // 生成输入报文
481
+    inputMessage := SetInputMessage(nonce,timestamp)
482
+    input := make(map[string]interface{})
483
+    inputData := make(map[string]interface{})
484
+    inputMessage["infno"] = "2206"                      // 交易编码
485
+
486
+    inputData["psn_no"] = psnNo                   // 人员编号 (来自1101接口返回)
487
+    inputData["mdtrt_cert_type"] = "02"                 // 就诊凭证类型
488
+    inputData["mdtrt_cert_no"] = certNo   // 就诊凭证编号
489
+    inputData["med_type"] = "11"   // 医疗类别 11 普通门诊  12 门诊挂号
490
+    inputData["medfee_sumamt"] = "99.00"   // 医疗费总额
491
+    inputData["psn_setlway"] = "01"   // 个人结算方式 01 按项目结 02 按定额结算
492
+    inputData["mdtrt_id"] = mdtrtId                    // 就诊 ID(来自2201接口返回)
493
+    inputData["chrg_bchno"] = chrgBchno       // 收费批次号(来自2204生成的)
494
+    inputData["acct_used_flag"] = "1"       // 个人账户使用标志 0否 1是
495
+    inputData["insutype"] = insutype       // 险种类型
496
+    
497
+
498
+    input["data"] = inputData
499
+    inputMessage["input"] = input                       //交易输入
500
+
501
+    bytesData, err := json.Marshal(inputMessage)
502
+    fmt.Println(string(bytesData))
503
+    if err != nil {
504
+        fmt.Println(err.Error() )
505
+        return err.Error()
506
+    }
507
+    reader := bytes.NewReader(bytesData)
508
+    
509
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2206"
510
+    request, err := http.NewRequest("POST", url, reader)
511
+    if err != nil {
512
+        fmt.Println(err.Error())
513
+        return err.Error()
514
+	}
515
+
516
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
517
+    request.Header.Set("x-tif-paasid", "test_hosp")
518
+    request.Header.Set("x-tif-signature", signature)
519
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
520
+    request.Header.Set("x-tif-nonce", nonce)
521
+
522
+    client := http.Client{}
523
+    resp, err := client.Do(request)
524
+    if err != nil {
525
+        fmt.Println(err.Error())
526
+        return err.Error()
527
+    }
528
+    respBytes, err := ioutil.ReadAll(resp.Body)
529
+    if err != nil {
530
+        fmt.Println(err.Error())
531
+        return err.Error()
532
+    }
533
+    str := string(respBytes)
534
+    fmt.Println(str)
535
+    return str
536
+}
537
+
538
+//  门诊结算
539
+func Gdyb2207(psnNo string,mdtrtId string,chrgBchno string,certNo string,insutype string) (string) {
540
+    // 生成签名
541
+	nonce := GetRandomString(32)
542
+    timestamp := time.Now().Unix()
543
+    signature := setSignature(timestamp,nonce)
544
+   
545
+    
546
+    // 生成输入报文
547
+    inputMessage := SetInputMessage(nonce,timestamp)
548
+    input := make(map[string]interface{})
549
+    inputData := make(map[string]interface{})
550
+    inputMessage["infno"] = "2207"                      // 交易编码
551
+
552
+    inputData["psn_no"] = psnNo                   // 人员编号 (来自1101接口返回)
553
+    inputData["mdtrt_cert_type"] = "02"                 // 就诊凭证类型
554
+    inputData["mdtrt_cert_no"] = certNo   // 就诊凭证编号
555
+    inputData["med_type"] = "11"   // 医疗类别 11 普通门诊  12 门诊挂号
556
+    inputData["medfee_sumamt"] = "99.00"   // 医疗费总额
557
+    inputData["psn_setlway"] = "01"   // 个人结算方式 01 按项目结 02 按定额结算
558
+    inputData["mdtrt_id"] = mdtrtId                    // 就诊 ID(来自2201接口返回)
559
+    inputData["chrg_bchno"] = chrgBchno       // 收费批次号(来自2204生成的)
560
+    inputData["acct_used_flag"] = "1"       // 个人账户使用标志 0否 1是
561
+    inputData["insutype"] = insutype       // 险种类型
562
+    inputData["invono"] = ""       // 发票号
563
+
564
+    input["data"] = inputData
565
+    inputMessage["input"] = input                       //交易输入
566
+
567
+    bytesData, err := json.Marshal(inputMessage)
568
+    fmt.Println(string(bytesData))
569
+    if err != nil {
570
+        fmt.Println(err.Error() )
571
+        return err.Error()
572
+    }
573
+    reader := bytes.NewReader(bytesData)
574
+    
575
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2207"
576
+    request, err := http.NewRequest("POST", url, reader)
577
+    if err != nil {
578
+        fmt.Println(err.Error())
579
+        return err.Error()
580
+	}
581
+
582
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
583
+    request.Header.Set("x-tif-paasid", "test_hosp")
584
+    request.Header.Set("x-tif-signature", signature)
585
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
586
+    request.Header.Set("x-tif-nonce", nonce)
587
+
588
+    client := http.Client{}
589
+    resp, err := client.Do(request)
590
+    if err != nil {
591
+        fmt.Println(err.Error())
592
+        return err.Error()
593
+    }
594
+    respBytes, err := ioutil.ReadAll(resp.Body)
595
+    if err != nil {
596
+        fmt.Println(err.Error())
597
+        return err.Error()
598
+    }
599
+    str := string(respBytes)
600
+    fmt.Println(str)
601
+    return str
602
+}
603
+
604
+//  门诊结算撤销
605
+func Gdyb2208(psnNo string,mdtrtId string,setlId string) (string) {
606
+    // 生成签名
607
+	nonce := GetRandomString(32)
608
+    timestamp := time.Now().Unix()
609
+    signature := setSignature(timestamp,nonce)
610
+   
611
+    
612
+    // 生成输入报文
613
+    inputMessage := SetInputMessage(nonce,timestamp)
614
+    input := make(map[string]interface{})
615
+    inputData := make(map[string]interface{})
616
+    inputMessage["infno"] = "2208"                      // 交易编码
617
+
618
+    inputData["psn_no"] = psnNo                   // 人员编号 (来自1101接口返回)
619
+    inputData["mdtrt_id"] = mdtrtId                    // 就诊 ID(来自2201接口返回)
620
+    inputData["setl_id"] = setlId       // 结算 ID
621
+
622
+    input["data"] = inputData
623
+    inputMessage["input"] = input                       //交易输入
624
+
625
+    bytesData, err := json.Marshal(inputMessage)
626
+    fmt.Println(string(bytesData))
627
+    if err != nil {
628
+        fmt.Println(err.Error() )
629
+        return err.Error()
630
+    }
631
+    reader := bytes.NewReader(bytesData)
632
+    
633
+    url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2208"
634
+    request, err := http.NewRequest("POST", url, reader)
635
+    if err != nil {
636
+        fmt.Println(err.Error())
637
+        return err.Error()
638
+	}
639
+
640
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
641
+    request.Header.Set("x-tif-paasid", "test_hosp")
642
+    request.Header.Set("x-tif-signature", signature)
643
+    request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
644
+    request.Header.Set("x-tif-nonce", nonce)
645
+
646
+    client := http.Client{}
647
+    resp, err := client.Do(request)
648
+    if err != nil {
649
+        fmt.Println(err.Error())
650
+        return err.Error()
651
+    }
652
+    respBytes, err := ioutil.ReadAll(resp.Body)
653
+    if err != nil {
654
+        fmt.Println(err.Error())
655
+        return err.Error()
656
+    }
657
+    str := string(respBytes)
658
+    fmt.Println(str)
659
+    return str
660
+}
661
+
662
+
663
+// 生成签名
664
+func setSignature(timestamp int64, nonce string) string {
665
+	str := strconv.FormatInt(timestamp,10) + SceretKey + nonce + strconv.FormatInt(timestamp,10)
666
+    hash := sha256.New()
667
+	//输入数据
668
+	hash.Write([]byte(str))
669
+	//计算哈希值
670
+	bytes := hash.Sum(nil)
671
+	//将字符串编码为16进制格式,返回字符串
672
+	hashCode := hex.EncodeToString(bytes)
673
+	//返回哈希值
674
+	return hashCode
675
+}
676
+
677
+// 生成随机字符串
678
+func  GetRandomString(l int) string {
679
+	str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
680
+	bytes := []byte(str)
681
+	result := []byte{}
682
+	r := rand.New(rand.NewSource(time.Now().UnixNano()))
683
+	for i := 0; i < l; i++ {
684
+		result = append(result, bytes[r.Intn(len(bytes))])
685
+	}
686
+	return string(result)
687
+}
688
+
689
+// 生成基础报文
690
+func SetInputMessage(nonce string,timestamp int64) (map[string]interface{}) {
691
+    // 生成签名
692
+    tempTime := time.Unix(timestamp, 0)
693
+    timeFormat := tempTime.Format("20060102150405")
694
+    timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
695
+    randNum := rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)
696
+
697
+    // 生成输入报文
698
+    inputMessage := make(map[string]interface{})
699
+
700
+    inputMessage["infno"] = "1101"                                                                        // 交易编码
701
+    inputMessage["msgid"] = FixmedinsCOde + timeFormat + strconv.FormatInt(int64(randNum),10)             // 发送方报文 ID
702
+    inputMessage["mdtrtarea_admvs"] = "440200"                                                            // 就医地医保区划
703
+    inputMessage["insuplc_admdvs"] = "440200"                                                             // 参保地医保区划
704
+    inputMessage["recer_sys_code"] = "01"                                                                 // 接收方系统代码
705
+    inputMessage["dev_no"] = ""                                                                           // 设备编号
706
+    inputMessage["dev_safe_info"] = ""                                                                    // 设备安全信息
707
+    inputMessage["cainfo"] = ""                                                                           // 数字签名信息
708
+    inputMessage["signtype"] = ""                                                                         // 签名类型
709
+    inputMessage["infver"] = "V1.1"                                                                       // 接收方系统代码
710
+    inputMessage["opter_type"] = "1"                                                                      // 经办人类别
711
+    inputMessage["opter"] = "mockuser"                                                                    // 经办人
712
+    inputMessage["opter_name"] = "测试用户"                                                                // 经办人姓名
713
+    inputMessage["inf_time"] = timeFormatOne                                                              // 交易时间
714
+    inputMessage["fixmedins_code"] = FixmedinsCOde                                                        // 定点医药机构编号
715
+    inputMessage["fixmedins_name"] = "翁源百伦血液透析有限公司透析中心"            //定点医药机构名称
716
+    inputMessage["sign_no"] = ""            //交易签到流水号
717
+    return inputMessage
718
+}