sz_his_service.go 50KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432
  1. package service
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "gdyb/models"
  7. "github.com/astaxie/beego"
  8. "io/ioutil"
  9. "math/rand"
  10. "net/http"
  11. "strconv"
  12. "time"
  13. _ "unsafe"
  14. )
  15. 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, medical_care int64) string {
  16. // 生成输入报文
  17. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  18. inputData := make(map[string]interface{})
  19. inputMessage["transType"] = "MZ002" // 交易编码
  20. inputMessage["transVersion"] = version_code // 交易编码
  21. if medical_care == 11 {
  22. inputData["aka130"] = "11"
  23. } else if medical_care == 13 {
  24. inputData["aka130"] = "13"
  25. } else {
  26. inputData["aka130"] = fmt.Sprintf("%d", medical_care)
  27. }
  28. inputData["akc190"] = mz_number
  29. inputData["aaz500"] = account
  30. inputData["bzz269"] = "000000"
  31. inputData["akf001"] = dept_code
  32. inputData["akc264"] = price
  33. inputData["bke384"] = inputMessage["serialNumber"]
  34. switch custom_code {
  35. case "110100002":
  36. inputData["bkc368"] = "1"
  37. break
  38. case "110200002-2":
  39. inputData["bkc368"] = "3"
  40. break
  41. case "110200002-3":
  42. inputData["bkc368"] = "2"
  43. break
  44. case "110200003":
  45. break
  46. case "110200002-1":
  47. inputData["bkc368"] = "5"
  48. break
  49. }
  50. if custom_code == "0" {
  51. inputData["bkc368"] = "4"
  52. inputData["listsize"] = 0
  53. inputMessage["transBody"] = inputData
  54. bytesData, err := json.Marshal(inputMessage)
  55. fmt.Println(string(bytesData))
  56. if err != nil {
  57. fmt.Println(err.Error())
  58. return err.Error()
  59. }
  60. reader := bytes.NewReader(bytesData)
  61. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  62. url := "http://192.168.1.88:6666/szsi-portal/transData"
  63. request, err := http.NewRequest("POST", url, reader)
  64. if err != nil {
  65. fmt.Println(err.Error())
  66. return err.Error()
  67. }
  68. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  69. client := http.Client{}
  70. resp, err := client.Do(request)
  71. if err != nil {
  72. fmt.Println(err.Error())
  73. return err.Error()
  74. }
  75. respBytes, err := ioutil.ReadAll(resp.Body)
  76. if err != nil {
  77. fmt.Println(err.Error())
  78. return err.Error()
  79. }
  80. fmt.Println(string(respBytes))
  81. str := string(respBytes)
  82. return str
  83. } else {
  84. inputData["listsize"] = 1
  85. timestamp := time.Now().Unix()
  86. tempTime := time.Unix(timestamp, 0)
  87. timeFormat := tempTime.Format("20060102150405")
  88. feedetail := make([]map[string]interface{}, 0)
  89. feedetailInfo := make(map[string]interface{})
  90. feedetailInfo["aae072"] = timeFormat
  91. feedetailInfo["bkf500"] = timeFormat
  92. feedetailInfo["ake001"] = custom_code
  93. feedetailInfo["ake005"] = custom_code
  94. feedetailInfo["ake006"] = project_name
  95. feedetailInfo["aae019"] = price
  96. feedetail = append(feedetail, feedetailInfo)
  97. inputData["inputlist"] = feedetail
  98. inputMessage["transBody"] = inputData
  99. bytesData, err := json.Marshal(inputMessage)
  100. fmt.Println(string(bytesData))
  101. if err != nil {
  102. fmt.Println(err.Error())
  103. return err.Error()
  104. }
  105. reader := bytes.NewReader(bytesData)
  106. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  107. url := "http://192.168.1.88:6666/szsi-portal/transData"
  108. request, err := http.NewRequest("POST", url, reader)
  109. if err != nil {
  110. fmt.Println(err.Error())
  111. return err.Error()
  112. }
  113. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  114. client := http.Client{}
  115. resp, err := client.Do(request)
  116. if err != nil {
  117. fmt.Println(err.Error())
  118. return err.Error()
  119. }
  120. respBytes, err := ioutil.ReadAll(resp.Body)
  121. if err != nil {
  122. fmt.Println(err.Error())
  123. return err.Error()
  124. }
  125. fmt.Println(string(respBytes))
  126. str := string(respBytes)
  127. return str
  128. }
  129. }
  130. 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 {
  131. // 生成输入报文
  132. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  133. inputData := make(map[string]interface{})
  134. inputMessage["transType"] = "FY001" // 交易编码
  135. inputMessage["transChannel"] = "10" // 交易编码
  136. inputMessage["transVersion"] = version_code // 交易编码
  137. inputData["akc190"] = mz_number
  138. inputData["bke384"] = serial_number
  139. inputData["listsize"] = len(datas)
  140. feedetail := make([]map[string]interface{}, 0)
  141. for _, item := range datas {
  142. feedetailInfo := make(map[string]interface{})
  143. feedetailInfo["aae072"] = item.PrescriptionNumber
  144. feedetailInfo["bkc369"] = item.OrderType
  145. feedetailInfo["bkf500"] = item.ChargeSerialNumber
  146. feedetailInfo["ake001"] = item.Code
  147. feedetailInfo["ake002"] = item.CodeName
  148. feedetailInfo["bkm017"] = item.Code
  149. feedetailInfo["aka070"] = item.DoseCode
  150. feedetailInfo["aka074"] = item.Spec
  151. feedetailInfo["aka064"] = 1
  152. feedetailInfo["ake005"] = item.Code
  153. feedetailInfo["ake006"] = item.CodeName
  154. feedetailInfo["akc225"] = item.Price
  155. feedetailInfo["akc226"] = item.Count
  156. feedetailInfo["akc264"] = item.Total
  157. feedetailInfo["aka067"] = "元"
  158. feedetailInfo["akc271"] = item.ChargeOrderDate
  159. feedetailInfo["bkc320"] = drug_doctor_code
  160. feedetail = append(feedetail, feedetailInfo)
  161. }
  162. inputData["inputlist"] = feedetail
  163. inputMessage["transBody"] = inputData
  164. fmt.Println(inputMessage)
  165. bytesData, err := json.Marshal(inputMessage)
  166. fmt.Println(string(bytesData))
  167. if err != nil {
  168. fmt.Println(err.Error())
  169. return err.Error()
  170. }
  171. reader := bytes.NewReader(bytesData)
  172. url := "http://192.168.1.88:6666/szsi-portal/transData"
  173. request, err := http.NewRequest("POST", url, reader)
  174. if err != nil {
  175. fmt.Println(err.Error())
  176. return err.Error()
  177. }
  178. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  179. client := http.Client{}
  180. resp, err := client.Do(request)
  181. if err != nil {
  182. fmt.Println(err.Error())
  183. return err.Error()
  184. }
  185. respBytes, err := ioutil.ReadAll(resp.Body)
  186. if err != nil {
  187. fmt.Println(err.Error())
  188. return err.Error()
  189. }
  190. fmt.Println(string(respBytes))
  191. str := string(respBytes)
  192. return str
  193. }
  194. 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 {
  195. // 生成输入报文
  196. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  197. inputData := make(map[string]interface{})
  198. inputMessage["transType"] = "FY002" // 交易编码
  199. inputMessage["transVersion"] = version_code // 交易编码
  200. inputData["akc190"] = mz_number
  201. inputData["bke384"] = serial_number
  202. inputData["listsize"] = len(datas)
  203. feedetail := make([]map[string]interface{}, 0)
  204. for _, item := range datas {
  205. feedetailInfo := make(map[string]interface{})
  206. feedetailInfo["aae072"] = item.PrescriptionNumber
  207. feedetailInfo["bkf500"] = item.ChargeSerialNumber
  208. feedetail = append(feedetail, feedetailInfo)
  209. }
  210. inputData["inputlist"] = feedetail
  211. inputMessage["transBody"] = inputData
  212. bytesData, err := json.Marshal(inputMessage)
  213. fmt.Println(string(bytesData))
  214. if err != nil {
  215. fmt.Println(err.Error())
  216. return err.Error()
  217. }
  218. reader := bytes.NewReader(bytesData)
  219. //url := "http://192.168.1.99:10000"
  220. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  221. url := "http://192.168.1.88:6666/szsi-portal/transData"
  222. request, err := http.NewRequest("POST", url, reader)
  223. if err != nil {
  224. fmt.Println(err.Error())
  225. return err.Error()
  226. }
  227. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  228. client := http.Client{}
  229. resp, err := client.Do(request)
  230. if err != nil {
  231. fmt.Println(err.Error())
  232. return err.Error()
  233. }
  234. respBytes, err := ioutil.ReadAll(resp.Body)
  235. if err != nil {
  236. fmt.Println(err.Error())
  237. return err.Error()
  238. }
  239. fmt.Println(string(respBytes))
  240. str := string(respBytes)
  241. return str
  242. }
  243. 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 {
  244. // 生成输入报文
  245. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  246. inputData := make(map[string]interface{})
  247. inputMessage["transType"] = "FY004" // 交易编码
  248. inputMessage["transVersion"] = version_code // 交易编码
  249. inputData["akc190"] = mz_number
  250. inputData["aka130"] = "11"
  251. inputData["bkc320"] = drug_doctor_code
  252. inputData["ckc350"] = drug_doctor_name
  253. inputData["aka030"] = "12"
  254. inputData["akc264"] = total
  255. inputData["ckc601"] = "0"
  256. inputData["bke384"] = serial_number
  257. inputMessage["transBody"] = inputData
  258. bytesData, err := json.Marshal(inputMessage)
  259. fmt.Println(string(bytesData))
  260. if err != nil {
  261. fmt.Println(err.Error())
  262. return err.Error()
  263. }
  264. reader := bytes.NewReader(bytesData)
  265. //url := "http://192.168.1.99:10000"
  266. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  267. url := "http://192.168.1.88:6666/szsi-portal/transData"
  268. request, err := http.NewRequest("POST", url, reader)
  269. if err != nil {
  270. fmt.Println(err.Error())
  271. return err.Error()
  272. }
  273. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  274. client := http.Client{}
  275. resp, err := client.Do(request)
  276. if err != nil {
  277. fmt.Println(err.Error())
  278. return err.Error()
  279. }
  280. respBytes, err := ioutil.ReadAll(resp.Body)
  281. if err != nil {
  282. fmt.Println(err.Error())
  283. return err.Error()
  284. }
  285. fmt.Println(string(respBytes))
  286. str := string(respBytes)
  287. return str
  288. }
  289. 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, medical_care int64, code string) string {
  290. // 生成输入报文
  291. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, serial_number)
  292. inputData := make(map[string]interface{})
  293. inputMessage["transType"] = "FY005" // 交易编码
  294. inputMessage["transVersion"] = version_code // 交易编码
  295. if medical_care == 11 {
  296. inputData["aka130"] = "11"
  297. } else if medical_care == 13 {
  298. inputData["aka130"] = "13"
  299. inputData["cka303"] = code
  300. } else {
  301. inputData["aka130"] = fmt.Sprintf("%d", medical_care)
  302. }
  303. inputData["aaz500"] = account
  304. inputData["bzz269"] = "000000"
  305. inputData["akc190"] = mz_number
  306. inputData["bkc320"] = drug_doctor
  307. inputData["ckc350"] = drug_doctor_name
  308. inputData["aka030"] = "12"
  309. inputData["akc264"] = total
  310. inputData["ckc601"] = "0"
  311. inputData["bke384"] = serial_number
  312. inputMessage["transBody"] = inputData
  313. bytesData, err := json.Marshal(inputMessage)
  314. fmt.Println(string(bytesData))
  315. if err != nil {
  316. fmt.Println(err.Error())
  317. return err.Error()
  318. }
  319. reader := bytes.NewReader(bytesData)
  320. //url := "http://192.168.1.99:10000"
  321. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  322. url := "http://192.168.1.88:6666/szsi-portal/transData"
  323. request, err := http.NewRequest("POST", url, reader)
  324. if err != nil {
  325. fmt.Println(err.Error())
  326. return err.Error()
  327. }
  328. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  329. client := http.Client{}
  330. resp, err := client.Do(request)
  331. if err != nil {
  332. fmt.Println(err.Error())
  333. return err.Error()
  334. }
  335. respBytes, err := ioutil.ReadAll(resp.Body)
  336. if err != nil {
  337. fmt.Println(err.Error())
  338. return err.Error()
  339. }
  340. fmt.Println(string(respBytes))
  341. str := string(respBytes)
  342. return str
  343. }
  344. func SzybJY001(doctor string, doctor_code string, fixmedins_code string, setl_number string, mz_number string, verify_code string, version_code string) string {
  345. // 生成输入报文
  346. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, setl_number)
  347. inputData := make(map[string]interface{})
  348. inputMessage["transType"] = "JY001" // 交易编码
  349. inputMessage["transVersion"] = version_code // 交易编码
  350. inputData["akc190"] = mz_number
  351. inputData["bke384"] = setl_number
  352. inputMessage["transBody"] = inputData
  353. bytesData, err := json.Marshal(inputMessage)
  354. fmt.Println(string(bytesData))
  355. if err != nil {
  356. fmt.Println(err.Error())
  357. return err.Error()
  358. }
  359. reader := bytes.NewReader(bytesData)
  360. //url := "http://192.168.1.99:10000"
  361. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  362. url := "http://192.168.1.88:6666/szsi-portal/transData"
  363. request, err := http.NewRequest("POST", url, reader)
  364. if err != nil {
  365. fmt.Println(err.Error())
  366. return err.Error()
  367. }
  368. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  369. client := http.Client{}
  370. resp, err := client.Do(request)
  371. if err != nil {
  372. fmt.Println(err.Error())
  373. return err.Error()
  374. }
  375. respBytes, err := ioutil.ReadAll(resp.Body)
  376. if err != nil {
  377. fmt.Println(err.Error())
  378. return err.Error()
  379. }
  380. fmt.Println(string(respBytes))
  381. str := string(respBytes)
  382. return str
  383. }
  384. 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 {
  385. // 生成输入报文
  386. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, new_setl_number)
  387. inputData := make(map[string]interface{})
  388. inputMessage["transType"] = "JY002" // 交易编码
  389. inputMessage["transVersion"] = version_code // 交易编码
  390. inputData["akc190"] = mz_number
  391. inputData["bke384"] = setl_number
  392. inputMessage["transBody"] = inputData
  393. bytesData, err := json.Marshal(inputMessage)
  394. fmt.Println(string(bytesData))
  395. if err != nil {
  396. fmt.Println(err.Error())
  397. return err.Error()
  398. }
  399. reader := bytes.NewReader(bytesData)
  400. //url := "http://192.168.1.99:10000"
  401. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  402. url := "http://192.168.1.88:6666/szsi-portal/transData"
  403. request, err := http.NewRequest("POST", url, reader)
  404. if err != nil {
  405. fmt.Println(err.Error())
  406. return err.Error()
  407. }
  408. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  409. client := http.Client{}
  410. resp, err := client.Do(request)
  411. if err != nil {
  412. fmt.Println(err.Error())
  413. return err.Error()
  414. }
  415. respBytes, err := ioutil.ReadAll(resp.Body)
  416. if err != nil {
  417. fmt.Println(err.Error())
  418. return err.Error()
  419. }
  420. fmt.Println(string(respBytes))
  421. str := string(respBytes)
  422. return str
  423. }
  424. func SzybJY003(doctor string, doctor_code string, fixmedins_code string, setl_number string, mz_number string, verify_code string, version_code string) string {
  425. // 生成输入报文
  426. inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code, setl_number)
  427. inputData := make(map[string]interface{})
  428. inputMessage["transType"] = "JY003" // 交易编码
  429. inputMessage["transVersion"] = version_code // 交易编码
  430. inputData["akc190"] = mz_number
  431. inputData["bke384"] = setl_number
  432. inputMessage["transBody"] = inputData
  433. bytesData, err := json.Marshal(inputMessage)
  434. fmt.Println(string(bytesData))
  435. if err != nil {
  436. fmt.Println(err.Error())
  437. return err.Error()
  438. }
  439. reader := bytes.NewReader(bytesData)
  440. //url := "http://192.168.1.99:10000"
  441. //url := "http://192.168.1.228:17001/szsi-portal/transData"
  442. url := "http://192.168.1.88:6666/szsi-portal/transData"
  443. request, err := http.NewRequest("POST", url, reader)
  444. if err != nil {
  445. fmt.Println(err.Error())
  446. return err.Error()
  447. }
  448. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  449. client := http.Client{}
  450. resp, err := client.Do(request)
  451. if err != nil {
  452. fmt.Println(err.Error())
  453. return err.Error()
  454. }
  455. respBytes, err := ioutil.ReadAll(resp.Body)
  456. if err != nil {
  457. fmt.Println(err.Error())
  458. return err.Error()
  459. }
  460. fmt.Println(string(respBytes))
  461. str := string(respBytes)
  462. return str
  463. }
  464. // 生成基础报文
  465. func SetSZInputMessage(doctor string, doctor_code string, fixmedins_code string, verify_code string, number string) map[string]interface{} {
  466. month := time.Unix(1557042972, 0).Format("1")
  467. year := time.Now().Format("2006")
  468. month = time.Now().Format("01")
  469. day := time.Now().Format("02")
  470. hour := time.Now().Format("15")
  471. min := time.Now().Format("04")
  472. sec := time.Now().Format("05")
  473. msec := time.Now().Format("000")
  474. // 生成输入报文
  475. inputMessage := make(map[string]interface{})
  476. //
  477. inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
  478. inputMessage["extendDeviceId"] = ""
  479. inputMessage["extendSerialNumber"] = ""
  480. inputMessage["extendUserId"] = ""
  481. inputMessage["hospitalCode"] = fixmedins_code // 协议机构编码
  482. inputMessage["operatorCode"] = doctor_code // 操作员编码
  483. inputMessage["operatorName"] = doctor // 操作员名字
  484. inputMessage["operatorPass"] = "" // 定点协议机构操作人员编码
  485. inputMessage["serialNumber"] = number
  486. inputMessage["transReturnCode"] = "" //
  487. inputMessage["transReturnMessage"] = "" //
  488. inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
  489. inputMessage["verifyCode"] = verify_code //
  490. inputMessage["transChannel"] = "10" //
  491. return inputMessage
  492. }
  493. func msToTime(ms int64) string {
  494. tm := time.Unix(0, ms*int64(time.Millisecond))
  495. return tm.Format("2006-02-01 15:04:05.000")
  496. }
  497. //
  498. //func SzybML008(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
  499. // //生成输入报文
  500. // inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  501. //
  502. // inputData := make(map[string]interface{})
  503. // inputMessage["transType"] = "JY003" // 交易编码
  504. //
  505. // inputData["listsize"] = len(datas)
  506. // inputMessage["transType"] = "ML008" // 交易编码S
  507. // feedetail := make([]map[string]interface{}, 0)
  508. // //inputData["akc190"] = mz_number
  509. // //inputData["bke384"] = setl_number
  510. //
  511. // for _, item := range datas {
  512. //
  513. // feedetailInfo := make(map[string]interface{})
  514. // feedetailInfo["ake001"] = item.MedicalInsuranceNumber
  515. // feedetailInfo["bkm017"] = item.Code
  516. // feedetailInfo["ake005"] = item.Code
  517. // feedetailInfo["ake006"] = item.DrugName
  518. // feedetailInfo["aka074"] = item.DrugSpec
  519. // feedetailInfo["aka070"] = item.DrugDosageName
  520. // //feedetailInfo["aka070"] = "片"
  521. // feedetailInfo["aka067"] = item.MinUnit
  522. // feedetailInfo["bka053"] = item.ManufacturerName
  523. // feedetailInfo["aka064"] = "1"
  524. // feedetailInfo["bka505"] = item.LastPrice
  525. // feedetailInfo["bka506"] = item.RetailPrice
  526. // feedetailInfo["aae030"] = 20210406
  527. // feedetailInfo["aae013"] = item.LimitRemark
  528. // feedetail = append(feedetail, feedetailInfo)
  529. // }
  530. //
  531. // inputData["inputlist"] = feedetail
  532. // inputMessage["transBody"] = inputData
  533. //
  534. // bytesData, err := json.Marshal(inputMessage)
  535. // fmt.Println(string(bytesData))
  536. // if err != nil {
  537. // fmt.Println(err.Error())
  538. // return err.Error()
  539. // }
  540. // reader := bytes.NewReader(bytesData)
  541. // //url := "http://192.168.1.99:10000"
  542. // url := "http://192.168.1.228:17001/szsi-portal/transData"
  543. //
  544. // request, err := http.NewRequest("POST", url, reader)
  545. // if err != nil {
  546. // fmt.Println(err.Error())
  547. // return err.Error()
  548. // }
  549. //
  550. // request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  551. //
  552. // client := http.Client{}
  553. // resp, err := client.Do(request)
  554. // if err != nil {
  555. // fmt.Println(err.Error())
  556. // return err.Error()
  557. // }
  558. // respBytes, err := ioutil.ReadAll(resp.Body)
  559. // if err != nil {
  560. // fmt.Println(err.Error())
  561. // return err.Error()
  562. // }
  563. // fmt.Println(string(respBytes))
  564. // str := string(respBytes)
  565. // return str
  566. //}
  567. func SzybML008(doctor string, doctor_code string, fixmedins_code string, basedrug *models.DrugDetail) string {
  568. //生成输入报文
  569. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  570. inputData := make(map[string]interface{})
  571. inputData["listsize"] = 1
  572. inputMessage["transType"] = "ML008" // 交易编码S
  573. feedetail := make([]map[string]interface{}, 0)
  574. feedetailInfo := make(map[string]interface{})
  575. feedetailInfo["ake001"] = basedrug.MedicalInsuranceNumber
  576. feedetailInfo["bkm017"] = basedrug.Code
  577. feedetailInfo["ake005"] = basedrug.Code
  578. feedetailInfo["ake006"] = basedrug.DrugName
  579. feedetailInfo["aka074"] = basedrug.DrugSpec
  580. feedetailInfo["aka070"] = basedrug.DrugDosageName
  581. feedetailInfo["aka067"] = basedrug.MinUnit
  582. feedetailInfo["bka053"] = basedrug.ManufacturerName
  583. feedetailInfo["aka064"] = "1"
  584. feedetailInfo["bka505"] = basedrug.LastPrice
  585. feedetailInfo["bka506"] = basedrug.RetailPrice
  586. feedetailInfo["aae030"], _ = strconv.ParseInt(basedrug.RecordDate, 10, 64)
  587. feedetailInfo["aae013"] = basedrug.LimitRemark
  588. feedetail = append(feedetail, feedetailInfo)
  589. inputData["inputlist"] = feedetail
  590. inputMessage["transBody"] = inputData
  591. bytesData, err := json.Marshal(inputMessage)
  592. fmt.Println(string(bytesData))
  593. if err != nil {
  594. fmt.Println(err.Error())
  595. return err.Error()
  596. }
  597. reader := bytes.NewReader(bytesData)
  598. url := beego.AppConfig.String("url")
  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. // 生成基础报文
  621. func SetSZDrugMessage(doctor string, doctor_code string, fixmedins_code string) map[string]interface{} {
  622. month := time.Unix(1557042972, 0).Format("1")
  623. year := time.Now().Format("2006")
  624. month = time.Now().Format("01")
  625. day := time.Now().Format("02")
  626. hour := time.Now().Format("15")
  627. min := time.Now().Format("04")
  628. sec := time.Now().Format("05")
  629. msec := time.Now().Format("000")
  630. //生成输入报文
  631. inputMessage := make(map[string]interface{})
  632. //
  633. inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
  634. inputMessage["extendDeviceId"] = ""
  635. inputMessage["extendSerialNumber"] = ""
  636. inputMessage["extendUserId"] = ""
  637. inputMessage["hospitalCode"] = fixmedins_code // 协议机构编码
  638. inputMessage["operatorCode"] = doctor_code // 操作员编码
  639. inputMessage["operatorName"] = doctor // 操作员名字
  640. inputMessage["operatorPass"] = "" // 定点协议机构操作人员编码
  641. inputMessage["serialNumber"] = fixmedins_code + year + month + day +
  642. fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
  643. //inputMessage["serialNumber"] = "G554020210406" + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
  644. inputMessage["verifyCode"] = "000000|8ec5b7745a5cc45b631f23b4bf1e417e"
  645. inputMessage["transReturnCode"] = "" //
  646. inputMessage["transReturnMessage"] = "" //
  647. inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
  648. inputMessage["transVersion"] = "V0.3" // //
  649. inputMessage["transChannel"] = "10" //
  650. return inputMessage
  651. }
  652. func SzybML009(doctor string, doctor_code string, fixmedins_code string, pro *models.MyHisProject) string {
  653. timeLayout := "20060102"
  654. record_date := time.Unix(pro.RecordDate, 0).Format(timeLayout)
  655. recordDate, _ := strconv.ParseInt(record_date, 10, 64)
  656. //生成输入报文
  657. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  658. inputData := make(map[string]interface{})
  659. inputData["listsize"] = 1
  660. inputMessage["transType"] = "ML009" // 交易编码
  661. feedetail := make([]map[string]interface{}, 0)
  662. feedetailInfo := make(map[string]interface{})
  663. feedetailInfo["ake001"] = pro.SocialSecurityDirectoryCode //社保目录编码
  664. feedetailInfo["ake005"] = pro.SocialSecurityDirectoryCode //协议机构内部目录编码
  665. feedetailInfo["ake006"] = pro.ProjectName // 协议机构内部目录名称
  666. feedetailInfo["bkf131"] = pro.Category //协议机构项目类别
  667. feedetailInfo["bkm062"] = strconv.FormatInt(pro.SpecailProject, 10) // 门诊特检项目标识
  668. feedetailInfo["bka506"] = pro.Price // 协议机构内部项目收费价格
  669. feedetailInfo["aae030"] = recordDate // 备案日期
  670. feedetailInfo["aae013"] = pro.Remark // 备注
  671. feedetail = append(feedetail, feedetailInfo)
  672. inputData["inputlist"] = feedetail
  673. inputMessage["transBody"] = inputData
  674. bytesData, err := json.Marshal(inputMessage)
  675. fmt.Println(string(bytesData))
  676. if err != nil {
  677. fmt.Println(err.Error())
  678. return err.Error()
  679. }
  680. reader := bytes.NewReader(bytesData)
  681. url := beego.AppConfig.String("url")
  682. request, err := http.NewRequest("POST", url, reader)
  683. if err != nil {
  684. fmt.Println(err.Error())
  685. return err.Error()
  686. }
  687. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  688. client := http.Client{}
  689. resp, err := client.Do(request)
  690. if err != nil {
  691. fmt.Println(err.Error())
  692. return err.Error()
  693. }
  694. respBytes, err := ioutil.ReadAll(resp.Body)
  695. if err != nil {
  696. fmt.Println(err.Error())
  697. return err.Error()
  698. }
  699. fmt.Println(string(respBytes))
  700. str := string(respBytes)
  701. return str
  702. }
  703. //func SzybML009(doctor string, doctor_code string, fixmedins_code string, datas []*models.ProjectDetail) string {
  704. // //生成输入报文
  705. // inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  706. //
  707. // inputData := make(map[string]interface{})
  708. //
  709. // inputData["listsize"] = len(datas)
  710. // inputMessage["transType"] = "ML009" // 交易编码
  711. // feedetail := make([]map[string]interface{}, 0)
  712. //
  713. // for _, item := range datas {
  714. // feedetailInfo := make(map[string]interface{})
  715. // feedetailInfo["ake001"] = item.SocialSecurityDirectoryCode //社保目录编码
  716. // feedetailInfo["ake005"] = item.SocialSecurityDirectoryCode //协议机构内部目录编码
  717. // feedetailInfo["ake006"] = item.ProjectName // 协议机构内部目录名称
  718. // feedetailInfo["bkf131"] = item.Category //协议机构项目类别
  719. // feedetailInfo["bkm062"] = "0" // 门诊特检项目标识
  720. // feedetailInfo["bka506"] = item.Price // 协议机构内部项目收费价格
  721. // feedetailInfo["aae030"] = 20210407 // 备案日期
  722. // feedetailInfo["aae013"] = item.Remark // 备注
  723. // feedetail = append(feedetail, feedetailInfo)
  724. // }
  725. // fmt.Println("feeedDetal2333333333", feedetail)
  726. // inputData["inputlist"] = feedetail
  727. // inputMessage["transBody"] = inputData
  728. //
  729. // bytesData, err := json.Marshal(inputMessage)
  730. // fmt.Println(string(bytesData))
  731. // if err != nil {
  732. // fmt.Println(err.Error())
  733. // return err.Error()
  734. // }
  735. // reader := bytes.NewReader(bytesData)
  736. // //url := "http://192.168.1.99:10000"
  737. // url := "http://192.168.1.228:17001/szsi-portal/transData"
  738. //
  739. // request, err := http.NewRequest("POST", url, reader)
  740. // if err != nil {
  741. // fmt.Println(err.Error())
  742. // return err.Error()
  743. // }
  744. //
  745. // request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  746. //
  747. // client := http.Client{}
  748. // resp, err := client.Do(request)
  749. // if err != nil {
  750. // fmt.Println(err.Error())
  751. // return err.Error()
  752. // }
  753. // respBytes, err := ioutil.ReadAll(resp.Body)
  754. // if err != nil {
  755. // fmt.Println(err.Error())
  756. // return err.Error()
  757. // }
  758. // fmt.Println(string(respBytes))
  759. // str := string(respBytes)
  760. // return str
  761. //
  762. //}
  763. func SzybML010(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail, typeId int64) string {
  764. //生成输入报文
  765. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  766. inputData := make(map[string]interface{})
  767. inputData["listsize"] = len(datas)
  768. inputMessage["transType"] = "ML010" // 交易编码
  769. feedetail := make([]map[string]interface{}, 0)
  770. for _, item := range datas {
  771. feedetailInfo := make(map[string]interface{})
  772. feedetailInfo["ake003"] = strconv.FormatInt(typeId, 10)
  773. feedetailInfo["ake001"] = item.SocialSecurityDirectoryCode //社保目录编码
  774. feedetailInfo["ake005"] = item.SocialSecurityDirectoryCode //协议机构内部目录编码
  775. feedetail = append(feedetail, feedetailInfo)
  776. }
  777. inputData["inputlist"] = feedetail
  778. inputMessage["transBody"] = inputData
  779. bytesData, err := json.Marshal(inputMessage)
  780. fmt.Println(string(bytesData))
  781. if err != nil {
  782. fmt.Println(err.Error())
  783. return err.Error()
  784. }
  785. reader := bytes.NewReader(bytesData)
  786. url := beego.AppConfig.String("url")
  787. request, err := http.NewRequest("POST", url, reader)
  788. if err != nil {
  789. fmt.Println(err.Error())
  790. return err.Error()
  791. }
  792. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  793. client := http.Client{}
  794. resp, err := client.Do(request)
  795. if err != nil {
  796. fmt.Println(err.Error())
  797. return err.Error()
  798. }
  799. respBytes, err := ioutil.ReadAll(resp.Body)
  800. if err != nil {
  801. fmt.Println(err.Error())
  802. return err.Error()
  803. }
  804. fmt.Println(string(respBytes))
  805. str := string(respBytes)
  806. return str
  807. }
  808. func SzybYS001(doctor string, doctor_code string, fixmedins_code string, doc *models.DocDetail) string {
  809. //生成输入报文
  810. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  811. inputData := make(map[string]interface{})
  812. inputData["listsize"] = 1
  813. inputMessage["transType"] = "YS001" // 交易编码
  814. feedetail := make([]map[string]interface{}, 0)
  815. feedetailInfo := make(map[string]interface{})
  816. feedetailInfo["aac003"] = doc.UserName //医护人员姓名
  817. feedetailInfo["bka633"] = "1" //医护人员类别
  818. feedetailInfo["aac004"] = doc.Sex //性别
  819. feedetailInfo["aac058"] = doc.CardType //证件类型
  820. feedetailInfo["aac147"] = doc.IdCard //证件号码
  821. feedetailInfo["aae005"] = doc.Phone //联系电话
  822. feedetailInfo["bkc322"] = doc.WorkMajorName //现从事专业名称
  823. feedetailInfo["aac005"] = doc.Nation //民族
  824. feedetailInfo["aac006"] = doc.BirthDay //出生日期
  825. feedetailInfo["aac007"] = doc.WorkTime //参加工作日期
  826. feedetailInfo["aac011"] = doc.Education //学历
  827. feedetailInfo["aac183"] = doc.StudyMajorName //所学的专业名称
  828. feedetailInfo["bkc323"] = doc.CertificateCode //医(药)师执业证书编码
  829. feedetailInfo["bke955"] = doc.MedicalCode //医(药)师资格证编码
  830. feedetailInfo["akc055"] = doc.MedicalRangeCode // 医师执业范围代码
  831. feedetailInfo["bcc950"] = doc.MedicalLevel //医生执业资格证中的医师级别
  832. feedetailInfo["bcc955"] = doc.TypeJob //医生执业资格证中的执业类别
  833. feedetailInfo["bka503"] = doc.DoctorNumber //医保医师编号
  834. feedetailInfo["bkc324"] = doc.Licensing //多点执业标志
  835. feedetailInfo["bkc326"] = doc.DoctorServiceStatus //医师医保服务资格状态
  836. feedetailInfo["bkc328"] = doc.MonitoringLevel //监控等级
  837. feedetailInfo["bkc329"] = doc.DrugPsychotropicSubstances //毒麻精神药品资格
  838. feedetailInfo["bke801"] = doc.HealthCareCode //母婴保健技术考核合格证书编号
  839. feedetailInfo["bkc330"] = doc.PlanningTechnicalServiceCode //bkc330 计划生育技术服务人员合格证编号
  840. feedetailInfo["bkc332"] = doc.PharmacistType //药师类别
  841. feedetailInfo["bkc333"] = doc.PharmacistPracticeCategory //药师执业类别
  842. feedetailInfo["bkc334"] = doc.PharmacistsLicensing //药师执业范围
  843. feedetailInfo["bkc335"] = doc.PharmacistRegistrationNumber //执业药师注册证编号
  844. feedetailInfo["akf001"] = doc.OfficeCode //所属科室编码
  845. feedetailInfo["acc501"] = doc.JobNumber //工号
  846. feedetailInfo["ahc451"] = doc.PostName //职务名称
  847. feedetailInfo["aaf009"] = doc.TechnicalJobLevelCode //专业技术职务级别编码
  848. feedetailInfo["bkc321"] = doc.IsActive //在职与否
  849. feedetailInfo["ckc302"] = doc.PrescriptionQualificationIdentification //处方资格标识
  850. feedetailInfo["bkc325"] = doc.IdentificationOutpatients //门诊大病医师 标识
  851. feedetailInfo["ckc304"] = doc.OutpatientIllnessCategory //门诊大病类别
  852. feedetailInfo["aae030"] = doc.StartTime //开始日期
  853. feedetail = append(feedetail, feedetailInfo)
  854. inputData["inputlist"] = feedetail
  855. inputMessage["transBody"] = inputData
  856. bytesData, err := json.Marshal(inputMessage)
  857. fmt.Println(string(bytesData))
  858. if err != nil {
  859. fmt.Println(err.Error())
  860. return err.Error()
  861. }
  862. reader := bytes.NewReader(bytesData)
  863. url := beego.AppConfig.String("url")
  864. request, err := http.NewRequest("POST", url, reader)
  865. if err != nil {
  866. fmt.Println(err.Error())
  867. return err.Error()
  868. }
  869. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  870. client := http.Client{}
  871. resp, err := client.Do(request)
  872. if err != nil {
  873. fmt.Println(err.Error())
  874. return err.Error()
  875. }
  876. respBytes, err := ioutil.ReadAll(resp.Body)
  877. if err != nil {
  878. fmt.Println(err.Error())
  879. return err.Error()
  880. }
  881. fmt.Println(string(respBytes))
  882. str := string(respBytes)
  883. return str
  884. }
  885. //func SzybYS001(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
  886. // //生成输入报文
  887. // inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  888. //
  889. // inputData := make(map[string]interface{})
  890. //
  891. // inputData["listsize"] = len(datas)
  892. // inputMessage["transType"] = "YS001" // 交易编码
  893. // feedetail := make([]map[string]interface{}, 0)
  894. //
  895. // for _, item := range datas {
  896. // fmt.Println("item222222", item.RoleId)
  897. // feedetailInfo := make(map[string]interface{})
  898. // feedetailInfo["aac003"] = item.UserName
  899. // feedetailInfo["bka633"] = "1"
  900. // feedetailInfo["aac004"] = item.Sex
  901. // feedetailInfo["aac058"] = item.CardType
  902. // feedetailInfo["aac147"] = item.IdCard
  903. // feedetailInfo["aae005"] = item.Phone
  904. // feedetailInfo["bkc322"] = item.WorkMajorName
  905. // feedetailInfo["aac005"] = item.Nation
  906. // feedetailInfo["aac006"] = item.BirthDay
  907. // feedetailInfo["aac007"] = item.WorkTime
  908. // feedetailInfo["aac011"] = item.Education
  909. // feedetailInfo["aac183"] = item.StudyMajorName
  910. // feedetailInfo["bkc323"] = item.CertificateCode
  911. // feedetailInfo["bke955"] = item.MedicalCode
  912. // feedetailInfo["akc055"] = item.MedicalRangeCode
  913. // feedetailInfo["bcc950"] = item.MedicalLevel
  914. // feedetailInfo["bcc955"] = item.TypeJob
  915. // feedetailInfo["bka503"] = item.DoctorNumber
  916. // feedetailInfo["bkc324"] = item.Licensing
  917. // feedetailInfo["bkc326"] = item.DoctorServiceStatus
  918. // feedetailInfo["bkc328"] = item.MonitoringLevel
  919. // feedetailInfo["bkc329"] = item.DrugPsychotropicSubstances
  920. // feedetailInfo["bke801"] = item.HealthCareCode
  921. // feedetailInfo["bkc330"] = item.PlanningTechnicalServiceCode
  922. // feedetailInfo["bkc332"] = item.PharmacistType
  923. // feedetailInfo["bkc333"] = item.PharmacistPracticeCategory
  924. // feedetailInfo["bkc334"] = item.PharmacistsLicensing
  925. // feedetailInfo["bkc335"] = item.PharmacistRegistrationNumber
  926. // feedetailInfo["akf001"] = item.OfficeCode
  927. // feedetailInfo["acc501"] = item.JobNumber
  928. // feedetailInfo["ahc451"] = item.PostName
  929. // feedetailInfo["aaf009"] = item.TechnicalJobLevelCode
  930. // feedetailInfo["bkc321"] = item.IsActive
  931. // feedetailInfo["ckc302"] = item.PrescriptionQualificationIdentification
  932. // feedetailInfo["bkc325"] = item.IdentificationOutpatients
  933. // feedetailInfo["ckc304"] = item.OutpatientIllnessCategory
  934. // feedetailInfo["aae030"] = item.StartTime
  935. // feedetail = append(feedetail, feedetailInfo)
  936. // }
  937. //
  938. // inputData["inputlist"] = feedetail
  939. // inputMessage["transBody"] = inputData
  940. //
  941. // bytesData, err := json.Marshal(inputMessage)
  942. // fmt.Println(string(bytesData))
  943. // if err != nil {
  944. // fmt.Println(err.Error())
  945. // return err.Error()
  946. // }
  947. // reader := bytes.NewReader(bytesData)
  948. // //url := "http://192.168.1.99:10000"
  949. // url := "http://192.168.1.228:17001/szsi-portal/transData"
  950. //
  951. // request, err := http.NewRequest("POST", url, reader)
  952. // if err != nil {
  953. // fmt.Println(err.Error())
  954. // return err.Error()
  955. // }
  956. //
  957. // request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  958. //
  959. // client := http.Client{}
  960. // resp, err := client.Do(request)
  961. // if err != nil {
  962. // fmt.Println(err.Error())
  963. // return err.Error()
  964. // }
  965. // respBytes, err := ioutil.ReadAll(resp.Body)
  966. // if err != nil {
  967. // fmt.Println(err.Error())
  968. // return err.Error()
  969. // }
  970. // fmt.Println(string(respBytes))
  971. // str := string(respBytes)
  972. // return str
  973. //
  974. //}
  975. func SzybYS002(doctor string, doctor_code string, fixmedins_code string, datas *models.DocDetail) string {
  976. //生成输入报文
  977. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  978. inputData := make(map[string]interface{})
  979. inputData["listsize"] = 1
  980. inputMessage["transType"] = "YS002" // 交易编码
  981. feedetail := make([]map[string]interface{}, 0)
  982. feedetailInfo := make(map[string]interface{})
  983. feedetailInfo["bkc320"] = datas.DoctorNumber
  984. feedetailInfo["bke155"] = "4"
  985. feedetail = append(feedetail, feedetailInfo)
  986. inputData["inputlist"] = feedetail
  987. inputMessage["transBody"] = inputData
  988. bytesData, err := json.Marshal(inputMessage)
  989. fmt.Println(string(bytesData))
  990. if err != nil {
  991. fmt.Println(err.Error())
  992. return err.Error()
  993. }
  994. reader := bytes.NewReader(bytesData)
  995. url := beego.AppConfig.String("url")
  996. request, err := http.NewRequest("POST", url, reader)
  997. if err != nil {
  998. fmt.Println(err.Error())
  999. return err.Error()
  1000. }
  1001. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  1002. client := http.Client{}
  1003. resp, err := client.Do(request)
  1004. if err != nil {
  1005. fmt.Println(err.Error())
  1006. return err.Error()
  1007. }
  1008. respBytes, err := ioutil.ReadAll(resp.Body)
  1009. if err != nil {
  1010. fmt.Println(err.Error())
  1011. return err.Error()
  1012. }
  1013. fmt.Println(string(respBytes))
  1014. str := string(respBytes)
  1015. return str
  1016. }
  1017. func SzybYS003(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
  1018. //生成输入报文
  1019. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  1020. inputData := make(map[string]interface{})
  1021. inputData["listsize"] = len(datas)
  1022. inputMessage["transType"] = "YS003" // 交易编码
  1023. feedetail := make([]map[string]interface{}, 0)
  1024. for _, item := range datas {
  1025. feedetailInfo := make(map[string]interface{})
  1026. feedetailInfo["bkc320"] = item.StaffCode
  1027. feedetailInfo["aac003"] = item.UserName
  1028. feedetailInfo["bka633"] = item.RoleId
  1029. feedetailInfo["aac004"] = item.Sex
  1030. feedetailInfo["aac058"] = item.CardType
  1031. feedetailInfo["aac147"] = item.IdCard
  1032. feedetailInfo["aae005"] = item.Phone
  1033. feedetailInfo["bkc322"] = item.WorkMajorName
  1034. feedetailInfo["aac005"] = item.Nation
  1035. feedetailInfo["aac006"] = item.BirthDay
  1036. feedetailInfo["aac007"] = item.WorkTime
  1037. feedetailInfo["aac011"] = item.Education
  1038. feedetailInfo["aac183"] = item.StudyMajorName
  1039. feedetailInfo["bkc323"] = item.CertificateCode
  1040. feedetailInfo["bke955"] = item.MedicalCode
  1041. feedetailInfo["akc055"] = item.MedicalRangeCode
  1042. feedetailInfo["bcc950"] = item.MedicalLevel
  1043. feedetailInfo["bcc955"] = item.TypeJob
  1044. feedetailInfo["bka503"] = item.DoctorNumber
  1045. feedetailInfo["bkc324"] = item.Licensing
  1046. feedetailInfo["bkc326"] = item.DoctorServiceStatus
  1047. feedetailInfo["bkc328"] = item.MonitoringLevel
  1048. feedetailInfo["bkc329"] = item.DrugPsychotropicSubstances
  1049. feedetailInfo["bke801"] = item.HealthCareCode
  1050. feedetailInfo["bkc330"] = item.PlanningTechnicalServiceCode
  1051. feedetailInfo["bkc332"] = item.PharmacistType
  1052. feedetailInfo["bkc333"] = item.PharmacistPracticeCategory
  1053. feedetailInfo["bkc334"] = item.PharmacistsLicensing
  1054. feedetailInfo["bkc335"] = item.PharmacistRegistrationNumber
  1055. feedetailInfo["akf001"] = item.OfficeCode
  1056. feedetailInfo["acc501"] = item.JobNumber
  1057. feedetailInfo["ahc451"] = item.PostName
  1058. feedetailInfo["aaf009"] = item.TechnicalJobLevelCode
  1059. feedetailInfo["bkc321"] = item.IsActive
  1060. feedetailInfo["ckc302"] = item.PrescriptionQualificationIdentification
  1061. feedetailInfo["bkc325"] = item.IdentificationOutpatients
  1062. feedetailInfo["ckc304"] = item.OutpatientIllnessCategory
  1063. feedetailInfo["aae030"] = item.StartTime
  1064. feedetailInfo["aae031"] = item.EndTime
  1065. feedetail = append(feedetail, feedetailInfo)
  1066. }
  1067. inputData["inputlist"] = feedetail
  1068. inputMessage["transBody"] = inputData
  1069. bytesData, err := json.Marshal(inputMessage)
  1070. fmt.Println(string(bytesData))
  1071. if err != nil {
  1072. fmt.Println(err.Error())
  1073. return err.Error()
  1074. }
  1075. reader := bytes.NewReader(bytesData)
  1076. url := beego.AppConfig.String("url")
  1077. request, err := http.NewRequest("POST", url, reader)
  1078. if err != nil {
  1079. fmt.Println(err.Error())
  1080. return err.Error()
  1081. }
  1082. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  1083. client := http.Client{}
  1084. resp, err := client.Do(request)
  1085. if err != nil {
  1086. fmt.Println(err.Error())
  1087. return err.Error()
  1088. }
  1089. respBytes, err := ioutil.ReadAll(resp.Body)
  1090. if err != nil {
  1091. fmt.Println(err.Error())
  1092. return err.Error()
  1093. }
  1094. fmt.Println(string(respBytes))
  1095. str := string(respBytes)
  1096. return str
  1097. }
  1098. func SzybYML007(doctor string, doctor_code string, fixmedins_code string, infor *models.XtGoodInformation) string {
  1099. //生成输入报文
  1100. inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  1101. inputData := make(map[string]interface{})
  1102. inputData["listsize"] = 1
  1103. inputMessage["transType"] = "ML007" // 交易编码
  1104. feedetail := make([]map[string]interface{}, 0)
  1105. feedetailInfo := make(map[string]interface{})
  1106. feedetailInfo["ake001"] = infor.SocialSecurityDirectoryCode // 社保目录编码
  1107. feedetailInfo["ake005"] = infor.SocialSecurityDirectoryCode //协议机构内部目录编码
  1108. feedetailInfo["ake006"] = infor.GoodName //医药机构内部目录名称
  1109. feedetailInfo["bka053"] = infor.ManufacturerName //生产厂家
  1110. feedetailInfo["ake004"] = infor.ProductionType //生产地类别
  1111. feedetailInfo["ckf261"] = infor.SpecialMedical //特殊医用材料标识
  1112. feedetailInfo["aka067"] = "支" //计价单位
  1113. feedetailInfo["aka074"] = infor.SpecificationName //规格
  1114. feedetailInfo["bka505"] = infor.BuyPrice //进货价
  1115. feedetailInfo["bka506"] = infor.SellPrice // 收获价
  1116. feedetailInfo["aae013"] = infor.Remark //备注
  1117. feedetail = append(feedetail, feedetailInfo)
  1118. inputData["inputlist"] = feedetail
  1119. inputMessage["transBody"] = inputData
  1120. bytesData, err := json.Marshal(inputMessage)
  1121. fmt.Println(string(bytesData))
  1122. if err != nil {
  1123. fmt.Println(err.Error())
  1124. return err.Error()
  1125. }
  1126. reader := bytes.NewReader(bytesData)
  1127. url := beego.AppConfig.String("url")
  1128. request, err := http.NewRequest("POST", url, reader)
  1129. if err != nil {
  1130. fmt.Println(err.Error())
  1131. return err.Error()
  1132. }
  1133. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  1134. client := http.Client{}
  1135. resp, err := client.Do(request)
  1136. if err != nil {
  1137. fmt.Println(err.Error())
  1138. return err.Error()
  1139. }
  1140. respBytes, err := ioutil.ReadAll(resp.Body)
  1141. if err != nil {
  1142. fmt.Println(err.Error())
  1143. return err.Error()
  1144. }
  1145. fmt.Println(string(respBytes))
  1146. str := string(respBytes)
  1147. return str
  1148. }
  1149. //func SzybYML007(doctor string, doctor_code string, fixmedins_code string, datas []*models.GoodDetail) string {
  1150. //
  1151. // //生成输入报文
  1152. // inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
  1153. //
  1154. // inputData := make(map[string]interface{})
  1155. //
  1156. // inputData["listsize"] = len(datas)
  1157. // inputMessage["transType"] = "ML007" // 交易编码
  1158. // feedetail := make([]map[string]interface{}, 0)
  1159. //
  1160. // for _, item := range datas {
  1161. // fmt.Println("item222222222", item.BuyPrice)
  1162. // feedetailInfo := make(map[string]interface{})
  1163. // feedetailInfo["ake001"] = item.SocialSecurityDirectoryCode // 社保目录编码
  1164. // //feedetailInfo["ake001"] = "3333333333" // 社保目录编码
  1165. // feedetailInfo["ake005"] = item.SocialSecurityDirectoryCode //协议机构内部目录编码
  1166. // //feedetailInfo["ake006"] = item.GoodName //医药机构内部目录名称
  1167. // feedetailInfo["ake006"] = "222222" //医药机构内部目录名称
  1168. // feedetailInfo["bka053"] = item.ManufacturerName //生产厂家
  1169. // feedetailInfo["ake004"] = "1" //生产地类别
  1170. // feedetailInfo["ckf261"] = "1" //特殊医用材料标识
  1171. // feedetailInfo["aka067"] = "支" //计价单位
  1172. // feedetailInfo["aka074"] = "ftp" //规格
  1173. // feedetailInfo["bka505"] = item.BuyPrice //进货价
  1174. // feedetailInfo["bka506"] = item.SellPrice // 收获价
  1175. // feedetailInfo["aae013"] = item.Remark //备注
  1176. // feedetail = append(feedetail, feedetailInfo)
  1177. // }
  1178. //
  1179. // inputData["inputlist"] = feedetail
  1180. // inputMessage["transBody"] = inputData
  1181. //
  1182. // bytesData, err := json.Marshal(inputMessage)
  1183. // fmt.Println(string(bytesData))
  1184. // if err != nil {
  1185. // fmt.Println(err.Error())
  1186. // return err.Error()
  1187. // }
  1188. // reader := bytes.NewReader(bytesData)
  1189. // //url := "http://192.168.1.99:10000"
  1190. // url := "http://192.168.1.228:17001/szsi-portal/transData"
  1191. //
  1192. // request, err := http.NewRequest("POST", url, reader)
  1193. // if err != nil {
  1194. // fmt.Println(err.Error())
  1195. // return err.Error()
  1196. // }
  1197. //
  1198. // request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  1199. //
  1200. // client := http.Client{}
  1201. // resp, err := client.Do(request)
  1202. // if err != nil {
  1203. // fmt.Println(err.Error())
  1204. // return err.Error()
  1205. // }
  1206. // respBytes, err := ioutil.ReadAll(resp.Body)
  1207. // if err != nil {
  1208. // fmt.Println(err.Error())
  1209. // return err.Error()
  1210. // }
  1211. // fmt.Println(string(respBytes))
  1212. // str := string(respBytes)
  1213. // return str
  1214. //}
  1215. func GetDoseCode(dose_id int64, user_org_id int64) (error, string) {
  1216. var data models.DictDataconfig
  1217. 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
  1218. return err, data.Code
  1219. }
  1220. func UpdataOrderStatusSZ(id int64, number string, user_org_id int64, his_mz_number string, his_number string) (err error) {
  1221. 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
  1222. 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
  1223. 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
  1224. return
  1225. }
  1226. func UpdataHisStatusSZ(user_org_id int64, his_mz_number string, his_number string, result string) (err error) {
  1227. 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(), "refund_detail": result}).Error
  1228. return
  1229. }
  1230. func UpdataOrderlog(id int64, user_org_id int64, refund_log string) (err error) {
  1231. 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
  1232. return
  1233. }
  1234. func UpdateBaseDrugById(id int64) (models.XtBaseDrug, error) {
  1235. drug := models.XtBaseDrug{}
  1236. err := XTWriteDB().Model(&drug).Where("id = ?", id).Updates(map[string]interface{}{"is_mark": 1}).Error
  1237. return drug, err
  1238. }
  1239. func UpdateDrugByIdDetail(id int64) (models.XtBaseDrug, error) {
  1240. drug := models.XtBaseDrug{}
  1241. err := XTWriteDB().Model(&drug).Where("id = ?", id).Updates(map[string]interface{}{"is_mark": 0}).Error
  1242. return drug, err
  1243. }
  1244. func UpdateGoodInformaitonByDetail(id int64) (models.MyGoodInformation, error) {
  1245. information := models.MyGoodInformation{}
  1246. err := XTWriteDB().Model(&information).Where("id=?", id).Updates(map[string]interface{}{"is_mark": 1}).Error
  1247. return information, err
  1248. }
  1249. func UpdateGoodInfoById(id int64) (models.MyGoodInformation, error) {
  1250. information := models.MyGoodInformation{}
  1251. err := XTWriteDB().Model(&information).Where("id=?", id).Updates(map[string]interface{}{"is_mark": 0}).Error
  1252. return information, err
  1253. }
  1254. func UpdateProjectById(id int64) (models.MyHisProject, error) {
  1255. project := models.MyHisProject{}
  1256. err := XTWriteDB().Model(&project).Where("id = ?", id).Updates(map[string]interface{}{"is_mark": 1}).Error
  1257. return project, err
  1258. }
  1259. func UpdateMyProjectById(id int64) (models.MyHisProject, error) {
  1260. project := models.MyHisProject{}
  1261. err := XTWriteDB().Model(&project).Where("id = ?", id).Updates(map[string]interface{}{"is_mark": 0}).Error
  1262. return project, err
  1263. }
  1264. func UpdateAdminUserRoleById(id int64, orgid int64) (models.MySgjUserAdminRole, error) {
  1265. role := models.MySgjUserAdminRole{}
  1266. err = UserWriteDB().Model(&role).Where("admin_user_id = ? and org_id = ?", id, orgid).Updates(map[string]interface{}{"is_mark = ?": 1}).Error
  1267. return role, err
  1268. }
  1269. func UpdataOrderInfoStatus(id int64, number string, user_org_id int64) {
  1270. err = writeDb.Model(&models.HisOrder{}).Where("status = 1 AND id = ? AND user_org_id = ?", id, user_org_id).Updates(map[string]interface{}{"mtime": time.Now().Unix(), "status": 0}).Error
  1271. err = writeDb.Model(&models.HisOrderInfo{}).Where("status = 1 AND user_org_id = ? AND order_number = ?", user_org_id, number).Updates(map[string]interface{}{"mtime": time.Now().Unix(), "status": 0}).Error
  1272. return
  1273. }