his_charge_api_controller.go 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834
  1. package controllers
  2. import (
  3. "XT_New/enums"
  4. "XT_New/models"
  5. "XT_New/service"
  6. "XT_New/utils"
  7. "bytes"
  8. "compress/gzip"
  9. "encoding/json"
  10. "fmt"
  11. "github.com/astaxie/beego"
  12. "net/http"
  13. "time"
  14. )
  15. type HisChargeApiController struct {
  16. BaseAuthAPIController
  17. }
  18. func HisChargeApiRegistRouters() {
  19. beego.Router("/api/his/chargestatistics/detail", &HisChargeApiController{}, "get:GetChargeStatisticsDetail")
  20. beego.Router("/api/his/chargestatistics/settle", &HisChargeApiController{}, "get:GetChargeStatisticsSettle")
  21. beego.Router("/api/his/prescription/detail", &HisChargeApiController{}, "get:GetPrescriptionStatisticsDetail")
  22. beego.Router("/api/his/prescription/initdata", &HisChargeApiController{}, "get:GetPrescriptionInitData")
  23. //beego.InsertFilter("/api/his/chargestatistics/detail", beego.BeforeRouter, GzipFilter)
  24. beego.Router("/api/his/patient", &HisChargeApiController{}, "get:GetAllPatient")
  25. //beego.Router("/api/his/chargestatistics/settle", &HisChargeApiController{}, "get:GetChargeStatisticsSettle")
  26. beego.Router("/api/his/inspectionlist/get", &HisChargeApiController{}, "get:GetHisInspectionList")
  27. beego.Router("/api/his/inspectionlisttwo/get", &HisChargeApiController{}, "get:GetHisInspectionListTwo")
  28. beego.Router("/api/his/inspectioninfo/get", &HisChargeApiController{}, "get:GetHisInspectionInfo")
  29. //发票
  30. beego.Router("/api/bwfapiao/create", &HisChargeApiController{}, "post:CreateFaPiaoRecord")
  31. beego.Router("/api/bwfapiao/modify", &HisChargeApiController{}, "post:ModifyFaPiaoRecord")
  32. beego.Router("/api/bwfapiao/list", &HisChargeApiController{}, "get:GetFaPiaoRecordList")
  33. beego.Router("/api/bwfapiao/delete", &HisChargeApiController{}, "post:DeleteFaPiaoRecord")
  34. beego.Router("/api/bwfapiao", &HisChargeApiController{}, "get:GetFaPiaoRecord")
  35. beego.Router("/api/bwfapiao/is_use", &HisChargeApiController{}, "post:UpdateFaPiaoRecordIsUse")
  36. beego.Router("/api/his/getyidiclear", &HisChargeApiController{}, "get:GetHisYidiClearRecord")
  37. beego.Router("/api/his/getexportdata", &HisChargeApiController{}, "get:GetExportData")
  38. }
  39. func (c *HisChargeApiController) GetExportData() {
  40. start_time := c.GetString("start_time")
  41. end_time := c.GetString("end_time")
  42. adminUser := c.GetAdminUserInfo()
  43. timeLayout := "2006-01-02"
  44. loc, _ := time.LoadLocation("Local")
  45. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  46. if err != nil {
  47. }
  48. startRecordDateTime := startTime.Unix()
  49. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  50. if err != nil {
  51. }
  52. endRecordDateTime := endTime.Unix()
  53. chargePatient, err := service.GetAllChargeDetailsTwo(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime)
  54. if err == nil {
  55. c.ServeSuccessJSON(map[string]interface{}{
  56. "patients": chargePatient,
  57. })
  58. return
  59. } else {
  60. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  61. return
  62. }
  63. }
  64. func (c *HisChargeApiController) UpdateFaPiaoRecordIsUse() {
  65. id, _ := c.GetInt64("id", 0)
  66. is_use, _ := c.GetInt64("is_use")
  67. if id <= 0 {
  68. utils.ErrorLog("id == 0")
  69. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  70. return
  71. }
  72. record, _ := service.FindFapiaoById(id)
  73. adminUserInfo := c.GetAdminUserInfo()
  74. service.UpdateFapiaoIsUse(adminUserInfo.CurrentOrgId)
  75. records := models.HisFapiaoRecord{
  76. ID: id,
  77. FapiaoCode: record.FapiaoCode,
  78. FapiaoNumber: record.FapiaoNumber,
  79. Ctime: time.Now().Unix(),
  80. Mtime: time.Now().Unix(),
  81. UserOrgId: adminUserInfo.CurrentOrgId,
  82. Status: 1,
  83. IsUse: is_use,
  84. }
  85. err := service.ModifyFapiao(&records)
  86. if err == nil {
  87. c.ServeSuccessJSON(map[string]interface{}{
  88. "fapiao_record": records,
  89. })
  90. } else {
  91. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  92. }
  93. }
  94. func (c *HisChargeApiController) CreateFaPiaoRecord() {
  95. fapiao_code := c.GetString("fapiao_code")
  96. fapiao_number := c.GetString("fapiao_number")
  97. if len(fapiao_code) <= 0 {
  98. utils.ErrorLog("len(fapiao_code) == 0")
  99. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  100. return
  101. }
  102. if len(fapiao_number) <= 0 {
  103. utils.ErrorLog("len(fapiao_number) == 0")
  104. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  105. return
  106. }
  107. adminUserInfo := c.GetAdminUserInfo()
  108. record := models.HisFapiaoRecord{
  109. FapiaoCode: fapiao_code,
  110. FapiaoNumber: fapiao_number,
  111. Ctime: time.Now().Unix(),
  112. Mtime: time.Now().Unix(),
  113. UserOrgId: adminUserInfo.CurrentOrgId,
  114. Status: 1,
  115. IsUse: 0,
  116. }
  117. err, records := service.AddSigleFapiaoRecord(&record)
  118. if err == nil {
  119. c.ServeSuccessJSON(map[string]interface{}{
  120. "fapiao_record": records,
  121. })
  122. } else {
  123. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  124. }
  125. }
  126. func (c *HisChargeApiController) ModifyFaPiaoRecord() {
  127. id, _ := c.GetInt64("id", 0)
  128. fapiao_code := c.GetString("fapiao_code")
  129. fapiao_number := c.GetString("fapiao_number")
  130. if id <= 0 {
  131. utils.ErrorLog("id == 0")
  132. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  133. return
  134. }
  135. if len(fapiao_code) <= 0 {
  136. utils.ErrorLog("len(fapiao_code) == 0")
  137. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  138. return
  139. }
  140. if len(fapiao_number) <= 0 {
  141. utils.ErrorLog("len(fapiao_number) == 0")
  142. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  143. return
  144. }
  145. record, _ := service.FindFapiaoById(id)
  146. adminUserInfo := c.GetAdminUserInfo()
  147. records := models.HisFapiaoRecord{
  148. ID: id,
  149. FapiaoCode: fapiao_code,
  150. FapiaoNumber: fapiao_number,
  151. Ctime: time.Now().Unix(),
  152. Mtime: time.Now().Unix(),
  153. UserOrgId: adminUserInfo.CurrentOrgId,
  154. Status: 1,
  155. IsUse: record.IsUse,
  156. }
  157. err := service.ModifyFapiao(&records)
  158. if err == nil {
  159. c.ServeSuccessJSON(map[string]interface{}{
  160. "fapiao_record": records,
  161. })
  162. } else {
  163. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  164. }
  165. }
  166. func (c *HisChargeApiController) GetFaPiaoRecordList() {
  167. page, _ := c.GetInt64("page", 1)
  168. limit, _ := c.GetInt64("limit", 7)
  169. adminUserInfo := c.GetAdminUserInfo()
  170. fapiaoRecord, total, err := service.FindAllFapiaoList(adminUserInfo.CurrentOrgId, page, limit)
  171. if err == nil {
  172. c.ServeSuccessJSON(map[string]interface{}{
  173. "fapiao_record": fapiaoRecord,
  174. "total": total,
  175. })
  176. } else {
  177. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  178. }
  179. }
  180. func (c *HisChargeApiController) DeleteFaPiaoRecord() {
  181. id, _ := c.GetInt64("id", 0)
  182. err := service.DeleteFapiaoById(id)
  183. if err == nil {
  184. c.ServeSuccessJSON(map[string]interface{}{
  185. "msg": "删除成功",
  186. })
  187. } else {
  188. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  189. }
  190. }
  191. func (c *HisChargeApiController) GetFaPiaoRecord() {
  192. id, _ := c.GetInt64("id", 0)
  193. fapiaoRecord, err := service.FindFapiaoById(id)
  194. if err == nil {
  195. c.ServeSuccessJSON(map[string]interface{}{
  196. "fapiao_record": fapiaoRecord,
  197. })
  198. } else {
  199. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  200. }
  201. }
  202. func (c *HisChargeApiController) GetChargeStatisticsDetail() {
  203. //c.ServeSuccessJSON(map[string]interface{}{
  204. // "msg": "接口优化升级,如有数据需要,请联系客服!",
  205. //})
  206. //return
  207. start_time := c.GetString("start_time")
  208. end_time := c.GetString("end_time")
  209. time_type := c.GetString("time_type")
  210. keyword := c.GetString("keyword")
  211. item_type, _ := c.GetInt64("type")
  212. s_type, _ := c.GetInt64("s_type")
  213. adminUser := c.GetAdminUserInfo()
  214. timeLayout := "2006-01-02"
  215. loc, _ := time.LoadLocation("Local")
  216. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  217. if err != nil {
  218. }
  219. startRecordDateTime := startTime.Unix()
  220. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  221. if err != nil {
  222. }
  223. endRecordDateTime := endTime.Unix()
  224. if s_type > 0 {
  225. type NewDate struct {
  226. Patients []*models.NewChargeDetail
  227. Results []service.MedicalChargesTwo
  228. }
  229. reuslt, _ := service.GetHisOrderSummary(adminUser.CurrentOrgId, start_time, end_time)
  230. fmt.Println(reuslt)
  231. chargeDrug, _ := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  232. chargeProject, _ := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  233. chargeDrug = append(chargeDrug, chargeProject...)
  234. var dd NewDate
  235. dd.Results = reuslt
  236. dd.Patients = chargeDrug
  237. data, _ := json.Marshal(dd)
  238. var compressedData bytes.Buffer
  239. writer := gzip.NewWriter(&compressedData)
  240. _, err = writer.Write(data)
  241. if err != nil {
  242. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  243. c.Ctx.WriteString(err.Error())
  244. return
  245. }
  246. writer.Close()
  247. // 设置响应头,表明数据经过了 Gzip 压缩
  248. c.Ctx.Output.Header("Content-Encoding", "gzip")
  249. // 发送压缩后的数据
  250. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  251. //b, _ := structToBytes(data)
  252. } else {
  253. switch item_type {
  254. case 0:
  255. reuslt, _ := service.GetHisOrderSummary(adminUser.CurrentOrgId, start_time, end_time)
  256. fmt.Println(reuslt)
  257. chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  258. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  259. chargeDrug = append(chargeDrug, chargeProject...)
  260. b, _ := structToBytes(chargeDrug)
  261. //cd, _ := compressData(b)
  262. // 使用 Gzip 压缩数据
  263. var compressedData bytes.Buffer
  264. writer := gzip.NewWriter(&compressedData)
  265. _, err = writer.Write(b)
  266. if err != nil {
  267. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  268. c.Ctx.WriteString(err.Error())
  269. return
  270. }
  271. writer.Close()
  272. // 设置响应头,表明数据经过了 Gzip 压缩
  273. c.Ctx.Output.Header("Content-Encoding", "gzip")
  274. // 发送压缩后的数据
  275. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  276. break
  277. case 1:
  278. chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  279. //chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  280. //chargeDrug = append(chargeDrug, chargeProject...)
  281. b, _ := structToBytes(chargeDrug)
  282. //cd, _ := compressData(b)
  283. // 使用 Gzip 压缩数据
  284. var compressedData bytes.Buffer
  285. writer := gzip.NewWriter(&compressedData)
  286. _, err = writer.Write(b)
  287. if err != nil {
  288. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  289. c.Ctx.WriteString(err.Error())
  290. return
  291. }
  292. writer.Close()
  293. // 设置响应头,表明数据经过了 Gzip 压缩
  294. c.Ctx.Output.Header("Content-Encoding", "gzip")
  295. // 发送压缩后的数据
  296. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  297. break
  298. case 2:
  299. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  300. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  301. //chargeDrug = append(chargeDrug, chargeProject...)
  302. b, _ := structToBytes(chargeProject)
  303. //cd, _ := compressData(b)
  304. // 使用 Gzip 压缩数据
  305. var compressedData bytes.Buffer
  306. writer := gzip.NewWriter(&compressedData)
  307. _, err = writer.Write(b)
  308. if err != nil {
  309. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  310. c.Ctx.WriteString(err.Error())
  311. return
  312. }
  313. writer.Close()
  314. // 设置响应头,表明数据经过了 Gzip 压缩
  315. c.Ctx.Output.Header("Content-Encoding", "gzip")
  316. // 发送压缩后的数据
  317. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  318. break
  319. case 3:
  320. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  321. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  322. //chargeDrug = append(chargeDrug, chargeProject...)
  323. b, _ := structToBytes(chargeProject)
  324. //cd, _ := compressData(b)
  325. // 使用 Gzip 压缩数据
  326. var compressedData bytes.Buffer
  327. writer := gzip.NewWriter(&compressedData)
  328. _, err = writer.Write(b)
  329. if err != nil {
  330. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  331. c.Ctx.WriteString(err.Error())
  332. return
  333. }
  334. writer.Close()
  335. // 设置响应头,表明数据经过了 Gzip 压缩
  336. c.Ctx.Output.Header("Content-Encoding", "gzip")
  337. // 发送压缩后的数据
  338. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  339. break
  340. case 4:
  341. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  342. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  343. //chargeDrug = append(chargeDrug, chargeProject...)
  344. b, _ := structToBytes(chargeProject)
  345. //cd, _ := compressData(b)
  346. // 使用 Gzip 压缩数据
  347. var compressedData bytes.Buffer
  348. writer := gzip.NewWriter(&compressedData)
  349. _, err = writer.Write(b)
  350. if err != nil {
  351. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  352. c.Ctx.WriteString(err.Error())
  353. return
  354. }
  355. writer.Close()
  356. // 设置响应头,表明数据经过了 Gzip 压缩
  357. c.Ctx.Output.Header("Content-Encoding", "gzip")
  358. // 发送压缩后的数据
  359. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  360. break
  361. case 5:
  362. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  363. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  364. //chargeDrug = append(chargeDrug, chargeProject...)
  365. b, _ := structToBytes(chargeProject)
  366. //cd, _ := compressData(b)
  367. // 使用 Gzip 压缩数据
  368. var compressedData bytes.Buffer
  369. writer := gzip.NewWriter(&compressedData)
  370. _, err = writer.Write(b)
  371. if err != nil {
  372. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  373. c.Ctx.WriteString(err.Error())
  374. return
  375. }
  376. writer.Close()
  377. // 设置响应头,表明数据经过了 Gzip 压缩
  378. c.Ctx.Output.Header("Content-Encoding", "gzip")
  379. // 发送压缩后的数据
  380. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  381. break
  382. case 6:
  383. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  384. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  385. //chargeDrug = append(chargeDrug, chargeProject...)
  386. b, _ := structToBytes(chargeProject)
  387. //cd, _ := compressData(b)
  388. // 使用 Gzip 压缩数据
  389. var compressedData bytes.Buffer
  390. writer := gzip.NewWriter(&compressedData)
  391. _, err = writer.Write(b)
  392. if err != nil {
  393. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  394. c.Ctx.WriteString(err.Error())
  395. return
  396. }
  397. writer.Close()
  398. // 设置响应头,表明数据经过了 Gzip 压缩
  399. c.Ctx.Output.Header("Content-Encoding", "gzip")
  400. // 发送压缩后的数据
  401. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  402. break
  403. case 7:
  404. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  405. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  406. //chargeDrug = append(chargeDrug, chargeProject...)
  407. b, _ := structToBytes(chargeProject)
  408. //cd, _ := compressData(b)
  409. // 使用 Gzip 压缩数据
  410. var compressedData bytes.Buffer
  411. writer := gzip.NewWriter(&compressedData)
  412. _, err = writer.Write(b)
  413. if err != nil {
  414. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  415. c.Ctx.WriteString(err.Error())
  416. return
  417. }
  418. writer.Close()
  419. // 设置响应头,表明数据经过了 Gzip 压缩
  420. c.Ctx.Output.Header("Content-Encoding", "gzip")
  421. // 发送压缩后的数据
  422. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  423. break
  424. }
  425. }
  426. }
  427. func (c *HisChargeApiController) GetPrescriptionStatisticsDetail() {
  428. start_time := c.GetString("start_time")
  429. end_time := c.GetString("end_time")
  430. patient_id, _ := c.GetInt64("patient_id")
  431. item_type, _ := c.GetInt64("type")
  432. //date1, _ := time.Parse("2006-01-02", start_time)
  433. //date2, _ := time.Parse("2006-01-02", end_time)
  434. // 计算日期间隔
  435. //duration := date2.Sub(date1)
  436. // 一个月的时间跨度为30天 * 24小时 * 60分钟 * 60秒
  437. //oneMonthDuration := 30 * 24 * time.Hour
  438. //if duration <= oneMonthDuration {
  439. //} else {
  440. // c.ServeFailJSONWithSGJErrorCode(enums.ErrorTimeCodeParamWrong)
  441. // return
  442. //}
  443. adminUser := c.GetAdminUserInfo()
  444. timeLayout := "2006-01-02"
  445. loc, _ := time.LoadLocation("Local")
  446. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  447. if err != nil {
  448. }
  449. startRecordDateTime := startTime.Unix()
  450. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  451. if err != nil {
  452. }
  453. endRecordDateTime := endTime.Unix()
  454. chargeDrug, err := service.GetHisPrescriptionDrugDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, patient_id, item_type)
  455. chargeProject, err := service.GetHisPrescriptionProjectDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, patient_id, item_type)
  456. chargeDrug = append(chargeDrug, chargeProject...)
  457. b, _ := structpToBytes(chargeDrug)
  458. //cd, _ := compressData(b)
  459. // 使用 Gzip 压缩数据
  460. var compressedData bytes.Buffer
  461. writer := gzip.NewWriter(&compressedData)
  462. _, err = writer.Write(b)
  463. if err != nil {
  464. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  465. c.Ctx.WriteString(err.Error())
  466. return
  467. }
  468. writer.Close()
  469. // 设置响应头,表明数据经过了 Gzip 压缩
  470. c.Ctx.Output.Header("Content-Encoding", "gzip")
  471. // 发送压缩后的数据
  472. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  473. }
  474. func (c *HisChargeApiController) GetPrescriptionInitData() {
  475. var drugType = "药品类型"
  476. drugTypeParent, _ := service.GetDrugDataConfig(0, drugType)
  477. drugTypeList, _ := service.GetParentDataConfig(drugTypeParent.ID, c.GetAdminUserInfo().CurrentOrgId)
  478. var costClassify = "费用类别"
  479. costClassifyParent, _ := service.GetDrugDataConfig(0, costClassify)
  480. costClassifyList, _ := service.GetParentDataConfig(costClassifyParent.ID, c.GetAdminUserInfo().CurrentOrgId)
  481. c.ServeSuccessJSON(map[string]interface{}{
  482. "drugTypeList": drugTypeList,
  483. "costClassifyList": costClassifyList,
  484. })
  485. }
  486. func structpToBytes(p []*models.NewPDetail) ([]byte, error) {
  487. data, err := json.Marshal(p)
  488. if err != nil {
  489. return nil, err
  490. }
  491. return data, nil
  492. }
  493. func structToBytes(p []*models.NewChargeDetail) ([]byte, error) {
  494. data, err := json.Marshal(p)
  495. if err != nil {
  496. return nil, err
  497. }
  498. return data, nil
  499. }
  500. func compressData(data []byte) ([]byte, error) {
  501. var compressedData bytes.Buffer
  502. writer := gzip.NewWriter(&compressedData)
  503. _, err := writer.Write(data)
  504. if err != nil {
  505. return nil, err
  506. }
  507. err = writer.Close()
  508. if err != nil {
  509. return nil, err
  510. }
  511. return compressedData.Bytes(), nil
  512. }
  513. func (c *HisChargeApiController) GetChargeStatisticsSettle() {
  514. start_time := c.GetString("start_time")
  515. end_time := c.GetString("end_time")
  516. keyword := c.GetString("keyword")
  517. item_type, _ := c.GetInt64("type")
  518. s_type, _ := c.GetInt64("s_type")
  519. limit, _ := c.GetInt64("limit")
  520. page, _ := c.GetInt64("page")
  521. adminUser := c.GetAdminUserInfo()
  522. timeLayout := "2006-01-02"
  523. loc, _ := time.LoadLocation("Local")
  524. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  525. if err != nil {
  526. }
  527. startRecordDateTime := startTime.Unix()
  528. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  529. if err != nil {
  530. }
  531. endRecordDateTime := endTime.Unix()
  532. var chargePatient []*models.SettlePatient
  533. var total int64
  534. var err2 error
  535. if s_type == 1 {
  536. chargePatient, total, err2 = service.GetAllPatientChargeSettle(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type, limit, page)
  537. } else {
  538. chargePatient, err2 = service.GetAllPatientChargeSettleTwo(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type)
  539. }
  540. sick, _, _ := service.FindAllMZSickList(adminUser.CurrentOrgId, 1, 10000)
  541. config, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  542. if err2 == nil {
  543. c.ServeSuccessJSON(map[string]interface{}{
  544. "patients": chargePatient,
  545. "config": config,
  546. "total": total,
  547. "sick": sick,
  548. })
  549. return
  550. } else {
  551. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  552. return
  553. }
  554. }
  555. func (c *HisChargeApiController) GetHisInspectionList() {
  556. record_date := c.GetString("record_date")
  557. keyword := c.GetString("keyword")
  558. is_print, _ := c.GetInt64("is_print")
  559. page, _ := c.GetInt64("page")
  560. limit, _ := c.GetInt64("limit")
  561. tube_color, _ := c.GetInt64("tube_color")
  562. adminUser := c.GetAdminUserInfo()
  563. timeLayout := "2006-01-02"
  564. loc, _ := time.LoadLocation("Local")
  565. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
  566. if err != nil {
  567. }
  568. record_time := startTime.Unix()
  569. var labels []*models.HisLabelPrintInfo
  570. var labels_two []*models.HisLabelPrintInfo
  571. var total int64
  572. var total_two int64
  573. //var err error
  574. if tube_color == 0 {
  575. labels, total, err = service.GetLabelPrintList(page, limit, adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  576. } else {
  577. labels, total, err = service.GetLabelPrintList(page, limit, adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  578. labels_two, total_two, err = service.GetLabelPrintListTwo(page, limit, adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  579. total = total + total_two
  580. labels = append(labels, labels_two...)
  581. }
  582. if err == nil {
  583. c.ServeSuccessJSON(map[string]interface{}{
  584. "labels": labels,
  585. "total": total,
  586. })
  587. return
  588. } else {
  589. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  590. return
  591. }
  592. }
  593. func (c *HisChargeApiController) GetHisInspectionListTwo() {
  594. record_date := c.GetString("record_date")
  595. keyword := c.GetString("keyword")
  596. is_print, _ := c.GetInt64("is_print")
  597. tube_color, _ := c.GetInt64("tube_color")
  598. adminUser := c.GetAdminUserInfo()
  599. timeLayout := "2006-01-02"
  600. loc, _ := time.LoadLocation("Local")
  601. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
  602. if err != nil {
  603. }
  604. record_time := startTime.Unix()
  605. var labels []*models.HisLabelPrintInfo
  606. //var labels_two []*models.HisLabelPrintInfo
  607. //var total int64
  608. //var total_two int64
  609. labels, _, err = service.GetLabelPrintListThree(adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  610. //labels_two, total_two, err = service.GetLabelPrintListFour(adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  611. //total = total + total_two
  612. //labels = append(labels, labels_two...)
  613. if err == nil {
  614. c.ServeSuccessJSON(map[string]interface{}{
  615. "labels": labels,
  616. //"total": total,
  617. })
  618. return
  619. } else {
  620. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  621. return
  622. }
  623. }
  624. func (c *HisChargeApiController) GetHisInspectionInfo() {
  625. id, _ := c.GetInt64("id")
  626. label, err := service.GetLabelPrintInfo(id)
  627. if err == nil {
  628. c.ServeSuccessJSON(map[string]interface{}{
  629. "label": label,
  630. })
  631. return
  632. } else {
  633. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  634. return
  635. }
  636. }
  637. func (c *HisChargeApiController) GetHisYidiClearRecord() {
  638. records, err := service.FindHisYidiClearRecord(c.GetAdminUserInfo().CurrentOrgId)
  639. if err == nil {
  640. c.ServeSuccessJSON(map[string]interface{}{
  641. "list": records,
  642. })
  643. return
  644. } else {
  645. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  646. return
  647. }
  648. }
  649. func (c *HisChargeApiController) GetAllPatient() {
  650. patients, err := service.GetAllPatientTwo(c.GetAdminUserInfo().CurrentOrgId)
  651. if err == nil {
  652. c.ServeSuccessJSON(map[string]interface{}{
  653. "list": patients,
  654. })
  655. return
  656. } else {
  657. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  658. return
  659. }
  660. }
  661. func (c *HisChargeApiController) GetStatisticsDetail() {
  662. start_time := c.GetString("start_time")
  663. end_time := c.GetString("end_time")
  664. keyword := c.GetString("keyword")
  665. item_type, _ := c.GetInt64("type")
  666. p_type, _ := c.GetInt64("p_type")
  667. patinet_id, _ := c.GetInt64("patinet_id")
  668. adminUser := c.GetAdminUserInfo()
  669. timeLayout := "2006-01-02"
  670. loc, _ := time.LoadLocation("Local")
  671. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  672. if err != nil {
  673. }
  674. startRecordDateTime := startTime.Unix()
  675. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  676. if err != nil {
  677. }
  678. endRecordDateTime := endTime.Unix()
  679. chargePatient, err := service.GetPatientChargeDetails(patinet_id, adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type, p_type)
  680. if err == nil {
  681. c.ServeSuccessJSON(map[string]interface{}{
  682. "patients": chargePatient,
  683. })
  684. return
  685. } else {
  686. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  687. return
  688. }
  689. }
  690. func (c *HisChargeApiController) GetStatisticsGather() {
  691. start_time := c.GetString("start_time")
  692. end_time := c.GetString("end_time")
  693. keyword := c.GetString("keyword")
  694. item_type, _ := c.GetInt64("type")
  695. adminUser := c.GetAdminUserInfo()
  696. timeLayout := "2006-01-02"
  697. loc, _ := time.LoadLocation("Local")
  698. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  699. if err != nil {
  700. }
  701. startRecordDateTime := startTime.Unix()
  702. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  703. if err != nil {
  704. }
  705. endRecordDateTime := endTime.Unix()
  706. chargePatient, err := service.GetAllPatientChargeDetails(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type)
  707. if err == nil {
  708. c.ServeSuccessJSON(map[string]interface{}{
  709. "patients": chargePatient,
  710. })
  711. return
  712. } else {
  713. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  714. return
  715. }
  716. }