zh_his_service.go 37KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998
  1. package service
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "gdyb/models"
  7. "github.com/astaxie/beego"
  8. "github.com/jinzhu/gorm"
  9. "io/ioutil"
  10. "net/http"
  11. "strconv"
  12. "time"
  13. _ "unsafe"
  14. )
  15. // 人员基本信息
  16. func ZHGdyb1101(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, card_sn string, certificates int64, name string) (string, string, string) {
  17. //生成签名
  18. var requestLog string
  19. var resultLog string
  20. nonce := GetRandomString(32)
  21. timestamp := time.Now().Unix()
  22. signature := setSignature(timestamp, nonce, secret_key)
  23. //生成输入报文
  24. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  25. input := make(map[string]interface{})
  26. inputData := make(map[string]interface{})
  27. inputMessage["infno"] = "1101" // 交易编码
  28. if certificates == 3 {
  29. inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
  30. inputData["certno"] = certNo // 证件号码
  31. inputData["psn_cert_type"] = "99" // 人员证件类型
  32. } else {
  33. if id_card_type == 1 {
  34. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  35. inputData["card_sn"] = card_sn // 卡识别码
  36. inputData["certno"] = certNo // 证件号码
  37. inputData["psn_cert_type"] = "1" // 人员证件类型
  38. } else {
  39. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  40. inputData["card_sn"] = "" // 卡识别码
  41. inputData["certno"] = certNo // 证件号码
  42. inputData["psn_cert_type"] = "1" // 人员证件类型
  43. }
  44. }
  45. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  46. inputData["begntime"] = "" // 开始时间
  47. inputData["psn_name"] = name // 人员姓名
  48. input["data"] = inputData
  49. inputMessage["input"] = input //交易输入
  50. bytesData, err := json.Marshal(inputMessage)
  51. fmt.Println(string(bytesData))
  52. requestLog = string(bytesData)
  53. if err != nil {
  54. fmt.Println(err.Error())
  55. return err.Error(), "", ""
  56. }
  57. reader := bytes.NewReader(bytesData)
  58. gdyb_url := beego.AppConfig.String("gdyb_url")
  59. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  60. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/1101"
  61. url := gdyb_url + "1101"
  62. if mdtrtarea_admvs == "150499" {
  63. url = gdyb_url
  64. }
  65. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/1101"
  66. request, err := http.NewRequest("POST", url, reader)
  67. if err != nil {
  68. fmt.Println(err.Error())
  69. return err.Error(), "", ""
  70. }
  71. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  72. request.Header.Set("x-tif-paasid", gdyb_paasid)
  73. request.Header.Set("x-tif-signature", signature)
  74. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  75. request.Header.Set("x-tif-nonce", nonce)
  76. client := http.Client{}
  77. resp, err := client.Do(request)
  78. if err != nil {
  79. fmt.Println(err.Error())
  80. return err.Error(), "", ""
  81. }
  82. respBytes, err := ioutil.ReadAll(resp.Body)
  83. if err != nil {
  84. fmt.Println(err.Error())
  85. return err.Error(), "", ""
  86. }
  87. fmt.Println(string(respBytes))
  88. str := string(respBytes)
  89. resultLog = str
  90. return str, requestLog, resultLog
  91. }
  92. type DiseinfoStruct struct {
  93. PsnNo string
  94. DiagType string
  95. MaindiagFlag string
  96. DiagSrtNo string
  97. DiagCode string
  98. DiagName string
  99. DiagDept string
  100. DiseDorNo string
  101. DiseDorName string
  102. DiagTime string
  103. }
  104. type Struct2401 struct {
  105. PsnNo string
  106. Insutype string
  107. MdtrtCertType string
  108. MdtrtCertNo string
  109. MedType string
  110. IptNo string
  111. AtddrNo string
  112. ChfpdrName string
  113. AdmDiagDscr string
  114. AdmDeptCodg string
  115. AdmDeptName string
  116. AdmBed string
  117. DscgMaindiagCode string
  118. DscgMaindiagName string
  119. Diseinfo []DiseinfoStruct
  120. Begntime string
  121. DiseCodg string
  122. DiseName string
  123. }
  124. // 住院登记
  125. func ZHGdyb2401(struct2401 Struct2401, secret_key string, org_name string, fixmedins_code string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string) string {
  126. // 生成签名
  127. nonce := GetRandomString(32)
  128. timestamp := time.Now().Unix()
  129. signature := setSignature(timestamp, nonce, secret_key)
  130. //tempTime := time.Unix(timestamp, 0)
  131. //timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  132. // 生成输入报文
  133. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  134. input := make(map[string]interface{})
  135. inputData := make(map[string]interface{})
  136. inputMessage["infno"] = "2401" // 交易编码
  137. inputData["psn_no"] = struct2401.PsnNo // 人员编号 (来自1101接口返回)
  138. inputData["insutype"] = struct2401.Insutype // 险种类型(来自1101接口返回)
  139. inputData["tel"] = ""
  140. inputData["coner_name"] = ""
  141. inputData["begntime"] = struct2401.Begntime // 开始时间
  142. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  143. inputData["mdtrt_cert_no"] = struct2401.MdtrtCertNo // 就诊凭证编号
  144. inputData["med_type"] = struct2401.MedType // 就诊凭证编号
  145. inputData["ipt_no"] = struct2401.IptNo // 住院/门诊号
  146. inputData["medrcdno"] = ""
  147. inputData["atddr_no"] = struct2401.AtddrNo
  148. inputData["chfpdr_name"] = struct2401.ChfpdrName
  149. inputData["adm_diag_dscr"] = struct2401.AdmDiagDscr
  150. inputData["adm_dept_codg"] = struct2401.AdmDeptCodg
  151. inputData["adm_dept_name"] = struct2401.AdmDeptName
  152. inputData["adm_bed"] = struct2401.AdmBed
  153. inputData["dscg_maindiag_code"] = struct2401.DscgMaindiagCode
  154. inputData["dscg_maindiag_name"] = struct2401.DscgMaindiagName
  155. inputData["main_cond_dscr"] = ""
  156. inputData["dise_codg"] = struct2401.DiseCodg
  157. inputData["dise_name"] = struct2401.DiseName
  158. inputData["oprn_oprt_code"] = ""
  159. inputData["oprn_oprt_name"] = ""
  160. inputData["fpsc_no"] = ""
  161. inputData["matn_type"] = ""
  162. inputData["birctrl_type"] = ""
  163. inputData["latechb_flag"] = ""
  164. inputData["geso_val"] = ""
  165. inputData["fetts"] = ""
  166. inputData["fetus_cnt"] = ""
  167. inputData["pret_flag"] = ""
  168. inputData["birctrl_matn_date"] = ""
  169. inputData["dise_type_code"] = ""
  170. inputDataArr := make([]map[string]interface{}, 0)
  171. for _, item := range struct2401.Diseinfo {
  172. inputDataTwo := make(map[string]interface{})
  173. inputDataTwo["psn_no"] = item.PsnNo
  174. inputDataTwo["diag_type"] = item.DiagType
  175. inputDataTwo["maindiag_flag"] = item.MaindiagFlag
  176. inputDataTwo["diag_srt_no"] = item.DiagSrtNo
  177. inputDataTwo["diag_code"] = item.DiagCode
  178. inputDataTwo["diag_name"] = item.DiagName
  179. inputDataTwo["adm_cond"] = ""
  180. inputDataTwo["diag_dept"] = item.DiagDept
  181. inputDataTwo["dise_dor_no"] = item.DiseDorNo
  182. inputDataTwo["dise_dor_name"] = item.DiseDorName
  183. inputDataTwo["diag_time"] = item.DiagTime
  184. inputDataArr = append(inputDataArr, inputDataTwo)
  185. }
  186. input["mdtrtinfo"] = inputData
  187. input["diseinfo"] = inputDataArr
  188. inputMessage["input"] = input //交易输入
  189. bytesData, err := json.Marshal(inputMessage)
  190. fmt.Println(string(bytesData))
  191. if err != nil {
  192. fmt.Println(err.Error())
  193. return err.Error()
  194. }
  195. reader := bytes.NewReader(bytesData)
  196. gdyb_url := beego.AppConfig.String("gdyb_url")
  197. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  198. url := gdyb_url + "2401"
  199. if mdtrtarea_admvs == "150499" {
  200. url = gdyb_url
  201. }
  202. request, err := http.NewRequest("POST", url, reader)
  203. if err != nil {
  204. fmt.Println(err.Error())
  205. return err.Error()
  206. }
  207. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  208. request.Header.Set("x-tif-paasid", gdyb_paasid)
  209. request.Header.Set("x-tif-signature", signature)
  210. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  211. request.Header.Set("x-tif-nonce", nonce)
  212. client := http.Client{}
  213. resp, err := client.Do(request)
  214. if err != nil {
  215. fmt.Println(err.Error())
  216. return err.Error()
  217. }
  218. respBytes, err := ioutil.ReadAll(resp.Body)
  219. if err != nil {
  220. fmt.Println(err.Error())
  221. return err.Error()
  222. }
  223. str := string(respBytes)
  224. fmt.Println(str)
  225. return str
  226. }
  227. //住院撤销
  228. func ZHGdyb2404(mdtrt_id string, psn_no string, secret_key string, org_name string, fixmedins_code string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string) string {
  229. // 生成签名
  230. nonce := GetRandomString(32)
  231. timestamp := time.Now().Unix()
  232. signature := setSignature(timestamp, nonce, secret_key)
  233. // 生成输入报文
  234. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  235. input := make(map[string]interface{})
  236. inputData := make(map[string]interface{})
  237. inputMessage["infno"] = "2404" // 交易编码
  238. inputData["mdtrt_id"] = mdtrt_id // 人员编号 (来自1101接口返回)
  239. inputData["psn_no"] = psn_no // 人员编号 (来自1101接口返回)
  240. input["data"] = inputData
  241. inputMessage["input"] = input //交易输入
  242. bytesData, err := json.Marshal(inputMessage)
  243. fmt.Println(string(bytesData))
  244. if err != nil {
  245. fmt.Println(err.Error())
  246. return err.Error()
  247. }
  248. reader := bytes.NewReader(bytesData)
  249. gdyb_url := beego.AppConfig.String("gdyb_url")
  250. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  251. url := gdyb_url + "2404"
  252. if mdtrtarea_admvs == "150499" {
  253. url = gdyb_url
  254. }
  255. request, err := http.NewRequest("POST", url, reader)
  256. if err != nil {
  257. fmt.Println(err.Error())
  258. return err.Error()
  259. }
  260. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  261. request.Header.Set("x-tif-paasid", gdyb_paasid)
  262. request.Header.Set("x-tif-signature", signature)
  263. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  264. request.Header.Set("x-tif-nonce", nonce)
  265. client := http.Client{}
  266. resp, err := client.Do(request)
  267. if err != nil {
  268. fmt.Println(err.Error())
  269. return err.Error()
  270. }
  271. respBytes, err := ioutil.ReadAll(resp.Body)
  272. if err != nil {
  273. fmt.Println(err.Error())
  274. return err.Error()
  275. }
  276. str := string(respBytes)
  277. fmt.Println(str)
  278. return str
  279. }
  280. //出院撤销
  281. func ZHGdyb2405(mdtrt_id string, psn_no string, secret_key string, org_name string, fixmedins_code string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string) string {
  282. // 生成签名
  283. nonce := GetRandomString(32)
  284. timestamp := time.Now().Unix()
  285. signature := setSignature(timestamp, nonce, secret_key)
  286. // 生成输入报文
  287. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  288. input := make(map[string]interface{})
  289. inputData := make(map[string]interface{})
  290. inputMessage["infno"] = "2405" // 交易编码
  291. inputData["mdtrt_id"] = mdtrt_id // 人员编号 (来自1101接口返回)
  292. inputData["psn_no"] = psn_no // 人员编号 (来自1101接口返回)
  293. input["data"] = inputData
  294. inputMessage["input"] = input //交易输入
  295. bytesData, err := json.Marshal(inputMessage)
  296. fmt.Println(string(bytesData))
  297. if err != nil {
  298. fmt.Println(err.Error())
  299. return err.Error()
  300. }
  301. reader := bytes.NewReader(bytesData)
  302. gdyb_url := beego.AppConfig.String("gdyb_url")
  303. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  304. url := gdyb_url + "2405"
  305. if mdtrtarea_admvs == "150499" {
  306. url = gdyb_url
  307. }
  308. request, err := http.NewRequest("POST", url, reader)
  309. if err != nil {
  310. fmt.Println(err.Error())
  311. return err.Error()
  312. }
  313. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  314. request.Header.Set("x-tif-paasid", gdyb_paasid)
  315. request.Header.Set("x-tif-signature", signature)
  316. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  317. request.Header.Set("x-tif-nonce", nonce)
  318. client := http.Client{}
  319. resp, err := client.Do(request)
  320. if err != nil {
  321. fmt.Println(err.Error())
  322. return err.Error()
  323. }
  324. respBytes, err := ioutil.ReadAll(resp.Body)
  325. if err != nil {
  326. fmt.Println(err.Error())
  327. return err.Error()
  328. }
  329. str := string(respBytes)
  330. fmt.Println(str)
  331. return str
  332. }
  333. type Diseinfo2402Struct struct {
  334. MdtrtId string
  335. PsnNo string
  336. DiagType string
  337. MaindiagFlag string
  338. DiagSrtNo string
  339. DiagCode string
  340. DiagName string
  341. DiagDept string
  342. DiseDorNo string
  343. DiseDorName string
  344. DiagTime string
  345. }
  346. type Struct2402 struct {
  347. MdtrtId string
  348. PsnNo string
  349. Insutype string
  350. Endtime string
  351. DscgDeptCodg string
  352. DscgDeptName string
  353. DscgWay string
  354. Diseinfo []Diseinfo2402Struct
  355. DiseName string
  356. DiseCode string
  357. }
  358. // 出院
  359. func ZHGdyb2402(struct2402 Struct2402, org_name string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, fixmedins_code string) string {
  360. // 生成签名
  361. nonce := GetRandomString(32)
  362. timestamp := time.Now().Unix()
  363. signature := setSignature(timestamp, nonce, secret_key)
  364. //tempTime := time.Unix(timestamp, 0)
  365. //timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  366. // 生成输入报文
  367. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  368. input := make(map[string]interface{})
  369. inputData := make(map[string]interface{})
  370. inputMessage["infno"] = "2402" // 交易编码
  371. inputData["mdtrt_id"] = struct2402.MdtrtId // 人员编号 (来自1101接口返回)
  372. inputData["psn_no"] = struct2402.PsnNo // 人员编号 (来自1101接口返回)
  373. inputData["insutype"] = struct2402.Insutype // 险种类型(来自1101接口返回)
  374. inputData["endtime"] = struct2402.Endtime // 结束时间
  375. inputData["dise_codg"] = struct2402.DiseCode // 就诊凭证类型
  376. inputData["dise_name"] = struct2402.DiseName // 就诊凭证类型
  377. inputData["oprn_oprt_code"] = "" // 就诊凭证类型
  378. inputData["oprn_oprt_name"] = "" // 就诊凭证类型
  379. inputData["fpsc_no"] = "" // 就诊凭证类型
  380. inputData["matn_type"] = "" // 就诊凭证类型
  381. inputData["birctrl_type"] = "" // 就诊凭证类型
  382. inputData["latechb_flag"] = "" // 就诊凭证类型
  383. inputData["geso_val"] = ""
  384. inputData["fetts"] = ""
  385. inputData["fetus_cnt"] = ""
  386. inputData["pret_flag"] = ""
  387. inputData["birctrl_matn_date"] = ""
  388. inputData["cop_flag"] = ""
  389. inputData["dscg_dept_codg"] = struct2402.DscgDeptCodg
  390. inputData["dscg_dept_name"] = struct2402.DscgDeptName
  391. inputData["dscg_bed"] = "待定"
  392. inputData["dscg_way"] = struct2402.DscgWay
  393. inputData["die_date"] = ""
  394. inputDataArr := make([]map[string]interface{}, 0)
  395. for _, item := range struct2402.Diseinfo {
  396. inputDataTwo := make(map[string]interface{})
  397. inputDataTwo["psn_no"] = item.PsnNo
  398. inputDataTwo["mdtrt_id"] = item.MdtrtId
  399. inputDataTwo["diag_type"] = item.DiagType
  400. inputDataTwo["maindiag_flag"] = item.MaindiagFlag
  401. inputDataTwo["diag_srt_no"] = item.DiagSrtNo
  402. inputDataTwo["diag_code"] = item.DiagCode
  403. inputDataTwo["diag_name"] = item.DiagName
  404. inputDataTwo["diag_dept"] = item.DiagDept
  405. inputDataTwo["dise_dor_no"] = item.DiseDorNo
  406. inputDataTwo["dise_dor_name"] = item.DiseDorName
  407. inputDataTwo["diag_time"] = item.DiagTime
  408. inputDataArr = append(inputDataArr, inputDataTwo)
  409. }
  410. input["dscginfo"] = inputData
  411. input["diseinfo"] = inputDataArr
  412. inputMessage["input"] = input //交易输入
  413. bytesData, err := json.Marshal(inputMessage)
  414. fmt.Println(string(bytesData))
  415. if err != nil {
  416. fmt.Println(err.Error())
  417. return err.Error()
  418. }
  419. reader := bytes.NewReader(bytesData)
  420. gdyb_url := beego.AppConfig.String("gdyb_url")
  421. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  422. url := gdyb_url + "2402"
  423. if mdtrtarea_admvs == "150499" {
  424. url = gdyb_url
  425. }
  426. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2202"
  427. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2202"
  428. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2202"
  429. request, err := http.NewRequest("POST", url, reader)
  430. if err != nil {
  431. fmt.Println(err.Error())
  432. return err.Error()
  433. }
  434. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  435. //request.Header.Set("x-tif-paasid", "test_hosp")
  436. request.Header.Set("x-tif-paasid", gdyb_paasid)
  437. request.Header.Set("x-tif-signature", signature)
  438. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  439. request.Header.Set("x-tif-nonce", nonce)
  440. client := http.Client{}
  441. resp, err := client.Do(request)
  442. if err != nil {
  443. fmt.Println(err.Error())
  444. return err.Error()
  445. }
  446. respBytes, err := ioutil.ReadAll(resp.Body)
  447. if err != nil {
  448. fmt.Println(err.Error())
  449. return err.Error()
  450. }
  451. str := string(respBytes)
  452. fmt.Println(str)
  453. return str
  454. }
  455. type ZHCustom struct {
  456. DetItemFeeSumamt string
  457. Cut string
  458. FeedetlSn string
  459. Price string
  460. MedListCodg string
  461. LmtUsedFlag int64
  462. HospApprFlag int64
  463. }
  464. type ZHRequestResult struct {
  465. Output ZHOutput `json:"output" form:"output"`
  466. Infcode int64 `gorm:"column:infcode" json:"infcode" form:"infcode"`
  467. WarnMsg string `gorm:"column:warn_msg" json:"warn_msg" form:"warn_msg"`
  468. Cainfo string `gorm:"column:cainfo" json:"cainfo" form:"cainfo"`
  469. ErrMsg string `gorm:"column:err_msg" json:"err_msg" form:"err_msg"`
  470. RespondTime string `gorm:"column:respond_time" json:"respond_time" form:"respond_time"`
  471. InfRefmsgid string `gorm:"column:inf_refmsgid" json:"inf_refmsgid" form:"inf_refmsgid"`
  472. }
  473. type ZHOutput struct {
  474. Result Result `json:"result" form:"result"`
  475. }
  476. type ZHResult struct {
  477. BasMednFlag string `json:"bas_medn_flag" form:"bas_medn_flag"`
  478. MedChrgitmType string `json:"med_chrgitm_type" form:"med_chrgitm_type"`
  479. DetItemFeeSumamt int64 `json:"det_item_fee_sumamt" form:"det_item_fee_sumamt"`
  480. HiNegoDrugFlag string `json:"hi_nego_drug_flag" form:"hi_nego_drug_flag"`
  481. FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt" form:"fulamt_ownpay_amt"`
  482. FeedtlSn int64 `json:"feedtl_sn" form:"feedtl_sn"`
  483. UploadDate int64 `json:"upload_date" form:"upload_date"`
  484. AdviceId int64 `json:"advice_id" form:"advice_id"`
  485. Cnt int64 `json:"cnt" form:"cnt"`
  486. Pric float64 `json:"pric" form:"pric"`
  487. PatientId int64 `json:"patient_id" form:"patient_id"`
  488. PricUplmtAmt float64 `json:"pric_uplmt_amt" form:"pric_uplmt_amt"`
  489. SelfpayProp float64 `json:"selfpay_prop" form:"selfpay_prop"`
  490. OverlmtAmt float64 `json:"overlmt_amt" form:"overlmt_amt"`
  491. PreselfpayAmt float64 `json:"preselfpay_amt" form:"preselfpay_amt"`
  492. Status int64 `json:"status" form:"status"`
  493. Memo string `json:"memo" form:"memo"`
  494. FeedetlSn string `json:"feedetl_sn" form:"feedetl_sn"`
  495. Mtime int64 `json:"mtime" form:"mtime"`
  496. InscpScpAmt float64 `json:"inscp_scp_amt" form:"inscp_scp_amt"`
  497. DrtReimFlag string `json:"drt_reim_flag" form:"drt_reim_flag"`
  498. Ctime int64 `json:"ctime" form:"ctime"`
  499. ListSpItemFlag string `json:"list_sp_item_flag" form:"list_sp_item_flag"`
  500. ChldMedcFlag string `json:"chld_medc_flag" form:"chld_medc_flag"`
  501. LmtUsedFlag string `json:"lmt_used_flag" form:"lmt_used_flag"`
  502. ChrgitmLv string `json:"chrgitm_lv" form:"chrgitm_lv"`
  503. UserOrgId int64 `json:"user_org_id" form:"user_org_id"`
  504. HisPatientId int64 `json:"his_patient_id" form:"his_patient_id"`
  505. OrderId int64 `json:"order_id" form:"order_id"`
  506. }
  507. // 住院费用明细信息上传
  508. func ZHGdyb2301(psnNo string, mdtrtId string, hisPrescription []*models.NewCustom, chrg_bchno string, org_name string, doctor string, dept string, fixmedins_code string, dept_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string) string {
  509. // 生成签名
  510. nonce := GetRandomString(32)
  511. timestamp := time.Now().Unix()
  512. signature := setSignature(timestamp, nonce, secret_key)
  513. tempTime := time.Unix(timestamp, 0)
  514. //timeFormat := tempTime.Format("20060102150405")
  515. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  516. //chrgBchno := rand.Intn(100000) + 10000
  517. var customs []*models.NewCustom
  518. customs = hisPrescription
  519. // 生成输入报文
  520. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  521. input := make(map[string]interface{})
  522. feedetail := make([]map[string]interface{}, 0)
  523. inputMessage["infno"] = "2301" // 交易编码
  524. //chrg_bchno := timeFormat + strconv.FormatInt(int64(chrgBchno), 10)
  525. for _, item := range customs {
  526. feedetailInfo := make(map[string]interface{})
  527. feedetailInfo["feedetl_sn"] = item.FeedetlSn
  528. feedetailInfo["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  529. feedetailInfo["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  530. feedetailInfo["med_type"] = med_type
  531. feedetailInfo["fee_ocur_time"] = timeFormatOne // 费用发生时间
  532. feedetailInfo["med_list_codg"] = item.MedListCodg // 医疗目录编码
  533. feedetailInfo["medins_list_codg"] = fixmedins_code // 医药机构目录编码
  534. feedetailInfo["det_item_fee_sumamt"] = item.DetItemFeeSumamt // 明细项目费用总额
  535. feedetailInfo["cnt"] = item.Cut // 数量
  536. feedetailInfo["pric"] = item.Price // 单价
  537. feedetailInfo["bilg_dept_codg"] = dept_code // 开单科室编码
  538. feedetailInfo["bilg_dept_name"] = dept // 开单科室名称
  539. feedetailInfo["bilg_dr_codg"] = doctor_id // 开单医生编码
  540. feedetailInfo["bilg_dr_name"] = doctor
  541. feedetailInfo["acord_dept_codg"] = "" // 受单科室编码
  542. feedetailInfo["acord_dept_name"] = "" // 受单科室名称
  543. feedetailInfo["orders_dr_code"] = "" // 受单医生编码
  544. feedetailInfo["orders_dr_name"] = "" // 受单医生姓名
  545. feedetailInfo["chrg_bchno"] = chrg_bchno // 收费批次号
  546. feedetailInfo["dise_codg"] = "" // 病种编码
  547. feedetailInfo["rxno"] = "" // 处方号
  548. feedetailInfo["rx_circ_flag"] = "0" // 外购处方标志
  549. feedetailInfo["sin_dos_dscr"] = "" // 单次剂量描述
  550. feedetailInfo["used_frqu_dscr"] = "" // 使用频次描述
  551. feedetailInfo["prd_days"] = "0" // 周期天数
  552. feedetailInfo["medc_way_dscr"] = "" // 用药途径描述
  553. // 开单医师姓名
  554. if item.HospApprFlag != -1 {
  555. if item.HospApprFlag == 1 {
  556. feedetailInfo["hosp_appr_flag"] = "0" // 医院审批标志
  557. } else if item.HospApprFlag == 2 {
  558. feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
  559. } else if item.HospApprFlag == 3 {
  560. feedetailInfo["hosp_appr_flag"] = "2" // 医院审批标志
  561. } else {
  562. feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
  563. }
  564. } else {
  565. feedetailInfo["hosp_appr_flag"] = "1" // 医院审批标志
  566. }
  567. feedetailInfo["tcmdrug_used_way"] = "" // 中药使用方式
  568. feedetailInfo["etip_flag"] = "" // 外检标志
  569. feedetailInfo["etip_hosp_code"] = "" // 外检医院编码
  570. feedetailInfo["dscg_tkdrug_flag"] = "" // 出院带药标志
  571. feedetailInfo["matn_fee_flag"] = "" // 生育费用标志
  572. feedetail = append(feedetail, feedetailInfo)
  573. }
  574. input["feedetail"] = feedetail
  575. inputMessage["input"] = input //交易输入
  576. bytesData, err := json.Marshal(inputMessage)
  577. fmt.Println("----------")
  578. fmt.Println(string(bytesData))
  579. fmt.Println("----------")
  580. if err != nil {
  581. fmt.Println(err.Error())
  582. return ""
  583. }
  584. reader := bytes.NewReader(bytesData)
  585. gdyb_url := beego.AppConfig.String("gdyb_url")
  586. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  587. url := gdyb_url + "2301"
  588. if mdtrtarea_admvs == "150499" {
  589. url = gdyb_url
  590. }
  591. request, err := http.NewRequest("POST", url, reader)
  592. if err != nil {
  593. fmt.Println(err.Error())
  594. return ""
  595. }
  596. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  597. request.Header.Set("x-tif-paasid", gdyb_paasid)
  598. request.Header.Set("x-tif-signature", signature)
  599. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  600. request.Header.Set("x-tif-nonce", nonce)
  601. client := http.Client{}
  602. resp, err := client.Do(request)
  603. if err != nil {
  604. fmt.Println(err.Error())
  605. return ""
  606. }
  607. respBytes, err := ioutil.ReadAll(resp.Body)
  608. if err != nil {
  609. fmt.Println(err.Error())
  610. return ""
  611. }
  612. return string(respBytes)
  613. }
  614. // 住院费用明细信息撤销
  615. func Gdyb2302(psnNo string, mdtrtId string, org_name string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, fixmedins_code string, number string, refund_type int64) string {
  616. // 生成签名
  617. nonce := GetRandomString(32)
  618. timestamp := time.Now().Unix()
  619. signature := setSignature(timestamp, nonce, secret_key)
  620. // 生成输入报文
  621. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  622. input := make(map[string]interface{})
  623. inputData := make(map[string]interface{})
  624. inputMessage["infno"] = "2302" // 交易编码
  625. if refund_type == 1 {
  626. inputData["feedetl_sn"] = number //
  627. } else {
  628. inputData["feedetl_sn"] = "0000" //
  629. }
  630. inputData["mdtrt_id"] = mdtrtId // 就诊 ID
  631. inputData["psn_no"] = psnNo // 人员编号
  632. input["data"] = inputData
  633. inputMessage["input"] = input //交易输入
  634. bytesData, err := json.Marshal(inputMessage)
  635. fmt.Println(string(bytesData))
  636. if err != nil {
  637. fmt.Println(err.Error())
  638. return err.Error()
  639. }
  640. reader := bytes.NewReader(bytesData)
  641. gdyb_url := beego.AppConfig.String("gdyb_url")
  642. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  643. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/1101"
  644. url := gdyb_url + "2302"
  645. if mdtrtarea_admvs == "150499" {
  646. url = gdyb_url
  647. }
  648. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2205"
  649. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2205"
  650. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2205"
  651. request, err := http.NewRequest("POST", url, reader)
  652. fmt.Println(err)
  653. fmt.Println(request)
  654. if err != nil {
  655. fmt.Println(err.Error())
  656. return err.Error()
  657. }
  658. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  659. request.Header.Set("x-tif-paasid", gdyb_paasid)
  660. request.Header.Set("x-tif-signature", signature)
  661. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  662. request.Header.Set("x-tif-nonce", nonce)
  663. client := http.Client{}
  664. resp, err := client.Do(request)
  665. if err != nil {
  666. fmt.Println(err.Error())
  667. return err.Error()
  668. }
  669. respBytes, err := ioutil.ReadAll(resp.Body)
  670. if err != nil {
  671. fmt.Println(err.Error())
  672. return err.Error()
  673. }
  674. str := string(respBytes)
  675. fmt.Println(str)
  676. return str
  677. }
  678. // 住院结算
  679. func ZHGdyb2304(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, mid_setl_flag string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64) (string, string) {
  680. // 生成签名
  681. nonce := GetRandomString(32)
  682. timestamp := time.Now().Unix()
  683. signature := setSignature(timestamp, nonce, secret_key)
  684. // 生成输入报文
  685. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  686. input := make(map[string]interface{})
  687. inputData := make(map[string]interface{})
  688. inputMessage["infno"] = "2304" // 交易编码
  689. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  690. if certificates == 3 {
  691. inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
  692. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  693. } else {
  694. if id_card_type == 1 {
  695. inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
  696. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  697. } else {
  698. inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
  699. inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
  700. }
  701. }
  702. inputData["mdtrt_cert_sn"] = ""
  703. inputData["mid_setl_flag"] = mid_setl_flag // 中途退费标志
  704. inputData["medfee_sumamt"] = total // 医疗费总额
  705. inputData["psn_setlway"] = "01" // 个人结算方式 01 按项目结 02 按定额结算
  706. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  707. inputData["acct_used_flag"] = "1" // 个人账户使用标志 0否 1是
  708. inputData["insutype"] = insutype // 险种类型
  709. inputData["invono"] = "" // 发票号
  710. input["data"] = inputData
  711. inputMessage["input"] = input //交易输入
  712. bytesData, err := json.Marshal(inputMessage)
  713. fmt.Println(string(bytesData))
  714. if err != nil {
  715. fmt.Println(err.Error())
  716. return err.Error(), ""
  717. }
  718. reader := bytes.NewReader(bytesData)
  719. gdyb_url := beego.AppConfig.String("gdyb_url")
  720. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  721. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/1101"
  722. url := gdyb_url + "2304"
  723. if mdtrtarea_admvs == "150499" {
  724. url = gdyb_url
  725. }
  726. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_api/prd/hsa/hgs/2207"
  727. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2207"
  728. //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/2207"
  729. request, err := http.NewRequest("POST", url, reader)
  730. if err != nil {
  731. fmt.Println(err.Error())
  732. return err.Error(), ""
  733. }
  734. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  735. request.Header.Set("x-tif-paasid", gdyb_paasid)
  736. request.Header.Set("x-tif-signature", signature)
  737. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  738. request.Header.Set("x-tif-nonce", nonce)
  739. client := http.Client{}
  740. resp, err := client.Do(request)
  741. if err != nil {
  742. fmt.Println(err.Error())
  743. return err.Error(), ""
  744. }
  745. respBytes, err := ioutil.ReadAll(resp.Body)
  746. if err != nil {
  747. fmt.Println(err.Error())
  748. return err.Error(), ""
  749. }
  750. str := string(respBytes)
  751. fmt.Println(str)
  752. mjson, _ := json.Marshal(inputMessage)
  753. str2 := string(mjson)
  754. return str, str2
  755. }
  756. // 住院结算撤销
  757. func Gdyb2305(psnNo string, mdtrtId string, setlId string, org_name string, doctor string, secret_key string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string) (string, string) {
  758. // 生成签名
  759. nonce := GetRandomString(32)
  760. timestamp := time.Now().Unix()
  761. signature := setSignature(timestamp, nonce, secret_key)
  762. // 生成输入报文
  763. inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  764. input := make(map[string]interface{})
  765. inputData := make(map[string]interface{})
  766. inputMessage["infno"] = "2305" // 交易编码
  767. inputData["psn_no"] = psnNo // 人员编号 (来自1101接口返回)
  768. inputData["mdtrt_id"] = mdtrtId // 就诊 ID(来自2201接口返回)
  769. inputData["setl_id"] = setlId // 结算 ID
  770. input["data"] = inputData
  771. inputMessage["input"] = input //交易输入
  772. bytesData, err := json.Marshal(inputMessage)
  773. fmt.Println(string(bytesData))
  774. if err != nil {
  775. fmt.Println(err.Error())
  776. return err.Error(), ""
  777. }
  778. reader := bytes.NewReader(bytesData)
  779. gdyb_url := beego.AppConfig.String("gdyb_url")
  780. gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
  781. url := gdyb_url + "2305"
  782. if mdtrtarea_admvs == "150499" {
  783. url = gdyb_url
  784. }
  785. request, err := http.NewRequest("POST", url, reader)
  786. if err != nil {
  787. fmt.Println(err.Error())
  788. return err.Error(), ""
  789. }
  790. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  791. request.Header.Set("x-tif-paasid", gdyb_paasid)
  792. request.Header.Set("x-tif-signature", signature)
  793. request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
  794. request.Header.Set("x-tif-nonce", nonce)
  795. client := http.Client{}
  796. resp, err := client.Do(request)
  797. if err != nil {
  798. fmt.Println(err.Error())
  799. return err.Error(), ""
  800. }
  801. respBytes, err := ioutil.ReadAll(resp.Body)
  802. if err != nil {
  803. fmt.Println(err.Error())
  804. return err.Error(), ""
  805. }
  806. str := string(respBytes)
  807. fmt.Println(str)
  808. mjson, _ := json.Marshal(inputMessage)
  809. str2 := string(mjson)
  810. return str, str2
  811. }
  812. func CreateHospitalRecord(record *models.HisHospitalCheckRecord) (err error) {
  813. err = writeDb.Save(&record).Error
  814. return
  815. }
  816. func GetInHospitalRecord(id int64) (record models.HisHospitalCheckRecord, err error) {
  817. err = readDb.Model(&models.HisHospitalCheckRecord{}).Where("id = ? AND status = 1", id).First(&record).Error
  818. return
  819. }
  820. func GetInHospitalRecordByNumber(number string) (record models.HisHospitalCheckRecord, err error) {
  821. err = readDb.Model(&models.HisHospitalCheckRecord{}).Where("number = ? AND status = 1", number).First(&record).Error
  822. return
  823. }
  824. func GetLastHospitalRecord(id int64, user_org_id int64) (record models.HisHospitalCheckRecord, err error) {
  825. err = readDb.Model(&models.HisHospitalCheckRecord{}).Where("id = ? AND status = 1 AND user_org_id = ?", id, user_org_id).Last(&record).Error
  826. return
  827. }
  828. func GetZHHisPrescription(org_id int64, patient_id int64, record_date int64) (prescription []*models.HisPrescription, err error) {
  829. err = readDb.Model(&models.HisPrescription{}).
  830. Preload("HisAdditionalCharge", func(db *gorm.DB) *gorm.DB {
  831. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("XtHisAddtionConfig", "status=1")
  832. }).
  833. Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  834. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("BaseDrugLib", "status=1")
  835. }).
  836. Preload("HisPrescriptionProject", func(db *gorm.DB) *gorm.DB {
  837. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("HisProject", "status=1").Preload("GoodInfo", "status = 1")
  838. }).
  839. Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND order_status <> 2 AND order_status <> 4 AND p_type = 1", org_id, record_date, patient_id).
  840. Find(&prescription).Error
  841. return
  842. }
  843. func GetZHMonthHisPrescription(org_id int64, patient_id int64, start_time int64, end_time int64) (prescription []*models.HisPrescription, err error) {
  844. err = readDb.Model(&models.HisPrescription{}).
  845. Preload("HisAdditionalCharge", func(db *gorm.DB) *gorm.DB {
  846. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("XtHisAddtionConfig", "status=1")
  847. }).
  848. Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  849. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("BaseDrugLib", "status=1")
  850. }).
  851. Preload("HisPrescriptionProject", func(db *gorm.DB) *gorm.DB {
  852. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("HisProject", "status=1").Preload("GoodInfo", "status = 1")
  853. }).
  854. Where("user_org_id = ? AND record_date >= ? AND record_date <= ? AND patient_id = ? AND order_status <> 2 AND order_status <> 4 AND status = 1 AND p_type = 1 ", org_id, start_time, end_time, patient_id).
  855. Find(&prescription).Error
  856. return
  857. }
  858. func GetZHHisUploadPrescription(org_id int64, patient_id int64, record_date int64) (prescription []*models.HisPrescription, err error) {
  859. err = readDb.Model(&models.HisPrescription{}).
  860. Preload("HisAdditionalCharge", func(db *gorm.DB) *gorm.DB {
  861. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("XtHisAddtionConfig", "status=1")
  862. }).
  863. Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  864. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("BaseDrugLib", "status=1")
  865. }).
  866. Preload("HisPrescriptionProject", func(db *gorm.DB) *gorm.DB {
  867. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("HisProject", "status=1")
  868. }).
  869. Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND order_status = 4 AND p_type = 1", org_id, record_date, patient_id).
  870. Find(&prescription).Error
  871. return
  872. }
  873. func GetZHMonthHisUploadPrescription(org_id int64, patient_id int64, start_time int64, end_time int64) (prescription []*models.HisPrescription, err error) {
  874. err = readDb.Model(&models.HisPrescription{}).
  875. Preload("HisAdditionalCharge", func(db *gorm.DB) *gorm.DB {
  876. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("XtHisAddtionConfig", "status=1")
  877. }).
  878. Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  879. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("BaseDrugLib", "status=1")
  880. }).
  881. Preload("HisPrescriptionProject", func(db *gorm.DB) *gorm.DB {
  882. return db.Where("status = 1 AND user_org_id = ?", org_id).Preload("HisProject", "status=1")
  883. }).
  884. Where("user_org_id = ? AND record_date >= ? AND record_date <= ? AND patient_id = ? AND order_status == 4 AND status = 1 AND p_type = 1 ", org_id, start_time, end_time, patient_id).
  885. Find(&prescription).Error
  886. return
  887. }
  888. func GetZHHisUploadOrderInfo(org_id int64, patient_id int64, record_date int64, record_end_date int64) (infos []*models.HisOrderInfo, err error) {
  889. err = readDb.Model(&models.HisOrderInfo{}).
  890. Where("user_org_id = ? AND status = 1 AND upload_date <= ? AND upload_date >= ? AND patient_id = ? ", org_id, record_end_date, record_date, patient_id).
  891. Find(&infos).Error
  892. return
  893. }
  894. func UpDateOrderInfoStatus(patient_id int64, record_date int64, org_id int64, record_two_date int64) (err error) {
  895. err = writeDb.Model(&models.HisOrderInfo{}).Where("user_org_id = ? AND status = 1 AND upload_date <= ? AND upload_date >= ? AND patient_id = ?", org_id, record_two_date, record_date, patient_id).Updates(map[string]interface{}{"status": 0}).Error
  896. return
  897. }
  898. func UpDatePrescriptionOrderStatusTwo(patient_id int64, record_date int64, org_id int64) (err error) {
  899. err = writeDb.Model(&models.HisPrescription{}).Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND p_type = 1", org_id, record_date, patient_id).Updates(map[string]interface{}{"order_status": 1}).Error
  900. return
  901. }
  902. //func GetAllOrderInfoByNumber(number string) (infos []*models.HisOrderInfo, err error){
  903. //
  904. // err = readDb.Model(&models.HisOrderInfo{}).Where("user_org_id = ? AND ")
  905. //}