sz_his_service.go 33KB

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