sz_his_service.go 34KB

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