123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718 |
- package service
-
- import (
- "time"
- "net/http"
- "encoding/json"
- "fmt"
- "bytes"
- "io/ioutil"
- _"unsafe"
- "math/rand"
- "crypto/sha256"
- "encoding/hex"
- "strconv"
- )
-
- const (
- SceretKey = "RhaDw4H0RUbWYyTxmRKM1eSeN0qyGLds" // secretKey 私钥
- FixmedinsCOde = "H44022900214" // 定点医药机构编号
- )
-
- // 人员基本信息
- func Gdyb1101(certNo string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "1101" // 交易编码
- inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
- inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
- inputData["card_sn"] = "" // 卡识别码
- inputData["begntime"] = "" // 开始时间
- inputData["psn_cert_type"] = "" // 人员证件类型
- inputData["certno"] = "" // 证件号码
- inputData["psn_name"] = "" // 人员姓名
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/1101"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊挂号
- func Gdyb2201(psnNo string,insutype string,certNo string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
- tempTime := time.Unix(timestamp, 0)
- timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "2201" // 交易编码
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- inputData["insutype"] = insutype // 险种类型(来自1101接口返回)
- inputData["begntime"] = timeFormatOne // 开始时间
- inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
- inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
- inputData["ipt_otp_no"] = "10000110" // 住院/门诊号
- inputData["atddr_no"] = "1002" // 医师编码
- inputData["dr_name"] = "刘志刚" // 医师姓名
- inputData["dept_code"] = "3002" // 科室编码
- inputData["dept_name"] = "血透中心" // 科室名称
- inputData["caty"] = "A03.06" // 科别
-
-
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2201"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊挂号撤销
- func Gdyb2202(psnNo string,mdtrtId string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "2202" // 交易编码
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- inputData["ipt_otp_no"] = "10000110" // 住院/门诊号
-
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2202"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊就诊信息上传
- func Gdyb2203(psnNo string,mdtrtId string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
- tempTime := time.Unix(timestamp, 0)
- timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- diseinfo := make([]map[string]interface{},0)
-
- inputMessage["infno"] = "2203" // 交易编码
- inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- inputData["med_type"] = "11" // 医疗类别
- inputData["begntime"] = timeFormatOne // 开始时间
- inputData["main_cond_dscr"] = "" // 主要病情描述
- inputData["dise_codg"] = "" // 病种编码
- inputData["dise_name"] = "" // 病种名称
- inputData["birctrl_type"] = "" // 计划生育手术类别
- inputData["birctrl_matn_date"] = "" // 计划生育手术或生育日期
-
- diseinfo_sun := make(map[string]interface{})
- diseinfo_sun["diag_type"] = "1" // 诊断类别
- diseinfo_sun["diag_srt_no"] = "1" // 诊断排序号
- diseinfo_sun["diag_code"] = "A04.902" // 诊断代码
- diseinfo_sun["diag_name"] = "细菌性腹泻" // 诊断名称
- diseinfo_sun["diag_dept"] = "肾内科" // 诊断科室
- diseinfo_sun["dise_dor_no"] = "1002" // 诊断医生编码
- diseinfo_sun["dise_dor_name"] = "马桂平" // 诊断医生姓名
- diseinfo_sun["diag_time"] = timeFormatOne // 诊断时间
- diseinfo_sun["vali_flag"] = "1" // 有效标志
-
- diseinfo = append(diseinfo,diseinfo_sun)
- input["diseinfo"] = diseinfo
- input["mdtrtinfo"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2203"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊费用明细信息上传
- func Gdyb2204(psnNo string,mdtrtId string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
- tempTime := time.Unix(timestamp, 0)
- timeFormat := tempTime.Format("20060102150405")
- timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
- chrgBchno := rand.Intn(100000)+10000
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- feedetail := make([]map[string]interface{},0)
- feedetailInfo := make(map[string]interface{})
- inputMessage["infno"] = "2204" // 交易编码
- var randNum int
-
- randNum = rand.Intn(10000)+1000
- feedetailInfo["feedetl_sn"] = timeFormat + strconv.FormatInt(int64(randNum),10) // 费用明细流水号
- feedetailInfo["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- feedetailInfo["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- feedetailInfo["chrg_bchno"] = timeFormat + strconv.FormatInt(int64(chrgBchno),10) // 收费批次号
- feedetailInfo["dise_codg"] = "" // 病种编码
- feedetailInfo["rxno"] = "" // 处方号
- feedetailInfo["rx_circ_flag"] = "0" // 外购处方标志
- feedetailInfo["fee_ocur_time"] = timeFormatOne // 费用发生时间
- feedetailInfo["med_list_codg"] = "XN05AEQ010B001010101435" // 医疗目录编码
- feedetailInfo["medins_list_codg"] = FixmedinsCOde // 医药机构目录编码
- feedetailInfo["det_item_fee_sumamt"] = "10.00" // 明细项目费用总额
- feedetailInfo["cnt"] = "1" // 数量
- feedetailInfo["pric"] = "10.00" // 单价
- feedetailInfo["sin_dos_dscr"] = "" // 单次剂量描述
- feedetailInfo["used_frqu_dscr"] = "" // 使用频次描述
- feedetailInfo["prd_days"] = "0" // 周期天数
- feedetailInfo["medc_way_dscr"] = "" // 用药途径描述
- feedetailInfo["bilg_dept_codg"] = "3002" // 开单科室编码
- feedetailInfo["bilg_dept_name"] = "血透中心" // 开单科室名称
- feedetailInfo["bilg_dr_codg"] = "1002" // 开单医生编码
- feedetailInfo["bilg_dr_name"] = "刘志刚" // 开单医师姓名
- feedetailInfo["acord_dept_codg"] = "" // 受单科室编码
- feedetailInfo["acord_dept_name"] = "" // 受单科室名称
- feedetailInfo["orders_dr_code"] = "" // 受单医生编码
- feedetailInfo["orders_dr_name"] = "" // 受单医生姓名
- feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
- feedetailInfo["tcmdrug_used_way"] = "" // 中药使用方式
- feedetailInfo["etip_flag"] = "" // 外检标志
- feedetailInfo["etip_hosp_code"] = "" // 外检医院编码
- feedetailInfo["dscg_tkdrug_flag"] = "" // 出院带药标志
- feedetailInfo["matn_fee_flag"] = "" // 生育费用标志
-
- feedetail = append(feedetail,feedetailInfo)
- feedetailInfo1 := make(map[string]interface{})
- randNum = rand.Intn(10000)+1000
- feedetailInfo1["feedetl_sn"] = timeFormat + strconv.FormatInt(int64(randNum),10) // 费用明细流水号
- feedetailInfo1["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- feedetailInfo1["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- feedetailInfo1["chrg_bchno"] = timeFormat + strconv.FormatInt(int64(chrgBchno),10) // 收费批次号
- feedetailInfo1["dise_codg"] = "" // 病种编码
- feedetailInfo1["rxno"] = "" // 处方号
- feedetailInfo1["rx_circ_flag"] = "0" // 外购处方标志
- feedetailInfo1["fee_ocur_time"] = timeFormatOne // 费用发生时间
- feedetailInfo1["med_list_codg"] = "ZA01AAJ0628010100974" // 医疗目录编码
- feedetailInfo1["medins_list_codg"] = FixmedinsCOde // 医药机构目录编码
- feedetailInfo1["det_item_fee_sumamt"] = "10.00" // 明细项目费用总额
- feedetailInfo1["cnt"] = "1" // 数量
- feedetailInfo1["pric"] = "10.00" // 单价
- feedetailInfo1["sin_dos_dscr"] = "" // 单次剂量描述
- feedetailInfo1["used_frqu_dscr"] = "" // 使用频次描述
- feedetailInfo1["prd_days"] = "0" // 周期天数
- feedetailInfo1["medc_way_dscr"] = "" // 用药途径描述
- feedetailInfo1["bilg_dept_codg"] = "3002" // 开单科室编码
- feedetailInfo1["bilg_dept_name"] = "血透中心" // 开单科室名称
- feedetailInfo1["bilg_dr_codg"] = "1002" // 开单医生编码
- feedetailInfo1["bilg_dr_name"] = "刘志刚" // 开单医师姓名
- feedetailInfo1["acord_dept_codg"] = "" // 受单科室编码
- feedetailInfo1["acord_dept_name"] = "" // 受单科室名称
- feedetailInfo1["orders_dr_code"] = "" // 受单医生编码
- feedetailInfo1["orders_dr_name"] = "" // 受单医生姓名
- feedetailInfo1["hosp_appr_flag"] = "1" // 医院审批标志
- feedetailInfo1["tcmdrug_used_way"] = "" // 中药使用方式
- feedetailInfo1["etip_flag"] = "" // 外检标志
- feedetailInfo1["etip_hosp_code"] = "" // 外检医院编码
- feedetailInfo1["dscg_tkdrug_flag"] = "" // 出院带药标志
- feedetailInfo1["matn_fee_flag"] = "" // 生育费用标志
-
- feedetail = append(feedetail,feedetailInfo1)
-
- input["feedetail"] = feedetail
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2204"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊费用明细信息撤销
- func Gdyb2205(psnNo string,mdtrtId string,chrgBchno string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
-
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "2205" // 交易编码
-
- inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
-
-
-
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2205"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊预结算
- func Gdyb2206(psnNo string,mdtrtId string,chrgBchno string,certNo string,insutype string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
-
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "2206" // 交易编码
-
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
- inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
- inputData["med_type"] = "11" // 医疗类别 11 普通门诊 12 门诊挂号
- inputData["medfee_sumamt"] = "99.00" // 医疗费总额
- inputData["psn_setlway"] = "01" // 个人结算方式 01 按项目结 02 按定额结算
- inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
- inputData["acct_used_flag"] = "1" // 个人账户使用标志 0否 1是
- inputData["insutype"] = insutype // 险种类型
-
-
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2206"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊结算
- func Gdyb2207(psnNo string,mdtrtId string,chrgBchno string,certNo string,insutype string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
-
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "2207" // 交易编码
-
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
- inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
- inputData["med_type"] = "11" // 医疗类别 11 普通门诊 12 门诊挂号
- inputData["medfee_sumamt"] = "99.00" // 医疗费总额
- inputData["psn_setlway"] = "01" // 个人结算方式 01 按项目结 02 按定额结算
- inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
- inputData["acct_used_flag"] = "1" // 个人账户使用标志 0否 1是
- inputData["insutype"] = insutype // 险种类型
- inputData["invono"] = "" // 发票号
-
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2207"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
- // 门诊结算撤销
- func Gdyb2208(psnNo string,mdtrtId string,setlId string) (string) {
- // 生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- signature := setSignature(timestamp,nonce)
-
-
- // 生成输入报文
- inputMessage := SetInputMessage(nonce,timestamp)
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "2208" // 交易编码
-
- inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
- inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
- inputData["setl_id"] = setlId // 结算 ID
-
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- bytesData, err := json.Marshal(inputMessage)
- fmt.Println(string(bytesData))
- if err != nil {
- fmt.Println(err.Error() )
- return err.Error()
- }
- reader := bytes.NewReader(bytesData)
-
- url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2208"
- request, err := http.NewRequest("POST", url, reader)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
-
- request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- request.Header.Set("x-tif-paasid", "test_hosp")
- request.Header.Set("x-tif-signature", signature)
- request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp,10))
- request.Header.Set("x-tif-nonce", nonce)
-
- client := http.Client{}
- resp, err := client.Do(request)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- respBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err.Error())
- return err.Error()
- }
- str := string(respBytes)
- fmt.Println(str)
- return str
- }
-
-
- // 生成签名
- func setSignature(timestamp int64, nonce string) string {
- str := strconv.FormatInt(timestamp,10) + SceretKey + nonce + strconv.FormatInt(timestamp,10)
- hash := sha256.New()
- //输入数据
- hash.Write([]byte(str))
- //计算哈希值
- bytes := hash.Sum(nil)
- //将字符串编码为16进制格式,返回字符串
- hashCode := hex.EncodeToString(bytes)
- //返回哈希值
- return hashCode
- }
-
- // 生成随机字符串
- func GetRandomString(l int) string {
- str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- bytes := []byte(str)
- result := []byte{}
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
- for i := 0; i < l; i++ {
- result = append(result, bytes[r.Intn(len(bytes))])
- }
- return string(result)
- }
-
- // 生成基础报文
- func SetInputMessage(nonce string,timestamp int64) (map[string]interface{}) {
- // 生成签名
- tempTime := time.Unix(timestamp, 0)
- timeFormat := tempTime.Format("20060102150405")
- timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
- randNum := rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)
-
- // 生成输入报文
- inputMessage := make(map[string]interface{})
-
- inputMessage["infno"] = "1101" // 交易编码
- inputMessage["msgid"] = FixmedinsCOde + timeFormat + strconv.FormatInt(int64(randNum),10) // 发送方报文 ID
- inputMessage["mdtrtarea_admvs"] = "440200" // 就医地医保区划
- inputMessage["insuplc_admdvs"] = "440200" // 参保地医保区划
- inputMessage["recer_sys_code"] = "01" // 接收方系统代码
- inputMessage["dev_no"] = "" // 设备编号
- inputMessage["dev_safe_info"] = "" // 设备安全信息
- inputMessage["cainfo"] = "" // 数字签名信息
- inputMessage["signtype"] = "" // 签名类型
- inputMessage["infver"] = "V1.1" // 接收方系统代码
- inputMessage["opter_type"] = "1" // 经办人类别
- inputMessage["opter"] = "mockuser" // 经办人
- inputMessage["opter_name"] = "测试用户" // 经办人姓名
- inputMessage["inf_time"] = timeFormatOne // 交易时间
- inputMessage["fixmedins_code"] = FixmedinsCOde // 定点医药机构编号
- inputMessage["fixmedins_name"] = "翁源百伦血液透析有限公司透析中心" //定点医药机构名称
- inputMessage["sign_no"] = "" //交易签到流水号
- return inputMessage
- }
|