patientmanage_service.go 28KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  1. package service
  2. import (
  3. "XT_New/models"
  4. "fmt"
  5. "github.com/jinzhu/gorm"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. func GetIllnessListTwo() (ills []*models.Illness, err error) {
  11. err = readUserDb.Where("status=1").Find(&ills).Error
  12. return
  13. }
  14. func GetBloodDialysisPatient(orgid int64, page int64, limit int64) (patients []*models.Patients, total int64, err error) {
  15. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1")
  16. if orgid > 0 {
  17. db = db.Where("x.user_org_id = ?", orgid)
  18. }
  19. offset := (page - 1) * limit
  20. err = db.Count(&total).Order("x.created_time desc").Offset(offset).Limit(limit).
  21. Select("x.id,x.user_org_id,x.user_id,x.avatar,x.patient_type,x.dialysis_no,x.admission_number,x.source,x.lapseto,x.partition_id,x.bed_id,x.name,x.alias,x.gender,x.marital_status,x.id_card_no,x.birthday,x.reimbursement_way_id,x.health_care_type,x.health_care_no,x.health_care_due_date,x.height,x.blood_type,x.rh,x.health_care_due_alert_date,x.education_level,x.profession,x.phone,x.home_telephone,x.relative_phone,x.relative_relations,x.home_address,x.work_unit,x.unit_address,x.children,x.receiving_date,x.is_hospital_first_dialysis,x.first_dialysis_date,x.first_dialysis_hospital,x.predialysis_condition,x.pre_hospital_dialysis_frequency,x.pre_hospital_dialysis_times,x.hospital_first_dialysis_date,x.induction_period,x.initial_dialysis,x.total_dialysis,x.attending_doctor_id,x.head_nurse_id,x.evaluate,x.diagnose,x.remark,x.registrars_id,x.registrars,x.qr_code,x.binding_state,x.patient_complains,x.present_history,x.past_history,x.temperature,x.pulse,x.respiratory,x.sbp,x.dbp,x.status,x.created_time,x.updated_time,x.nation,x.native_place,x.age,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id").Find(&patients).Error
  22. fmt.Println("err是什么", err)
  23. return
  24. }
  25. func GetAllBloodDialysisPatient(orgid int64, page int64, limit int64) (patients []*models.XtPatientsNew, total int64, err error) {
  26. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1")
  27. if orgid > 0 {
  28. db = db.Where("x.user_org_id = ? and x.blood_patients = 1", orgid)
  29. }
  30. offset := (page - 1) * limit
  31. err = db.Count(&total).Order("x.created_time desc").Offset(offset).Limit(limit).
  32. Select("x.id,x.user_org_id,x.user_id,x.avatar,x.patient_type,x.dialysis_no,x.admission_number,x.source,x.lapseto,x.partition_id,x.bed_id,x.name,x.alias,x.gender,x.marital_status,x.id_card_no,x.birthday,x.reimbursement_way_id,x.health_care_type,x.health_care_no,x.health_care_due_date,x.height,x.blood_type,x.rh,x.health_care_due_alert_date,x.education_level,x.profession,x.phone,x.home_telephone,x.relative_phone,x.relative_relations,x.home_address,x.work_unit,x.unit_address,x.children,x.receiving_date,x.is_hospital_first_dialysis,x.first_dialysis_date,x.first_dialysis_hospital,x.predialysis_condition,x.pre_hospital_dialysis_frequency,x.pre_hospital_dialysis_times,x.hospital_first_dialysis_date,x.induction_period,x.initial_dialysis,x.total_dialysis,x.attending_doctor_id,x.head_nurse_id,x.evaluate,x.diagnose,x.remark,x.registrars_id,x.registrars,x.qr_code,x.binding_state,x.patient_complains,x.present_history,x.past_history,x.temperature,x.pulse,x.respiratory,x.sbp,x.dbp,x.status,x.created_time,x.updated_time,x.nation,x.native_place,x.age,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id").Find(&patients).Error
  33. fmt.Println("err是什么", err)
  34. return
  35. }
  36. func GetAllSlowPatient(orgid int64, page int64, limit int64) (patients []*models.XtPatientsNew, total int64, err error) {
  37. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1")
  38. if orgid > 0 {
  39. db = db.Where("x.user_org_id = ? and x.slow_patients = 1", orgid)
  40. }
  41. offset := (page - 1) * limit
  42. err = db.Count(&total).Order("x.created_time desc").Offset(offset).Limit(limit).
  43. Select("x.id,x.user_org_id,x.user_id,x.avatar,x.patient_type,x.dialysis_no,x.admission_number,x.source,x.lapseto,x.partition_id,x.bed_id,x.name,x.alias,x.gender,x.marital_status,x.id_card_no,x.birthday,x.reimbursement_way_id,x.health_care_type,x.health_care_no,x.health_care_due_date,x.height,x.blood_type,x.rh,x.health_care_due_alert_date,x.education_level,x.profession,x.phone,x.home_telephone,x.relative_phone,x.relative_relations,x.home_address,x.work_unit,x.unit_address,x.children,x.receiving_date,x.is_hospital_first_dialysis,x.first_dialysis_date,x.first_dialysis_hospital,x.predialysis_condition,x.pre_hospital_dialysis_frequency,x.pre_hospital_dialysis_times,x.hospital_first_dialysis_date,x.induction_period,x.initial_dialysis,x.total_dialysis,x.attending_doctor_id,x.head_nurse_id,x.evaluate,x.diagnose,x.remark,x.registrars_id,x.registrars,x.qr_code,x.binding_state,x.patient_complains,x.present_history,x.past_history,x.temperature,x.pulse,x.respiratory,x.sbp,x.dbp,x.status,x.created_time,x.updated_time,x.nation,x.native_place,x.age,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id").Find(&patients).Error
  44. fmt.Println("err是什么", err)
  45. return
  46. }
  47. func GetAllMemberPatient(orgid int64, page int64, limit int64) (patients []*models.XtPatientsNew, total int64, err error) {
  48. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1")
  49. if orgid > 0 {
  50. db = db.Where("x.user_org_id = ? and x.member_patients = 1", orgid)
  51. }
  52. offset := (page - 1) * limit
  53. err = db.Count(&total).Order("x.created_time desc").Offset(offset).Limit(limit).
  54. Select("x.id,x.user_org_id,x.user_id,x.avatar,x.patient_type,x.dialysis_no,x.admission_number,x.source,x.lapseto,x.partition_id,x.bed_id,x.name,x.alias,x.gender,x.marital_status,x.id_card_no,x.birthday,x.reimbursement_way_id,x.health_care_type,x.health_care_no,x.health_care_due_date,x.height,x.blood_type,x.rh,x.health_care_due_alert_date,x.education_level,x.profession,x.phone,x.home_telephone,x.relative_phone,x.relative_relations,x.home_address,x.work_unit,x.unit_address,x.children,x.receiving_date,x.is_hospital_first_dialysis,x.first_dialysis_date,x.first_dialysis_hospital,x.predialysis_condition,x.pre_hospital_dialysis_frequency,x.pre_hospital_dialysis_times,x.hospital_first_dialysis_date,x.induction_period,x.initial_dialysis,x.total_dialysis,x.attending_doctor_id,x.head_nurse_id,x.evaluate,x.diagnose,x.remark,x.registrars_id,x.registrars,x.qr_code,x.binding_state,x.patient_complains,x.present_history,x.past_history,x.temperature,x.pulse,x.respiratory,x.sbp,x.dbp,x.status,x.created_time,x.updated_time,x.nation,x.native_place,x.age,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id").Find(&patients).Error
  55. fmt.Println("err是什么", err)
  56. return
  57. }
  58. func GetAllPatient(orgid int64) (patients []*models.PatientsNew, err error) {
  59. db := XTReadDB().Table("xt_patients_new as x")
  60. err = db.Raw("select id,name from xt_patients_new where user_org_id = ? and status =1", orgid).Scan(&patients).Error
  61. return
  62. }
  63. func ChechLastDialysisNoTwo(orgID int64) (dialysisNo int64) {
  64. var patient models.Patients
  65. err := readDb.Model(&models.Patients{}).Where("user_org_id=? and status = 1", orgID).Order("dialysis_no desc").First(&patient).Error
  66. if err != nil {
  67. return
  68. }
  69. if patient.ID == 0 {
  70. return
  71. }
  72. dialysisNo, _ = strconv.ParseInt(patient.DialysisNo, 10, 64)
  73. return
  74. }
  75. func GetBloodPatientInfo(orgid int64, phone string) (*models.Patients, error) {
  76. patients := models.Patients{}
  77. var err error
  78. err = XTReadDB().Model(&patients).Where("user_org_id = ? and phone = ? and status = 1", orgid, phone).Find(&patients).Error
  79. if err == gorm.ErrRecordNotFound {
  80. return nil, err
  81. }
  82. if err != nil {
  83. return nil, err
  84. }
  85. return &patients, nil
  86. }
  87. func GetSlowPatientInfo(orgid int64, phone string) (*models.CdmPatients, error) {
  88. patients := models.CdmPatients{}
  89. var err error
  90. err = PatientReadDB().Model(&patients).Where("user_org_id = ? and phone = ? and status = 1", orgid, phone).Find(&patients).Error
  91. if err == gorm.ErrRecordNotFound {
  92. return nil, err
  93. }
  94. if err != nil {
  95. return nil, err
  96. }
  97. return &patients, nil
  98. }
  99. func GetMemberPatientInfo(orgid int64, phone string) (*models.SgjUserCustomer, error) {
  100. customer := models.SgjUserCustomer{}
  101. err := UserReadDB().Model(&customer).Where("user_org_id = ? and mobile = ? and status =1", orgid, phone).Find(&customer).Error
  102. if err == gorm.ErrRecordNotFound {
  103. return nil, err
  104. }
  105. if err != nil {
  106. return nil, err
  107. }
  108. return &customer, nil
  109. }
  110. func CreateOldPatient(patients *models.Patients) error {
  111. err := XTWriteDB().Create(&patients).Error
  112. return err
  113. }
  114. func GetLastOldPatient(orgid int64) (models.Patients, error) {
  115. patients := models.Patients{}
  116. err := XTReadDB().Model(&patients).Where("user_org_id = ? and status =1", orgid).Last(&patients).Error
  117. return patients, err
  118. }
  119. func AddContagions(patienid int64, createdtime int64, updatedtime int64, contagions []int64) (err error) {
  120. utx := writeDb.Begin()
  121. if len(contagions) > 0 {
  122. thisSQL := "INSERT INTO xt_patients_infectious_diseases (patient_id, disease_id, status, created_time, updated_time) VALUES "
  123. insertParams := make([]string, 0)
  124. insertData := make([]interface{}, 0)
  125. for _, contagion := range contagions {
  126. insertParams = append(insertParams, "(?, ?, ?, ?, ?)")
  127. insertData = append(insertData, patienid)
  128. insertData = append(insertData, contagion)
  129. insertData = append(insertData, 1)
  130. insertData = append(insertData, createdtime)
  131. insertData = append(insertData, updatedtime)
  132. }
  133. thisSQL += strings.Join(insertParams, ",")
  134. err = utx.Exec(thisSQL, insertData...).Error
  135. fmt.Println("这个错误err", err)
  136. }
  137. utx.Commit()
  138. return
  139. }
  140. func AddSlowContagions(patienid int64, createdtime int64, updatedtime int64, contagions []int64, orgid int64) (err error) {
  141. utx := PatientWriteDB().Begin()
  142. if len(contagions) > 0 {
  143. thisSQL := "INSERT INTO xt_patients_infectious_diseases (patient_id, disease_id, status, created_time, updated_time,user_org_id) VALUES "
  144. insertParams := make([]string, 0)
  145. insertData := make([]interface{}, 0)
  146. for _, contagion := range contagions {
  147. insertParams = append(insertParams, "(?, ?, ?, ?, ?,?)")
  148. insertData = append(insertData, patienid)
  149. insertData = append(insertData, contagion)
  150. insertData = append(insertData, 1)
  151. insertData = append(insertData, createdtime)
  152. insertData = append(insertData, updatedtime)
  153. insertData = append(insertData, orgid)
  154. }
  155. thisSQL += strings.Join(insertParams, ", ")
  156. err = utx.Exec(thisSQL, insertData...).Error
  157. if err != nil {
  158. utx.Rollback()
  159. utx.Rollback()
  160. return
  161. }
  162. }
  163. utx.Commit()
  164. return
  165. }
  166. func AddSlowDiseases(patienid int64, createdtime int64, updatedtime int64, diseases []int64, orgid int64) (err error) {
  167. utx := PatientWriteDB().Begin()
  168. if len(diseases) > 0 {
  169. thisSQL := "INSERT INTO xt_patients_chronic_diseases (patient_id, disease_id, status, created_time, updated_time,user_org_id) VALUES "
  170. insertParams := make([]string, 0)
  171. insertData := make([]interface{}, 0)
  172. for _, disease := range diseases {
  173. insertParams = append(insertParams, "(?, ?, ?, ?, ?,?)")
  174. insertData = append(insertData, patienid)
  175. insertData = append(insertData, disease)
  176. insertData = append(insertData, 1)
  177. insertData = append(insertData, createdtime)
  178. insertData = append(insertData, updatedtime)
  179. insertData = append(insertData, orgid)
  180. }
  181. thisSQL += strings.Join(insertParams, ", ")
  182. err = utx.Exec(thisSQL, insertData...).Error
  183. if err != nil {
  184. utx.Rollback()
  185. return
  186. }
  187. }
  188. utx.Commit()
  189. return
  190. }
  191. func CreateNewPatient(patientsNew *models.XtPatientsNew) error {
  192. err := XTWriteDB().Create(&patientsNew).Error
  193. return err
  194. }
  195. func CreateCdmPatient(cdmpatient *models.CdmPatients) error {
  196. err := PatientWriteDB().Create(&cdmpatient).Error
  197. return err
  198. }
  199. func CreateMemberPatient(customer *models.SgjUserCustomer) error {
  200. err := UserWriteDB().Create(&customer).Error
  201. return err
  202. }
  203. func GetOldCdmPatient(orgid int64) (models.CdmPatients, error) {
  204. patients := models.CdmPatients{}
  205. err := PatientReadDB().Model(&patients).Where("user_org_id = ? and status =1", orgid).Last(&patients).Error
  206. return patients, err
  207. }
  208. func GetPatientDetailTwo(id int64) (models.XtPatientsNew, error) {
  209. patients := models.XtPatientsNew{}
  210. err := XTReadDB().Where("id=? and status = 1", id).Find(&patients).Error
  211. return patients, err
  212. }
  213. func GetPatientDiseasesTwo(id int64) []int64 {
  214. var dis []models.XtPatientsInfectiousDiseases
  215. ids := make([]int64, 0)
  216. err := XTReadDB().Model(&models.XtPatientsInfectiousDiseases{}).Where("patient_id = ? and status = 1", id).Find(&dis).Error
  217. if err != nil || len(dis) == 0 {
  218. return ids
  219. }
  220. for _, item := range dis {
  221. ids = append(ids, item.DiseaseId)
  222. }
  223. return ids
  224. }
  225. func GetSlowPatientDiseases(id int64) (infeciousdisease []*models.CdmPatientsInfectiousDiseases, err error) {
  226. //var dis []models.CdmPatientsInfectiousDiseases
  227. //diseases := models.CdmPatientsChronicDiseases{}
  228. //ids := make([]int64, 0)
  229. //err := PatientReadDB().Model(&diseases).Where("patient_id = ? and status =1", id).Find(&ids).Error
  230. //if err != nil || len(dis) == 0 {
  231. // return ids
  232. //}
  233. //for _, item := range dis {
  234. // ids = append(ids, item.DiseaseId)
  235. //}
  236. //return ids
  237. err = PatientReadDB().Model(&infeciousdisease).Where("patient_id = ? and status =1", id).Find(&infeciousdisease).Error
  238. return infeciousdisease, err
  239. }
  240. func GetCronicDiseases(id int64) (chronic []*models.CdmPatientsChronicDiseases, err error) {
  241. //var dis []models.CdmPatientsChronicDiseases
  242. //ids := make([]int64, 0)
  243. //err := PatientReadDB().Model(&models.CdmPatientsChronicDiseases{}).Where("patient_id = ? and status =1", id).Find(&ids).Error
  244. //if err != nil || len(dis) == 0 {
  245. // return ids
  246. //}
  247. //for _, item := range dis {
  248. // ids = append(ids, item.DiseaseId)
  249. //}
  250. //return ids
  251. err = PatientReadDB().Model(&chronic).Where("patient_id = ? and status =1", id).Find(&chronic).Error
  252. return chronic, err
  253. }
  254. func CreatePatientTwo(patient *models.Patients, contagions []int64, diseases []int64) (err error) {
  255. user, _ := GetSgjUserByMobild(patient.Phone)
  256. customer, _ := GetSgjCoustomerByMobile(patient.UserOrgId, patient.Phone)
  257. utx := writeDb.Begin()
  258. btx := writeUserDb.Begin()
  259. if user.ID == 0 {
  260. user.Mobile = patient.Phone
  261. user.Avatar = patient.Avatar
  262. user.AvatarThumb = patient.Avatar
  263. user.Birthday = patient.Birthday
  264. user.Username = patient.Name
  265. user.Gender = patient.Gender
  266. user.Sources = 11
  267. user.Introduce = patient.Remark
  268. user.Status = 1
  269. user.UpdatedTime = patient.UpdatedTime
  270. user.CreatedTime = patient.CreatedTime
  271. err = btx.Create(&user).Error
  272. if err != nil {
  273. utx.Rollback()
  274. btx.Rollback()
  275. return
  276. }
  277. }
  278. patient.UserId = user.ID
  279. if customer == nil {
  280. err = btx.Create(&models.SgjCustomer{
  281. UserOrgId: patient.UserOrgId,
  282. UserId: user.ID,
  283. Mobile: patient.Phone,
  284. Name: patient.Name,
  285. Gender: patient.Gender,
  286. Birthday: patient.Birthday,
  287. Sources: 11,
  288. Status: 1,
  289. CreatedTime: patient.CreatedTime,
  290. UpdatedTime: patient.UpdatedTime,
  291. Avatar: patient.Avatar,
  292. Remark: patient.Remark,
  293. }).Error
  294. if err != nil {
  295. utx.Rollback()
  296. btx.Rollback()
  297. return
  298. }
  299. }
  300. err = utx.Create(patient).Error
  301. if err != nil {
  302. utx.Rollback()
  303. btx.Rollback()
  304. return
  305. }
  306. var lapseto models.PatientLapseto
  307. lapseto.PatientId = patient.ID
  308. lapseto.LapsetoType = patient.Lapseto
  309. lapseto.CreatedTime = patient.CreatedTime
  310. lapseto.UpdatedTime = patient.CreatedTime
  311. lapseto.Status = 1
  312. lapseto.LapsetoTime = patient.CreatedTime
  313. err = utx.Create(&lapseto).Error
  314. if err != nil {
  315. utx.Rollback()
  316. btx.Rollback()
  317. return
  318. }
  319. if len(contagions) > 0 {
  320. thisSQL := "INSERT INTO xt_patients_infectious_diseases (patient_id, disease_id, status, created_time, updated_time) VALUES "
  321. insertParams := make([]string, 0)
  322. insertData := make([]interface{}, 0)
  323. for _, contagion := range contagions {
  324. insertParams = append(insertParams, "(?, ?, ?, ?, ?)")
  325. insertData = append(insertData, patient.ID)
  326. insertData = append(insertData, contagion)
  327. insertData = append(insertData, 1)
  328. insertData = append(insertData, patient.CreatedTime)
  329. insertData = append(insertData, patient.UpdatedTime)
  330. }
  331. thisSQL += strings.Join(insertParams, ", ")
  332. err = utx.Exec(thisSQL, insertData...).Error
  333. if err != nil {
  334. utx.Rollback()
  335. btx.Rollback()
  336. return
  337. }
  338. }
  339. if len(diseases) > 0 {
  340. thisSQL := "INSERT INTO xt_patients_chronic_diseases (patient_id, disease_id, status, created_time, updated_time) VALUES "
  341. insertParams := make([]string, 0)
  342. insertData := make([]interface{}, 0)
  343. for _, disease := range diseases {
  344. insertParams = append(insertParams, "(?, ?, ?, ?, ?)")
  345. insertData = append(insertData, patient.ID)
  346. insertData = append(insertData, disease)
  347. insertData = append(insertData, 1)
  348. insertData = append(insertData, patient.CreatedTime)
  349. insertData = append(insertData, patient.UpdatedTime)
  350. }
  351. thisSQL += strings.Join(insertParams, ", ")
  352. err = utx.Exec(thisSQL, insertData...).Error
  353. if err != nil {
  354. utx.Rollback()
  355. btx.Rollback()
  356. return
  357. }
  358. }
  359. utx.Commit()
  360. btx.Commit()
  361. return
  362. }
  363. func GetPatientData(phone string, orgid int64) (*models.XtPatientsNew, error) {
  364. var patientnew models.XtPatientsNew
  365. var err error
  366. err = XTReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status =? and blood_patients = ?", orgid, phone, 1, 1).Find(&patientnew).Error
  367. if err == gorm.ErrRecordNotFound {
  368. return nil, err
  369. }
  370. if err != nil {
  371. return nil, err
  372. }
  373. return &patientnew, nil
  374. }
  375. func GetSlowPatientData(phone string, orgid int64) (*models.CdmPatients, error) {
  376. var patientnew models.CdmPatients
  377. err = PatientReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status = ?", orgid, phone, 1).Find(&patientnew).Error
  378. if err == gorm.ErrRecordNotFound {
  379. return nil, err
  380. }
  381. if err != nil {
  382. return nil, err
  383. }
  384. return &patientnew, nil
  385. }
  386. func GetMemberNewPatient(phone string, orgid int64) (*models.XtPatientsNew, error) {
  387. var patientnew models.XtPatientsNew
  388. err = XTReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status = ? and member_patients = ?", orgid, phone, 1, 1).Find(&patientnew).Error
  389. if err == gorm.ErrRecordNotFound {
  390. return nil, err
  391. }
  392. if err != nil {
  393. return nil, err
  394. }
  395. return &patientnew, nil
  396. }
  397. func GetLastMemberPatient(orgid int64) (models.SgjUserCustomer, error) {
  398. customer := models.SgjUserCustomer{}
  399. err := UserReadDB().Model(&customer).Where("user_org_id = ? and status = 1", orgid).Last(&customer).Error
  400. return customer, err
  401. }
  402. func GetLastNewSlowPatient(phone string, orgid int64) (*models.XtPatientsNew, error) {
  403. var patientnew models.XtPatientsNew
  404. err = XTReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status = ? and slow_patients = ?", orgid, phone, 1, 1).Find(&patientnew).Error
  405. if err == gorm.ErrRecordNotFound {
  406. return nil, err
  407. }
  408. if err != nil {
  409. return nil, err
  410. }
  411. return &patientnew, nil
  412. }
  413. func GetNewDoctorAdvice(patientid int64, doctype int64, startime int64, endtime int64, limit int64, page int64, orgId int64) (doctoradvice []*models.DoctorAdvices, total int64, err error) {
  414. db := XTReadDB().Table("xt_doctor_advice 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. if startime != 0 {
  422. db = db.Where("x.record_date>= ?", startime)
  423. }
  424. if endtime != 0 {
  425. db = db.Where("x.record_date<=?", endtime)
  426. }
  427. if doctype > 0 {
  428. db = db.Where("x.advice_type = ?", doctype)
  429. }
  430. offset := (page - 1) * limit
  431. err = db.Count(&total).Order("x.record_date desc").Offset(offset).Limit(limit).Group("x.id").Select("x.id, x.user_org_id, x.patient_id, x.advice_type, x.advice_date, x.record_date, x.start_time, x.advice_name,x.advice_desc, x.reminder_date, x.drug_spec, x.drug_spec_unit, x.single_dose, x.single_dose_unit, x.prescribing_number, x.prescribing_number_unit, x.delivery_way, x.execution_frequency, x.advice_doctor, x.created_time,x.updated_time, x.advice_affirm, x.remark, x.stop_time, x.stop_reason, x.stop_doctor, x.stop_state, x.parent_id, x.execution_time, x.execution_staff, x.execution_state, x.checker, x.check_state, x.check_time, x.groupno,x.remind_type,x.frequency_type,x.day_count,x.week_day,r.user_name").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.advice_doctor").Scan(&doctoradvice).Error
  432. return
  433. }
  434. func GetDryWeight(patientid int64, startime int64, endtime int64, limit int64, page int64, orgId int64) (dryWeight []*models.XtPatientDryweight, total int64, err error) {
  435. db := XTReadDB().Table("xt_patient_dryweight as x").Where("x.status = 1")
  436. if orgId > 0 {
  437. db = db.Where("x.user_org_id = ?", orgId)
  438. }
  439. if patientid > 0 {
  440. db = db.Where("x.patient_id = ?", patientid)
  441. }
  442. if startime > 0 {
  443. db = db.Where("x.ctime >= ?", startime)
  444. }
  445. if endtime > 0 {
  446. db = db.Where("x.ctime <=?", endtime)
  447. }
  448. offset := (page - 1) * limit
  449. err = db.Count(&total).Order("x.ctime desc").Offset(offset).Limit(limit).Group("x.id").
  450. Select("x.id,x.dry_weight,x.creator,x.remakes,x.patient_id,x.ctime,x.adjusted_value,x.user_id,x.user_org_id,r.user_name").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.creator").Scan(&dryWeight).Error
  451. return dryWeight, total, err
  452. }
  453. func ToSearch(orgId int64, name string) (patient []*models.XtPatientsNew, err error) {
  454. likeKey := "%" + name + "%"
  455. err = XTReadDB().Where("name like ? and user_org_id = ?", likeKey, orgId).Find(&patient).Error
  456. return patient, err
  457. }
  458. func GetCourseManagement(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (patientCourse []*models.PatientCourseOfDiseases, total int64, err error) {
  459. db := XTReadDB().Table("xt_patient_course_of_disease as x").Where("x.status = 1")
  460. if patientid > 0 {
  461. db = db.Where("x.patient_id = ?", patientid)
  462. }
  463. if orgid > 0 {
  464. db = db.Where("x.org_id = ?", orgid)
  465. }
  466. if startime > 0 {
  467. db = db.Where("x.record_time >=?", startime)
  468. }
  469. if endtime > 0 {
  470. db = db.Where("x.record_time <= ?", endtime)
  471. }
  472. offset := (page - 1) * limit
  473. err = db.Count(&total).Order("x.ctime desc").Offset(offset).Limit(limit).Group("x.id").
  474. Select("x.id,x.org_id,x.patient_id,x.recorder,x.record_time,x.content,x.title,r.user_name").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.recorder").Scan(&patientCourse).Error
  475. return patientCourse, total, err
  476. }
  477. func DeleteCouseManagement(patientid int64) error {
  478. err := XTWriteDB().Model(models.PatientCourseOfDisease{}).Where("id = ?", patientid).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  479. return err
  480. }
  481. func GetCouseManagentDetail(id int64) (models.PatientCourseOfDiseasess, error) {
  482. disease := models.PatientCourseOfDiseasess{}
  483. db := XTReadDB().Table("xt_patient_course_of_disease as x")
  484. err := db.Select("x.id,x.org_id,x.patient_id,x.recorder,x.record_time,x.content,x.title,s.name,r.user_name").Joins("left join xt_patients as s on s.id = x.patient_id ").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.recorder").Where("x.id = ?", id).Scan(&disease).Error
  485. return disease, err
  486. }
  487. func DeleteDryWeight(id int64) error {
  488. err := XTWriteDB().Model(models.SgjPatientDryweight{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  489. return err
  490. }
  491. func GetDryWeightDetail(id int64) (models.SgjPatientDryweights, error) {
  492. dryweight := models.SgjPatientDryweights{}
  493. db := XTReadDB().Table("xt_patient_dryweight as x")
  494. err := db.Select("x.id,x.dry_weight,x.creator,x.remakes,x.patient_id,x.adjusted_value,x.user_org_id,x.user_id,x.ctime,s.name,r.user_name").Joins("left join xt_patients as s on s.id = x.patient_id").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.user_id").Where("x.id = ?", id).Scan(&dryweight).Error
  495. return dryweight, err
  496. }
  497. func GetlongDialysisrecord(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (prescription []*models.XtDialysisSolution, total int64, err error) {
  498. db := XTReadDB().Table("xt_dialysis_solution as x").Where("x.status = 1")
  499. if patientid > 0 {
  500. db = db.Where("x.patient_id = ?", patientid)
  501. }
  502. if orgid > 0 {
  503. db = db.Where("x.user_org_id = ?", orgid)
  504. }
  505. if startime > 0 {
  506. db = db.Where("x.created_time >=?", startime)
  507. }
  508. if endtime > 0 {
  509. db = db.Where("x.created_time <= ?", endtime)
  510. }
  511. offset := (page - 1) * limit
  512. err = db.Count(&total).Order("x.created_time desc").Offset(offset).Limit(limit).Group("x.id").
  513. Select("x.id,x.name,x.sub_name,x.user_org_id,x.patient_id,x.parent_id,x.type,x.period,x.times,x.anticoagulant,x.anticoagulant_shouji,x.anticoagulant_weichi,x.anticoagulant_zongliang,x.anticoagulant_gaimingcheng,x.anticoagulant_gaijiliang,x.mode_name,x.mode_id,x.dialysis_duration,x.replacement_way,x.hemodialysis_machine,x.blood_filter,x.perfusion_apparatus,x.blood_flow_volume,x.dewater,x.displace_liqui,x.glucose,x.dry_weight,x.dialysate_flow,x.kalium,x.sodium,x.calcium,x.bicarbonate,x.doctor,x.first_dialysis,x.remark,x.initiate_mode,x.affirm_state,x.use_state,x.status,x.registrars_id,x.created_time,x.updated_time,x.solution_type,x.dialysate_temperature,x.conductivity,x.dialysis_duration_hour,x.dialysis_duration_minute,x.target_ultrafiltration,x.dialysate_formulation,x.dialyzer,x.replacement_total,x.dialyzer_perfusion_apparatus,x.body_fluid,x.special_medicine,x.special_medicine_other,x.displace_liqui_part,x.displace_liqui_value,x.blood_access,x.ultrafiltration,x.body_fluid_other,x.target_ktv").Find(&prescription).Error
  514. return
  515. }
  516. func GetRescuerecord(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (rescuerecord []*models.XtPatientRescueRecords, total int64, err error) {
  517. db := XTReadDB().Table("xt_patient_rescue_record as x").Where("x.status = 1")
  518. if patientid > 0 {
  519. db = db.Where("x.patient_id = ?", patientid)
  520. }
  521. if orgid > 0 {
  522. db = db.Where("x.org_id = ?", orgid)
  523. }
  524. if startime > 0 {
  525. db = db.Where("x.record_time >=?", startime)
  526. }
  527. if endtime > 0 {
  528. db = db.Where("x.record_time <= ?", endtime)
  529. }
  530. offset := (page - 1) * limit
  531. err = db.Count(&total).Order("x.record_time desc").Offset(offset).Limit(limit).Group("x.id").
  532. Select("x.id,x.org_id,x.patient_id,x.recorder,x.record_time,x.content,x.status,r.user_name").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.recorder").Scan(&rescuerecord).Error
  533. return
  534. }
  535. func GetScheduling(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64, modeType int64) (schedules []*models.XtSchedules, total int64, err error) {
  536. db := XTReadDB().Table("xt_schedule as x").Where("x.status = 1")
  537. if patientid > 0 {
  538. db = db.Where("x.patient_id = ?", patientid)
  539. }
  540. if orgid > 0 {
  541. db = db.Where("x.user_org_id = ?", orgid)
  542. }
  543. if startime > 0 {
  544. db = db.Where("x.schedule_date >=?", startime)
  545. }
  546. if endtime > 0 {
  547. db = db.Where("x.schedule_date <= ?", endtime)
  548. }
  549. if modeType > 0 {
  550. db = db.Where("x.mode_id = ?", modeType)
  551. }
  552. offset := (page - 1) * limit
  553. err = db.Count(&total).Order("x.schedule_date desc").Offset(offset).Limit(limit).Group("x.id").
  554. Select("x.id,x.user_org_id,x.partition_id,x.bed_id,x.patient_id,x.schedule_date,x.schedule_type,x.schedule_week,x.mode_id,x.status,x.created_time,x.updated_time,s.number,z.name").Joins("left join xt_device_number as s on s.id = x.bed_id").Joins("left join xt_device_zone as z on z.id = x.partition_id").Scan(&schedules).Error
  555. return
  556. }
  557. func GetEducation(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (treatment []*models.XtTreatmentSummary, total int64, err error) {
  558. db := XTReadDB().Table("xt_treatment_summary as x").Where("x.status = 1")
  559. if patientid > 0 {
  560. db = db.Where("x.patient_id = ?", patientid)
  561. }
  562. if orgid > 0 {
  563. db = db.Where("x.user_org_id = ?", orgid)
  564. }
  565. if startime > 0 {
  566. db = db.Where("x.assessment_date >=?", startime)
  567. }
  568. if endtime > 0 {
  569. db = db.Where("x.assessment_date <= ?", endtime)
  570. }
  571. offset := (page - 1) * limit
  572. err = db.Count(&total).Order("x.assessment_date").Offset(offset).Limit(limit).Group("x.id").
  573. Select("x.id,x.user_org_id,x.patient_id,x.assessment_date,x.dialysis_order_id,x.mission,x.dialysis_summary,x.change,x.sj_nurse,x.zl_nurse,x.hd_nurse,x.xj_nurse,x.zl_doctor,x.channel_image,x.puncture,x.puncture_needle,x.puncture_direction,x.status,x.created_time,x.updated_time,x.creater,x.modifier").Scan(&treatment).Error
  574. return
  575. }