xcx_mobile_api_service.go 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  1. package service
  2. import (
  3. "Xcx_New/models"
  4. "crypto/aes"
  5. "crypto/cipher"
  6. "encoding/base64"
  7. "encoding/json"
  8. "errors"
  9. "fmt"
  10. "github.com/jinzhu/gorm"
  11. "net/http"
  12. "time"
  13. "net/http"
  14. )
  15. func GetXcxMobileInformation(mobile string) (*models.XcxAdminUserRole, error) {
  16. role := models.XcxAdminUserRole{}
  17. err := UserReadDB().Model(&role).Where("mobile = ? and status = 1", mobile).Find(&role).Error
  18. if err == gorm.ErrRecordNotFound {
  19. return nil, err
  20. }
  21. if err != nil {
  22. return nil, err
  23. }
  24. return &role, nil
  25. }
  26. func CreateXcxAdminUser(role models.XcxAdminUserRole) error {
  27. err := UserReadDB().Create(&role).Error
  28. return err
  29. }
  30. func GetLoginInfor(mobile string) (models.XcxAdminUserRole, error) {
  31. role := models.XcxAdminUserRole{}
  32. err := UserReadDB().Model(&role).Where("mobile = ? and status = 1", mobile).Find(&role).Error
  33. return role, err
  34. }
  35. func GetMobilePatientInfo(mobile string) (models.XcxPatients, error) {
  36. patients := models.XcxPatients{}
  37. err := XTReadDB().Model(&patients).Where("(phone = ? or home_telephone = ? ) and status = 1", mobile, mobile).Find(&patients).Error
  38. return patients, err
  39. }
  40. func GetPatientListByPatientId(id int64) (models.XcxPatients, error) {
  41. patients := models.XcxPatients{}
  42. err := XTReadDB().Model(&patients).Where("id = ? and status = 1", id).Find(&patients).Error
  43. return patients, err
  44. }
  45. func DecryptData(app_id, session_key, iv, encrypted_data string) (map[string]interface{}, error) {
  46. aesKey, err := base64.StdEncoding.DecodeString(session_key)
  47. if err != nil {
  48. return nil, err
  49. }
  50. ivKey, err := base64.StdEncoding.DecodeString(iv)
  51. if err != nil {
  52. return nil, err
  53. }
  54. decodeData, err := base64.StdEncoding.DecodeString(encrypted_data)
  55. if err != nil {
  56. return nil, err
  57. }
  58. dataBytes, err := AesDecrypt(decodeData, aesKey, ivKey)
  59. if err != nil {
  60. return nil, err
  61. }
  62. var result map[string]interface{}
  63. err = json.Unmarshal(dataBytes, &result)
  64. watermark := result["watermark"].(map[string]interface{})
  65. if watermark["appid"] != app_id {
  66. return nil, errors.New("Invalid appid data!")
  67. }
  68. return result, err
  69. }
  70. func AesDecrypt(crypted, key, iv []byte) ([]byte, error) {
  71. block, err := aes.NewCipher(key)
  72. fmt.Println("w2222", err)
  73. if err != nil {
  74. return nil, err
  75. }
  76. blockMode := cipher.NewCBCDecrypter(block, iv)
  77. origData := make([]byte, len(crypted))
  78. blockMode.CryptBlocks(origData, crypted)
  79. // 去除填充
  80. length := len(origData)
  81. unp := int(origData[length-1])
  82. return origData[:(length - unp)], nil
  83. }
  84. func GetFirstDateOfWeek() (weekMonday string) {
  85. now := time.Now()
  86. offset := int(time.Monday - now.Weekday())
  87. if offset > 0 {
  88. offset = -6
  89. }
  90. weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
  91. weekMonday = weekStartDate.Format("2006-01-02")
  92. return
  93. }
  94. func GetWeekDayOfWeek() (weekMonday string) {
  95. now := time.Now()
  96. offset := int(time.Monday - now.Weekday())
  97. if offset > 0 {
  98. offset = -6
  99. }
  100. weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
  101. weekMonday = weekStartDate.Format("2006-01-02")
  102. return
  103. }
  104. func GetMobilePatient(mobile string, idcard string) (*models.XcxPatients, error) {
  105. patient := models.XcxPatients{}
  106. err := XTReadDB().Model(&patient).Where("(phone = ? or relative_phone =?) and id_card_no =?", mobile, mobile, idcard).Find(&patient).Error
  107. //err := XTReadDB().Model(&patient).Where("id_card_no = ? and status = 1", mobile).Find(&patient).Error
  108. if err == gorm.ErrRecordNotFound {
  109. return nil, err
  110. }
  111. if err != nil {
  112. return nil, err
  113. }
  114. return &patient, nil
  115. }
  116. func GetTemplateMode(orgid int64) (models.XcxGobalTemplate, error) {
  117. template := models.XcxGobalTemplate{}
  118. err := XTReadDB().Model(&template).Where("org_id = ? and status = 1", orgid).Find(&template).Error
  119. return template, err
  120. }
  121. func GetMobilePatientOne(mobile string) (*models.XcxAdminUserRole, error) {
  122. patient := models.XcxAdminUserRole{}
  123. err := UserReadDB().Model(&patient).Where("mobile = ? and status = 1", mobile).Find(&patient).Error
  124. if err == gorm.ErrRecordNotFound {
  125. return nil, err
  126. }
  127. if err != nil {
  128. return nil, err
  129. }
  130. return &patient, nil
  131. }
  132. func Dncrypt(rawData, key, iv string) (string, error) {
  133. data, err := base64.StdEncoding.DecodeString(rawData)
  134. key_b, err_1 := base64.StdEncoding.DecodeString(key)
  135. iv_b, _ := base64.StdEncoding.DecodeString(iv)
  136. if err != nil {
  137. return "", err
  138. }
  139. if err_1 != nil {
  140. return "", err_1
  141. }
  142. dnData, err := AesCBCDncrypt(data, key_b, iv_b)
  143. if err != nil {
  144. return "", err
  145. }
  146. return string(dnData), nil
  147. }
  148. // 解密
  149. func AesCBCDncrypt(encryptData, key, iv []byte) ([]byte, error) {
  150. block, err := aes.NewCipher(key)
  151. if err != nil {
  152. panic(err)
  153. }
  154. blockSize := block.BlockSize()
  155. if len(encryptData) < blockSize {
  156. panic("ciphertext too short")
  157. }
  158. if len(encryptData)%blockSize != 0 {
  159. panic("ciphertext is not a multiple of the block size")
  160. }
  161. mode := cipher.NewCBCDecrypter(block, iv)
  162. mode.CryptBlocks(encryptData, encryptData)
  163. // 解填充
  164. encryptData = PKCS7UnPadding(encryptData)
  165. return encryptData, nil
  166. }
  167. //去除填充
  168. func PKCS7UnPadding(origData []byte) []byte {
  169. length := len(origData)
  170. unpadding := int(origData[length-1])
  171. if length-unpadding < 0 {
  172. return origData[:0]
  173. }
  174. fmt.Println("changdu", length)
  175. fmt.Println("data", unpadding)
  176. return origData[:(length - unpadding)]
  177. }
  178. func GetScheduleInfo(startime int64, endtime int64, patient_id int64) (schedule []*models.VmBloodSchedule, err error) {
  179. db := XTReadDB().Table("xt_schedule as x").Where("x.status = 1")
  180. table := XTReadDB().Table("xt_patients as t").Where("t.status = 1")
  181. fmt.Println(table)
  182. if startime > 0 {
  183. db = db.Where("x.schedule_date >=?", startime)
  184. }
  185. if endtime > 0 {
  186. db = db.Where("x.schedule_date <=?", endtime)
  187. }
  188. if patient_id > 0 {
  189. db = db.Where("x.patient_id = ?", patient_id)
  190. }
  191. err = db.Select("x.schedule_date,x.schedule_type,x.schedule_week,x.mode_id,t.name").Joins("left join xt_patients as t on t.id = x.patient_id").Scan(&schedule).Error
  192. return schedule, err
  193. }
  194. func GetTodayDialysis(recordDate int64, patient_id int64) (models.XcXDialysisOrder, error) {
  195. order := models.XcXDialysisOrder{}
  196. err := XTReadDB().Model(&order).Where("dialysis_date = ? and patient_id = ? and status = 1", recordDate, patient_id).Find(&order).Error
  197. return order, err
  198. }
  199. func GetTodayPrescription(recordDate int64, patient_id int64) (models.XcxXtDialysisPrescription, error) {
  200. prescription := models.XcxXtDialysisPrescription{}
  201. err := XTReadDB().Model(&prescription).Where("record_date = ? and patient_id = ? and status = 1", recordDate, patient_id).Find(&prescription).Error
  202. return prescription, err
  203. }
  204. func GetNextPatientSchedule(patient_id int64, dialysis_date int64) (models.BloodSchedule, error) {
  205. schedule := models.BloodSchedule{}
  206. //err := XTReadDB().Model(&schedule).Where("patient_id = ? and status = 1 and schedule_date>?", patient_id, dialysis_date).Order("schedule_date asc").First(&schedule).Error
  207. //return schedule, err
  208. db := XTReadDB().Table("xt_schedule as x").Where("x.status = 1")
  209. table := XTReadDB().Table("xt_device_zone as z").Where("z.status =1")
  210. tables := XTReadDB().Table("xt_device_number as n").Where("n.status =1")
  211. fmt.Println(table, tables)
  212. if patient_id > 0 {
  213. db = db.Where("x.patient_id = ?", patient_id)
  214. }
  215. if dialysis_date > 0 {
  216. db = db.Where("x.schedule_date >?", dialysis_date)
  217. }
  218. err := db.Select("x.patient_id,x.schedule_type,x.schedule_date,x.mode_id,z.name,n.number").Joins("left join xt_device_zone as z on z.id = x.partition_id").Joins("left join xt_device_number as n on n.id = x.bed_id").Order("x.schedule_date asc").Limit(1).Scan(&schedule).Error
  219. return schedule, err
  220. }
  221. func GetXcxPatientInfo(patient_id int64) (models.XcxPatients, error) {
  222. patients := models.XcxPatients{}
  223. err := XTReadDB().Model(&patients).Where("id = ? and status = 1 ", patient_id).Find(&patients).Error
  224. return patients, err
  225. }
  226. func GetOrgInfo(id int64) (models.XcxSgjUserOrg, error) {
  227. org := models.XcxSgjUserOrg{}
  228. err := UserReadDB().Model(&org).Where("id = ? and status= 1", id).Find(&org).Error
  229. return org, err
  230. }
  231. func GetEducationList(startime int64, endtime int64, patient_id int64) (treatment []*models.XcxTreatmentSummary, err error) {
  232. err = XTReadDB().Model(&treatment).Where("assessment_date>=? and assessment_date<=? and patient_id = ? and status =1", startime, endtime, patient_id).Order("assessment_date desc").Find(&treatment).Error
  233. return treatment, err
  234. }
  235. func GetDoctorAdviceConfig(orgid int64) (models.XcxDoctorAdviceConfig, error) {
  236. config := models.XcxDoctorAdviceConfig{}
  237. err := XTReadDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Find(&config).Error
  238. return config, err
  239. }
  240. func GetDoctorAdviceGroup(patient_id int64, startime int64, endtime int64) (advice []*models.XcxDoctorAdvice, err error) {
  241. err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Group("advice_date").Order("advice_date desc").Find(&advice).Error
  242. return advice, err
  243. }
  244. func GetHisDoctorAdviceGroup(patient_id int64, startime int64, endtime int64) (advice []*models.XcxHisDoctorAdviceInfo, err error) {
  245. err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Group("advice_date").Order("advice_date desc").Find(&advice).Error
  246. return advice, err
  247. }
  248. func GetDoctorAdvice(patient_id int64, startime int64, endtime int64) (advice []*models.XcxDoctorAdvice, err error) {
  249. err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Find(&advice).Error
  250. return advice, err
  251. }
  252. func GetHisDoctorAdvice(patient_id int64, startime int64, endtime int64) (advice []*models.XcxHisDoctorAdviceInfo, err error) {
  253. err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Find(&advice).Error
  254. return advice, err
  255. }
  256. // 用户排班信息
  257. func MobileGetSchedualDetailOne(orgID int64, patientID int64) (*MDialysisScheduleVM, error) {
  258. var vm MDialysisScheduleVM
  259. err := readDb.
  260. Table("xt_schedule").
  261. Preload("DeviceNumber", "status = 1 AND org_id = ?", orgID).
  262. Where("status = 1 AND user_org_id = ? AND patient_id = ?", orgID, patientID).
  263. First(&vm).Error
  264. if err != nil {
  265. if err == gorm.ErrRecordNotFound {
  266. return nil, nil
  267. } else {
  268. return nil, err
  269. }
  270. }
  271. return &vm, err
  272. }
  273. // 接诊评估
  274. func MobileGetReceiverTreatmentAccessRecordOne(orgID int64, patientID int64, record_date int64) (*models.ReceiveTreatmentAsses, error) {
  275. var record models.ReceiveTreatmentAsses
  276. err = readDb.Model(&models.ReceiveTreatmentAsses{}).Where("patient_id = ? and user_org_id = ? and status = 1 and record_date = ?", patientID, orgID, record_date).Find(&record).Error
  277. if err != nil {
  278. if err == gorm.ErrRecordNotFound {
  279. return nil, nil
  280. } else {
  281. return nil, err
  282. }
  283. }
  284. return &record, nil
  285. }
  286. // 透前评估
  287. func MobileGetPredialysisEvaluationOne(orgID int64, patientID int64, assessment_date int64) (*models.PredialysisEvaluation, error) {
  288. var record models.PredialysisEvaluation
  289. err := readDb.Model(&models.PredialysisEvaluation{}).Where("patient_id = ? and user_org_id = ? and status = 1 and assessment_date = ?", patientID, orgID, assessment_date).Find(&record).Error
  290. if err != nil {
  291. if err == gorm.ErrRecordNotFound {
  292. return nil, nil
  293. } else {
  294. return nil, err
  295. }
  296. }
  297. return &record, nil
  298. }
  299. // 获取 maxDate 之前一次的透前评估记录
  300. func MobileGetLastTimePredialysisEvaluationOne(orgID int64, patientID int64) (*models.PredialysisEvaluation, error) {
  301. var record models.PredialysisEvaluation
  302. err := readDb.Model(&models.PredialysisEvaluation{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Order("assessment_date desc").Last(&record).Error
  303. if err != nil {
  304. if err == gorm.ErrRecordNotFound {
  305. return nil, nil
  306. } else {
  307. return nil, err
  308. }
  309. }
  310. return &record, nil
  311. }
  312. func MobileGetDoctorAdvicesByGroupsOne(orgID int64, patientID int64, advicedate int64) ([]*models.DoctorAdvice, error) {
  313. var records []*models.DoctorAdvice
  314. err := readDb.
  315. Model(&models.DoctorAdvice{}).
  316. Where("patient_id = ? and user_org_id = ? and status = 1 and (advice_type = 2 || advice_type = 3) and advice_date = ?", patientID, orgID, advicedate).
  317. Select("id, user_org_id, patient_id, advice_type, advice_date, record_date, start_time, advice_name,advice_desc, reminder_date, drug_spec, drug_spec_unit, single_dose, single_dose_unit, prescribing_number, prescribing_number_unit, delivery_way, execution_frequency, advice_doctor, status, created_time,updated_time, advice_affirm, remark, stop_time, stop_reason, stop_doctor, stop_state, parent_id, execution_time, execution_staff, execution_state, checker, check_state, check_time, groupno,way,drug_id,drug_name_id, IF(parent_id > 0, parent_id, id) as advice_order").
  318. Order("start_time asc, groupno desc, advice_order desc, id asc").
  319. Scan(&records).Error
  320. if err != nil {
  321. return nil, err
  322. }
  323. return records, nil
  324. }
  325. // 透析记录
  326. func MobileGetSchedualDialysisRecordOne(orgID int64, patientID int64, dialysis_date int64) (*models.DialysisOrder, error) {
  327. var record models.DialysisOrder
  328. err := readDb.Model(&models.DialysisOrder{}).Preload("DeviceNumber", "org_id = ? AND status = 1 ", orgID).Where("user_org_id = ? AND patient_id = ? and dialysis_date = ? ", orgID, patientID, dialysis_date).Find(&record).Error
  329. if err != nil {
  330. if err == gorm.ErrRecordNotFound {
  331. return nil, nil
  332. } else {
  333. return nil, err
  334. }
  335. }
  336. return &record, nil
  337. }
  338. // 双人核对
  339. func MobileGetDoubleCheckOne(orgID int64, patientID int64, check_date int64) (*models.DoubleCheck, error) {
  340. var record models.DoubleCheck
  341. err := readDb.Model(&models.DoubleCheck{}).Where("patient_id = ? and user_org_id = ? and status = 1 and check_date = ?", patientID, orgID, check_date).Find(&record).Error
  342. if err != nil {
  343. if err == gorm.ErrRecordNotFound {
  344. return nil, nil
  345. } else {
  346. return nil, err
  347. }
  348. }
  349. return &record, nil
  350. }
  351. // 透析监测记录
  352. func MobileGetMonitorRecordsOne(orgID int64, patientID int64, monitoring_date int64) ([]*models.MonitoringRecord, error) {
  353. var records []*models.MonitoringRecord
  354. err := readDb.Model(&models.MonitoringRecord{}).Where("patient_id = ? and user_org_id = ? and status = 1 and monitoring_date = ?", patientID, orgID, monitoring_date).Order("operate_time asc").Find(&records).Error
  355. if err != nil {
  356. return nil, err
  357. }
  358. return records, nil
  359. }
  360. func MobileGetLastMonitorRecordOne(orgID int64, patientID int64) (*models.MonitoringRecord, error) {
  361. var record models.MonitoringRecord
  362. err := readDb.Model(&models.MonitoringRecord{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Order("operate_time desc").Last(&record).Error
  363. if err != nil {
  364. if err == gorm.ErrRecordNotFound {
  365. return nil, nil
  366. } else {
  367. return nil, err
  368. }
  369. }
  370. return &record, nil
  371. }
  372. // 透后评估
  373. func MobileGetAssessmentAfterDislysisOne(orgID int64, patientID int64, assessment_date int64) (*models.AssessmentAfterDislysis, error) {
  374. var record models.AssessmentAfterDislysis
  375. err := readDb.Model(&models.AssessmentAfterDislysis{}).Where("patient_id = ? and user_org_id = ? and status = 1 and assessment_date =? ", patientID, orgID, assessment_date).Find(&record).Error
  376. if err != nil {
  377. if err == gorm.ErrRecordNotFound {
  378. return nil, nil
  379. } else {
  380. return nil, err
  381. }
  382. }
  383. return &record, nil
  384. }
  385. // 治疗小结
  386. func MobileGetTreatmentSummaryOne(orgID int64, patientID int64, assessment_date int64) (*models.TreatmentSummary, error) {
  387. var record models.TreatmentSummary
  388. err := readDb.Model(&models.TreatmentSummary{}).Where("patient_id = ? and user_org_id = ? and status = 1 and assessment_date= ?", patientID, orgID, assessment_date).Find(&record).Error
  389. if err != nil {
  390. if err == gorm.ErrRecordNotFound {
  391. return nil, nil
  392. } else {
  393. return nil, err
  394. }
  395. }
  396. return &record, nil
  397. }
  398. // 透析处方
  399. func MobileGetDialysisPrescribeByModeIdSix(orgID int64, patientID int64, mode_id int64, record_date int64) (*models.DialysisPrescription, error) {
  400. var record models.DialysisPrescription
  401. err := readDb.Model(&models.DialysisPrescription{}).Where("patient_id = ? and user_org_id = ? and status = 1 AND mode_id = ? and record_date = ?", patientID, orgID, mode_id, record_date).Find(&record).Error
  402. if err != nil {
  403. if err == gorm.ErrRecordNotFound {
  404. return nil, nil
  405. } else {
  406. return nil, err
  407. }
  408. }
  409. return &record, nil
  410. }
  411. func GetHisPrescriptionProjectsOne(user_org_id int64, patient_id int64) (projects []*models.HisPrescriptionProject, err error) {
  412. err = readDb.Model(&models.HisPrescriptionProject{}).Preload("HisProject", "status = 1").Preload("GoodInfo", "status = 1").Where("user_org_id = ? AND patient_id = ? AND status = 1", user_org_id, patient_id).Find(&projects).Error
  413. return
  414. }
  415. func GetDialyStockOutOne(orgid int64, patientId int64) (prepare []*models.XtDialysisBeforePrepare, err error) {
  416. db := XTReadDB().Table("dialysis_before_prepare as x").Where("x.status = 1")
  417. if orgid > 0 {
  418. db = db.Where("x.user_org_id = ?", orgid)
  419. }
  420. if patientId > 0 {
  421. db = db.Where("x.patient_id = ?", patientId)
  422. }
  423. err = db.Select("x.id,x.user_org_id,x.patient_id,x.record_date,x.good_id,x.good_type_id,x.count,x.commdity_code,t.specification_name").Joins("left join xt_good_information as t on t.id = x.good_id and t.org_id = ? and t.status = 1", orgid).Scan(&prepare).Error
  424. return prepare, err
  425. }
  426. func MobileGetDialysisPrescribeByModeIdFive(orgID int64, patientID int64, record_date int64) (*models.DialysisPrescription, error) {
  427. var record models.DialysisPrescription
  428. err := readDb.Model(&models.DialysisPrescription{}).Where("patient_id = ? and user_org_id = ? and status = 1 and record_date = ?", patientID, orgID, record_date).Find(&record).Error
  429. if err != nil {
  430. if err == gorm.ErrRecordNotFound {
  431. return nil, nil
  432. } else {
  433. return nil, err
  434. }
  435. }
  436. return &record, nil
  437. }
  438. func GetAllHisDoctorAdviceOne(orgid int64, patientid int64, advice_date int64) (his []*models.HisDoctorAdviceInfo, err error) {
  439. err = readDb.Model(&models.DialysisBeforePrepare{}).Where("patient_id = ? AND user_org_id = ? AND status=1 and advice_date = ?", patientid, orgid, advice_date).Find(&his).Error
  440. return
  441. }
  442. func GetDoctorName(orgid int64) (role []*models.XcxSgjUserAdminRole, err error) {
  443. err = UserReadDB().Where("org_id = ? and status = 1", orgid).Find(&role).Error
  444. return role, err
  445. }
  446. func GetPrescripionFieldConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
  447. err = XTReadDB().Model(&list).Where("org_id = ? and module = 1 ", orgid).Find(&list).Error
  448. return list, err
  449. }
  450. func GetReceiveTreatmentAssess(orgid int64) (list []*models.XcxFiledConfig, err error) {
  451. err = XTReadDB().Model(&list).Where("org_id = ? and module = 2 ", orgid).Find(&list).Error
  452. return list, err
  453. }
  454. func GetDialysisBefor(orgid int64) (list []*models.XcxFiledConfig, err error) {
  455. err = XTReadDB().Model(&list).Where("org_id = ? and module = 3", orgid).Find(&list).Error
  456. return list, err
  457. }
  458. func GetDialysisOrderConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
  459. err = XTReadDB().Model(&list).Where("org_id = ? and module = 7"+
  460. "", orgid).Find(&list).Error
  461. return list, err
  462. }
  463. func GetMonitorRecordConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
  464. err = XTReadDB().Model(&list).Where("org_id = ? and module = 4", orgid).Find(&list).Error
  465. return list, err
  466. }
  467. func GetDialysisAfeterConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
  468. err = XTReadDB().Model(&list).Where("org_id = ? and module = 5", orgid).Find(&list).Error
  469. return list, err
  470. }
  471. func GetTreatMentConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
  472. err = XTReadDB().Model(&list).Where("org_id = ? and module = 6", orgid).Find(&list).Error
  473. return list, err
  474. }
  475. func GetDataConfig(orgid int64) (list []*models.XcxDataConfig, err error) {
  476. err = XTReadDB().Model(&list).Where("(org_id = ? or org_id = 0) and status = 1", orgid).Find(&list).Error
  477. return list, err
  478. }
  479. func GetLastScheduleListOne(patient_id int64, schedule_date int64) (models.XcxSchedule, error) {
  480. schedule := models.XcxSchedule{}
  481. err := XTReadDB().Model(&schedule).Where("patient_id = ? and status = 1 and schedule_date <=?", patient_id, schedule_date).Order("schedule_date desc").Last(&schedule).Error
  482. return schedule, err
  483. }
  484. func GetInspectionGroupList(patientid int64, startime int64, endtime int64) (inspection []*models.XcxInspection, err error) {
  485. db := XTReadDB().Table("xt_inspection as x").Where("x.status = 1")
  486. if patientid > 0 {
  487. db = db.Where("x.patient_id = ?", patientid)
  488. }
  489. if startime > 0 {
  490. db = db.Where("x.inspect_date >= ?", startime)
  491. }
  492. if endtime > 0 {
  493. db = db.Where("x.inspect_date <= ?", endtime)
  494. }
  495. err = db.Group("x.inspect_date,x.project_id").Find(&inspection).Error
  496. return inspection, err
  497. }
  498. func GetInsepctionList(patientid int64, startime int64, endtime int64) (inspection []*models.XcxInspection, err error) {
  499. db := XTReadDB().Table("xt_inspection as x").Where("x.status =1")
  500. table := XTReadDB().Table("xt_inspection_reference as r")
  501. fmt.Print("table", table)
  502. if patientid > 0 {
  503. db = db.Where("x.patient_id = ?", patientid)
  504. }
  505. if startime > 0 {
  506. db = db.Where("x.inspect_date >= ?", startime)
  507. }
  508. if endtime > 0 {
  509. db = db.Where("x.inspect_date <= ?", endtime)
  510. }
  511. err = db.Group("x.id").Select("x.id,x.patient_id,x.org_id,x.project_id,x.item_id,x.item_name,x.project_name,x.inspect_type,x.inspect_value,x.inspect_date,x.status,x.created_time,x.updated_time,r.range_type,r.range_min,r.range_max,r.range_value,r.range_options,r.unit").Joins("left join xt_inspection_reference as r on (r.item_id = x.item_id AND r.org_id > 0) OR ( x.item_id = r.id AND r.org_id = 0) ").Scan(&inspection).Error
  512. return inspection, err
  513. }
  514. func GetArticList(activityID int64, page int64, limit int64) (story []*models.SybStory, total int64, err error) {
  515. offset := (page - 1) * limit
  516. err = UserReadDB().Model(&story).Where("activity_id = ? and audit_status = 2", activityID).Count(&total).Order("ctime desc").Offset(offset).Limit(limit).Find(&story).Error
  517. return story, total, err
  518. }
  519. func GetArticListDetail(id int64) (models.SybStory, error) {
  520. story := models.SybStory{}
  521. err := UserReadDB().Where("id = ?", id).Find(&story).Error
  522. return story, err
  523. }
  524. func GetStoryScoreList(activityID int64, page int64, limit int64) (score []*models.SybStoryScore, total int64, err error) {
  525. offset := (page - 1) * limit
  526. err = UserReadDB().Model(&score).Where("activity_id = ?", activityID).Count(&total).Offset(offset).Limit(limit).Preload("SybStory").Find(&score).Error
  527. return score, total, err
  528. }
  529. func SendWxAuthAPI(appID string, appSecret string, grant_type string, code string) (map[string]string, error) {
  530. var code2sessionURL = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appID + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=" + grant_type
  531. var url = fmt.Sprintf(code2sessionURL, appID, appSecret, code)
  532. fmt.Println("url233232323322323", url)
  533. resp, err := http.DefaultClient.Get(code2sessionURL)
  534. fmt.Println("resp32332232332322", resp)
  535. var wxMap map[string]string
  536. err = json.NewDecoder(resp.Body).Decode(&wxMap)
  537. if err != nil {
  538. return wxMap, err
  539. }
  540. defer resp.Body.Close()
  541. return wxMap, err
  542. }
  543. func SendWxAuthAPIOne(appID string, appSecret string, grant_type string, code string) (string, error) {
  544. var code2sessionURL = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appID + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=" + grant_type
  545. var url = fmt.Sprintf(code2sessionURL, appID, appSecret, code)
  546. fmt.Println(url)
  547. resp, err := http.DefaultClient.Get(code2sessionURL)
  548. if err != nil {
  549. return "", err
  550. }
  551. var wxMap map[string]string
  552. err = json.NewDecoder(resp.Body).Decode(&wxMap)
  553. if err != nil {
  554. return "", err
  555. }
  556. defer resp.Body.Close()
  557. fmt.Println("2333232232", wxMap)
  558. return wxMap["session_key"], nil
  559. }