xcx_mobile_api_service.go 23KB

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