sz_his_service.go 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944
  1. package service
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "gdyb/models"
  7. "io/ioutil"
  8. "math/rand"
  9. "net/http"
  10. "time"
  11. _ "unsafe"
  12. )
  13. func SzybMZ002(doctor string, doctor_code string, fixmedins_code string, dept_code string, account string, verify_code string, serial_number string, mz_number string, version_code string) string {
  14. // 生成输入报文
  15. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  16. inputData := make(map[string]interface{})
  17. inputMessage["transType"] = "MZ002" // 交易编码
  18. inputMessage["transVersion"] = version_code // 交易编码
  19. inputData["akc190"] = mz_number
  20. inputData["aaz500"] = account
  21. inputData["bzz269"] = "000000"
  22. inputData["aka130"] = "11"
  23. inputData["akf001"] = dept_code
  24. inputData["bkc368"] = "2"
  25. inputData["akc264"] = 10.00
  26. inputData["bke384"] = inputMessage["serialNumber"]
  27. inputData["listsize"] = 1
  28. timestamp := time.Now().Unix()
  29. tempTime := time.Unix(timestamp, 0)
  30. timeFormat := tempTime.Format("20060102150405")
  31. feedetail := make([]map[string]interface{}, 0)
  32. feedetailInfo := make(map[string]interface{})
  33. feedetailInfo["aae072"] = timeFormat
  34. feedetailInfo["bkf500"] = timeFormat
  35. feedetailInfo["ake001"] = "110100002"
  36. feedetailInfo["ake005"] = "110100002"
  37. feedetailInfo["ake006"] = "普通门诊诊查费"
  38. feedetailInfo["aae019"] = 10.00
  39. feedetail = append(feedetail, feedetailInfo)
  40. inputData["inputlist"] = feedetail
  41. inputMessage["transBody"] = inputData
  42. bytesData, err := json.Marshal(inputMessage)
  43. fmt.Println(string(bytesData))
  44. if err != nil {
  45. fmt.Println(err.Error())
  46. return err.Error()
  47. }
  48. reader := bytes.NewReader(bytesData)
  49. url := "http://192.168.1.228:17001/szsi-portal/transData"
  50. request, err := http.NewRequest("POST", url, reader)
  51. if err != nil {
  52. fmt.Println(err.Error())
  53. return err.Error()
  54. }
  55. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  56. client := http.Client{}
  57. resp, err := client.Do(request)
  58. if err != nil {
  59. fmt.Println(err.Error())
  60. return err.Error()
  61. }
  62. respBytes, err := ioutil.ReadAll(resp.Body)
  63. if err != nil {
  64. fmt.Println(err.Error())
  65. return err.Error()
  66. }
  67. fmt.Println(string(respBytes))
  68. str := string(respBytes)
  69. return str
  70. }
  71. func SzybFY001(doctor string, doctor_code string, fixmedins_code string, datas []*models.CustomDetail, verify_code string, serial_number string, mz_number string, version_code string) string {
  72. // 生成输入报文
  73. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  74. inputData := make(map[string]interface{})
  75. inputMessage["transType"] = "FY001" // 交易编码
  76. inputMessage["transChannel"] = "10" // 交易编码
  77. inputMessage["transVersion"] = version_code // 交易编码
  78. inputData["akc190"] = mz_number
  79. inputData["bke384"] = serial_number
  80. inputData["listsize"] = len(datas)
  81. feedetail := make([]map[string]interface{}, 0)
  82. for _, item := range datas {
  83. feedetailInfo := make(map[string]interface{})
  84. feedetailInfo["aae072"] = item.PrescriptionNumber
  85. feedetailInfo["bkc369"] = item.OrderType
  86. feedetailInfo["bkf500"] = item.ChargeSerialNumber
  87. feedetailInfo["ake001"] = item.Code
  88. feedetailInfo["ake002"] = item.CodeName
  89. feedetailInfo["bkm017"] = item.Code
  90. feedetailInfo["aka070"] = item.DoseCode
  91. feedetailInfo["aka074"] = item.Spec
  92. feedetailInfo["aka064"] = 0
  93. feedetailInfo["ake005"] = item.Code
  94. feedetailInfo["ake006"] = item.CodeName
  95. feedetailInfo["akc225"] = item.Price
  96. feedetailInfo["akc226"] = item.Count
  97. feedetailInfo["aka067"] = "元"
  98. feedetailInfo["akc271"] = item.ChargeOrderDate
  99. feedetailInfo["bkc320"] = "H24962918"
  100. feedetailInfo["akc264"] = item.Total
  101. feedetail = append(feedetail, feedetailInfo)
  102. }
  103. inputData["inputlist"] = feedetail
  104. inputMessage["transBody"] = inputData
  105. fmt.Println(inputMessage)
  106. bytesData, err := json.Marshal(inputMessage)
  107. fmt.Println(string(bytesData))
  108. if err != nil {
  109. fmt.Println(err.Error())
  110. return err.Error()
  111. }
  112. reader := bytes.NewReader(bytesData)
  113. url := "http://192.168.1.228:17001/szsi-portal/transData"
  114. request, err := http.NewRequest("POST", url, reader)
  115. if err != nil {
  116. fmt.Println(err.Error())
  117. return err.Error()
  118. }
  119. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  120. client := http.Client{}
  121. resp, err := client.Do(request)
  122. if err != nil {
  123. fmt.Println(err.Error())
  124. return err.Error()
  125. }
  126. respBytes, err := ioutil.ReadAll(resp.Body)
  127. if err != nil {
  128. fmt.Println(err.Error())
  129. return err.Error()
  130. }
  131. fmt.Println(string(respBytes))
  132. str := string(respBytes)
  133. return str
  134. }
  135. func SzybFY002(doctor string, doctor_code string, fixmedins_code string, datas []*models.CustomDetail, verify_code string, serial_number string, mz_number string, version_code string) string {
  136. // 生成输入报文
  137. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  138. inputData := make(map[string]interface{})
  139. inputMessage["transType"] = "FY002" // 交易编码
  140. inputMessage["transVersion"] = version_code // 交易编码
  141. inputData["akc190"] = mz_number
  142. inputData["bke384"] = serial_number
  143. inputData["listsize"] = len(datas)
  144. feedetail := make([]map[string]interface{}, 0)
  145. for _, item := range datas {
  146. feedetailInfo := make(map[string]interface{})
  147. feedetailInfo["aae072"] = item.PrescriptionNumber
  148. feedetailInfo["bkf500"] = item.ChargeSerialNumber
  149. feedetail = append(feedetail, feedetailInfo)
  150. }
  151. inputData["inputlist"] = feedetail
  152. inputMessage["transBody"] = inputData
  153. bytesData, err := json.Marshal(inputMessage)
  154. fmt.Println(string(bytesData))
  155. if err != nil {
  156. fmt.Println(err.Error())
  157. return err.Error()
  158. }
  159. reader := bytes.NewReader(bytesData)
  160. //url := "http://192.168.1.99:10000"
  161. url := "http://192.168.1.228:17001/szsi-portal/transData"
  162. request, err := http.NewRequest("POST", url, reader)
  163. if err != nil {
  164. fmt.Println(err.Error())
  165. return err.Error()
  166. }
  167. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  168. client := http.Client{}
  169. resp, err := client.Do(request)
  170. if err != nil {
  171. fmt.Println(err.Error())
  172. return err.Error()
  173. }
  174. respBytes, err := ioutil.ReadAll(resp.Body)
  175. if err != nil {
  176. fmt.Println(err.Error())
  177. return err.Error()
  178. }
  179. fmt.Println(string(respBytes))
  180. str := string(respBytes)
  181. return str
  182. }
  183. func SzybFY004(doctor string, doctor_code string, fixmedins_code string, total float64, verify_code string, serial_number string, mz_number string, version_code string) string {
  184. // 生成输入报文
  185. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  186. inputData := make(map[string]interface{})
  187. inputMessage["transType"] = "FY004" // 交易编码
  188. inputMessage["transVersion"] = version_code // 交易编码
  189. inputData["akc190"] = mz_number
  190. inputData["aka130"] = "11"
  191. inputData["bkc320"] = doctor_code
  192. inputData["ckc350"] = doctor
  193. inputData["aka030"] = "12"
  194. inputData["akc264"] = total
  195. inputData["ckc601"] = "0"
  196. inputData["bke384"] = serial_number
  197. inputMessage["transBody"] = inputData
  198. bytesData, err := json.Marshal(inputMessage)
  199. fmt.Println(string(bytesData))
  200. if err != nil {
  201. fmt.Println(err.Error())
  202. return err.Error()
  203. }
  204. reader := bytes.NewReader(bytesData)
  205. //url := "http://192.168.1.99:10000"
  206. url := "http://192.168.1.228:17001/szsi-portal/transData"
  207. request, err := http.NewRequest("POST", url, reader)
  208. if err != nil {
  209. fmt.Println(err.Error())
  210. return err.Error()
  211. }
  212. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  213. client := http.Client{}
  214. resp, err := client.Do(request)
  215. if err != nil {
  216. fmt.Println(err.Error())
  217. return err.Error()
  218. }
  219. respBytes, err := ioutil.ReadAll(resp.Body)
  220. if err != nil {
  221. fmt.Println(err.Error())
  222. return err.Error()
  223. }
  224. fmt.Println(string(respBytes))
  225. str := string(respBytes)
  226. return str
  227. }
  228. func SzybFY005(doctor string, doctor_code string, fixmedins_code string, total float64, account string, verify_code string, serial_number string, mz_number string, version_code string) string {
  229. // 生成输入报文
  230. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  231. inputData := make(map[string]interface{})
  232. inputMessage["transType"] = "FY005" // 交易编码
  233. inputMessage["transVersion"] = version_code // 交易编码
  234. inputData["aaz500"] = account
  235. inputData["bzz269"] = "000000"
  236. inputData["akc190"] = mz_number
  237. inputData["aka130"] = "11"
  238. inputData["bkc320"] = doctor_code
  239. inputData["ckc350"] = doctor
  240. inputData["aka030"] = "12"
  241. inputData["akc264"] = total
  242. inputData["ckc601"] = "0"
  243. inputData["bke384"] = serial_number
  244. inputMessage["transBody"] = inputData
  245. bytesData, err := json.Marshal(inputMessage)
  246. fmt.Println(string(bytesData))
  247. if err != nil {
  248. fmt.Println(err.Error())
  249. return err.Error()
  250. }
  251. reader := bytes.NewReader(bytesData)
  252. //url := "http://192.168.1.99:10000"
  253. url := "http://192.168.1.228:17001/szsi-portal/transData"
  254. request, err := http.NewRequest("POST", url, reader)
  255. if err != nil {
  256. fmt.Println(err.Error())
  257. return err.Error()
  258. }
  259. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  260. client := http.Client{}
  261. resp, err := client.Do(request)
  262. if err != nil {
  263. fmt.Println(err.Error())
  264. return err.Error()
  265. }
  266. respBytes, err := ioutil.ReadAll(resp.Body)
  267. if err != nil {
  268. fmt.Println(err.Error())
  269. return err.Error()
  270. }
  271. fmt.Println(string(respBytes))
  272. str := string(respBytes)
  273. return str
  274. }
  275. func SzybJY001(doctor string, doctor_code string, fixmedins_code string, setl_number string, mz_number string, verify_code string, version_code string) string {
  276. // 生成输入报文
  277. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, setl_number)
  278. inputData := make(map[string]interface{})
  279. inputMessage["transType"] = "JY001" // 交易编码
  280. inputMessage["transVersion"] = version_code // 交易编码
  281. inputData["akc190"] = mz_number
  282. inputData["bke384"] = setl_number
  283. inputMessage["transBody"] = inputData
  284. bytesData, err := json.Marshal(inputMessage)
  285. fmt.Println(string(bytesData))
  286. if err != nil {
  287. fmt.Println(err.Error())
  288. return err.Error()
  289. }
  290. reader := bytes.NewReader(bytesData)
  291. //url := "http://192.168.1.99:10000"
  292. url := "http://192.168.1.228:17001/szsi-portal/transData"
  293. request, err := http.NewRequest("POST", url, reader)
  294. if err != nil {
  295. fmt.Println(err.Error())
  296. return err.Error()
  297. }
  298. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  299. client := http.Client{}
  300. resp, err := client.Do(request)
  301. if err != nil {
  302. fmt.Println(err.Error())
  303. return err.Error()
  304. }
  305. respBytes, err := ioutil.ReadAll(resp.Body)
  306. if err != nil {
  307. fmt.Println(err.Error())
  308. return err.Error()
  309. }
  310. fmt.Println(string(respBytes))
  311. str := string(respBytes)
  312. return str
  313. }
  314. func SzybJY002(doctor string, doctor_code string, fixmedins_code string, setl_number string, mz_number string, verify_code string, new_setl_number string, version_code string) string {
  315. // 生成输入报文
  316. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, new_setl_number)
  317. inputData := make(map[string]interface{})
  318. inputMessage["transType"] = "JY002" // 交易编码
  319. inputMessage["transVersion"] = version_code // 交易编码
  320. inputData["akc190"] = mz_number
  321. inputData["bke384"] = setl_number
  322. inputMessage["transBody"] = inputData
  323. bytesData, err := json.Marshal(inputMessage)
  324. fmt.Println(string(bytesData))
  325. if err != nil {
  326. fmt.Println(err.Error())
  327. return err.Error()
  328. }
  329. reader := bytes.NewReader(bytesData)
  330. //url := "http://192.168.1.99:10000"
  331. url := "http://192.168.1.228:17001/szsi-portal/transData"
  332. request, err := http.NewRequest("POST", url, reader)
  333. if err != nil {
  334. fmt.Println(err.Error())
  335. return err.Error()
  336. }
  337. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  338. client := http.Client{}
  339. resp, err := client.Do(request)
  340. if err != nil {
  341. fmt.Println(err.Error())
  342. return err.Error()
  343. }
  344. respBytes, err := ioutil.ReadAll(resp.Body)
  345. if err != nil {
  346. fmt.Println(err.Error())
  347. return err.Error()
  348. }
  349. fmt.Println(string(respBytes))
  350. str := string(respBytes)
  351. return str
  352. }
  353. func SzybJY003(doctor string, doctor_code string, fixmedins_code string, setl_number string, mz_number string, verify_code string, version_code string) string {
  354. // 生成输入报文
  355. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, setl_number)
  356. inputData := make(map[string]interface{})
  357. inputMessage["transType"] = "JY003" // 交易编码
  358. inputMessage["transVersion"] = version_code // 交易编码
  359. inputData["akc190"] = mz_number
  360. inputData["bke384"] = setl_number
  361. inputMessage["transBody"] = inputData
  362. bytesData, err := json.Marshal(inputMessage)
  363. fmt.Println(string(bytesData))
  364. if err != nil {
  365. fmt.Println(err.Error())
  366. return err.Error()
  367. }
  368. reader := bytes.NewReader(bytesData)
  369. //url := "http://192.168.1.99:10000"
  370. url := "http://192.168.1.228:17001/szsi-portal/transData"
  371. request, err := http.NewRequest("POST", url, reader)
  372. if err != nil {
  373. fmt.Println(err.Error())
  374. return err.Error()
  375. }
  376. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  377. client := http.Client{}
  378. resp, err := client.Do(request)
  379. if err != nil {
  380. fmt.Println(err.Error())
  381. return err.Error()
  382. }
  383. respBytes, err := ioutil.ReadAll(resp.Body)
  384. if err != nil {
  385. fmt.Println(err.Error())
  386. return err.Error()
  387. }
  388. fmt.Println(string(respBytes))
  389. str := string(respBytes)
  390. return str
  391. }
  392. // 生成基础报文
  393. func SetSZInputMessage(doctor string, doctor_code string, fixmedins_code string, verify_code string, number string) map[string]interface{} {
  394. month := time.Unix(1557042972, 0).Format("1")
  395. year := time.Now().Format("2006")
  396. month = time.Now().Format("01")
  397. day := time.Now().Format("02")
  398. hour := time.Now().Format("15")
  399. min := time.Now().Format("04")
  400. sec := time.Now().Format("05")
  401. msec := time.Now().Format("000")
  402. // 生成输入报文
  403. inputMessage := make(map[string]interface{})
  404. //
  405. inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
  406. inputMessage["extendDeviceId"] = ""
  407. inputMessage["extendSerialNumber"] = ""
  408. inputMessage["extendUserId"] = ""
  409. inputMessage["hospitalCode"] = fixmedins_code // 协议机构编码
  410. inputMessage["operatorCode"] = doctor_code // 操作员编码
  411. inputMessage["operatorName"] = doctor // 操作员名字
  412. inputMessage["operatorPass"] = "" // 定点协议机构操作人员编码
  413. inputMessage["serialNumber"] = number
  414. inputMessage["transReturnCode"] = "" //
  415. inputMessage["transReturnMessage"] = "" //
  416. inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
  417. inputMessage["verifyCode"] = verify_code //
  418. inputMessage["transChannel"] = "10" //
  419. return inputMessage
  420. }
  421. func msToTime(ms int64) string {
  422. tm := time.Unix(0, ms*int64(time.Millisecond))
  423. return tm.Format("2006-02-01 15:04:05.000")
  424. }
  425. func SzybML008(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
  426. //生成输入报文
  427. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  428. inputData := make(map[string]interface{})
  429. inputMessage["transType"] = "JY003" // 交易编码
  430. inputData["listsize"] = len(datas)
  431. inputMessage["transType"] = "ML008" // 交易编码
  432. feedetail := make([]map[string]interface{}, 0)
  433. //inputData["akc190"] = mz_number
  434. //inputData["bke384"] = setl_number
  435. for _, item := range datas {
  436. fmt.Println("中国222222", item.DrugDosageName)
  437. feedetailInfo := make(map[string]interface{})
  438. feedetailInfo["ake001"] = item.MedicalInsuranceNumber
  439. feedetailInfo["bkm017"] = item.Code
  440. feedetailInfo["ake005"] = "110100002"
  441. feedetailInfo["ake006"] = item.DrugName
  442. feedetailInfo["aka074"] = item.DrugSpec
  443. feedetailInfo["aka070"] = item.DrugDosageName
  444. //feedetailInfo["aka070"] = "片"
  445. feedetailInfo["aka067"] = item.MinUnit
  446. feedetailInfo["bka053"] = item.ManufacturerName
  447. feedetailInfo["aka064"] = "1"
  448. feedetailInfo["bka505"] = item.LastPrice
  449. feedetailInfo["bka506"] = item.RetailPrice
  450. feedetailInfo["aae030"] = 20210406
  451. feedetailInfo["aae013"] = item.LimitRemark
  452. feedetail = append(feedetail, feedetailInfo)
  453. }
  454. inputData["inputlist"] = feedetail
  455. inputMessage["transBody"] = inputData
  456. bytesData, err := json.Marshal(inputMessage)
  457. fmt.Println(string(bytesData))
  458. if err != nil {
  459. fmt.Println(err.Error())
  460. return err.Error()
  461. }
  462. reader := bytes.NewReader(bytesData)
  463. //url := "http://192.168.1.99:10000"
  464. url := "http://192.168.1.228:17001/szsi-portal/transData"
  465. request, err := http.NewRequest("POST", url, reader)
  466. if err != nil {
  467. fmt.Println(err.Error())
  468. return err.Error()
  469. }
  470. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  471. client := http.Client{}
  472. resp, err := client.Do(request)
  473. if err != nil {
  474. fmt.Println(err.Error())
  475. return err.Error()
  476. }
  477. respBytes, err := ioutil.ReadAll(resp.Body)
  478. if err != nil {
  479. fmt.Println(err.Error())
  480. return err.Error()
  481. }
  482. fmt.Println(string(respBytes))
  483. str := string(respBytes)
  484. return str
  485. }
  486. // 生成基础报文
  487. func SetSZDrugMessage(doctor string, doctor_code string, fixmedins_code string) map[string]interface{} {
  488. month := time.Unix(1557042972, 0).Format("1")
  489. year := time.Now().Format("2006")
  490. month = time.Now().Format("01")
  491. day := time.Now().Format("02")
  492. hour := time.Now().Format("15")
  493. min := time.Now().Format("04")
  494. sec := time.Now().Format("05")
  495. msec := time.Now().Format("000")
  496. //生成输入报文
  497. inputMessage := make(map[string]interface{})
  498. //
  499. inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
  500. inputMessage["extendDeviceId"] = ""
  501. inputMessage["extendSerialNumber"] = ""
  502. inputMessage["extendUserId"] = ""
  503. inputMessage["hospitalCode"] = "G5540" // 协议机构编码
  504. inputMessage["operatorCode"] = doctor_code // 操作员编码
  505. inputMessage["operatorName"] = doctor // 操作员名字
  506. inputMessage["operatorPass"] = "" // 定点协议机构操作人员编码
  507. //inputMessage["serialNumber"] = "G5540" + year + month + day +
  508. // fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
  509. inputMessage["serialNumber"] = "G554020210406" + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
  510. inputMessage["verifyCode"] = "000000|8ec5b7745a5cc45b631f23b4bf1e417e"
  511. inputMessage["transReturnCode"] = "" //
  512. inputMessage["transReturnMessage"] = "" //
  513. inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
  514. inputMessage["transVersion"] = "V0.3" // //
  515. inputMessage["transChannel"] = "10" //
  516. return inputMessage
  517. }
  518. func SzybML009(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
  519. //生成输入报文
  520. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  521. inputData := make(map[string]interface{})
  522. inputData["listsize"] = len(datas)
  523. inputMessage["transType"] = "ML009" // 交易编码
  524. feedetail := make([]map[string]interface{}, 0)
  525. for _, item := range datas {
  526. feedetailInfo := make(map[string]interface{})
  527. feedetailInfo["ake001"] = item.MedicalInsuranceNumber //社保目录编码
  528. feedetailInfo["ake005"] = "110100002" //协议机构内部目录编码
  529. feedetailInfo["ake006"] = item.DrugName // 协议机构内部目录名称
  530. feedetailInfo["bkf131"] = "4" //协议机构项目类别
  531. feedetailInfo["bkm062"] = "0" // 门诊特检项目标识
  532. feedetailInfo["bka506"] = item.RetailPrice // 协议机构内部项目收费价格
  533. feedetailInfo["aae030"] = 20210407 // 备案日期
  534. feedetailInfo["aae013"] = item.LimitRemark // 备注
  535. feedetail = append(feedetail, feedetailInfo)
  536. }
  537. fmt.Println("feeedDetal2333333333", feedetail)
  538. inputData["inputlist"] = feedetail
  539. inputMessage["transBody"] = inputData
  540. bytesData, err := json.Marshal(inputMessage)
  541. fmt.Println(string(bytesData))
  542. if err != nil {
  543. fmt.Println(err.Error())
  544. return err.Error()
  545. }
  546. reader := bytes.NewReader(bytesData)
  547. //url := "http://192.168.1.99:10000"
  548. url := "http://192.168.1.228:17001/szsi-portal/transData"
  549. request, err := http.NewRequest("POST", url, reader)
  550. if err != nil {
  551. fmt.Println(err.Error())
  552. return err.Error()
  553. }
  554. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  555. client := http.Client{}
  556. resp, err := client.Do(request)
  557. if err != nil {
  558. fmt.Println(err.Error())
  559. return err.Error()
  560. }
  561. respBytes, err := ioutil.ReadAll(resp.Body)
  562. if err != nil {
  563. fmt.Println(err.Error())
  564. return err.Error()
  565. }
  566. fmt.Println(string(respBytes))
  567. str := string(respBytes)
  568. return str
  569. }
  570. func SzybML010(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
  571. //生成输入报文
  572. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  573. inputData := make(map[string]interface{})
  574. inputData["listsize"] = len(datas)
  575. inputMessage["transType"] = "ML010" // 交易编码
  576. feedetail := make([]map[string]interface{}, 0)
  577. for _, item := range datas {
  578. feedetailInfo := make(map[string]interface{})
  579. feedetailInfo["ake003"] = "1"
  580. feedetailInfo["ake001"] = item.MedicalInsuranceNumber //社保目录编码
  581. feedetailInfo["ake005"] = "110100002" //协议机构内部目录编码
  582. feedetail = append(feedetail, feedetailInfo)
  583. }
  584. inputData["inputlist"] = feedetail
  585. inputMessage["transBody"] = inputData
  586. bytesData, err := json.Marshal(inputMessage)
  587. fmt.Println(string(bytesData))
  588. if err != nil {
  589. fmt.Println(err.Error())
  590. return err.Error()
  591. }
  592. reader := bytes.NewReader(bytesData)
  593. //url := "http://192.168.1.99:10000"
  594. url := "http://192.168.1.228:17001/szsi-portal/transData"
  595. request, err := http.NewRequest("POST", url, reader)
  596. if err != nil {
  597. fmt.Println(err.Error())
  598. return err.Error()
  599. }
  600. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  601. client := http.Client{}
  602. resp, err := client.Do(request)
  603. if err != nil {
  604. fmt.Println(err.Error())
  605. return err.Error()
  606. }
  607. respBytes, err := ioutil.ReadAll(resp.Body)
  608. if err != nil {
  609. fmt.Println(err.Error())
  610. return err.Error()
  611. }
  612. fmt.Println(string(respBytes))
  613. str := string(respBytes)
  614. return str
  615. }
  616. func SzybYS001(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
  617. //生成输入报文
  618. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  619. inputData := make(map[string]interface{})
  620. inputData["listsize"] = len(datas)
  621. inputMessage["transType"] = "ML010" // 交易编码
  622. feedetail := make([]map[string]interface{}, 0)
  623. for _, item := range datas {
  624. feedetailInfo := make(map[string]interface{})
  625. feedetailInfo["aac003"] = item.UserName
  626. feedetailInfo["bka633"] = item.RoleId
  627. feedetailInfo["aac004"] = item.Sex
  628. feedetailInfo["aac058"] = item.CardType
  629. feedetailInfo["aac147"] = item.IdCard
  630. feedetailInfo["aae005"] = item.Phone
  631. feedetailInfo["bkc322"] = item.WorkMajorName
  632. feedetailInfo["aac005"] = item.Nation
  633. feedetailInfo["aac006"] = item.BirthDay
  634. feedetailInfo["aac007"] = item.WorkTime
  635. feedetailInfo["aac011"] = item.Education
  636. feedetailInfo["aac183"] = item.StudyMajorName
  637. feedetailInfo["bkc323"] = item.CertificateCode
  638. feedetailInfo["bke955"] = item.MedicalCode
  639. feedetailInfo["akc055"] = item.MedicalRangeCode
  640. feedetailInfo["bcc950"] = item.MedicalLevel
  641. feedetailInfo["bcc955"] = item.TypeJob
  642. feedetailInfo["bka503"] = item.DoctorNumber
  643. feedetailInfo["bkc324"] = item.Licensing
  644. feedetailInfo["bkc326"] = item.DoctorServiceStatus
  645. feedetailInfo["bkc328"] = item.MonitoringLevel
  646. feedetailInfo["bkc329"] = item.DrugPsychotropicSubstances
  647. feedetailInfo["bke801"] = item.HealthCareCode
  648. feedetailInfo["bkc330"] = item.PlanningTechnicalServiceCode
  649. feedetailInfo["bkc332"] = item.PharmacistType
  650. feedetailInfo["bkc333"] = item.PharmacistPracticeCategory
  651. feedetailInfo["bkc334"] = item.PharmacistsLicensing
  652. feedetailInfo["bkc335"] = item.PharmacistRegistrationNumber
  653. feedetailInfo["akf001"] = item.OfficeCode
  654. feedetailInfo["acc501"] = item.JobNumber
  655. feedetailInfo["ahc451"] = item.PostName
  656. feedetailInfo["aaf009"] = item.TechnicalJobLevelCode
  657. feedetailInfo["bkc321"] = item.IsActive
  658. feedetailInfo["ckc302"] = item.PrescriptionQualificationIdentification
  659. feedetailInfo["bkc325"] = item.IdentificationOutpatients
  660. feedetailInfo["ckc304"] = item.OutpatientIllnessCategory
  661. feedetailInfo["aae030"] = item.StartTime
  662. feedetail = append(feedetail, feedetailInfo)
  663. }
  664. inputData["inputlist"] = feedetail
  665. inputMessage["transBody"] = inputData
  666. bytesData, err := json.Marshal(inputMessage)
  667. fmt.Println(string(bytesData))
  668. if err != nil {
  669. fmt.Println(err.Error())
  670. return err.Error()
  671. }
  672. reader := bytes.NewReader(bytesData)
  673. //url := "http://192.168.1.99:10000"
  674. url := "http://192.168.1.228:17001/szsi-portal/transData"
  675. request, err := http.NewRequest("POST", url, reader)
  676. if err != nil {
  677. fmt.Println(err.Error())
  678. return err.Error()
  679. }
  680. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  681. client := http.Client{}
  682. resp, err := client.Do(request)
  683. if err != nil {
  684. fmt.Println(err.Error())
  685. return err.Error()
  686. }
  687. respBytes, err := ioutil.ReadAll(resp.Body)
  688. if err != nil {
  689. fmt.Println(err.Error())
  690. return err.Error()
  691. }
  692. fmt.Println(string(respBytes))
  693. str := string(respBytes)
  694. return str
  695. }
  696. func SzybYS002(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
  697. //生成输入报文
  698. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  699. inputData := make(map[string]interface{})
  700. inputData["listsize"] = len(datas)
  701. inputMessage["transType"] = "ML010" // 交易编码
  702. feedetail := make([]map[string]interface{}, 0)
  703. for _, item := range datas {
  704. fmt.Println("item2222", item)
  705. feedetailInfo := make(map[string]interface{})
  706. feedetailInfo["bkc320"] = 1111
  707. feedetailInfo["bke155"] = ""
  708. feedetail = append(feedetail, feedetailInfo)
  709. }
  710. inputData["inputlist"] = feedetail
  711. inputMessage["transBody"] = inputData
  712. bytesData, err := json.Marshal(inputMessage)
  713. fmt.Println(string(bytesData))
  714. if err != nil {
  715. fmt.Println(err.Error())
  716. return err.Error()
  717. }
  718. reader := bytes.NewReader(bytesData)
  719. //url := "http://192.168.1.99:10000"
  720. url := "http://192.168.1.228:17001/szsi-portal/transData"
  721. request, err := http.NewRequest("POST", url, reader)
  722. if err != nil {
  723. fmt.Println(err.Error())
  724. return err.Error()
  725. }
  726. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  727. client := http.Client{}
  728. resp, err := client.Do(request)
  729. if err != nil {
  730. fmt.Println(err.Error())
  731. return err.Error()
  732. }
  733. respBytes, err := ioutil.ReadAll(resp.Body)
  734. if err != nil {
  735. fmt.Println(err.Error())
  736. return err.Error()
  737. }
  738. fmt.Println(string(respBytes))
  739. str := string(respBytes)
  740. return str
  741. }
  742. func SzybYS003(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
  743. //生成输入报文
  744. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  745. inputData := make(map[string]interface{})
  746. inputData["listsize"] = len(datas)
  747. inputMessage["transType"] = "ML010" // 交易编码
  748. feedetail := make([]map[string]interface{}, 0)
  749. for _, item := range datas {
  750. feedetailInfo := make(map[string]interface{})
  751. feedetailInfo["bkc320"] = ""
  752. feedetailInfo["aac003"] = item.UserName
  753. feedetailInfo["bka633"] = item.RoleId
  754. feedetailInfo["aac004"] = item.Sex
  755. feedetailInfo["aac058"] = item.CardType
  756. feedetailInfo["aac147"] = item.IdCard
  757. feedetailInfo["aae005"] = item.Phone
  758. feedetailInfo["bkc322"] = item.WorkMajorName
  759. feedetailInfo["aac005"] = item.Nation
  760. feedetailInfo["aac006"] = item.BirthDay
  761. feedetailInfo["aac007"] = item.WorkTime
  762. feedetailInfo["aac011"] = item.Education
  763. feedetailInfo["aac183"] = item.StudyMajorName
  764. feedetailInfo["bkc323"] = item.CertificateCode
  765. feedetailInfo["bke955"] = item.MedicalCode
  766. feedetailInfo["akc055"] = item.MedicalRangeCode
  767. feedetailInfo["bcc950"] = item.MedicalLevel
  768. feedetailInfo["bcc955"] = item.TypeJob
  769. feedetailInfo["bka503"] = item.DoctorNumber
  770. feedetailInfo["bkc324"] = item.Licensing
  771. feedetailInfo["bkc326"] = item.DoctorServiceStatus
  772. feedetailInfo["bkc328"] = item.MonitoringLevel
  773. feedetailInfo["bkc329"] = item.DrugPsychotropicSubstances
  774. feedetailInfo["bke801"] = item.HealthCareCode
  775. feedetailInfo["bkc330"] = item.PlanningTechnicalServiceCode
  776. feedetailInfo["bkc332"] = item.PharmacistType
  777. feedetailInfo["bkc333"] = item.PharmacistPracticeCategory
  778. feedetailInfo["bkc334"] = item.PharmacistsLicensing
  779. feedetailInfo["bkc335"] = item.PharmacistRegistrationNumber
  780. feedetailInfo["akf001"] = item.OfficeCode
  781. feedetailInfo["acc501"] = item.JobNumber
  782. feedetailInfo["ahc451"] = item.PostName
  783. feedetailInfo["aaf009"] = item.TechnicalJobLevelCode
  784. feedetailInfo["bkc321"] = item.IsActive
  785. feedetailInfo["ckc302"] = item.PrescriptionQualificationIdentification
  786. feedetailInfo["bkc325"] = item.IdentificationOutpatients
  787. feedetailInfo["ckc304"] = item.OutpatientIllnessCategory
  788. feedetailInfo["aae030"] = item.StartTime
  789. feedetailInfo["aae031"] = item.EndTime
  790. feedetail = append(feedetail, feedetailInfo)
  791. }
  792. inputData["inputlist"] = feedetail
  793. inputMessage["transBody"] = inputData
  794. bytesData, err := json.Marshal(inputMessage)
  795. fmt.Println(string(bytesData))
  796. if err != nil {
  797. fmt.Println(err.Error())
  798. return err.Error()
  799. }
  800. reader := bytes.NewReader(bytesData)
  801. //url := "http://192.168.1.99:10000"
  802. url := "http://192.168.1.228:17001/szsi-portal/transData"
  803. request, err := http.NewRequest("POST", url, reader)
  804. if err != nil {
  805. fmt.Println(err.Error())
  806. return err.Error()
  807. }
  808. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  809. client := http.Client{}
  810. resp, err := client.Do(request)
  811. if err != nil {
  812. fmt.Println(err.Error())
  813. return err.Error()
  814. }
  815. respBytes, err := ioutil.ReadAll(resp.Body)
  816. if err != nil {
  817. fmt.Println(err.Error())
  818. return err.Error()
  819. }
  820. fmt.Println(string(respBytes))
  821. str := string(respBytes)
  822. return str
  823. }