his_charge_api_controller.go 28KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857
  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. beego.Router("/api/his/check", &HisChargeApiController{}, "get:GetCheckPreSettle")
  39. }
  40. func (c *HisChargeApiController) GetCheckPreSettle() {
  41. patient_id, _ := c.GetInt64("patient_id")
  42. record_date := c.GetString("record_date")
  43. timeLayout := "2006-01-02"
  44. loc, _ := time.LoadLocation("Local")
  45. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
  46. if err != nil {
  47. }
  48. startRecordDateTime := startTime.Unix()
  49. total, _ := service.GetHisPreOrderByPatient(patient_id, c.GetAdminUserInfo().CurrentOrgId, startRecordDateTime)
  50. if total >= 1 {
  51. c.ServeSuccessJSON(map[string]interface{}{
  52. "failed_code": -10,
  53. })
  54. } else {
  55. c.ServeSuccessJSON(map[string]interface{}{
  56. "failed_code": 0,
  57. })
  58. }
  59. }
  60. func (c *HisChargeApiController) GetExportData() {
  61. start_time := c.GetString("start_time")
  62. end_time := c.GetString("end_time")
  63. adminUser := c.GetAdminUserInfo()
  64. timeLayout := "2006-01-02"
  65. loc, _ := time.LoadLocation("Local")
  66. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  67. if err != nil {
  68. }
  69. startRecordDateTime := startTime.Unix()
  70. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  71. if err != nil {
  72. }
  73. endRecordDateTime := endTime.Unix()
  74. chargePatient, err := service.GetAllChargeDetailsTwo(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime)
  75. if err == nil {
  76. c.ServeSuccessJSON(map[string]interface{}{
  77. "patients": chargePatient,
  78. })
  79. return
  80. } else {
  81. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  82. return
  83. }
  84. }
  85. func (c *HisChargeApiController) UpdateFaPiaoRecordIsUse() {
  86. id, _ := c.GetInt64("id", 0)
  87. is_use, _ := c.GetInt64("is_use")
  88. if id <= 0 {
  89. utils.ErrorLog("id == 0")
  90. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  91. return
  92. }
  93. record, _ := service.FindFapiaoById(id)
  94. adminUserInfo := c.GetAdminUserInfo()
  95. service.UpdateFapiaoIsUse(adminUserInfo.CurrentOrgId)
  96. records := models.HisFapiaoRecord{
  97. ID: id,
  98. FapiaoCode: record.FapiaoCode,
  99. FapiaoNumber: record.FapiaoNumber,
  100. Ctime: time.Now().Unix(),
  101. Mtime: time.Now().Unix(),
  102. UserOrgId: adminUserInfo.CurrentOrgId,
  103. Status: 1,
  104. IsUse: is_use,
  105. }
  106. err := service.ModifyFapiao(&records)
  107. if err == nil {
  108. c.ServeSuccessJSON(map[string]interface{}{
  109. "fapiao_record": records,
  110. })
  111. } else {
  112. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  113. }
  114. }
  115. func (c *HisChargeApiController) CreateFaPiaoRecord() {
  116. fapiao_code := c.GetString("fapiao_code")
  117. fapiao_number := c.GetString("fapiao_number")
  118. if len(fapiao_code) <= 0 {
  119. utils.ErrorLog("len(fapiao_code) == 0")
  120. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  121. return
  122. }
  123. if len(fapiao_number) <= 0 {
  124. utils.ErrorLog("len(fapiao_number) == 0")
  125. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  126. return
  127. }
  128. adminUserInfo := c.GetAdminUserInfo()
  129. record := models.HisFapiaoRecord{
  130. FapiaoCode: fapiao_code,
  131. FapiaoNumber: fapiao_number,
  132. Ctime: time.Now().Unix(),
  133. Mtime: time.Now().Unix(),
  134. UserOrgId: adminUserInfo.CurrentOrgId,
  135. Status: 1,
  136. IsUse: 0,
  137. }
  138. err, records := service.AddSigleFapiaoRecord(&record)
  139. if err == nil {
  140. c.ServeSuccessJSON(map[string]interface{}{
  141. "fapiao_record": records,
  142. })
  143. } else {
  144. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  145. }
  146. }
  147. func (c *HisChargeApiController) ModifyFaPiaoRecord() {
  148. id, _ := c.GetInt64("id", 0)
  149. fapiao_code := c.GetString("fapiao_code")
  150. fapiao_number := c.GetString("fapiao_number")
  151. if id <= 0 {
  152. utils.ErrorLog("id == 0")
  153. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  154. return
  155. }
  156. if len(fapiao_code) <= 0 {
  157. utils.ErrorLog("len(fapiao_code) == 0")
  158. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  159. return
  160. }
  161. if len(fapiao_number) <= 0 {
  162. utils.ErrorLog("len(fapiao_number) == 0")
  163. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  164. return
  165. }
  166. record, _ := service.FindFapiaoById(id)
  167. adminUserInfo := c.GetAdminUserInfo()
  168. records := models.HisFapiaoRecord{
  169. ID: id,
  170. FapiaoCode: fapiao_code,
  171. FapiaoNumber: fapiao_number,
  172. Ctime: time.Now().Unix(),
  173. Mtime: time.Now().Unix(),
  174. UserOrgId: adminUserInfo.CurrentOrgId,
  175. Status: 1,
  176. IsUse: record.IsUse,
  177. }
  178. err := service.ModifyFapiao(&records)
  179. if err == nil {
  180. c.ServeSuccessJSON(map[string]interface{}{
  181. "fapiao_record": records,
  182. })
  183. } else {
  184. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  185. }
  186. }
  187. func (c *HisChargeApiController) GetFaPiaoRecordList() {
  188. page, _ := c.GetInt64("page", 1)
  189. limit, _ := c.GetInt64("limit", 7)
  190. adminUserInfo := c.GetAdminUserInfo()
  191. fapiaoRecord, total, err := service.FindAllFapiaoList(adminUserInfo.CurrentOrgId, page, limit)
  192. if err == nil {
  193. c.ServeSuccessJSON(map[string]interface{}{
  194. "fapiao_record": fapiaoRecord,
  195. "total": total,
  196. })
  197. } else {
  198. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  199. }
  200. }
  201. func (c *HisChargeApiController) DeleteFaPiaoRecord() {
  202. id, _ := c.GetInt64("id", 0)
  203. err := service.DeleteFapiaoById(id)
  204. if err == nil {
  205. c.ServeSuccessJSON(map[string]interface{}{
  206. "msg": "删除成功",
  207. })
  208. } else {
  209. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  210. }
  211. }
  212. func (c *HisChargeApiController) GetFaPiaoRecord() {
  213. id, _ := c.GetInt64("id", 0)
  214. fapiaoRecord, err := service.FindFapiaoById(id)
  215. if err == nil {
  216. c.ServeSuccessJSON(map[string]interface{}{
  217. "fapiao_record": fapiaoRecord,
  218. })
  219. } else {
  220. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  221. }
  222. }
  223. func (c *HisChargeApiController) GetChargeStatisticsDetail() {
  224. //c.ServeSuccessJSON(map[string]interface{}{
  225. // "msg": "接口优化升级,如有数据需要,请联系客服!",
  226. //})
  227. //return
  228. start_time := c.GetString("start_time")
  229. end_time := c.GetString("end_time")
  230. time_type := c.GetString("time_type")
  231. keyword := c.GetString("keyword")
  232. item_type, _ := c.GetInt64("type")
  233. s_type, _ := c.GetInt64("s_type")
  234. adminUser := c.GetAdminUserInfo()
  235. timeLayout := "2006-01-02"
  236. loc, _ := time.LoadLocation("Local")
  237. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  238. if err != nil {
  239. }
  240. startRecordDateTime := startTime.Unix()
  241. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  242. if err != nil {
  243. }
  244. endRecordDateTime := endTime.Unix()
  245. if s_type > 0 {
  246. type NewDate struct {
  247. Patients []*models.NewChargeDetail
  248. Results []service.MedicalChargesTwo
  249. }
  250. reuslt, _ := service.GetHisOrderSummary(adminUser.CurrentOrgId, start_time, end_time)
  251. fmt.Println(reuslt)
  252. chargeDrug, _ := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  253. chargeProject, _ := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  254. chargeDrug = append(chargeDrug, chargeProject...)
  255. var dd NewDate
  256. dd.Results = reuslt
  257. dd.Patients = chargeDrug
  258. data, _ := json.Marshal(dd)
  259. var compressedData bytes.Buffer
  260. writer := gzip.NewWriter(&compressedData)
  261. _, err = writer.Write(data)
  262. if err != nil {
  263. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  264. c.Ctx.WriteString(err.Error())
  265. return
  266. }
  267. writer.Close()
  268. // 设置响应头,表明数据经过了 Gzip 压缩
  269. c.Ctx.Output.Header("Content-Encoding", "gzip")
  270. // 发送压缩后的数据
  271. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  272. //b, _ := structToBytes(data)
  273. } else {
  274. switch item_type {
  275. case 0:
  276. reuslt, _ := service.GetHisOrderSummary(adminUser.CurrentOrgId, start_time, end_time)
  277. fmt.Println(reuslt)
  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, time_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 1:
  299. chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  300. //chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  301. //chargeDrug = append(chargeDrug, chargeProject...)
  302. b, _ := structToBytes(chargeDrug)
  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 2:
  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 3:
  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 4:
  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 5:
  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 6:
  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. case 7:
  425. //chargeDrug, err := service.GetNewAllPatientDrugChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type)
  426. chargeProject, err := service.GetNewAllPatientProjectAndGoodChargeDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, keyword, item_type, time_type)
  427. //chargeDrug = append(chargeDrug, chargeProject...)
  428. b, _ := structToBytes(chargeProject)
  429. //cd, _ := compressData(b)
  430. // 使用 Gzip 压缩数据
  431. var compressedData bytes.Buffer
  432. writer := gzip.NewWriter(&compressedData)
  433. _, err = writer.Write(b)
  434. if err != nil {
  435. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  436. c.Ctx.WriteString(err.Error())
  437. return
  438. }
  439. writer.Close()
  440. // 设置响应头,表明数据经过了 Gzip 压缩
  441. c.Ctx.Output.Header("Content-Encoding", "gzip")
  442. // 发送压缩后的数据
  443. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  444. break
  445. }
  446. }
  447. }
  448. func (c *HisChargeApiController) GetPrescriptionStatisticsDetail() {
  449. start_time := c.GetString("start_time")
  450. end_time := c.GetString("end_time")
  451. patient_id, _ := c.GetInt64("patient_id")
  452. item_type, _ := c.GetInt64("type")
  453. //date1, _ := time.Parse("2006-01-02", start_time)
  454. //date2, _ := time.Parse("2006-01-02", end_time)
  455. // 计算日期间隔
  456. //duration := date2.Sub(date1)
  457. // 一个月的时间跨度为30天 * 24小时 * 60分钟 * 60秒
  458. //oneMonthDuration := 30 * 24 * time.Hour
  459. //if duration <= oneMonthDuration {
  460. //} else {
  461. // c.ServeFailJSONWithSGJErrorCode(enums.ErrorTimeCodeParamWrong)
  462. // return
  463. //}
  464. adminUser := c.GetAdminUserInfo()
  465. timeLayout := "2006-01-02"
  466. loc, _ := time.LoadLocation("Local")
  467. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  468. if err != nil {
  469. }
  470. startRecordDateTime := startTime.Unix()
  471. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  472. if err != nil {
  473. }
  474. endRecordDateTime := endTime.Unix()
  475. chargeDrug, err := service.GetHisPrescriptionDrugDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, patient_id, item_type)
  476. chargeProject, err := service.GetHisPrescriptionProjectDetails(adminUser.CurrentOrgId, start_time+" 00:00:00", end_time+" 23:59:59", startRecordDateTime, endRecordDateTime, patient_id, item_type)
  477. chargeDrug = append(chargeDrug, chargeProject...)
  478. b, _ := structpToBytes(chargeDrug)
  479. //cd, _ := compressData(b)
  480. // 使用 Gzip 压缩数据
  481. var compressedData bytes.Buffer
  482. writer := gzip.NewWriter(&compressedData)
  483. _, err = writer.Write(b)
  484. if err != nil {
  485. c.Ctx.ResponseWriter.WriteHeader(http.StatusInternalServerError)
  486. c.Ctx.WriteString(err.Error())
  487. return
  488. }
  489. writer.Close()
  490. // 设置响应头,表明数据经过了 Gzip 压缩
  491. c.Ctx.Output.Header("Content-Encoding", "gzip")
  492. // 发送压缩后的数据
  493. c.Ctx.ResponseWriter.Write(compressedData.Bytes())
  494. }
  495. func (c *HisChargeApiController) GetPrescriptionInitData() {
  496. var drugType = "药品类型"
  497. drugTypeParent, _ := service.GetDrugDataConfig(0, drugType)
  498. drugTypeList, _ := service.GetParentDataConfig(drugTypeParent.ID, c.GetAdminUserInfo().CurrentOrgId)
  499. var costClassify = "费用类别"
  500. costClassifyParent, _ := service.GetDrugDataConfig(0, costClassify)
  501. costClassifyList, _ := service.GetParentDataConfig(costClassifyParent.ID, c.GetAdminUserInfo().CurrentOrgId)
  502. c.ServeSuccessJSON(map[string]interface{}{
  503. "drugTypeList": drugTypeList,
  504. "costClassifyList": costClassifyList,
  505. })
  506. }
  507. func structpToBytes(p []*models.NewPDetail) ([]byte, error) {
  508. data, err := json.Marshal(p)
  509. if err != nil {
  510. return nil, err
  511. }
  512. return data, nil
  513. }
  514. func structToBytes(p []*models.NewChargeDetail) ([]byte, error) {
  515. data, err := json.Marshal(p)
  516. if err != nil {
  517. return nil, err
  518. }
  519. return data, nil
  520. }
  521. func compressData(data []byte) ([]byte, error) {
  522. var compressedData bytes.Buffer
  523. writer := gzip.NewWriter(&compressedData)
  524. _, err := writer.Write(data)
  525. if err != nil {
  526. return nil, err
  527. }
  528. err = writer.Close()
  529. if err != nil {
  530. return nil, err
  531. }
  532. return compressedData.Bytes(), nil
  533. }
  534. func (c *HisChargeApiController) GetChargeStatisticsSettle() {
  535. start_time := c.GetString("start_time")
  536. end_time := c.GetString("end_time")
  537. keyword := c.GetString("keyword")
  538. item_type, _ := c.GetInt64("type")
  539. s_type, _ := c.GetInt64("s_type")
  540. limit, _ := c.GetInt64("limit")
  541. page, _ := c.GetInt64("page")
  542. adminUser := c.GetAdminUserInfo()
  543. timeLayout := "2006-01-02"
  544. loc, _ := time.LoadLocation("Local")
  545. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  546. if err != nil {
  547. }
  548. startRecordDateTime := startTime.Unix()
  549. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  550. if err != nil {
  551. }
  552. endRecordDateTime := endTime.Unix()
  553. var chargePatient []*models.SettlePatient
  554. var total int64
  555. var err2 error
  556. if s_type == 1 {
  557. chargePatient, total, err2 = service.GetAllPatientChargeSettle(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type, limit, page)
  558. } else {
  559. chargePatient, err2 = service.GetAllPatientChargeSettleTwo(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type)
  560. }
  561. sick, _, _ := service.FindAllMZSickList(adminUser.CurrentOrgId, 1, 10000)
  562. config, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  563. if err2 == nil {
  564. c.ServeSuccessJSON(map[string]interface{}{
  565. "patients": chargePatient,
  566. "config": config,
  567. "total": total,
  568. "sick": sick,
  569. })
  570. return
  571. } else {
  572. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  573. return
  574. }
  575. }
  576. func (c *HisChargeApiController) GetHisInspectionList() {
  577. record_date := c.GetString("record_date")
  578. keyword := c.GetString("keyword")
  579. is_print, _ := c.GetInt64("is_print")
  580. page, _ := c.GetInt64("page")
  581. limit, _ := c.GetInt64("limit")
  582. tube_color, _ := c.GetInt64("tube_color")
  583. adminUser := c.GetAdminUserInfo()
  584. timeLayout := "2006-01-02"
  585. loc, _ := time.LoadLocation("Local")
  586. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
  587. if err != nil {
  588. }
  589. record_time := startTime.Unix()
  590. var labels []*models.HisLabelPrintInfo
  591. var labels_two []*models.HisLabelPrintInfo
  592. var total int64
  593. var total_two int64
  594. //var err error
  595. if tube_color == 0 {
  596. labels, total, err = service.GetLabelPrintList(page, limit, adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  597. } else {
  598. labels, total, err = service.GetLabelPrintList(page, limit, adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  599. labels_two, total_two, err = service.GetLabelPrintListTwo(page, limit, adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  600. total = total + total_two
  601. labels = append(labels, labels_two...)
  602. }
  603. if err == nil {
  604. c.ServeSuccessJSON(map[string]interface{}{
  605. "labels": labels,
  606. "total": total,
  607. })
  608. return
  609. } else {
  610. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  611. return
  612. }
  613. }
  614. func (c *HisChargeApiController) GetHisInspectionListTwo() {
  615. record_date := c.GetString("record_date")
  616. keyword := c.GetString("keyword")
  617. is_print, _ := c.GetInt64("is_print")
  618. tube_color, _ := c.GetInt64("tube_color")
  619. adminUser := c.GetAdminUserInfo()
  620. timeLayout := "2006-01-02"
  621. loc, _ := time.LoadLocation("Local")
  622. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
  623. if err != nil {
  624. }
  625. record_time := startTime.Unix()
  626. var labels []*models.HisLabelPrintInfo
  627. //var labels_two []*models.HisLabelPrintInfo
  628. //var total int64
  629. //var total_two int64
  630. labels, _, err = service.GetLabelPrintListThree(adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  631. //labels_two, total_two, err = service.GetLabelPrintListFour(adminUser.CurrentOrgId, record_time, is_print, keyword, tube_color)
  632. //total = total + total_two
  633. //labels = append(labels, labels_two...)
  634. if err == nil {
  635. c.ServeSuccessJSON(map[string]interface{}{
  636. "labels": labels,
  637. //"total": total,
  638. })
  639. return
  640. } else {
  641. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  642. return
  643. }
  644. }
  645. func (c *HisChargeApiController) GetHisInspectionInfo() {
  646. id, _ := c.GetInt64("id")
  647. label, err := service.GetLabelPrintInfo(id)
  648. if err == nil {
  649. c.ServeSuccessJSON(map[string]interface{}{
  650. "label": label,
  651. })
  652. return
  653. } else {
  654. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  655. return
  656. }
  657. }
  658. func (c *HisChargeApiController) GetHisYidiClearRecord() {
  659. records, err := service.FindHisYidiClearRecord(c.GetAdminUserInfo().CurrentOrgId)
  660. if err == nil {
  661. c.ServeSuccessJSON(map[string]interface{}{
  662. "list": records,
  663. })
  664. return
  665. } else {
  666. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  667. return
  668. }
  669. }
  670. func (c *HisChargeApiController) GetAllPatient() {
  671. patients, err := service.GetAllPatientTwo(c.GetAdminUserInfo().CurrentOrgId)
  672. if err == nil {
  673. c.ServeSuccessJSON(map[string]interface{}{
  674. "list": patients,
  675. })
  676. return
  677. } else {
  678. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  679. return
  680. }
  681. }
  682. func (c *HisChargeApiController) GetStatisticsDetail() {
  683. start_time := c.GetString("start_time")
  684. end_time := c.GetString("end_time")
  685. keyword := c.GetString("keyword")
  686. item_type, _ := c.GetInt64("type")
  687. p_type, _ := c.GetInt64("p_type")
  688. patinet_id, _ := c.GetInt64("patinet_id")
  689. adminUser := c.GetAdminUserInfo()
  690. timeLayout := "2006-01-02"
  691. loc, _ := time.LoadLocation("Local")
  692. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  693. if err != nil {
  694. }
  695. startRecordDateTime := startTime.Unix()
  696. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  697. if err != nil {
  698. }
  699. endRecordDateTime := endTime.Unix()
  700. chargePatient, err := service.GetPatientChargeDetails(patinet_id, adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type, p_type)
  701. if err == nil {
  702. c.ServeSuccessJSON(map[string]interface{}{
  703. "patients": chargePatient,
  704. })
  705. return
  706. } else {
  707. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  708. return
  709. }
  710. }
  711. func (c *HisChargeApiController) GetStatisticsGather() {
  712. start_time := c.GetString("start_time")
  713. end_time := c.GetString("end_time")
  714. keyword := c.GetString("keyword")
  715. item_type, _ := c.GetInt64("type")
  716. adminUser := c.GetAdminUserInfo()
  717. timeLayout := "2006-01-02"
  718. loc, _ := time.LoadLocation("Local")
  719. startTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  720. if err != nil {
  721. }
  722. startRecordDateTime := startTime.Unix()
  723. endTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  724. if err != nil {
  725. }
  726. endRecordDateTime := endTime.Unix()
  727. chargePatient, err := service.GetAllPatientChargeDetails(adminUser.CurrentOrgId, startRecordDateTime, endRecordDateTime, keyword, item_type)
  728. if err == nil {
  729. c.ServeSuccessJSON(map[string]interface{}{
  730. "patients": chargePatient,
  731. })
  732. return
  733. } else {
  734. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  735. return
  736. }
  737. }