jx_service.go 92KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861
  1. package service
  2. import (
  3. //"bytes"
  4. "encoding/json"
  5. "fmt"
  6. "gdyb/models"
  7. "gdyb/utils/csbhttp"
  8. //"net/http"
  9. "strconv"
  10. "time"
  11. )
  12. // 人员基本信息
  13. func Jxyb1101(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, card_sn string, certificates string, request_url string, access_key string, cainfo string) (string, string) {
  14. timestamp := time.Now().Unix()
  15. //生成输入报文
  16. inputMessage := SetJSInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  17. input := make(map[string]interface{})
  18. inputData := make(map[string]interface{})
  19. inputMessage["infno"] = "1101" // 交易编码
  20. if certificates == "3" {
  21. inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
  22. inputData["certno"] = certNo // 证件号码
  23. inputData["psn_cert_type"] = "99" // 人员证件类型
  24. } else {
  25. if id_card_type == 1 {
  26. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  27. inputData["card_sn"] = card_sn // 卡识别码
  28. inputData["certno"] = certNo // 证件号码
  29. inputData["psn_cert_type"] = "01" // 人员证件类型
  30. } else {
  31. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  32. inputData["card_sn"] = "" // 卡识别码
  33. inputData["certno"] = certNo // 证件号码
  34. inputData["psn_cert_type"] = "01" // 人员证件类型
  35. }
  36. }
  37. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  38. inputData["begntime"] = "" // 开始时间
  39. inputData["psn_name"] = "" // 人员姓名
  40. input["data"] = inputData
  41. inputMessage["input"] = input //交易输入
  42. var inputLog string
  43. bytesData, _ := json.Marshal(inputMessage)
  44. inputLog = string(bytesData)
  45. fmt.Println(string(bytesData))
  46. if err != nil {
  47. fmt.Println(err.Error())
  48. return err.Error(), ""
  49. }
  50. request_url = request_url + "1101"
  51. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "1101"), inputLog
  52. }
  53. //人员基本信息版本2
  54. func Jxyb1101A(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, card_sn string, certificates string, request_url string, access_key string, pBusiCardInfo string, id_card_no string, cainfo string) (string, string) {
  55. timestamp := time.Now().Unix()
  56. //生成输入报文
  57. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  58. input := make(map[string]interface{})
  59. inputData := make(map[string]interface{})
  60. inputMessage["infno"] = "1101" // 交易编码
  61. if certificates == "3" {
  62. inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
  63. inputData["certno"] = certNo // 证件号码
  64. inputData["psn_cert_type"] = "99" // 人员证件类型
  65. } else {
  66. if id_card_type == 1 {
  67. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  68. inputData["card_sn"] = card_sn // 卡识别码
  69. inputData["certno"] = id_card_no // 证件号码
  70. inputData["psn_cert_type"] = "01" // 人员证件类型
  71. } else {
  72. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  73. inputData["card_sn"] = "" // 卡识别码
  74. inputData["certno"] = certNo // 证件号码
  75. inputData["psn_cert_type"] = "01" // 人员证件类型
  76. }
  77. }
  78. inputData["mdtrt_cert_no"] = certNo + "|" + pBusiCardInfo // 就诊凭证编号
  79. inputData["begntime"] = "" // 开始时间
  80. inputData["psn_name"] = "" // 人员姓名
  81. input["data"] = inputData
  82. inputMessage["input"] = input //交易输入
  83. var inputLog string
  84. bytesData, _ := json.Marshal(inputMessage)
  85. inputLog = string(bytesData)
  86. fmt.Println(string(bytesData))
  87. if err != nil {
  88. fmt.Println(err.Error())
  89. return err.Error(), ""
  90. }
  91. request_url = request_url + "1101"
  92. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "1101"), inputLog
  93. }
  94. func Jxyb1101B(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, request_url string, access_key string, Token string, cainfo string, id_card_no string) (string, string) {
  95. timestamp := time.Now().Unix()
  96. //生成输入报文
  97. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  98. input := make(map[string]interface{})
  99. inputData := make(map[string]interface{})
  100. inputMessage["infno"] = "1101" // 交易编码
  101. inputData["mdtrt_cert_type"] = "04" // 就诊凭证类型
  102. inputData["card_sn"] = "" // 卡识别码
  103. inputData["certno"] = "" // 证件号码
  104. inputData["psn_cert_type"] = "01" // 人员证件类型
  105. inputData["mdtrt_cert_no"] = id_card_no + "|" + Token // 就诊凭证编号
  106. inputData["begntime"] = "" // 开始时间
  107. inputData["psn_name"] = "" // 人员姓名
  108. input["data"] = inputData
  109. inputMessage["input"] = input //交易输入
  110. var inputLog string
  111. bytesData, _ := json.Marshal(inputMessage)
  112. inputLog = string(bytesData)
  113. fmt.Println(string(bytesData))
  114. if err != nil {
  115. fmt.Println(err.Error())
  116. return err.Error(), ""
  117. }
  118. request_url = request_url + "1101"
  119. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "1101"), inputLog
  120. }
  121. func Jxyb1101ForEleCert(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, request_url string, access_key string, Token string, cainfo string, id_card_no string, name string) (string, string) {
  122. timestamp := time.Now().Unix()
  123. //生成输入报文
  124. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  125. input := make(map[string]interface{})
  126. inputData := make(map[string]interface{})
  127. inputMessage["infno"] = "1101" // 交易编码
  128. inputData["mdtrt_cert_type"] = "01" // 就诊凭证类型
  129. inputData["card_sn"] = "" // 卡识别码
  130. inputData["certno"] = id_card_no // 证件号码
  131. inputData["psn_cert_type"] = "01" // 人员证件类型
  132. inputData["mdtrt_cert_no"] = Token // 就诊凭证编号
  133. inputData["begntime"] = "" // 开始时间
  134. inputData["psn_name"] = name // 人员姓名
  135. input["data"] = inputData
  136. inputMessage["input"] = input //交易输入
  137. var inputLog string
  138. bytesData, _ := json.Marshal(inputMessage)
  139. inputLog = string(bytesData)
  140. fmt.Println(string(bytesData))
  141. if err != nil {
  142. fmt.Println(err.Error())
  143. return err.Error(), ""
  144. }
  145. request_url = request_url + "1101"
  146. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "1101"), inputLog
  147. }
  148. // 门诊挂号
  149. func Jxyb2201(psnNo string, insutype string, certNo string, org_name string, opera string, ipt_otp_no string, dept string, fixmedins_code string, dept_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, doctor_name string, request_url string, access_key string, verify_number string, cainfo string) (string, string) {
  150. fmt.Println(opera)
  151. // 生成签名
  152. timestamp := time.Now().Unix()
  153. tempTime := time.Unix(timestamp, 0)
  154. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  155. // 生成输入报文
  156. inputMessage := SetJXInputMessage(timestamp, org_name, opera, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  157. input := make(map[string]interface{})
  158. inputData := make(map[string]interface{})
  159. inputMessage["infno"] = "2201" // 交易编码
  160. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  161. inputData["insutype"] = insutype // 险种类型(来自1101接口返回)
  162. inputData["begntime"] = timeFormatOne // 开始时间
  163. if id_card_type == 1 {
  164. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  165. inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
  166. } else if id_card_type == 3 {
  167. inputData["mdtrt_cert_type"] = "04" // 就诊凭证类型
  168. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  169. } else if id_card_type == 4 {
  170. inputData["mdtrt_cert_type"] = "01" // 就诊凭证类型
  171. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  172. } else {
  173. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  174. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  175. }
  176. inputData["ipt_otp_no"] = ipt_otp_no // 住院/门诊号
  177. inputData["atddr_no"] = doctor_id // 医师编码
  178. inputData["dr_name"] = doctor_name // 医师姓名
  179. inputData["dept_code"] = dept_code // 科室编码
  180. inputData["dept_name"] = dept // 科室名称
  181. inputData["caty"] = "A03.06" // 科别
  182. inputData["exp_content"] = "" //
  183. input["data"] = inputData
  184. inputMessage["input"] = input //交易输入
  185. var requestLog string
  186. bytesData, err := json.Marshal(inputMessage)
  187. requestLog = string(bytesData)
  188. fmt.Println(string(bytesData))
  189. if err != nil {
  190. fmt.Println(err.Error())
  191. return err.Error(), ""
  192. }
  193. request_url = request_url + "2201"
  194. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2201"), requestLog
  195. }
  196. // 门诊挂号撤销
  197. func Jxyb2202(psnNo string, mdtrtId string, ipt_otp_no string, org_name string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, fixmedins_code string, request_url string, access_key string, cainfo string) (string, string) {
  198. // 生成签名
  199. timestamp := time.Now().Unix()
  200. // 生成输入报文
  201. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  202. input := make(map[string]interface{})
  203. inputData := make(map[string]interface{})
  204. inputMessage["infno"] = "2202" // 交易编码
  205. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  206. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  207. inputData["ipt_otp_no"] = ipt_otp_no // 住院/门诊号
  208. //inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
  209. inputData["exp_content"] = "" //
  210. input["data"] = inputData
  211. inputMessage["input"] = input //交易输入
  212. var requestLog string
  213. bytesData, err := json.Marshal(inputMessage)
  214. fmt.Println(string(bytesData))
  215. requestLog = string(bytesData)
  216. if err != nil {
  217. fmt.Println(err.Error())
  218. return err.Error(), ""
  219. }
  220. request_url = request_url + "2202"
  221. //fmt.Println(HttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)))
  222. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2202"), requestLog
  223. }
  224. // 门诊就诊信息上传
  225. func Jxyb2203(psnNo string, mdtrtId string, doctor string, department string, org_name string, med_type string, doctor_id string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_code string, sick_name string, dept string, config []*models.HisXtDiagnoseConfig, request_url string, access_key string, begin_time string, cainfo string) (string, string, int64) {
  226. // 生成签名
  227. timestamp := time.Now().Unix()
  228. tempTime := time.Unix(timestamp, 0)
  229. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  230. // 生成输入报文
  231. inputMessage := SetJXInputMessage(timestamp, org_name, dept, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  232. input := make(map[string]interface{})
  233. inputData := make(map[string]interface{})
  234. diseinfo := make([]map[string]interface{}, 0)
  235. if med_type == "1111" || med_type == "1112" {
  236. med_type = "11"
  237. }
  238. inputMessage["infno"] = "2203" // 交易编码
  239. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  240. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  241. inputData["med_type"] = med_type // 医疗类别 16门诊特殊病
  242. inputData["begntime"] = begin_time // 开始时间
  243. inputData["main_cond_dscr"] = "" // 主要病情描述
  244. inputData["dise_codg"] = sick_code // 病种编码
  245. inputData["dise_name"] = sick_name // 病种名称
  246. inputData["birctrl_type"] = "" // 计划生育手术类别
  247. inputData["birctrl_matn_date"] = "" // 计划生育手术或生育日期
  248. for index, item := range config {
  249. diseinfo_sun := make(map[string]interface{})
  250. diseinfo_sun["diag_type"] = "1" // 诊断类别
  251. diseinfo_sun["diag_srt_no"] = index // 诊断排序号
  252. diseinfo_sun["diag_code"] = item.CountryCode // 诊断代码
  253. diseinfo_sun["diag_name"] = item.ClassName // 诊断名称
  254. diseinfo_sun["diag_dept"] = department // 诊断科室
  255. diseinfo_sun["dise_dor_no"] = doctor_id // 诊断医生编码
  256. diseinfo_sun["dise_dor_name"] = doctor // 诊断医生姓名
  257. diseinfo_sun["diag_time"] = timeFormatOne // 诊断时间
  258. diseinfo_sun["vali_flag"] = "1" // 有效标志
  259. diseinfo = append(diseinfo, diseinfo_sun)
  260. }
  261. //inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
  262. inputData["exp_content"] = "" //
  263. input["diseinfo"] = diseinfo
  264. input["mdtrtinfo"] = inputData
  265. inputMessage["input"] = input //交易输入
  266. var requestLog string
  267. bytesData, err := json.Marshal(inputMessage)
  268. fmt.Println(string(bytesData))
  269. requestLog = string(bytesData)
  270. if err != nil {
  271. fmt.Println(err.Error())
  272. return err.Error(), "", 0
  273. }
  274. request_url = request_url + "2203"
  275. //fmt.Println(HttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)))
  276. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2203"), requestLog, timestamp
  277. }
  278. // 门诊就诊信息上传
  279. func Jxyb2203A(psnNo string, mdtrtId string, doctor string, department string, org_name string, med_type string, doctor_id string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_code string, sick_name string, dept string, config []*models.HisXtDiagnoseConfig, request_url string, access_key string, cainfo string) (string, string) {
  280. // 生成签名
  281. timestamp := time.Now().Unix()
  282. tempTime := time.Unix(timestamp, 0)
  283. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  284. // 生成输入报文
  285. inputMessage := SetJXInputMessage(timestamp, org_name, dept, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  286. input := make(map[string]interface{})
  287. inputData := make(map[string]interface{})
  288. diseinfo := make([]map[string]interface{}, 0)
  289. if med_type == "1111" || med_type == "1112" {
  290. med_type = "11"
  291. }
  292. inputMessage["infno"] = "2203" // 交易编码
  293. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  294. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  295. inputData["med_type"] = med_type // 医疗类别 16门诊特殊病
  296. inputData["begntime"] = timeFormatOne // 开始时间
  297. inputData["main_cond_dscr"] = "" // 主要病情描述
  298. inputData["dise_codg"] = sick_code // 病种编码
  299. inputData["dise_name"] = sick_name // 病种名称
  300. inputData["birctrl_type"] = "" // 计划生育手术类别
  301. inputData["birctrl_matn_date"] = "" // 计划生育手术或生育日期
  302. inputData["matn_type"] = "" // 生育类别
  303. inputData["geso_val"] = "" // 孕周数
  304. for index, item := range config {
  305. diseinfo_sun := make(map[string]interface{})
  306. diseinfo_sun["diag_type"] = "1" // 诊断类别
  307. diseinfo_sun["diag_srt_no"] = index // 诊断排序号
  308. diseinfo_sun["diag_code"] = item.CountryCode // 诊断代码
  309. diseinfo_sun["diag_name"] = item.ClassName // 诊断名称
  310. diseinfo_sun["diag_dept"] = department // 诊断科室
  311. diseinfo_sun["dise_dor_no"] = doctor_id // 诊断医生编码
  312. diseinfo_sun["dise_dor_name"] = doctor // 诊断医生姓名
  313. diseinfo_sun["diag_time"] = timeFormatOne // 诊断时间
  314. diseinfo_sun["vali_flag"] = "1" // 有效标志
  315. diseinfo = append(diseinfo, diseinfo_sun)
  316. }
  317. input["diseinfo"] = diseinfo
  318. input["mdtrtinfo"] = inputData
  319. inputMessage["input"] = input //交易输入
  320. var requestLog string
  321. bytesData, err := json.Marshal(inputMessage)
  322. fmt.Println(string(bytesData))
  323. requestLog = string(bytesData)
  324. if err != nil {
  325. fmt.Println(err.Error())
  326. return err.Error(), ""
  327. }
  328. request_url = request_url + "2203A"
  329. //fmt.Println(HttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)))
  330. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2203"), requestLog
  331. }
  332. // 门诊费用明细信息上传
  333. func Jxyb2204(psnNo string, mdtrtId string, hisPrescription []*models.HisPrescription, chrg_bchno string, org_name string, doctor string, dept string, fixmedins_code string, dept_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, balance_accounts_type string, diag_code string, request_url string, access_key string, new_doctor_name string, time_stamp_2203 string, cainfo string) (string, string) {
  334. // 生成签名
  335. //timestamp := time.Now().Unix()
  336. timestamp := time.Now().Unix()
  337. timestamp2 := time.Now().Unix()
  338. //tempTime := time.Unix(timestamp2, 0)
  339. //timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  340. var customs []*Custom
  341. for _, item := range hisPrescription {
  342. tm := time.Unix(item.PreTime, 0)
  343. if item.Type == 1 { //药品
  344. for _, subItem := range item.HisDoctorAdviceInfo {
  345. if len(subItem.BaseDrugLib.MedicalInsuranceNumber) > 0 {
  346. //var randNum int
  347. //randNum = rand.Intn(10000) + 1000
  348. cus := &Custom{
  349. DetItemFeeSumamt: fmt.Sprintf("%.4f", subItem.Price*subItem.PrescribingNumber),
  350. Cut: fmt.Sprintf("%.4f", subItem.PrescribingNumber),
  351. FeedetlSn: subItem.FeedetlSn,
  352. Price: fmt.Sprintf("%.4f", subItem.Price),
  353. MedListCodg: subItem.BaseDrugLib.MedicalInsuranceNumber,
  354. HospApprFlag: subItem.HospApprFlag,
  355. DoctorNumber: doctor_id,
  356. DoctorName: new_doctor_name,
  357. ProvinceDrugMedListCodg: "",
  358. ProvinceGoodMedListCodg: "",
  359. FeeOcurTime: tm.Format("2006-01-02 15:04:05"),
  360. }
  361. if subItem.BaseDrugLib.DrugClassify == "2" {
  362. cus.ProvinceDrugMedListCodg = subItem.BaseDrugLib.ProvincesCode
  363. }
  364. customs = append(customs, cus)
  365. }
  366. }
  367. }
  368. if item.Type == 2 { //项目
  369. for _, subItem := range item.HisPrescriptionProject {
  370. //var randNum int
  371. //randNum = rand.Intn(10000) + 1000
  372. if subItem.Type == 2 {
  373. if len(subItem.HisProject.MedicalCode) > 0 {
  374. cnt, _ := strconv.ParseFloat(subItem.Count, 64)
  375. cus := &Custom{
  376. DetItemFeeSumamt: fmt.Sprintf("%.4f", subItem.Price*cnt),
  377. Cut: fmt.Sprintf("%.4f", cnt),
  378. FeedetlSn: subItem.FeedetlSn,
  379. Price: fmt.Sprintf("%.4f", float64(subItem.Price)),
  380. MedListCodg: subItem.HisProject.MedicalCode,
  381. DoctorNumber: doctor_id,
  382. DoctorName: new_doctor_name,
  383. HospApprFlag: -1,
  384. ProvinceDrugMedListCodg: "",
  385. ProvinceGoodMedListCodg: "",
  386. FeeOcurTime: tm.Format("2006-01-02 15:04:05"),
  387. }
  388. customs = append(customs, cus)
  389. }
  390. } else if subItem.Type == 3 {
  391. if len(subItem.GoodInfo.MedicalInsuranceNumber) > 0 {
  392. cnt, _ := strconv.ParseFloat(subItem.Count, 64)
  393. cus := &Custom{
  394. DetItemFeeSumamt: fmt.Sprintf("%.4f", subItem.Price*cnt),
  395. Cut: fmt.Sprintf("%.4f", cnt),
  396. FeedetlSn: subItem.FeedetlSn,
  397. Price: fmt.Sprintf("%.4f", float64(subItem.Price)),
  398. MedListCodg: subItem.GoodInfo.MedicalInsuranceNumber,
  399. HospApprFlag: -1,
  400. DoctorNumber: doctor_id,
  401. DoctorName: new_doctor_name,
  402. ProvinceDrugMedListCodg: "",
  403. ProvinceGoodMedListCodg: subItem.GoodInfo.ProvincesCode,
  404. FeeOcurTime: tm.Format("2006-01-02 15:04:05"),
  405. }
  406. customs = append(customs, cus)
  407. }
  408. }
  409. }
  410. }
  411. for _, subItem := range item.HisAdditionalCharge {
  412. if len(subItem.XtHisAddtionConfig.Code) > 0 {
  413. cus := &Custom{
  414. DetItemFeeSumamt: fmt.Sprintf("%.4f", subItem.Price*float64(subItem.Count)),
  415. Cut: fmt.Sprintf("%.4f", float64(subItem.Count)),
  416. FeedetlSn: subItem.FeedetlSn,
  417. Price: fmt.Sprintf("%.4f", float64(subItem.Price)),
  418. MedListCodg: subItem.XtHisAddtionConfig.Code,
  419. HospApprFlag: -1,
  420. DoctorNumber: doctor_id,
  421. DoctorName: new_doctor_name,
  422. }
  423. customs = append(customs, cus)
  424. }
  425. }
  426. }
  427. // 生成输入报文
  428. inputMessage := SetJXInputMessage(timestamp2, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  429. input := make(map[string]interface{})
  430. feedetail := make([]map[string]interface{}, 0)
  431. inputMessage["infno"] = "2204" // 交易编码
  432. //chrg_bchno := timeFormat + strconv.FormatInt(int64(chrgBchno), 10)
  433. for _, item := range customs {
  434. feedetailInfo := make(map[string]interface{})
  435. subfeedetailInfo := make(map[string]interface{})
  436. feedetailInfo["feedetl_sn"] = item.FeedetlSn
  437. feedetailInfo["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  438. feedetailInfo["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  439. feedetailInfo["chrg_bchno"] = chrg_bchno // 收费批次号
  440. feedetailInfo["dise_codg"] = diag_code // 病种编码
  441. feedetailInfo["rxno"] = "" // 处方号
  442. feedetailInfo["rx_circ_flag"] = "0" // 外购处方标志
  443. feedetailInfo["fee_ocur_time"] = item.FeeOcurTime // 费用发生时间
  444. feedetailInfo["med_list_codg"] = item.MedListCodg // 医疗目录编码
  445. feedetailInfo["medins_list_codg"] = fixmedins_code // 医药机构目录编码
  446. feedetailInfo["det_item_fee_sumamt"] = item.DetItemFeeSumamt // 明细项目费用总额
  447. feedetailInfo["cnt"] = item.Cut // 数量
  448. feedetailInfo["pric"] = item.Price // 单价
  449. feedetailInfo["sin_dos_dscr"] = "" // 单次剂量描述
  450. feedetailInfo["used_frqu_dscr"] = "" // 使用频次描述
  451. feedetailInfo["prd_days"] = "0" // 周期天数
  452. feedetailInfo["medc_way_dscr"] = "" // 用药途径描述
  453. feedetailInfo["bilg_dept_codg"] = dept_code // 开单科室编码
  454. feedetailInfo["bilg_dept_name"] = dept // 开单科室名称
  455. feedetailInfo["bilg_dr_codg"] = item.DoctorNumber // 开单医生编码
  456. feedetailInfo["bilg_dr_name"] = item.DoctorName // 开单医师姓名
  457. feedetailInfo["acord_dept_codg"] = "" // 受单科室编码
  458. feedetailInfo["acord_dept_name"] = "" // 受单科室名称
  459. feedetailInfo["orders_dr_code"] = "" // 受单医生编码
  460. feedetailInfo["orders_dr_name"] = "" // 受单医生姓名
  461. if balance_accounts_type == "8" {
  462. feedetailInfo["hosp_appr_flag"] = "2" // 医院审批标志
  463. } else {
  464. if item.HospApprFlag != -1 {
  465. if item.HospApprFlag == 1 {
  466. feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
  467. } else if item.HospApprFlag == 2 {
  468. feedetailInfo["hosp_appr_flag"] = "2" // 医院审批标志
  469. } else if item.HospApprFlag == 3 {
  470. feedetailInfo["hosp_appr_flag"] = "0" // 医院审批标志
  471. } else {
  472. feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
  473. }
  474. } else {
  475. feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
  476. }
  477. }
  478. feedetailInfo["tcmdrug_used_way"] = "" // 中药使用方式
  479. feedetailInfo["etip_flag"] = "" // 外检标志
  480. feedetailInfo["etip_hosp_code"] = "" // 外检医院编码
  481. feedetailInfo["dscg_tkdrug_flag"] = "" // 出院带药标志
  482. feedetailInfo["matn_fee_flag"] = "" // 生育费用标志
  483. subfeedetailInfo["tcmherb_prov_code"] = item.ProvinceDrugMedListCodg
  484. subfeedetailInfo["mcs_prov_code"] = item.ProvinceGoodMedListCodg
  485. feedetailInfo["exp_content"] = subfeedetailInfo
  486. feedetail = append(feedetail, feedetailInfo)
  487. }
  488. input["feedetail"] = feedetail
  489. inputMessage["input"] = input //交易输入
  490. var requestLog string
  491. bytesData, err := json.Marshal(inputMessage)
  492. requestLog = string(bytesData)
  493. fmt.Println(string(bytesData))
  494. if err != nil {
  495. fmt.Println(err.Error())
  496. return "", ""
  497. }
  498. request_url = request_url + "2204"
  499. //fmt.Println(JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)))
  500. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2204"), requestLog
  501. }
  502. // 门诊费用明细信息撤销
  503. func Jxyb2205(psnNo string, mdtrtId string, chrgBchno string, org_name string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, fixmedins_code string, request_url string, access_key string, cainfo string) (string, string) {
  504. timestamp := time.Now().Unix()
  505. // 生成输入报文
  506. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  507. input := make(map[string]interface{})
  508. inputData := make(map[string]interface{})
  509. inputMessage["infno"] = "2205" // 交易编码
  510. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  511. inputData["chrg_bchno"] = "0000" // 收费批次号(来自2204生成的)
  512. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  513. inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
  514. input["data"] = inputData
  515. inputMessage["input"] = input //交易输入
  516. bytesData, err := json.Marshal(inputMessage)
  517. fmt.Println(string(bytesData))
  518. var requestLog string
  519. requestLog = string(bytesData)
  520. if err != nil {
  521. fmt.Println(err.Error())
  522. return err.Error(), ""
  523. }
  524. request_url = request_url + "2205"
  525. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2205"), requestLog
  526. }
  527. // 门诊预结算
  528. func Jxyb2206(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, request_url string, access_key string, verify_number string, cainfo string) (string, string) {
  529. // 生成签名
  530. timestamp := time.Now().Unix() // inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  531. // inputData["mdtrt_cert_no"] = certNo
  532. // 生成输入报文
  533. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  534. input := make(map[string]interface{})
  535. inputData := make(map[string]interface{})
  536. inputMessage["infno"] = "2206" // 交易编码
  537. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  538. if certificates == 3 {
  539. inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
  540. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  541. } else {
  542. if id_card_type == 1 {
  543. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  544. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  545. } else if id_card_type == 3 {
  546. inputData["mdtrt_cert_type"] = "04" // 就诊凭证类型
  547. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  548. } else if id_card_type == 4 {
  549. inputData["mdtrt_cert_type"] = "01" // 就诊凭证类型
  550. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  551. } else {
  552. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  553. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  554. }
  555. }
  556. if insuplc_admdvs == "421300" {
  557. if med_type == "11" || med_type == "1112" || med_type == "1111" {
  558. inputData["med_type"] = "110104" // 医疗类别 11 普通门诊 12 门诊挂号
  559. } else if med_type == "14" {
  560. inputData["med_type"] = "140110" // 医疗类别 11 普通门诊 12 门诊挂号
  561. }
  562. } else {
  563. inputData["med_type"] = med_type // 医疗类别 11 普通门诊 12 门诊挂号
  564. }
  565. inputData["medfee_sumamt"] = total // 医疗费总额
  566. inputData["psn_setlway"] = "01" // 个人结算方式 01 按项目结 02 按定额结算
  567. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  568. inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
  569. inputData["acct_used_flag"] = "0" // 个人账户使用标志 0否 1是
  570. inputData["insutype"] = insutype // 险种类型
  571. inputData["invono"] = "" // 发票号
  572. inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
  573. input["data"] = inputData
  574. inputMessage["input"] = input //交易输入
  575. var requestLog string
  576. bytesData, err := json.Marshal(inputMessage)
  577. requestLog = string(bytesData)
  578. fmt.Println(string(bytesData))
  579. if err != nil {
  580. fmt.Println(err.Error())
  581. return err.Error(), ""
  582. }
  583. request_url = request_url + "2206"
  584. //fmt.Println(JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)))
  585. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2206"), requestLog
  586. }
  587. // 门诊结算
  588. func Jxyb2207(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, acct_used_flag string, request_url string, access_key string, verify_number string, cainfo string) (string, string) {
  589. // 生成签名
  590. timestamp := time.Now().Unix()
  591. // 生成输入报文
  592. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  593. input := make(map[string]interface{})
  594. inputData := make(map[string]interface{})
  595. inputMessage["infno"] = "2207" // 交易编码
  596. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  597. if id_card_type == 1 {
  598. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  599. inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
  600. } else if id_card_type == 3 {
  601. inputData["mdtrt_cert_type"] = "04" // 就诊凭证类型
  602. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  603. } else if id_card_type == 4 {
  604. inputData["mdtrt_cert_type"] = "01" // 就诊凭证类型
  605. inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
  606. } else {
  607. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  608. inputData["mdtrt_cert_no"] = certNo
  609. }
  610. if med_type == "1111" || med_type == "1112" {
  611. med_type = "11"
  612. }
  613. if insuplc_admdvs == "421300" {
  614. if med_type == "11" {
  615. inputData["med_type"] = "110104" // 医疗类别 11 普通门诊 12 门诊挂号
  616. } else if med_type == "14" {
  617. inputData["med_type"] = "140101" // 医疗类别 11 普通门诊 12 门诊挂号
  618. }
  619. } else {
  620. inputData["med_type"] = med_type // 医疗类别 11 普通门诊 12 门诊挂号
  621. }
  622. inputData["medfee_sumamt"] = total // 医疗费总额
  623. inputData["psn_setlway"] = "01" // 个人结算方式 01 按项目结 02 按定额结算
  624. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  625. inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
  626. inputData["acct_used_flag"] = acct_used_flag // 个人账户使用标志 0否 1是
  627. inputData["insutype"] = insutype // 险种类型
  628. inputData["invono"] = "" // 发票号
  629. inputData["fulamt_ownpay_amt"] = fulamt_ownpay_amt //
  630. inputData["overlmt_selfpay"] = overlmt_selfpay //
  631. inputData["preselfpay_amt"] = preselfpay_amt //
  632. inputData["inscp_scp_amt"] = inscp_scp_amt //
  633. inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
  634. input["data"] = inputData
  635. inputMessage["input"] = input //交易输入
  636. bytesData, err := json.Marshal(inputMessage)
  637. fmt.Println(string(bytesData))
  638. if err != nil {
  639. fmt.Println(err.Error())
  640. return err.Error(), ""
  641. }
  642. request_url = request_url + "2207"
  643. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2207"), string(bytesData)
  644. }
  645. func Jxyb2207A(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, acct_used_flag string, request_url string, access_key string, cainfo string) (string, string) {
  646. // 生成签名
  647. timestamp := time.Now().Unix()
  648. // 生成输入报文
  649. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  650. input := make(map[string]interface{})
  651. inputData := make(map[string]interface{})
  652. inputMessage["infno"] = "2207A" // 交易编码
  653. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  654. if certificates == 3 {
  655. inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
  656. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  657. } else {
  658. if id_card_type == 1 {
  659. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  660. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  661. } else {
  662. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  663. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  664. }
  665. }
  666. if med_type == "1111" || med_type == "1112" {
  667. med_type = "11"
  668. }
  669. if insuplc_admdvs == "421300" {
  670. if med_type == "11" {
  671. inputData["med_type"] = "110104" // 医疗类别 11 普通门诊 12 门诊挂号
  672. } else if med_type == "14" {
  673. inputData["med_type"] = "140101" // 医疗类别 11 普通门诊 12 门诊挂号
  674. }
  675. } else {
  676. inputData["med_type"] = med_type // 医疗类别 11 普通门诊 12 门诊挂号
  677. }
  678. inputData["medfee_sumamt"] = total // 医疗费总额
  679. inputData["psn_setlway"] = "01" // 个人结算方式 01 按项目结 02 按定额结算
  680. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  681. inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
  682. inputData["acct_used_flag"] = acct_used_flag // 个人账户使用标志 0否 1是
  683. inputData["insutype"] = insutype // 险种类型
  684. inputData["invono"] = "" // 发票号
  685. inputData["fulamt_ownpay_amt"] = fulamt_ownpay_amt //
  686. inputData["overlmt_selfpay"] = overlmt_selfpay //
  687. inputData["preselfpay_amt"] = preselfpay_amt //
  688. inputData["inscp_scp_amt"] = inscp_scp_amt //
  689. input["data"] = inputData
  690. inputMessage["input"] = input //交易输入
  691. bytesData, err := json.Marshal(inputMessage)
  692. fmt.Println(string(bytesData))
  693. if err != nil {
  694. fmt.Println(err.Error())
  695. return err.Error(), ""
  696. }
  697. request_url = request_url + "2207A"
  698. //fmt.Println(JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)))
  699. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2207A"), string(bytesData)
  700. }
  701. // 门诊结算撤销
  702. func Jxyb2208(psnNo string, mdtrtId string, setlId string, org_name string, doctor string, secret_key string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, request_url string, access_key string, cainfo string) (string, string) {
  703. timestamp := time.Now().Unix()
  704. // 生成输入报文
  705. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  706. input := make(map[string]interface{})
  707. inputData := make(map[string]interface{})
  708. inputMessage["infno"] = "2208" // 交易编码
  709. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  710. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  711. inputData["setl_id"] = setlId // 结算 ID
  712. inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
  713. input["data"] = inputData
  714. inputMessage["input"] = input //交易输入
  715. bytesData, err := json.Marshal(inputMessage)
  716. fmt.Println(string(bytesData))
  717. if err != nil {
  718. fmt.Println(err.Error())
  719. return err.Error(), ""
  720. }
  721. request_url = request_url + "2208"
  722. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2208"), string(bytesData)
  723. }
  724. func Jxyb5203(baseParams models.BaseParams, businessParams models.BusinessParams) (string, string) {
  725. timestamp := time.Now().Unix()
  726. // 生成输入报文
  727. inputMessage := SetJXInputMessage(timestamp, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs, baseParams.Cainfo)
  728. input := make(map[string]interface{})
  729. inputData := make(map[string]interface{})
  730. inputMessage["infno"] = "5203" // 交易编码
  731. inputData["psn_no"] = businessParams.PsnNo
  732. inputData["setl_id"] = businessParams.SetlId
  733. inputData["mdtrt_id"] = businessParams.MdtrtId
  734. input["data"] = inputData
  735. inputMessage["input"] = input //交易输入
  736. bytesData, err := json.Marshal(inputMessage)
  737. fmt.Println(string(bytesData))
  738. if err != nil {
  739. fmt.Println(err.Error())
  740. return err.Error(), ""
  741. }
  742. baseParams.RequestUrl = baseParams.RequestUrl + "5203"
  743. //fmt.Println(JXHttpRequest(baseParams.RequestUrl, baseParams.AccessKey, baseParams.SecretKey, timestamp, string(bytesData)))
  744. return JXHttpRequest(baseParams.RequestUrl, baseParams.AccessKey, baseParams.SecretKey, timestamp, string(bytesData), "5203"), string(bytesData)
  745. }
  746. //CBS总线
  747. func JXHttpRequest(url string, ak string, sk string, timestamp int64, json string, infno string) string {
  748. fmt.Println(url)
  749. //step 1. 设置请求参数
  750. csbHP := csbhttp.NewHttpParams(url) //设置请求地址及url参数
  751. //设置调用方式 get 或者 post
  752. csbHP.SetMethod("post")
  753. //设置 调用的服务名和版本
  754. csbHP.SetApi("hsa-fsi-" + infno)
  755. csbHP.SetVersion("1.0.0")
  756. //添加附加的http请求头 (可以定义多条)
  757. //key := "_api_access_key=" + ak + "&_api_name=" + "hssServives" + "&_api_timestamp=" + strconv.FormatInt(timestamp, 10) + "&_api_version=" + "1.0.0"
  758. csbHP.AddHeader("_api_timestamp", strconv.FormatInt(timestamp, 10))
  759. csbHP.AddHeader("_api_name", "hsa-fsi-"+infno)
  760. csbHP.AddHeader("_api_version", "1.0.0")
  761. csbHP.AddHeader("_api_access_key", ak)
  762. csbHP.AddHeader("Content-Type", "application/json;charset=UTF-8")
  763. //request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  764. //还可以,设置附加的byte[]或者json请求体
  765. csbHP.SetContentBody(json, nil)
  766. //设置请求的ak和sk
  767. csbHP.SetAK(ak)
  768. csbHP.SetSK(sk)
  769. //打印请求参数信息
  770. csbHP.Print()
  771. //进行调用, 返回的第二项为resonse http headers (map[string][]string类型)
  772. //res, _, err := csbhttp.Invoke(*csbHP, requestByte)
  773. res, _, err := csbhttp.Invoke(*csbHP, strconv.FormatInt(timestamp, 10))
  774. fmt.Println("err:")
  775. fmt.Println(err)
  776. //是否发成错误
  777. if err != nil {
  778. fmt.Println(err)
  779. return ""
  780. }
  781. fmt.Println(res)
  782. return res
  783. }
  784. // 生成基础报文
  785. func SetJXInputMessage(timestamp int64, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, cainfo string) map[string]interface{} {
  786. // 生成签名
  787. tempTime := time.Unix(timestamp, 0)
  788. //timeFormat := tempTime.Format("20060102150405")
  789. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  790. //randNum := rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)
  791. month := time.Unix(1557042972, 0).Format("1")
  792. year := time.Now().Format("2006")
  793. month = time.Now().Format("01")
  794. day := time.Now().Format("02")
  795. hour := time.Now().Format("15")
  796. min := time.Now().Format("04")
  797. sec := time.Now().Format("05")
  798. msec := time.Now().Format("000")
  799. // 生成输入报文
  800. inputMessage := make(map[string]interface{})
  801. inputMessage["msgid"] = fixmedins_code + year + month + day + hour + min + sec + msec + "0" // 发送方报文 ID
  802. inputMessage["mdtrtarea_admvs"] = mdtrtarea_admvs // 就医地医保区划
  803. inputMessage["insuplc_admdvs"] = insuplc_admdvs // 参保地医保区划
  804. inputMessage["recer_sys_code"] = "1" // 接收方系统代码
  805. inputMessage["dev_no"] = "1" // 设备编号
  806. inputMessage["dev_safe_info"] = "1" // 设备安全信息
  807. inputMessage["cainfo"] = cainfo // 数字签名信息
  808. inputMessage["signtype"] = "SM3" // 签名类型
  809. inputMessage["infver"] = "V1.0" // 接收方系统代码
  810. inputMessage["opter_type"] = "1" // 经办人类别
  811. if fixmedins_code == "H32090403023" {
  812. inputMessage["opter"] = "晁海燕" // 经办人
  813. inputMessage["opter_name"] = "晁海燕" // 经办人姓名
  814. } else {
  815. inputMessage["opter"] = doctor // 经办人
  816. inputMessage["opter_name"] = doctor // 经办人姓名
  817. }
  818. inputMessage["inf_time"] = timeFormatOne // 交易时间
  819. inputMessage["fixmedins_code"] = fixmedins_code // 定点医药机构编号
  820. inputMessage["fixmedins_name"] = org_name
  821. inputMessage["fixmedins_soft_fcty"] = "深圳市领透科技有限公司" //定点医药机构名称
  822. //定点医药机构名称
  823. inputMessage["sign_no"] = "" //交易签到流水号
  824. return inputMessage
  825. }
  826. func Jxyb5301(psnNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, request_url string, access_key string, cainfo string) (string, string) {
  827. // 生成签名
  828. //nonce := GetRandomString(32)
  829. timestamp := time.Now().Unix()
  830. //signature := setSignature(timestamp, nonce, secret_key)
  831. //tempTime := time.Unix(timestamp, 0)
  832. //timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  833. //timeFormatTwo := tempTime.Format("2006-01-02")
  834. // 生成输入报文
  835. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  836. input := make(map[string]interface{})
  837. inputData := make(map[string]interface{})
  838. inputMessage["infno"] = "5301" // 交易编码
  839. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  840. input["data"] = inputData
  841. inputMessage["input"] = input //交易输入
  842. bytesData, err := json.Marshal(inputMessage)
  843. fmt.Println(string(bytesData))
  844. if err != nil {
  845. fmt.Println(err.Error())
  846. return err.Error(), ""
  847. }
  848. request_url = request_url + "5301"
  849. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "5301"), string(bytesData)
  850. }
  851. func Jxyb2503(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, start_time string, end_time string, check_time string, request_url string, access_key string, cainfo string) (string, string) {
  852. timestamp := time.Now().Unix()
  853. // 生成输入报文
  854. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  855. input := make(map[string]interface{})
  856. inputData := make(map[string]interface{})
  857. inputMessage["infno"] = "2503" // 交易编码
  858. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  859. inputData["insutype"] = insutype // 险种类型(来自1101接口返回)
  860. inputData["opsp_dise_code"] = sick_code // 险种类型(来自1101接口返回)
  861. inputData["opsp_dise_name"] = sick_name // 险种类型(来自1101接口返回)
  862. inputData["insu_optins"] = insuplc_admdvs // 险种类型(来自1101接口返回)
  863. inputData["ide_fixmedins_no"] = fixmedins_code // 险种类型(来自1101接口返回)
  864. inputData["ide_fixmedins_name"] = org_name // 险种类型(来自1101接口返回)
  865. inputData["hosp_ide_date"] = check_time // 险种类型(来自1101接口返回)
  866. inputData["diag_dr_codg"] = doctor_id // 开始时间
  867. inputData["diag_dr_name"] = doctor // 开始时间
  868. inputData["begndate"] = start_time // 医师编码
  869. inputData["tel"] = "" // 医师编码
  870. inputData["addr"] = "" // 医师编码
  871. inputData["enddate"] = end_time // 医师编码
  872. input["data"] = inputData
  873. inputMessage["input"] = input //交易输入
  874. bytesData, err := json.Marshal(inputMessage)
  875. fmt.Println(string(bytesData))
  876. if err != nil {
  877. fmt.Println(err.Error())
  878. return err.Error(), ""
  879. }
  880. request_url = request_url + "2503"
  881. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "2503"), string(bytesData)
  882. }
  883. func Jxyb3201(fixmedins_setl_cnt int64, acct_pay float64, fund_pay_sumamt float64, medfee_sumamt float64, stmt_begndate string, stmt_enddate string, setl_optins string, clr_type string, insutype string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, request_url string, access_key string, secret_key string, cainfo string) (string, string) {
  884. // 生成签名
  885. timestamp := time.Now().Unix()
  886. // 生成输入报文
  887. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  888. input := make(map[string]interface{})
  889. inputData := make(map[string]interface{})
  890. inputMessage["infno"] = "3201" // 交易编码
  891. inputData["insutype"] = insutype // 险种
  892. inputData["clr_type"] = clr_type // 就诊 ID(来自2201接口返回)
  893. inputData["setl_optins"] = setl_optins // 结算经办机构
  894. inputData["stmt_begndate"] = stmt_begndate // 对帐开始时间
  895. inputData["stmt_enddate"] = stmt_enddate //对帐结束时间
  896. inputData["medfee_sumamt"] = medfee_sumamt //医疗费总额
  897. inputData["fund_pay_sumamt"] = fund_pay_sumamt //基金支付总额
  898. inputData["acct_pay"] = acct_pay //个人账户支付金额
  899. inputData["fixmedins_setl_cnt"] = fixmedins_setl_cnt //定点医药机构结算笔数
  900. inputData["refd_setl_flag"] = 0 //
  901. input["data"] = inputData
  902. inputMessage["input"] = input //交易输入
  903. bytesData, err := json.Marshal(inputMessage)
  904. fmt.Println(string(bytesData))
  905. if err != nil {
  906. fmt.Println(err.Error())
  907. return err.Error(), ""
  908. }
  909. request_url = request_url + "3201"
  910. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "3201"), string(bytesData)
  911. }
  912. func Jxyb9001(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, admin_user_id int64, request_url string, cainfo string, access_key string) (string, string) {
  913. // 生成签名
  914. timestamp := time.Now().Unix()
  915. // 生成输入报文
  916. inputMessage := SetJXInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
  917. input := make(map[string]interface{})
  918. inputData := make(map[string]interface{})
  919. inputMessage["infno"] = "9001" // 交易编码
  920. inputData["opter_no"] = admin_user_id
  921. inputData["mac"] = GetMacTwo() // 开始时间
  922. inputData["ip"] = GetLocalIpTwo()
  923. input["signIn"] = inputData
  924. inputMessage["input"] = input //交易输入
  925. bytesData, err := json.Marshal(inputMessage)
  926. fmt.Println(string(bytesData))
  927. if err != nil {
  928. fmt.Println(err.Error())
  929. return err.Error(), ""
  930. }
  931. //reader := bytes.NewReader(bytesData)
  932. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/5301"
  933. //gdyb_url := beego.AppConfig.String("gdyb_url")
  934. //gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  935. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/1101"
  936. //url := gdyb_url
  937. //request, err := http.NewRequest("POST", request_url+"9001", reader)
  938. //if err != nil {
  939. // fmt.Println(err.Error())
  940. // return err.Error(), ""
  941. //}
  942. //
  943. //request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  944. //request.Header.Set("_api_timestamp", strconv.FormatInt(timestamp, 10))
  945. //request.Header.Set("_api_name", "hssServives")
  946. //request.Header.Set("_api_version", "1.0.0")
  947. //request.Header.Set("_api_access_key", access_key)
  948. //request.Header.Set("_api_signature", "")
  949. //
  950. //client := http.Client{}
  951. //resp, err := client.Do(request)
  952. //if err != nil {
  953. // fmt.Println(err.Error())
  954. // return err.Error(), ""
  955. //}
  956. //respBytes, err := ioutil.ReadAll(resp.Body)
  957. //if err != nil {
  958. // fmt.Println(err.Error())
  959. // return err.Error(), ""
  960. //}
  961. //str := string(respBytes)
  962. //fmt.Println(str)
  963. //return str, ""
  964. request_url = request_url + "9001"
  965. return JXHttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData), "9001"), string(bytesData)
  966. }
  967. func Jxyb3101(pd models.PatientDtos, fed models.FsiEncounterDtos, fdds []*models.FsiDiagnoseDtos, fods []*models.FsiOrderDtos, fopds []*models.FsiOperationDtosData, params models.PublicParams, trig_scen string) (string, string) {
  968. // 生成签名
  969. timestamp := time.Now().Unix()
  970. // 生成输入报文
  971. inputMessage := SetJXInputMessage(timestamp, params.FixmedinsName, params.OpterName, params.FixmedinsCode, params.InsuplcAdmdvs, params.MdtrtareaAdmvs, params.Cainfo)
  972. input := make(map[string]interface{})
  973. inputData := make(map[string]interface{})
  974. patientDtosinputData := make(map[string]interface{})
  975. fisEncounterDtosData := make(map[string]interface{})
  976. fsiDiagnoseDtosDatas := make([]map[string]interface{}, 0)
  977. fsiOrderDtosDatas := make([]map[string]interface{}, 0)
  978. fsiOperationDtosData := make(map[string]interface{})
  979. fsiOperationDtosDatas := make([]map[string]interface{}, 0)
  980. //就诊信息
  981. fisEncounterDtosData["mdtrt_id"] = fed.MdtrtID
  982. fisEncounterDtosData["medins_id"] = fed.MedinsID
  983. fisEncounterDtosData["medins_name"] = fed.MedinsName
  984. fisEncounterDtosData["medins_admdvs"] = fed.MedinsAdmdvs
  985. fisEncounterDtosData["medins_type"] = fed.MedinsType
  986. fisEncounterDtosData["medins_lv"] = fed.MedinsLv
  987. fisEncounterDtosData["wardarea_codg"] = fed.WardareaCodg
  988. fisEncounterDtosData["wardno"] = fed.Wardno
  989. fisEncounterDtosData["bedno"] = fed.Bedno
  990. fisEncounterDtosData["adm_date"] = fed.AdmDate
  991. fisEncounterDtosData["dscg_date"] = fed.DscgDate
  992. fisEncounterDtosData["dscg_main_dise_codg"] = fed.DscgMainDiseCodg
  993. fisEncounterDtosData["dscg_main_dise_name"] = fed.DscgMainDiseName
  994. for _, fdd := range fdds {
  995. fsiDiagnoseDtosData := make(map[string]interface{})
  996. //诊断集合
  997. fsiDiagnoseDtosData["dise_id"] = fdd.DiseID
  998. fsiDiagnoseDtosData["inout_dise_type"] = fdd.InoutDiseType
  999. fsiDiagnoseDtosData["maindise_flag"] = fdd.MaindiseFlag
  1000. fsiDiagnoseDtosData["dias_srt_no"] = fdd.DiasSrtNo
  1001. fsiDiagnoseDtosData["dise_codg"] = fdd.DiseCodg
  1002. fsiDiagnoseDtosData["dise_name"] = fdd.DiseName
  1003. fsiDiagnoseDtosData["dise_date"] = fdd.DiseDate
  1004. fsiDiagnoseDtosDatas = append(fsiDiagnoseDtosDatas, fsiDiagnoseDtosData)
  1005. }
  1006. fisEncounterDtosData["fsi_diagnose_dtos"] = fsiDiagnoseDtosDatas
  1007. fisEncounterDtosData["dr_codg"] = fed.DrCodg
  1008. fisEncounterDtosData["adm_dept_codg"] = fed.AdmDeptCodg
  1009. fisEncounterDtosData["adm_dept_name"] = fed.AdmDeptName
  1010. fisEncounterDtosData["dscg_dept_codg"] = fed.DscgDeptCodg
  1011. fisEncounterDtosData["dscg_dept_name"] = fed.DscgDeptName
  1012. fisEncounterDtosData["med_mdtrt_type"] = fed.MedMdtrtType
  1013. fisEncounterDtosData["med_type"] = fed.MedType
  1014. for _, fod := range fods {
  1015. fsiOrderDtosData := make(map[string]interface{})
  1016. //医嘱集合
  1017. fsiOrderDtosData["rx_id"] = fod.RxID
  1018. fsiOrderDtosData["rxno"] = fod.Rxno
  1019. fsiOrderDtosData["grpno"] = fod.Grpno
  1020. fsiOrderDtosData["long_drord_flag"] = fod.LongDrordFlag
  1021. fsiOrderDtosData["hilist_type"] = fod.HilistType
  1022. fsiOrderDtosData["chrg_type"] = fod.ChrgType
  1023. fsiOrderDtosData["drord_bhvr"] = fod.DrordBhvr
  1024. fsiOrderDtosData["hilist_code"] = fod.HilistCode
  1025. fsiOrderDtosData["hilist_name"] = fod.HilistName
  1026. fsiOrderDtosData["hilist_dosform"] = fod.HilistDosform
  1027. fsiOrderDtosData["hilist_lv"] = fod.HilistLv
  1028. fsiOrderDtosData["hilist_pric"] = fod.HilistPric
  1029. fsiOrderDtosData["lv1_hosp_item_pric"] = fod.Lv1HospItemPric
  1030. fsiOrderDtosData["lv2_hosp_item_pric"] = fod.Lv2HospItemPric
  1031. fsiOrderDtosData["lv3_hosp_item_pric"] = fod.Lv3HospItemPric
  1032. fsiOrderDtosData["hilist_memo"] = fod.HilistMemo
  1033. fsiOrderDtosData["hosplist_code"] = fod.HosplistCode
  1034. fsiOrderDtosData["hosplist_name"] = fod.HosplistName
  1035. fsiOrderDtosData["hosplist_dosform"] = fod.HosplistDosform
  1036. fsiOrderDtosData["cnt"] = fod.Cnt
  1037. fsiOrderDtosData["pric"] = fod.Pric
  1038. fsiOrderDtosData["sumamt"] = fod.Sumamt
  1039. fsiOrderDtosData["ownpay_amt"] = fod.OwnpayAmt
  1040. fsiOrderDtosData["selfpay_amt"] = fod.SelfpayAmt
  1041. fsiOrderDtosData["spec"] = fod.Spec
  1042. fsiOrderDtosData["spec_unt"] = fod.SpecUnt
  1043. fsiOrderDtosData["drord_begn_date"] = fod.DrordBegnDate
  1044. fsiOrderDtosData["drord_stop_date"] = fod.DrordStopDate
  1045. fsiOrderDtosData["drord_dept_codg"] = fod.DrordDeptCodg
  1046. fsiOrderDtosData["drord_dept_name"] = fod.DrordDeptName
  1047. fsiOrderDtosData["drord_dr_codg"] = fod.DrordDrCodg
  1048. fsiOrderDtosData["drord_dr_name"] = fod.DrordDrName
  1049. fsiOrderDtosData["drord_dr_profttl"] = fod.DrordDrProfttl
  1050. fsiOrderDtosData["curr_drord_flag"] = fod.CurrDrordFlag
  1051. fsiOrderDtosDatas = append(fsiOrderDtosDatas, fsiOrderDtosData)
  1052. }
  1053. fisEncounterDtosData["fsi_order_dtos"] = fsiOrderDtosDatas
  1054. fisEncounterDtosData["matn_stas"] = fed.MatnStas
  1055. fisEncounterDtosData["medfee_sumamt"] = fed.MedfeeSumamt
  1056. fisEncounterDtosData["ownpay_amt"] = fed.OwnpayAmt
  1057. fisEncounterDtosData["selfpay_amt"] = fed.SelfpayAmt
  1058. fisEncounterDtosData["acct_payamt"] = fed.AcctPayamt
  1059. fisEncounterDtosData["ma_amt"] = fed.MaAmt
  1060. fisEncounterDtosData["hifp_payamt"] = fed.HifpPayamt
  1061. fisEncounterDtosData["setl_totlnum"] = fed.SetlTotlnum
  1062. fisEncounterDtosData["insutype"] = fed.Insutype
  1063. fisEncounterDtosData["reim_flag"] = fed.ReimFlag
  1064. fisEncounterDtosData["out_setl_flag"] = fed.OutSetlFlag
  1065. //手术操作
  1066. for _, fopd := range fopds {
  1067. fsiOperationDtosData["setl_list_oprn_id"] = fopd.Setl_list_oprn_id
  1068. fsiOperationDtosData["oprn_code"] = fopd.Oprn_code
  1069. fsiOperationDtosData["oprn_name"] = fopd.Oprn_name
  1070. fsiOperationDtosData["main_oprn_flag"] = fopd.Main_oprn_flag
  1071. fsiOperationDtosData["oprn_date"] = fopd.Oprn_date
  1072. fsiOperationDtosData["anst_way"] = fopd.Anst_way
  1073. fsiOperationDtosData["oper_dr_name"] = fopd.Oper_dr_name
  1074. fsiOperationDtosData["oper_dr_code"] = fopd.Oper_dr_code
  1075. fsiOperationDtosData["anst_dr_name"] = fopd.Anst_dr_name
  1076. fsiOperationDtosData["anst_dr_code"] = fopd.Anst_dr_code
  1077. fsiOperationDtosDatas = append(fsiOperationDtosDatas, fsiOperationDtosData)
  1078. }
  1079. fisEncounterDtosData["fsi_operation_dtos"] = fsiOperationDtosDatas
  1080. patientDtosinputData["patn_id"] = pd.PatnID
  1081. patientDtosinputData["patn_name"] = pd.PatnName
  1082. patientDtosinputData["gend"] = pd.Gend
  1083. patientDtosinputData["brdy"] = pd.Brdy
  1084. patientDtosinputData["poolarea"] = pd.Poolarea
  1085. patientDtosinputData["curr_mdtrt_id"] = pd.CurrMdtrtID
  1086. patientDtosinputData["fsi_his_data_dto"] = ""
  1087. patientDtosinputData["fsi_encounter_dtos"] = fisEncounterDtosData
  1088. inputData["syscode"] = "LinkDialysis"
  1089. inputData["trig_scen"] = trig_scen
  1090. inputData["rule_ids"] = ""
  1091. inputData["task_id"] = ""
  1092. inputData["patient_dtos"] = patientDtosinputData
  1093. input["data"] = inputData
  1094. inputMessage["infno"] = "3101"
  1095. inputMessage["input"] = input //交易输入
  1096. bytesData, err := json.Marshal(inputMessage)
  1097. fmt.Println(string(bytesData))
  1098. if err != nil {
  1099. fmt.Println(err.Error())
  1100. return err.Error(), ""
  1101. }
  1102. params.RequestUrl = params.RequestUrl + "3101"
  1103. return JXHttpRequest(params.RequestUrl, params.AccessKey, params.SecretKey, timestamp, string(bytesData), "3101"), string(bytesData)
  1104. }
  1105. func Jxyb3102(pd models.PatientDtos, fed models.FsiEncounterDtos, fdds []*models.FsiDiagnoseDtos, fods []*models.FsiOrderDtos, fopds []*models.FsiOperationDtosData, params models.PublicParams, trig_scen string) (string, string) {
  1106. // 生成签名
  1107. timestamp := time.Now().Unix()
  1108. // 生成输入报文
  1109. inputMessage := SetJXInputMessage(timestamp, params.FixmedinsName, params.OpterName, params.FixmedinsCode, params.InsuplcAdmdvs, params.MdtrtareaAdmvs, params.Cainfo)
  1110. input := make(map[string]interface{})
  1111. inputData := make(map[string]interface{})
  1112. patientDtosinputData := make(map[string]interface{})
  1113. fisEncounterDtosData := make(map[string]interface{})
  1114. fsiDiagnoseDtosDatas := make([]map[string]interface{}, 0)
  1115. fsiOrderDtosDatas := make([]map[string]interface{}, 0)
  1116. fsiOperationDtosData := make(map[string]interface{})
  1117. fsiOperationDtosDatas := make([]map[string]interface{}, 0)
  1118. //就诊信息
  1119. fisEncounterDtosData["mdtrt_id"] = fed.MdtrtID
  1120. fisEncounterDtosData["medins_id"] = fed.MedinsID
  1121. fisEncounterDtosData["medins_name"] = fed.MedinsName
  1122. fisEncounterDtosData["medins_admdvs"] = fed.MedinsAdmdvs
  1123. fisEncounterDtosData["medins_type"] = fed.MedinsType
  1124. fisEncounterDtosData["medins_lv"] = fed.MedinsLv
  1125. fisEncounterDtosData["wardarea_codg"] = fed.WardareaCodg
  1126. fisEncounterDtosData["wardno"] = fed.Wardno
  1127. fisEncounterDtosData["bedno"] = fed.Bedno
  1128. fisEncounterDtosData["adm_date"] = fed.AdmDate
  1129. fisEncounterDtosData["dscg_date"] = fed.DscgDate
  1130. fisEncounterDtosData["dscg_main_dise_codg"] = fed.DscgMainDiseCodg
  1131. fisEncounterDtosData["dscg_main_dise_name"] = fed.DscgMainDiseName
  1132. for _, fdd := range fdds {
  1133. fsiDiagnoseDtosData := make(map[string]interface{})
  1134. //诊断集合
  1135. fsiDiagnoseDtosData["dise_id"] = fdd.DiseID
  1136. fsiDiagnoseDtosData["inout_dise_type"] = fdd.InoutDiseType
  1137. fsiDiagnoseDtosData["maindise_flag"] = fdd.MaindiseFlag
  1138. fsiDiagnoseDtosData["dias_srt_no"] = fdd.DiasSrtNo
  1139. fsiDiagnoseDtosData["dise_codg"] = fdd.DiseCodg
  1140. fsiDiagnoseDtosData["dise_name"] = fdd.DiseName
  1141. fsiDiagnoseDtosData["dise_date"] = fdd.DiseDate
  1142. fsiDiagnoseDtosDatas = append(fsiDiagnoseDtosDatas, fsiDiagnoseDtosData)
  1143. }
  1144. fisEncounterDtosData["fsi_diagnose_dtos"] = fsiDiagnoseDtosDatas
  1145. fisEncounterDtosData["dr_codg"] = fed.DrCodg
  1146. fisEncounterDtosData["adm_dept_codg"] = fed.AdmDeptCodg
  1147. fisEncounterDtosData["adm_dept_name"] = fed.AdmDeptName
  1148. fisEncounterDtosData["dscg_dept_codg"] = fed.DscgDeptCodg
  1149. fisEncounterDtosData["dscg_dept_name"] = fed.DscgDeptName
  1150. fisEncounterDtosData["med_mdtrt_type"] = fed.MedMdtrtType
  1151. fisEncounterDtosData["med_type"] = fed.MedType
  1152. for _, fod := range fods {
  1153. fsiOrderDtosData := make(map[string]interface{})
  1154. //医嘱集合
  1155. fsiOrderDtosData["rx_id"] = fod.RxID
  1156. fsiOrderDtosData["rxno"] = fod.Rxno
  1157. fsiOrderDtosData["grpno"] = fod.Grpno
  1158. fsiOrderDtosData["long_drord_flag"] = fod.LongDrordFlag
  1159. fsiOrderDtosData["hilist_type"] = fod.HilistType
  1160. fsiOrderDtosData["chrg_type"] = fod.ChrgType
  1161. fsiOrderDtosData["drord_bhvr"] = fod.DrordBhvr
  1162. fsiOrderDtosData["hilist_code"] = fod.HilistCode
  1163. fsiOrderDtosData["hilist_name"] = fod.HilistName
  1164. fsiOrderDtosData["hilist_dosform"] = fod.HilistDosform
  1165. fsiOrderDtosData["hilist_lv"] = fod.HilistLv
  1166. fsiOrderDtosData["hilist_pric"] = fod.HilistPric
  1167. fsiOrderDtosData["lv1_hosp_item_pric"] = fod.Lv1HospItemPric
  1168. fsiOrderDtosData["lv2_hosp_item_pric"] = fod.Lv2HospItemPric
  1169. fsiOrderDtosData["lv3_hosp_item_pric"] = fod.Lv3HospItemPric
  1170. fsiOrderDtosData["hilist_memo"] = fod.HilistMemo
  1171. fsiOrderDtosData["hosplist_code"] = fod.HosplistCode
  1172. fsiOrderDtosData["hosplist_name"] = fod.HosplistName
  1173. fsiOrderDtosData["hosplist_dosform"] = fod.HosplistDosform
  1174. fsiOrderDtosData["cnt"] = fod.Cnt
  1175. fsiOrderDtosData["pric"] = fod.Pric
  1176. fsiOrderDtosData["sumamt"] = fod.Sumamt
  1177. fsiOrderDtosData["ownpay_amt"] = fod.OwnpayAmt
  1178. fsiOrderDtosData["selfpay_amt"] = fod.SelfpayAmt
  1179. fsiOrderDtosData["spec"] = fod.Spec
  1180. fsiOrderDtosData["spec_unt"] = fod.SpecUnt
  1181. fsiOrderDtosData["drord_begn_date"] = fod.DrordBegnDate
  1182. fsiOrderDtosData["drord_stop_date"] = fod.DrordStopDate
  1183. fsiOrderDtosData["drord_dept_codg"] = fod.DrordDeptCodg
  1184. fsiOrderDtosData["drord_dept_name"] = fod.DrordDeptName
  1185. fsiOrderDtosData["drord_dr_codg"] = fod.DrordDrCodg
  1186. fsiOrderDtosData["drord_dr_name"] = fod.DrordDrName
  1187. fsiOrderDtosData["drord_dr_profttl"] = fod.DrordDrProfttl
  1188. fsiOrderDtosData["curr_drord_flag"] = fod.CurrDrordFlag
  1189. fsiOrderDtosDatas = append(fsiOrderDtosDatas, fsiOrderDtosData)
  1190. }
  1191. fisEncounterDtosData["fsi_order_dtos"] = fsiOrderDtosDatas
  1192. fisEncounterDtosData["matn_stas"] = fed.MatnStas
  1193. fisEncounterDtosData["medfee_sumamt"] = fed.MedfeeSumamt
  1194. fisEncounterDtosData["ownpay_amt"] = fed.OwnpayAmt
  1195. fisEncounterDtosData["selfpay_amt"] = fed.SelfpayAmt
  1196. fisEncounterDtosData["acct_payamt"] = fed.AcctPayamt
  1197. fisEncounterDtosData["ma_amt"] = fed.MaAmt
  1198. fisEncounterDtosData["hifp_payamt"] = fed.HifpPayamt
  1199. fisEncounterDtosData["setl_totlnum"] = fed.SetlTotlnum
  1200. fisEncounterDtosData["insutype"] = fed.Insutype
  1201. fisEncounterDtosData["reim_flag"] = fed.ReimFlag
  1202. fisEncounterDtosData["out_setl_flag"] = fed.OutSetlFlag
  1203. //手术操作
  1204. for _, fopd := range fopds {
  1205. fsiOperationDtosData["setl_list_oprn_id"] = fopd.Setl_list_oprn_id
  1206. fsiOperationDtosData["oprn_code"] = fopd.Oprn_code
  1207. fsiOperationDtosData["oprn_name"] = fopd.Oprn_name
  1208. fsiOperationDtosData["main_oprn_flag"] = fopd.Main_oprn_flag
  1209. fsiOperationDtosData["oprn_date"] = fopd.Oprn_date
  1210. fsiOperationDtosData["anst_way"] = fopd.Anst_way
  1211. fsiOperationDtosData["oper_dr_name"] = fopd.Oper_dr_name
  1212. fsiOperationDtosData["oper_dr_code"] = fopd.Oper_dr_code
  1213. fsiOperationDtosData["anst_dr_name"] = fopd.Anst_dr_name
  1214. fsiOperationDtosData["anst_dr_code"] = fopd.Anst_dr_code
  1215. fsiOperationDtosDatas = append(fsiOperationDtosDatas, fsiOperationDtosData)
  1216. }
  1217. fisEncounterDtosData["fsi_operation_dtos"] = fsiOperationDtosDatas
  1218. patientDtosinputData["patn_id"] = pd.PatnID
  1219. patientDtosinputData["patn_name"] = pd.PatnName
  1220. patientDtosinputData["gend"] = pd.Gend
  1221. patientDtosinputData["brdy"] = pd.Brdy
  1222. patientDtosinputData["poolarea"] = pd.Poolarea
  1223. patientDtosinputData["curr_mdtrt_id"] = pd.CurrMdtrtID
  1224. patientDtosinputData["fsi_his_data_dto"] = ""
  1225. patientDtosinputData["fsi_encounter_dtos"] = fisEncounterDtosData
  1226. inputData["syscode"] = "LinkDialysis"
  1227. inputData["trig_scen"] = trig_scen
  1228. inputData["rule_ids"] = ""
  1229. inputData["task_id"] = ""
  1230. inputData["patient_dtos"] = patientDtosinputData
  1231. input["data"] = inputData
  1232. inputMessage["infno"] = "3102"
  1233. inputMessage["input"] = input //交易输入
  1234. bytesData, err := json.Marshal(inputMessage)
  1235. fmt.Println(string(bytesData))
  1236. if err != nil {
  1237. fmt.Println(err.Error())
  1238. return err.Error(), ""
  1239. }
  1240. params.RequestUrl = params.RequestUrl + "3102"
  1241. return JXHttpRequest(params.RequestUrl, params.AccessKey, params.SecretKey, timestamp, string(bytesData), "3102"), string(bytesData)
  1242. }
  1243. func Jxyb4101(struct4101 Struct4101, params models.PublicParams) (string, string) {
  1244. timestamp := time.Now().Unix()
  1245. inputMessage := SetJXInputMessage(timestamp, params.FixmedinsName, params.OpterName, params.FixmedinsCode, params.InsuplcAdmdvs, params.MdtrtareaAdmvs, params.Cainfo)
  1246. // 生成输入报文
  1247. input := make(map[string]interface{})
  1248. inputData := make(map[string]interface{})
  1249. inputMessage["infno"] = "4101A" // 交易编码
  1250. year := time.Now().Format("2006")
  1251. month := time.Now().Format("01")
  1252. day := time.Now().Format("02")
  1253. inputData["mdtrt_id"] = struct4101.MdtrtId // 就诊 ID 必填(来自2201接口返回)
  1254. inputData["setl_id"] = struct4101.SetlId // 结算 ID 必填
  1255. inputData["psn_no"] = struct4101.PsnNo // 结算 ID 必填
  1256. inputData["fixmedins_name"] = params.FixmedinsName // 定点医药机构名称 必填
  1257. inputData["fixmedins_code"] = params.FixmedinsCode // 定点医药机构编码 必填
  1258. inputData["hi_setl_lv"] = "" // 医保结算等级
  1259. inputData["hi_no"] = struct4101.PsnNo // 医保编号
  1260. inputData["medcasno"] = struct4101.PsnNo // 病案号 必填
  1261. inputData["dcla_time"] = year + "-" + month + "-" + day // 申报时间 必填
  1262. inputData["psn_name"] = struct4101.PsnName // 人员姓名 必填
  1263. inputData["gend"] = struct4101.Gend // 性别 必填
  1264. inputData["brdy"] = struct4101.Brdy // 出生日期 必填
  1265. inputData["age"] = struct4101.Age // 年龄 必填
  1266. inputData["ntly"] = struct4101.Ntly // 国籍 必填
  1267. inputData["nwb_age"] = "" // 年龄 必填
  1268. inputData["naty"] = struct4101.Naty // 民族 必填
  1269. inputData["patn_cert_type"] = struct4101.PatnCertType // 患者证件类别 必填
  1270. inputData["certno"] = struct4101.Certno // 证件号码 必填
  1271. inputData["prfs"] = struct4101.Prfs // 职业 必填
  1272. inputData["curr_addr"] = "" // 现住址 必填
  1273. inputData["emp_name"] = "" // 单位名称 必填
  1274. inputData["emp_addr"] = "" // 单位地址 必填
  1275. inputData["emp_tel"] = "" // 单位电话 必填
  1276. inputData["poscode"] = "" // 邮编 必填
  1277. inputData["coner_name"] = struct4101.ConerName // 联系人姓名 必填
  1278. inputData["patn_rlts"] = struct4101.PatnRlts // 与患者关系 必填
  1279. inputData["coner_addr"] = struct4101.ConerAddr // 联系人地址 必填
  1280. inputData["coner_tel"] = struct4101.ConerTel // 联系人电话 必填
  1281. inputData["hi_type"] = struct4101.HiType // 医保类型 必填
  1282. inputData["insuplc"] = struct4101.Insuplc // 参保地 必填
  1283. inputData["sp_psn_type"] = "" // 特殊人员类型 必填
  1284. inputData["nwb_adm_type"] = "" // 新生儿入院类型 必填
  1285. inputData["nwb_bir_wt"] = "" // 新生儿出生体重 必填
  1286. inputData["nwb_adm_wt"] = "" // 新生儿入院体重 必填
  1287. inputData["opsp_diag_caty"] = "" // 门诊慢特病诊断 必填
  1288. inputData["opsp_mdtrt_date"] = "" // 门诊慢特病就诊日期 必填
  1289. inputData["ipt_med_type"] = struct4101.IptMedType // 住院医疗类型 必填
  1290. inputData["adm_way"] = "" // 入院途径 必填
  1291. inputData["trt_type"] = "" // 治疗类别 必填
  1292. inputData["adm_time"] = struct4101.AdmTime // 入院时间 必填
  1293. inputData["adm_caty"] = struct4101.AdmCaty // 入院科别 必填
  1294. inputData["refldept_dept"] = "" // 转科科别 必填
  1295. inputData["dscg_time"] = struct4101.AdmEndTime // 出院时间 必填
  1296. inputData["dscg_caty"] = struct4101.AdmCaty // 出院科别 必填
  1297. inputData["act_ipt_days"] = "" // 实际住院天数 必填
  1298. inputData["otp_wm_dise"] = "" // 门(急) 诊西医诊断 必填
  1299. inputData["wm_dise_code"] = "" // 门(急) 诊中医诊断 必填
  1300. inputData["otp_tcm_dise"] = "" // 西医诊断疾病代码 必填
  1301. inputData["tcm_dise_code"] = "" // 中医诊断代码 必填
  1302. inputData["oprn_oprt_code_cnt"] = "" // 手术操作代码计数 必填
  1303. inputData["vent_used_dura"] = "" // 呼吸机使用时长 必填
  1304. inputData["pwcry_bfadm_coma_dura"] = "" // 颅脑损伤患者入院前昏迷时长 必填
  1305. inputData["pwcry_afadm_coma_dura"] = "" // 颅脑损伤患者入院后昏迷时长 必填
  1306. inputData["bld_cat"] = "" // 输血品种 必填
  1307. inputData["bld_amt"] = "" // 输血量 必填
  1308. inputData["bld_unt"] = "" // 输血计量单位 必填
  1309. inputData["spga_nurscare_days"] = "" // 特级护理天数 必填
  1310. inputData["lv1_nurscare_days"] = "" // 一级护理天数 必填
  1311. inputData["scd_nurscare_days"] = "" // 二级护理天数 必填
  1312. inputData["lv3_nurscare_days"] = "" // 三级护理天数 必填
  1313. inputData["acp_medins_name"] = "" // 拟接收机构名称 必填
  1314. inputData["acp_optins_code"] = "" // 拟接收机构代码 必填
  1315. inputData["bill_code"] = struct4101.BillCode // 票据代码 必填
  1316. inputData["bill_no"] = struct4101.BillNo // 票据号码 必填
  1317. inputData["biz_sn"] = struct4101.BizSn // 业务流水号 必填
  1318. inputData["days_rinp_flag_31"] = "" // 出院 31 天内再住院计划标志 必填
  1319. inputData["days_rinp_pup_31"] = "" // 出院 31 天内再住院目的 必填
  1320. inputData["chfpdr_name"] = "" // 主诊医师姓名 必填
  1321. inputData["chfpdr_code"] = "" // 主诊医师代码 必填
  1322. inputData["setl_begn_date"] = struct4101.SetlBegnDate // 结算开始日期 必填
  1323. inputData["setl_end_date"] = struct4101.SetlEndDate // 结算结束日期 必填
  1324. inputData["psn_selfpay"] = struct4101.PsnSelfPay // 个人自付 必填
  1325. inputData["psn_ownpay"] = struct4101.PsnOwnPay // 个人自费 必填
  1326. inputData["acct_pay"] = struct4101.AcctPay // 个人账户支出 必填
  1327. inputData["hi_paymtd"] = struct4101.HiPaymtd // 医保支付方式 必填
  1328. inputData["hsorg"] = struct4101.Hsorg // 医保机构 必填
  1329. inputData["hsorg_opter"] = struct4101.HsorgOpter // 医保机构经办人 必填
  1330. inputData["medins_fill_dept"] = struct4101.MedinsFillDept // 医疗机构填报部门 必填
  1331. inputData["medins_fill_psn"] = struct4101.MedinsFillPsn // 医疗机构填报人 必填
  1332. inputData["psn_cashpay"] = struct4101.PsnCashpay // 医疗机构填报人 必填
  1333. payinfo := make([]map[string]interface{}, 0) // 基金支付信息
  1334. for _, item := range struct4101.CustomStruct {
  1335. payinfotemp := make(map[string]interface{})
  1336. if item.FundPayType == "310100" || item.FundPayType == "310200" || item.FundPayType == "320100" || item.FundPayType == "330100" || item.FundPayType == "340100" || item.FundPayType == "350100" || item.FundPayType == "370100" || item.FundPayType == "390100" || item.FundPayType == "610100" || item.FundPayType == "640100" || item.FundPayType == "620100" {
  1337. payinfotemp["fund_pay_type"] = item.FundPayType // 基金支付类型 必填
  1338. payinfotemp["fund_payamt"] = item.FundPayamt // 基金支付金额
  1339. payinfo = append(payinfo, payinfotemp)
  1340. }
  1341. }
  1342. opspdiseinfo := make([]map[string]interface{}, 0) // 门诊慢特病诊断信息
  1343. opspdiseinfotemp := make(map[string]interface{})
  1344. opspdiseinfotemp["diag_name"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagName // 诊断名称 必填
  1345. opspdiseinfotemp["diag_code"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagCode // 诊断代码 必填
  1346. opspdiseinfotemp["oprn_oprt_name"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagName // 手术操作名称 必填
  1347. opspdiseinfotemp["oprn_oprt_code"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagCode // 手术操作代码 必填
  1348. opspdiseinfo = append(opspdiseinfo, opspdiseinfotemp)
  1349. diseinfo := make([]map[string]interface{}, 0) // 住院诊断信息
  1350. for _, item := range struct4101.Diseinfo {
  1351. diseinfotemp := make(map[string]interface{})
  1352. diseinfotemp["maindiag_flag"] = item.MaindiagFlag // 手术操作代码 必填
  1353. diseinfotemp["diag_type"] = item.DiagType // 诊断类别 必填
  1354. diseinfotemp["diag_code"] = item.DiagCode // 诊断代码 必填
  1355. diseinfotemp["diag_name"] = item.DiagName // 诊断名称 必填
  1356. diseinfotemp["adm_cond_type"] = "3" // 入院病情类型 必填
  1357. diseinfo = append(diseinfo, diseinfotemp)
  1358. }
  1359. iteminfo := make([]map[string]interface{}, 0)
  1360. for _, item := range struct4101.IteminfoStruct {
  1361. iteminfotemp := make(map[string]interface{})
  1362. iteminfotemp["med_chrgitm"] = item.MedChrgitm // 医疗收费项目 必填
  1363. iteminfotemp["amt"] = item.Amt // 金额 必填
  1364. iteminfotemp["claa_sumfee"] = item.ClaaSumfee // 甲类费用合计 必填
  1365. iteminfotemp["clab_amt"] = item.ClabAmt // 乙类金额 必填
  1366. iteminfotemp["fulamt_ownpay_amt"] = item.FulamtOwnpayAmt // 全自费金额 必填
  1367. iteminfotemp["oth_amt"] = item.OthAmt // 其他金额 必填
  1368. iteminfo = append(iteminfo, iteminfotemp)
  1369. }
  1370. oprninfo := make([]map[string]interface{}, 0) // 手术操作信息
  1371. oprninfotemp := make(map[string]interface{})
  1372. oprninfotemp["oprn_oprt_type"] = "" // 手术操作类别 必填
  1373. oprninfotemp["oprn_oprt_name"] = "" // 手术操作名称 必填
  1374. oprninfotemp["oprn_oprt_code"] = "" // 手术操作代码 必填
  1375. oprninfotemp["oprn_oprt_date"] = "" // 手术操作日期 必填
  1376. oprninfotemp["anst_way"] = "" // 麻醉方式 必填
  1377. oprninfotemp["oper_dr_name"] = "" // 术者医师姓名 必填
  1378. oprninfotemp["oper_dr_code"] = "" // 术者医师代码 必填
  1379. oprninfotemp["anst_dr_name"] = "" // 麻醉医师姓名 必填
  1380. oprninfotemp["anst_dr_code"] = "" // 麻醉医师代码 必填
  1381. oprninfo = append(oprninfo, oprninfotemp)
  1382. icuinfo := make([]map[string]interface{}, 0) // 重症监护信息
  1383. icuinfotemp := make(map[string]interface{})
  1384. icuinfotemp["scs_cutd_ward_type"] = "" // 重症监护病房类型 必填
  1385. icuinfotemp["scs_cutd_inpool_time"] = "" // 重症监护进入时间 必填
  1386. icuinfotemp["scs_cutd_exit_time"] = "" // 重症监护退出时间 必填
  1387. icuinfotemp["scs_cutd_sum_dura"] = "" // 重症监护合计时长 必填
  1388. icuinfo = append(icuinfo, icuinfotemp)
  1389. input["setlinfo"] = inputData
  1390. input["payinfo"] = payinfo
  1391. input["opspdiseinfo"] = opspdiseinfo
  1392. input["diseinfo"] = diseinfo
  1393. input["iteminfo"] = iteminfo
  1394. inputMessage["input"] = input //交易输入
  1395. bytesData, _ := json.Marshal(inputMessage)
  1396. fmt.Println(string(bytesData))
  1397. params.RequestUrl = params.RequestUrl + "4101"
  1398. return JXHttpRequest(params.RequestUrl, params.AccessKey, params.SecretKey, timestamp, string(bytesData), "4101"), string(bytesData)
  1399. }
  1400. func Jxyb3501(struct3501 models.Struct3501) (string, string) {
  1401. timestamp := time.Now().Unix()
  1402. // 生成输入报文
  1403. inputMessage := SetJXInputMessage(timestamp, struct3501.OrgName, struct3501.Opter, struct3501.FixmedinsCode, struct3501.InsuplcAdmdvs, struct3501.MdtrtareaAdmvs, struct3501.Cainfo)
  1404. input := make(map[string]interface{})
  1405. inputData := make(map[string]interface{})
  1406. inputMessage["infno"] = "3501" // 交易编码
  1407. inputData["med_list_codg"] = struct3501.MedListCodg // 定点医药机构目录编号
  1408. inputData["fixmedins_hilist_id"] = struct3501.FixmedinsHilistId // 定点医药机构目录编号
  1409. inputData["fixmedins_hilist_name"] = struct3501.OrgName // 定点医药机构目录名称
  1410. inputData["rx_flag"] = struct3501.RxFlag //
  1411. inputData["invdate"] = struct3501.Invdate // 人员编号 (来自1101接口返回)
  1412. inputData["inv_cnt"] = struct3501.InvCnt // 人员编号 (来自1101接口返回)
  1413. inputData["manu_lotnum"] = struct3501.ManuLotnum // 人员编号 (来自1101接口返回)
  1414. inputData["fixmedins_bchno"] = struct3501.FixmedinsBchno // 人员编号 (来自1101接口返回)
  1415. inputData["manu_date"] = struct3501.ManuDate // 人员编号 (来自1101接口返回)
  1416. inputData["expy_end"] = struct3501.ExpyEnd // 人员编号 (来自1101接口返回)
  1417. inputData["memo"] = "" // 人员编号 (来自1101接口返回)
  1418. input["invinfo"] = inputData
  1419. inputMessage["input"] = input //交易输入
  1420. bytesData, err := json.Marshal(inputMessage)
  1421. fmt.Println(string(bytesData))
  1422. if err != nil {
  1423. fmt.Println(err.Error())
  1424. return err.Error(), ""
  1425. }
  1426. struct3501.RequestUrl = struct3501.RequestUrl + "3501"
  1427. return JXHttpRequest(struct3501.RequestUrl, struct3501.AccessKey, struct3501.SecretKey, timestamp, string(bytesData), "3501"), string(bytesData)
  1428. }
  1429. func Jxyb3502(struct3502 models.Struct3502) (string, string) {
  1430. timestamp := time.Now().Unix()
  1431. // 生成输入报文
  1432. inputMessage := SetJXInputMessage(timestamp, struct3502.OrgName, struct3502.Opter, struct3502.FixmedinsCode, struct3502.InsuplcAdmdvs, struct3502.MdtrtareaAdmvs, struct3502.Cainfo)
  1433. input := make(map[string]interface{})
  1434. inputData := make(map[string]interface{})
  1435. inputMessage["infno"] = "3502" // 交易编码
  1436. inputData["med_list_codg"] = struct3502.MedListCodg // 定点医药机构目录编号
  1437. inputData["inv_chg_type"] = struct3502.InvChgType // 定点医药机构目录编号
  1438. inputData["fixmedins_hilist_id"] = struct3502.FixmedinsCode // 定点医药机构目录编号
  1439. inputData["fixmedins_hilist_name"] = struct3502.OrgName // 定点医药机构目录名称
  1440. inputData["fixmedins_bchno"] = struct3502.FixmedinsBchno // 人员编号 (来自1101接口返回)
  1441. inputData["pric"] = struct3502.Pric // 人员编号 (来自1101接口返回)
  1442. inputData["cnt"] = struct3502.Cnt // 人员编号 (来自1101接口返回)
  1443. inputData["rx_flag"] = struct3502.RxFlag //
  1444. inputData["inv_chg_time"] = struct3502.InvChgTime // 人员编号 (来自1101接口返回)
  1445. inputData["inv_chg_opter_name"] = "" // 人员编号 (来自1101接口返回)
  1446. inputData["memo"] = struct3502.Memo // 人员编号 (来自1101接口返回)
  1447. inputData["trdn_flag"] = "" // 人员编号 (来自1101接口返回)
  1448. input["invinfo"] = inputData
  1449. inputMessage["input"] = input //交易输入
  1450. bytesData, err := json.Marshal(inputMessage)
  1451. fmt.Println(string(bytesData))
  1452. if err != nil {
  1453. fmt.Println(err.Error())
  1454. return err.Error(), ""
  1455. }
  1456. struct3502.RequestUrl = struct3502.RequestUrl + "3502"
  1457. return JXHttpRequest(struct3502.RequestUrl, struct3502.AccessKey, struct3502.SecretKey, timestamp, string(bytesData), "3502"), string(bytesData)
  1458. }
  1459. func Jxyb3503(struct3503 models.Struct3503) (string, string) {
  1460. timestamp := time.Now().Unix()
  1461. // 生成输入报文
  1462. inputMessage := SetJXInputMessage(timestamp, struct3503.OrgName, struct3503.Opter, struct3503.FixmedinsCode, struct3503.InsuplcAdmdvs, struct3503.MdtrtareaAdmvs, struct3503.Cainfo)
  1463. input := make(map[string]interface{})
  1464. inputData := make(map[string]interface{})
  1465. inputMessage["infno"] = "3503"
  1466. inputData["med_list_codg"] = struct3503.MedListCodg
  1467. inputData["fixmedins_hilist_id"] = struct3503.FixmedinsCode
  1468. inputData["fixmedins_hilist_name"] = struct3503.OrgName
  1469. inputData["dynt_no"] = ""
  1470. inputData["fixmedins_bchno"] = struct3503.FixmedinsBchno // 人员编号 (来自1101接口返回)
  1471. inputData["spler_name"] = struct3503.SplerName // 人员编号 (来自1101接口返回)
  1472. inputData["spler_pmtno"] = "" // 人员编号 (来自1101接口返回)
  1473. inputData["manu_lotnum"] = struct3503.ManuLotnum // 人员编号 (来自1101接口返回)
  1474. inputData["prodentp_name"] = struct3503.ProdentpName // 人员编号 (来自1101接口返回)
  1475. inputData["aprvno"] = struct3503.Aprvno // 人员编号 (来自1101接口返回)
  1476. inputData["manu_date"] = struct3503.ManuDate // 人员编号 (来自1101接口返回)
  1477. inputData["expy_end"] = struct3503.ExpyEnd // 人员编号 (来自1101接口返回)
  1478. inputData["finl_trns_pric"] = struct3503.FinlTrnsPric // 人员编号 (来自1101接口返回)
  1479. inputData["purc_retn_cnt"] = struct3503.PurcRetnCnt // 人员编号 (来自1101接口返回)
  1480. inputData["purc_invo_codg"] = struct3503.PurcInvoCodg // 人员编号 (来自1101接口返回)
  1481. inputData["purc_invo_no"] = struct3503.PurcInvoNo // 人员编号 (来自1101接口返回)
  1482. inputData["rx_flag"] = struct3503.RxFlag // 人员编号 (来自1101接口返回)
  1483. inputData["purc_retn_stoin_time"] = struct3503.PurcRetnStoinTime // 人员编号 (来自1101接口返回)
  1484. inputData["purc_retn_opter_name"] = struct3503.PurcRetnOpterName // 人员编号 (来自1101接口返回)
  1485. inputData["prod_geay_flag"] = "" // 人员编号 (来自1101接口返回)
  1486. inputData["memo"] = "" // 人员编号 (来自1101接口返回)
  1487. input["purcinfo"] = inputData
  1488. inputMessage["input"] = input //交易输入
  1489. bytesData, err := json.Marshal(inputMessage)
  1490. fmt.Println(string(bytesData))
  1491. if err != nil {
  1492. fmt.Println(err.Error())
  1493. return err.Error(), ""
  1494. }
  1495. struct3503.RequestUrl = struct3503.RequestUrl + "3503"
  1496. return JXHttpRequest(struct3503.RequestUrl, struct3503.AccessKey, struct3503.SecretKey, timestamp, string(bytesData), "3503"), string(bytesData)
  1497. }
  1498. func Jxyb3504(struct3504 models.Struct3504) (string, string) {
  1499. timestamp := time.Now().Unix()
  1500. // 生成输入报文
  1501. inputMessage := SetJXInputMessage(timestamp, struct3504.OrgName, struct3504.Opter, struct3504.FixmedinsCode, struct3504.InsuplcAdmdvs, struct3504.MdtrtareaAdmvs, struct3504.Cainfo)
  1502. input := make(map[string]interface{})
  1503. inputData := make(map[string]interface{})
  1504. inputMessage["infno"] = "3504" // 交易编码
  1505. inputData["med_list_codg"] = struct3504.MedListCodg // 定点医药机构目录编号
  1506. inputData["fixmedins_hilist_id"] = struct3504.FixmedinsHilistId // 定点医药机构目录编号
  1507. inputData["fixmedins_hilist_name"] = struct3504.FixmedinsHilistName // 定点医药机构目录名称
  1508. inputData["fixmedins_bchno"] = struct3504.FixmedinsBchno // 人员编号 (来自1101接口返回)
  1509. inputData["spler_name"] = struct3504.SplerName // 人员编号 (来自1101接口返回)
  1510. inputData["spler_pmtno"] = "" // 人员编号 (来自1101接口返回)
  1511. inputData["manu_date"] = struct3504.ManuDate // 人员编号 (来自1101接口返回)
  1512. inputData["expy_end"] = struct3504.ExpyEnd // 人员编号 (来自1101接口返回)
  1513. inputData["finl_trns_pric"] = struct3504.FinlTrnsPric // 人员编号 (来自1101接口返回)
  1514. inputData["purc_retn_cnt"] = struct3504.PurcRetnCnt // 人员编号 (来自1101接口返回)
  1515. inputData["purc_invo_codg"] = struct3504.PurcInvoCodg // 人员编号 (来自1101接口返回)
  1516. inputData["purc_invo_no"] = struct3504.PurcInvoNo // 人员编号 (来自1101接口返回)
  1517. inputData["rx_flag"] = struct3504.RxFlag // 人员编号 (来自1101接口返回)
  1518. inputData["purc_retn_stoin_time"] = struct3504.PurcRetnStoinTime // 人员编号 (来自1101接口返回)
  1519. inputData["purc_retn_opter_name"] = struct3504.PurcRetnOpterName // 人员编号 (来自1101接口返回)
  1520. inputData["medins_prod_purc_no"] = "" // 人员编号 (来自1101接口返回)
  1521. inputData["memo"] = "" // 人员编号 (来自1101接口返回)
  1522. input["purcinfo"] = inputData
  1523. inputMessage["input"] = input //交易输入
  1524. bytesData, err := json.Marshal(inputMessage)
  1525. fmt.Println(string(bytesData))
  1526. if err != nil {
  1527. fmt.Println(err.Error())
  1528. return err.Error(), ""
  1529. }
  1530. struct3504.RequestUrl = struct3504.RequestUrl + "3504"
  1531. return JXHttpRequest(struct3504.RequestUrl, struct3504.AccessKey, struct3504.SecretKey, timestamp, string(bytesData), "3504"), string(bytesData)
  1532. }
  1533. func Jxyb3505(struct3505 models.Struct3505) (string, string) {
  1534. timestamp := time.Now().Unix()
  1535. // 生成输入报文
  1536. inputMessage := SetJXInputMessage(timestamp, struct3505.OrgName, struct3505.Opter, struct3505.FixmedinsCode, struct3505.InsuplcAdmdvs, struct3505.MdtrtareaAdmvs, struct3505.Cainfo)
  1537. input := make(map[string]interface{})
  1538. inputData := make(map[string]interface{})
  1539. inputMessage["infno"] = "3505" // 交易编码
  1540. inputData["med_list_codg"] = struct3505.MedListCodg // 定点医药机构目录编号
  1541. inputData["fixmedins_hilist_id"] = struct3505.FixmedinsCode // 定点医药机构目录编号
  1542. inputData["fixmedins_hilist_name"] = struct3505.OrgName // 定点医药机构目录名称
  1543. inputData["fixmedins_bchno"] = struct3505.FixmedinsCode // 人员编号 (来自1101接口返回)
  1544. inputData["prsc_dr_cert_type"] = struct3505.PrscDrCertType // 人员编号 (来自1101接口返回)
  1545. inputData["prsc_dr_certno"] = struct3505.PrscDrCertno // 人员编号 (来自1101接口返回)
  1546. inputData["prsc_dr_name"] = struct3505.PrscDrName // 人员编号 (来自1101接口返回)
  1547. inputData["phar_cert_type"] = struct3505.PharCertType // 人员编号 (来自1101接口返回)
  1548. inputData["phar_certno"] = struct3505.PharCertno // 人员编号 (来自1101接口返回)
  1549. inputData["phar_name"] = struct3505.PharName // 人员编号 (来自1101接口返回)
  1550. inputData["phar_prac_cert_no"] = struct3505.PharPracCertNo // 人员编号 (来自1101接口返回)
  1551. inputData["hi_feesetl_type"] = struct3505.HiFeesetlType // 人员编号 (来自1101接口返回)
  1552. inputData["setl_id"] = struct3505.SetlId // 人员编号 (来自1101接口返回)
  1553. inputData["mdtrt_sn"] = struct3505.MdtrtSn // 人员编号 (来自1101接口返回)
  1554. inputData["psn_no"] = struct3505.PsnNo // 人员编号 (来自1101接口返回)
  1555. inputData["psn_cert_type"] = struct3505.PsnCertType // 人员编号 (来自1101接口返回)
  1556. inputData["certno"] = struct3505.CertNo // 人员编号 (来自1101接口返回)
  1557. inputData["psn_name"] = struct3505.PsnName // 人员编号 (来自1101接口返回)
  1558. inputData["manu_lotnum"] = struct3505.ManuLotnum // 人员编号 (来自1101接口返回)
  1559. inputData["manu_date"] = struct3505.ManuDate // 人员编号 (来自1101接口返回)
  1560. inputData["expy_end"] = struct3505.ExpyEnd // 人员编号 (来自1101接口返回)
  1561. inputData["rx_flag"] = struct3505.RxFlag // 人员编号 (来自1101接口返回)
  1562. inputData["trdn_flag"] = struct3505.TrdnFlag // 人员编号 (来自1101接口返回)
  1563. inputData["finl_trns_pric"] = struct3505.FinlTrnsPric // 人员编号 (来自1101接口返回)
  1564. inputData["rxno"] = struct3505.Rxno // 人员编号 (来自1101接口返回)
  1565. inputData["rx_circ_flag"] = struct3505.RxCircFlag // 人员编号 (来自1101接口返回)
  1566. inputData["rtal_docno"] = struct3505.RtalDocno // 人员编号 (来自1101接口返回)
  1567. inputData["stoout_no"] = struct3505.StooutNo // 人员编号 (来自1101接口返回)
  1568. inputData["bchno"] = struct3505.Bchno // 人员编号 (来自1101接口返回)
  1569. inputData["drug_trac_codg"] = struct3505.DrugTracCodg // 人员编号 (来自1101接口返回)
  1570. inputData["drug_prod_barc"] = struct3505.DrugProdBarc // 人员编号 (来自1101接口返回)
  1571. inputData["shelf_posi"] = struct3505.ShelfPosi // 人员编号 (来自1101接口返回)
  1572. inputData["sel_retn_cnt"] = struct3505.SelRetnCnt // 人员编号 (来自1101接口返回)
  1573. inputData["sel_retn_time"] = struct3505.SelRetnTime // 人员编号 (来自1101接口返回)
  1574. inputData["sel_retn_opter_name"] = struct3505.SelRetnOpterName // 人员编号 (来自1101接口返回)
  1575. inputData["memo"] = struct3505.Memo // 人员编号 (来自1101接口返回)
  1576. input["selinfo"] = 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. struct3505.RequestUrl = struct3505.RequestUrl + "3505"
  1585. return JXHttpRequest(struct3505.RequestUrl, struct3505.AccessKey, struct3505.SecretKey, timestamp, string(bytesData), "3505"), string(bytesData)
  1586. }
  1587. func Jxyb3506(struct3506 models.Struct3506) (string, string) {
  1588. timestamp := time.Now().Unix()
  1589. // 生成输入报文
  1590. inputMessage := SetJXInputMessage(timestamp, struct3506.OrgName, struct3506.Opter, struct3506.FixmedinsCode, struct3506.InsuplcAdmdvs, struct3506.MdtrtareaAdmvs, struct3506.Cainfo)
  1591. input := make(map[string]interface{})
  1592. inputData := make(map[string]interface{})
  1593. inputMessage["infno"] = "3506" // 交易编码
  1594. inputData["med_list_codg"] = struct3506.MedListCodg // 定点医药机构目录编号
  1595. inputData["fixmedins_hilist_id"] = struct3506.FixmedinsHilistId // 定点医药机构目录编号
  1596. inputData["fixmedins_hilist_name"] = struct3506.OrgName // 定点医药机构目录名称
  1597. inputData["fixmedins_bchno"] = struct3506.FixmedinsBchno // 人员编号 (来自1101接口返回)
  1598. inputData["setl_id"] = struct3506.SetlId // 人员编号 (来自1101接口返回)
  1599. inputData["psn_no"] = struct3506.PsnNo // 人员编号 (来自1101接口返回)
  1600. inputData["psn_cert_type"] = struct3506.PsnCertType // 人员编号 (来自1101接口返回)
  1601. inputData["certno"] = struct3506.Certno // 人员编号 (来自1101接口返回)
  1602. inputData["psn_name"] = struct3506.PsnName // 人员编号 (来自1101接口返回)
  1603. inputData["manu_lotnum"] = struct3506.ManuLotnum // 人员编号 (来自1101接口返回)
  1604. inputData["manu_date"] = struct3506.ManuDate // 人员编号 (来自1101接口返回)
  1605. inputData["expy_end"] = struct3506.ExpyEnd // 人员编号 (来自1101接口返回)
  1606. inputData["rx_flag"] = struct3506.RxFlag // 人员编号 (来自1101接口返回)
  1607. inputData["trdn_flag"] = struct3506.TrdnFlag // 人员编号 (来自1101接口返回)
  1608. inputData["finl_trns_pric"] = struct3506.FinlTrnsPric // 人员编号 (来自1101接口返回)
  1609. inputData["sel_retn_cnt"] = struct3506.SelRetnCnt // 人员编号 (来自1101接口返回)
  1610. inputData["sel_retn_time"] = struct3506.SelRetnTime // 人员编号 (来自1101接口返回)
  1611. inputData["sel_retn_opter_name"] = struct3506.SelRetnOpterName // 人员编号 (来自1101接口返回)
  1612. inputData["memo"] = "" // 人员编号 (来自1101接口返回)
  1613. inputData["medins_prod_sel_no"] = "" // 人员编号 (来自1101接口返回)
  1614. input["selinfo"] = inputData
  1615. inputMessage["input"] = input //交易输入
  1616. bytesData, err := json.Marshal(inputMessage)
  1617. fmt.Println(string(bytesData))
  1618. if err != nil {
  1619. fmt.Println(err.Error())
  1620. return err.Error(), ""
  1621. }
  1622. struct3506.RequestUrl = struct3506.RequestUrl + "3506"
  1623. return JXHttpRequest(struct3506.RequestUrl, struct3506.AccessKey, struct3506.SecretKey, timestamp, string(bytesData), "3506"), string(bytesData)
  1624. }
  1625. func Jxyb3507(struct3507 models.Struct3507) (string, string) {
  1626. timestamp := time.Now().Unix()
  1627. // 生成输入报文
  1628. inputMessage := SetJXInputMessage(timestamp, struct3507.OrgName, struct3507.Opter, struct3507.FixmedinsCode, struct3507.InsuplcAdmdvs, struct3507.MdtrtareaAdmvs, struct3507.Cainfo)
  1629. input := make(map[string]interface{})
  1630. inputData := make(map[string]interface{})
  1631. inputMessage["infno"] = "3507" // 交易编码
  1632. inputData["fixmedins_bchno"] = struct3507.FixmedinsCode // 人员编号 (来自1101接口返回)
  1633. inputData["inv_data_type"] = struct3507.InvDataType // 人员编号 (来自1101接口返回)
  1634. input["data"] = inputData
  1635. inputMessage["input"] = input //交易输入
  1636. bytesData, err := json.Marshal(inputMessage)
  1637. fmt.Println(string(bytesData))
  1638. if err != nil {
  1639. fmt.Println(err.Error())
  1640. return err.Error(), ""
  1641. }
  1642. struct3507.RequestUrl = struct3507.RequestUrl + "3507"
  1643. return JXHttpRequest(struct3507.RequestUrl, struct3507.AccessKey, struct3507.SecretKey, timestamp, string(bytesData), "3507"), string(bytesData)
  1644. }