patientmanage_service.go 51KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004
  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 FindPatientByIdCardNoOne(orgID int64, idCardNo string) (patient models.Patients, err error) {
  364. err = readDb.Model(&models.Patients{}).Where("status=1 and user_org_id=? and id_card_no=?", orgID, idCardNo).First(&patient).Error
  365. return
  366. }
  367. func FindPatientByDialysisNoOne(orgID int64, dialysisNo string) (patient models.Patients, err error) {
  368. err = readDb.Model(&models.Patients{}).Where("status=1 and user_org_id=? and dialysis_no=?", orgID, dialysisNo).First(&patient).Error
  369. return
  370. }
  371. func FindPatientByMobileOne(mobile string, orgID int64) (patient models.Patients, err error) {
  372. err = readDb.Model(&models.Patients{}).Where("phone=? and user_org_id=? and status=1", mobile, orgID).First(&patient).Error
  373. return
  374. }
  375. func GetPatientData(phone string, orgid int64) (*models.XtPatientsNew, error) {
  376. var patientnew models.XtPatientsNew
  377. var err error
  378. err = XTReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status =? and blood_patients = ?", orgid, phone, 1, 1).Find(&patientnew).Error
  379. if err == gorm.ErrRecordNotFound {
  380. return nil, err
  381. }
  382. if err != nil {
  383. return nil, err
  384. }
  385. return &patientnew, nil
  386. }
  387. func GetSlowPatientData(phone string, orgid int64) (*models.CdmPatients, error) {
  388. var patientnew models.CdmPatients
  389. err = PatientReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status = ?", orgid, phone, 1).Find(&patientnew).Error
  390. if err == gorm.ErrRecordNotFound {
  391. return nil, err
  392. }
  393. if err != nil {
  394. return nil, err
  395. }
  396. return &patientnew, nil
  397. }
  398. func GetMemberNewPatient(phone string, orgid int64) (*models.XtPatientsNew, error) {
  399. var patientnew models.XtPatientsNew
  400. err = XTReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status = ? and member_patients = ?", orgid, phone, 1, 1).Find(&patientnew).Error
  401. if err == gorm.ErrRecordNotFound {
  402. return nil, err
  403. }
  404. if err != nil {
  405. return nil, err
  406. }
  407. return &patientnew, nil
  408. }
  409. func GetLastMemberPatient(orgid int64) (models.SgjUserCustomer, error) {
  410. customer := models.SgjUserCustomer{}
  411. err := UserReadDB().Model(&customer).Where("user_org_id = ? and status = 1", orgid).Last(&customer).Error
  412. return customer, err
  413. }
  414. func GetLastNewSlowPatient(phone string, orgid int64) (*models.XtPatientsNew, error) {
  415. var patientnew models.XtPatientsNew
  416. err = XTReadDB().Model(&patientnew).Where("user_org_id = ? and phone = ? and status = ? and slow_patients = ?", orgid, phone, 1, 1).Find(&patientnew).Error
  417. if err == gorm.ErrRecordNotFound {
  418. return nil, err
  419. }
  420. if err != nil {
  421. return nil, err
  422. }
  423. return &patientnew, nil
  424. }
  425. func GetNewDoctorAdvice(patientID int64, advice_type int64, start int64, end int64, limit int64, page int64, orgID int64) (doctoradvice []*models.DoctorAdvices, total int64, err error) {
  426. db := readDb.Table("xt_doctor_advice as x").Where("x.status = 1")
  427. table := UserReadDB().Table("sgj_user_admin_role as r")
  428. fmt.Print("table", table)
  429. if orgID > 0 {
  430. db = db.Where("x.user_org_id=?", orgID)
  431. }
  432. if patientID > 0 {
  433. db = db.Where("x.patient_id = ?", patientID)
  434. }
  435. if advice_type > 0 {
  436. db = db.Where("x.advice_type = ?", advice_type)
  437. } else if advice_type == 0 {
  438. db = db.Where("x.advice_type in (?)", []int{1, 3})
  439. }
  440. if start > 0 {
  441. db = db.Where("x.start_time>=?", start)
  442. }
  443. if end > 0 {
  444. db = db.Where("start_time<=?", end)
  445. }
  446. //offset := (page - 1) * limit
  447. err = db.Group("x.id").Count(&total).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.status, 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,x.parent_id,r.user_name, IF(x.parent_id > 0, x.parent_id, x.id) as advice_order").Joins("Left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.advice_doctor").Order("start_time desc, groupno desc, advice_order desc, id asc").Scan(&doctoradvice).Error
  448. fmt.Print("err", err)
  449. return
  450. }
  451. func GetDryWeight(patientid int64, startime int64, endtime int64, limit int64, page int64, orgId int64) (dryWeight []*models.XtPatientDryweight, total int64, err error) {
  452. db := XTReadDB().Table("xt_patient_dryweight as x").Where("x.status = 1")
  453. if orgId > 0 {
  454. db = db.Where("x.user_org_id = ?", orgId)
  455. }
  456. if patientid > 0 {
  457. db = db.Where("x.patient_id = ?", patientid)
  458. }
  459. if startime > 0 {
  460. db = db.Where("x.ctime >= ?", startime)
  461. }
  462. if endtime > 0 {
  463. db = db.Where("x.ctime <=?", endtime)
  464. }
  465. offset := (page - 1) * limit
  466. err = db.Count(&total).Order("x.ctime desc").Offset(offset).Limit(limit).Group("x.id").
  467. 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
  468. return dryWeight, total, err
  469. }
  470. func ToSearch(orgId int64, name string) (patient []*models.XtPatientsNew, err error) {
  471. likeKey := "%" + name + "%"
  472. err = XTReadDB().Where("name like ? and user_org_id = ?", likeKey, orgId).Find(&patient).Error
  473. return patient, err
  474. }
  475. func GetCourseManagement(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (patientCourse []*models.PatientCourseOfDiseases, total int64, err error) {
  476. db := XTReadDB().Table("xt_patient_course_of_disease as x").Where("x.status = 1")
  477. if patientid > 0 {
  478. db = db.Where("x.patient_id = ?", patientid)
  479. }
  480. if orgid > 0 {
  481. db = db.Where("x.org_id = ?", orgid)
  482. }
  483. if startime > 0 {
  484. db = db.Where("x.record_time >=?", startime)
  485. }
  486. if endtime > 0 {
  487. db = db.Where("x.record_time <= ?", endtime)
  488. }
  489. offset := (page - 1) * limit
  490. err = db.Count(&total).Order("x.ctime desc").Offset(offset).Limit(limit).Group("x.id").
  491. 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
  492. return patientCourse, total, err
  493. }
  494. func DeleteCouseManagement(patientid int64) error {
  495. err := XTWriteDB().Model(models.PatientCourseOfDisease{}).Where("id = ?", patientid).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  496. return err
  497. }
  498. func GetCouseManagentDetail(id int64) (models.PatientCourseOfDiseasess, error) {
  499. disease := models.PatientCourseOfDiseasess{}
  500. db := XTReadDB().Table("xt_patient_course_of_disease as x")
  501. 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
  502. return disease, err
  503. }
  504. func DeleteDryWeight(id int64) error {
  505. err := XTWriteDB().Model(models.SgjPatientDryweight{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  506. return err
  507. }
  508. func GetDryWeightDetail(id int64) (models.SgjPatientDryweights, error) {
  509. dryweight := models.SgjPatientDryweights{}
  510. db := XTReadDB().Table("xt_patient_dryweight as x")
  511. 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
  512. return dryweight, err
  513. }
  514. func GetlongDialysisrecord(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (prescription []*models.XtDialysisSolution, total int64, err error) {
  515. db := XTReadDB().Table("xt_dialysis_solution as x").Where("x.status = 1")
  516. if patientid > 0 {
  517. db = db.Where("x.patient_id = ?", patientid)
  518. }
  519. if orgid > 0 {
  520. db = db.Where("x.user_org_id = ?", orgid)
  521. }
  522. if startime > 0 {
  523. db = db.Where("x.created_time >=?", startime)
  524. }
  525. if endtime > 0 {
  526. db = db.Where("x.created_time <= ?", endtime)
  527. }
  528. offset := (page - 1) * limit
  529. err = db.Count(&total).Order("x.created_time desc").Offset(offset).Limit(limit).Group("x.id").
  530. 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
  531. return
  532. }
  533. func GetRescuerecord(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (rescuerecord []*models.XtPatientRescueRecords, total int64, err error) {
  534. db := XTReadDB().Table("xt_patient_rescue_record as x").Where("x.status = 1")
  535. if patientid > 0 {
  536. db = db.Where("x.patient_id = ?", patientid)
  537. }
  538. if orgid > 0 {
  539. db = db.Where("x.org_id = ?", orgid)
  540. }
  541. if startime > 0 {
  542. db = db.Where("x.record_time >=?", startime)
  543. }
  544. if endtime > 0 {
  545. db = db.Where("x.record_time <= ?", endtime)
  546. }
  547. offset := (page - 1) * limit
  548. err = db.Count(&total).Order("x.record_time desc").Offset(offset).Limit(limit).Group("x.id").
  549. 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
  550. return
  551. }
  552. func GetScheduling(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64, modeType int64) (schedules []*models.XtSchedules, total int64, err error) {
  553. db := XTReadDB().Table("xt_schedule as x").Where("x.status = 1")
  554. if patientid > 0 {
  555. db = db.Where("x.patient_id = ?", patientid)
  556. }
  557. if orgid > 0 {
  558. db = db.Where("x.user_org_id = ?", orgid)
  559. }
  560. if startime > 0 {
  561. db = db.Where("x.schedule_date >=?", startime)
  562. }
  563. if endtime > 0 {
  564. db = db.Where("x.schedule_date <= ?", endtime)
  565. }
  566. if modeType > 0 {
  567. db = db.Where("x.mode_id = ?", modeType)
  568. }
  569. offset := (page - 1) * limit
  570. err = db.Count(&total).Order("x.schedule_date desc").Offset(offset).Limit(limit).Group("x.id").
  571. 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
  572. return
  573. }
  574. func GetEducation(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64) (treatment []*models.XtTreatmentSummary, total int64, err error) {
  575. db := XTReadDB().Table("xt_treatment_summary as x").Where("x.status = 1")
  576. if patientid > 0 {
  577. db = db.Where("x.patient_id = ?", patientid)
  578. }
  579. if orgid > 0 {
  580. db = db.Where("x.user_org_id = ?", orgid)
  581. }
  582. if startime > 0 {
  583. db = db.Where("x.assessment_date >=?", startime)
  584. }
  585. if endtime > 0 {
  586. db = db.Where("x.assessment_date <= ?", endtime)
  587. }
  588. offset := (page - 1) * limit
  589. err = db.Count(&total).Order("x.assessment_date desc").Offset(offset).Limit(limit).Group("x.id").
  590. 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
  591. return
  592. }
  593. func GetSchedulingDetail(id int64) (models.XtScheduless, error) {
  594. schedules := models.XtScheduless{}
  595. db := XTReadDB().Table("xt_schedule as x")
  596. err := db.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,n.number,z.name").Joins("left join xt_device_number as n on n.id = x.bed_id").Joins("left join xt_device_zone as z on z.id = x.partition_id").Where("x.id =?", id).Scan(&schedules).Error
  597. return schedules, err
  598. }
  599. func GetSchedulingTwo(id int64) (models.XtScheduless, error) {
  600. schedules := models.XtScheduless{}
  601. db := XTReadDB().Table("xt_schedule as x")
  602. err := db.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,z.name").Joins("left join xt_patients as z on z.id = x.patient_id").Where("x.id =?", id).Scan(&schedules).Error
  603. return schedules, err
  604. }
  605. func DeleteScheduling(id int64) error {
  606. err := XTWriteDB().Model(models.XtSchedules{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  607. return err
  608. }
  609. func GetEducationDetailOne(id int64) (models.XtTreatmentSummarys, error) {
  610. summarys := models.XtTreatmentSummarys{}
  611. db := XTReadDB().Table("xt_treatment_summary as x")
  612. err := db.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.creater,x.modifier,s.name").Joins("left join xt_patients as s on s.id = x.patient_id").Where("x.id = ?", id).Scan(&summarys).Error
  613. return summarys, err
  614. }
  615. func DeleteEducation(id int64) error {
  616. err := XTWriteDB().Model(models.XtTreatmentSummary{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  617. return err
  618. }
  619. func GetRescueRecordDetail(id int64) (models.XtPatientRescueRecords, error) {
  620. records := models.XtPatientRescueRecords{}
  621. db := XTReadDB().Table("xt_patient_rescue_record as x")
  622. err := db.Select("x.id,x.org_id,x.patient_id,x.recorder,x.record_time,x.content,x.status,r.user_name,s.name").Joins("left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = x.recorder").Joins("left join xt_patients as s on s.id = x.patient_id").Where("x.id=?", id).Scan(&records).Error
  623. return records, err
  624. }
  625. func DeleteRescueRecord(id int64) error {
  626. err := XTWriteDB().Model(models.XtPatientRescueRecord{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  627. return err
  628. }
  629. func ToSearchePatient(keyword string, orgId int64) (paitents []*models.XtPatientsNew, err error) {
  630. likeKey := "%" + keyword + "%"
  631. err = XTReadDB().Where("name like ? or dialysis_no like ? and user_org_id = ?", likeKey, likeKey, orgId).Find(&paitents).Error
  632. return paitents, err
  633. }
  634. func SearchallPatient(keyword string, orgid int64) (patients []*models.XtPatientsNew, err error) {
  635. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1")
  636. if len(keyword) > 0 {
  637. likeKey := "%" + keyword + "%"
  638. db = db.Where("x.name LIKE ? OR x.dialysis_no LIKE ?", likeKey, likeKey)
  639. }
  640. if orgid > 0 {
  641. db = db.Where("x.user_org_id = ?", orgid)
  642. }
  643. err = db.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.infectious_next_record_time,x.is_infectious,x.remind_cycle,x.response_result,x.is_open_remind,x.first_treatment_date,x.dialysis_age,x.expense_kind,x.tell_phone,x.contact_name,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id,x.member_fistdate,x.member_patienttype,x.member_treatement,x.equitment_id").Find(&patients).Error
  644. return patients, err
  645. }
  646. func GetSearchallBlood(keyword string, orgid int64) (patients []*models.XtPatientsNew, err error) {
  647. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1 and x.blood_patients = 1")
  648. if len(keyword) > 0 {
  649. likeKey := "%" + keyword + "%"
  650. db = db.Where("x.name LIKE ? OR x.dialysis_no LIKE ?", likeKey, likeKey)
  651. }
  652. if orgid > 0 {
  653. db = db.Where("x.user_org_id = ?", orgid)
  654. }
  655. err = db.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.infectious_next_record_time,x.is_infectious,x.remind_cycle,x.response_result,x.is_open_remind,x.first_treatment_date,x.dialysis_age,x.expense_kind,x.tell_phone,x.contact_name,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id,x.member_fistdate,x.member_patienttype,x.member_treatement,x.equitment_id").Find(&patients).Error
  656. return patients, err
  657. }
  658. func GetSlowSearchePatient(keyword string, orgid int64) (patients []*models.XtPatientsNew, err error) {
  659. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1 and x.slow_patients = 1")
  660. if len(keyword) > 0 {
  661. likeKey := "%" + keyword + "%"
  662. db = db.Where("x.name LIKE ? OR x.dialysis_no LIKE ?", likeKey, likeKey)
  663. }
  664. if orgid > 0 {
  665. db = db.Where("x.user_org_id = ?", orgid)
  666. }
  667. err = db.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.infectious_next_record_time,x.is_infectious,x.remind_cycle,x.response_result,x.is_open_remind,x.first_treatment_date,x.dialysis_age,x.expense_kind,x.tell_phone,x.contact_name,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id,x.member_fistdate,x.member_patienttype,x.member_treatement,x.equitment_id").Find(&patients).Error
  668. return patients, err
  669. }
  670. func GetMemberSearchPatient(keyword string, orgid int64) (patients []*models.XtPatientsNew, err error) {
  671. db := XTReadDB().Table("xt_patients_new as x").Where("x.status = 1 and x.member_patients = 1")
  672. if len(keyword) > 0 {
  673. likeKey := "%" + keyword + "%"
  674. db = db.Where("x.name LIKE ? OR x.dialysis_no LIKE ?", likeKey, likeKey)
  675. }
  676. if orgid > 0 {
  677. db = db.Where("x.user_org_id = ?", orgid)
  678. }
  679. err = db.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.infectious_next_record_time,x.is_infectious,x.remind_cycle,x.response_result,x.is_open_remind,x.first_treatment_date,x.dialysis_age,x.expense_kind,x.tell_phone,x.contact_name,x.blood_patients,x.slow_patients,x.member_patients,x.ecommer_patients,x.blood_id,x.slow_id,x.member_id,x.member_fistdate,x.member_patienttype,x.member_treatement,x.equitment_id").Find(&patients).Error
  680. return patients, err
  681. }
  682. func GetLongDialysisDetail(id int64) (models.XtDialysisSolution, error) {
  683. solution := models.XtDialysisSolution{}
  684. err := XTReadDB().Model(&solution).Where("id=? and status =1", id).Find(&solution).Error
  685. return solution, err
  686. }
  687. func GetPatientName(id int64) (models.Patients, error) {
  688. patientsNew := models.Patients{}
  689. err := XTReadDB().Model(&patientsNew).Where("id=? and status = 1", id).Find(&patientsNew).Error
  690. return patientsNew, err
  691. }
  692. func DeleteLongDialysis(id int64) error {
  693. err := XTWriteDB().Model(models.XtDialysisSolution{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  694. return err
  695. }
  696. func GetDialysisrecord(patientID int64, start int64, end int64, limit int64, page int64, orgID int64, mode_id int64) ([]*models.PatientDialysisRecord, int64, error) {
  697. offset := (page - 1) * limit
  698. var total int64
  699. var err error
  700. var orders []*models.PatientDialysisRecord
  701. db := readDb.Table("xt_dialysis_order as do").
  702. Preload("DialysisPrescription", "patient_id=? and user_org_id=? and status=1", patientID, orgID).
  703. Preload("PredialysisEvaluation", "patient_id=? and user_org_id=? and status=1", patientID, orgID).
  704. Preload("DialysisPrescription", func(db *gorm.DB) *gorm.DB {
  705. return readDb.Where("patient_id=? and user_org_id=? and status=1", patientID, orgID).Preload("UserAdminRole", func(db *gorm.DB) *gorm.DB {
  706. return readUserDb.Where("status = 1")
  707. })
  708. }).
  709. Preload("AssessmentAfterDislysis", "patient_id=? and user_org_id=? and status=1", patientID, orgID).
  710. Preload("TreatmentSummary", "patient_id=? and user_org_id=? and status=1", patientID, orgID).
  711. Preload("Device", "org_id=? and status=1", orgID).
  712. Preload("UserAdminRole", func(db *gorm.DB) *gorm.DB {
  713. return readUserDb.Where("org_id=? and status = 1", orgID)
  714. }).
  715. Joins("JOIN xt_schedule as s ON s.patient_id=? and FROM_UNIXTIME(s.schedule_date, '%Y-%m-%d')=FROM_UNIXTIME(do.dialysis_date, '%Y-%m-%d')", patientID).
  716. Joins("JOIN xt_device_zone as dz ON dz.org_id = ? and dz.id=s.partition_id", orgID).
  717. Where("do.patient_id=? and do.user_org_id=? and do.stage = 2 and do.status=1", patientID, orgID).Group("s.schedule_date")
  718. if start > 0 {
  719. db = db.Where("do.dialysis_date>=?", start)
  720. }
  721. if end > 0 {
  722. db = db.Where("do.dialysis_date<=?", end)
  723. }
  724. if mode_id > 0 {
  725. db = db.Joins("JOIN xt_dialysis_prescription as dp ON dp.record_id=do.id")
  726. db = db.Where("dp.mode_id=?", mode_id)
  727. }
  728. err = db.Count(&total).Offset(offset).Limit(limit).Order("do.dialysis_date desc").Select("do.bed_id, do.id, do.dialysis_date, do.user_org_id, do.patient_id, do.prescription_id, do.stage, do.remark, do.status, do.created_time, do.updated_time,do.start_nurse,do.finish_nurse ,s.schedule_type, s.partition_id, dz.name as partition_name").Find(&orders).Error
  729. if len(orders) > 0 {
  730. ids := make([]int64, 0)
  731. for _, order := range orders {
  732. dialyzer := order.DialysisPrescription.Dialyzer
  733. ids = append(ids, dialyzer)
  734. }
  735. if len(ids) > 0 {
  736. var dialyzers []*models.DeviceNumber
  737. err = readDb.Model(&models.DeviceNumber{}).Where("id IN (?) and org_id=? and status=1", ids, orgID).Find(&dialyzers).Error
  738. if err != nil {
  739. return nil, 0, err
  740. }
  741. dialyzerMap := make(map[int64]models.DeviceNumber, 0)
  742. for _, item := range dialyzers {
  743. dialyzerMap[item.ID] = *item
  744. }
  745. for orderIndex, order := range orders {
  746. if _, exist := dialyzerMap[order.DialysisPrescription.Dialyzer]; exist {
  747. orders[orderIndex].DeviceNumber = dialyzerMap[order.DialysisPrescription.Dialyzer].Number
  748. }
  749. }
  750. }
  751. }
  752. return orders, total, err
  753. }
  754. func GetAllDoctorTwo(orgid int64, appid int64) (appRole []*models.SgjUserAdminRole, err error) {
  755. err = UserReadDB().Where("org_id = ? and app_id = ? and status = ? ", orgid, appid, 1).Find(&appRole).Error
  756. return appRole, err
  757. }
  758. func GetDoctorAdviceDetail(id int64, orgid int64) (advices []*models.DoctorAdvices, err error) {
  759. db := XTReadDB().Table("xt_doctor_advice as x")
  760. err = db.Order("x.id desc").Select("x.id,x.user_org_id,x.patient_id,x.advice_type,x.advice_date,x.start_time,x.advice_name,x.advice_desc,x.reminder_date,x.single_dose,x.single_dose_unit,x.prescribing_number,x.prescribing_number_unit,x.delivery_way,x.execution_frequency,x.advice_doctor,x.status,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.record_date,x.dialysis_order_id,x.check_time,x.check_state,x.drug_spec,x.drug_spec_unit,x.groupno,x.remind_type,x.frequency_type,x.day_count,x.week_day,x.template_id,x.modifier,s.name").Joins("left join xt_patients as s on s.id=x.patient_id").Where("x.groupno = ? and x.status = 1 and x.user_org_id = ?", id, orgid).Scan(&advices).Error
  761. return advices, err
  762. }
  763. func DeleteManagement(groupid int64, orgid int64) error {
  764. err := XTWriteDB().Model(models.DoctorAdvice{}).Where("groupno=? and user_org_id = ?", groupid, orgid).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  765. return err
  766. }
  767. func DeleteChild(id int64) error {
  768. err := XTWriteDB().Model(models.DoctorAdvice{}).Where("id=?", id).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  769. return err
  770. }
  771. func GetNewPatient(id int64) (models.XtPatientsNew, error) {
  772. patientsNew := models.XtPatientsNew{}
  773. err := XTReadDB().Model(&patientsNew).Where("id=?", id).Find(&patientsNew).Error
  774. return patientsNew, err
  775. }
  776. func UpdatedPatient(patients models.Patients, id int64) error {
  777. err := XTWriteDB().Model(&patients).Where("id=?", id).Update(map[string]interface{}{"name": patients.Name, "gender": patients.Gender, "birthday": patients.Birthday, "age": patients.Age, "phone": patients.Phone, "lapseto": patients.Lapseto, "admission_number": patients.AdmissionNumber, "first_dialysis_date": patients.FirstDialysisDate, "diagnose": patients.Diagnose, "source": patients.Source, "dialysis_no": patients.DialysisNo, "avatar": patients.Avatar, "id_card_no": patients.IdCardNo, "is_infectious": patients.IsInfectious}).Error
  778. return err
  779. }
  780. func UpdateXtPatientNew(patients models.XtPatientsNew, id int64) error {
  781. err := XTWriteDB().Model(&patients).Where("id=?", id).Update(map[string]interface{}{"name": patients.Name, "gender": patients.Gender, "birthday": patients.Birthday, "age": patients.Age, "phone": patients.Phone, "lapseto": patients.Lapseto, "admission_number": patients.AdmissionNumber, "first_dialysis_date": patients.FirstDialysisDate, "diagnose": patients.Diagnose, "source": patients.Source, "dialysis_no": patients.DialysisNo, "avatar": patients.Avatar, "id_card_no": patients.IdCardNo, "is_infectious": patients.IsInfectious}).Error
  782. return err
  783. }
  784. func UpdateContagions(patientid int64) (models.XtPatientsInfectiousDiseases, error) {
  785. diseases := models.XtPatientsInfectiousDiseases{}
  786. err := XTWriteDB().Model(&diseases).Where("patient_id = ?", patientid).Update(map[string]interface{}{"status": 2, "updated_time": time.Now().Unix()}).Error
  787. return diseases, err
  788. }
  789. func UpdateCustomer(cdmpatient models.CdmPatients, id int64) error {
  790. err := PatientWriteDB().Model(&cdmpatient).Where("id=?", id).Update(map[string]interface{}{"name": cdmpatient.Name, "phone": cdmpatient.Phone, "gender": cdmpatient.Gender, "birthday": cdmpatient.Birthday, "diagnose": cdmpatient.Diagnose, "source": cdmpatient.Source, "avatar": cdmpatient.Avatar, "id_card_no": cdmpatient.IdCardNo, "updated_time": cdmpatient.UpdatedTime}).Error
  791. return err
  792. }
  793. func UpdatedCustomer(customer models.SgjUserCustomer, id int64) error {
  794. err := UserWriteDB().Model(&customer).Where("id = ?", id).Update(map[string]interface{}{"name": customer.Name, "mobile": customer.Mobile, "gender": customer.Gender, "birthday": customer.Birthday, "ill_date": customer.IllDate, "avatar": customer.Avatar, "illness_id": customer.IllnessId, "treat_type": customer.TreatType}).Error
  795. return err
  796. }
  797. func GetInspectionByOrgId(orgid int64) (*models.XtInspectionReference, error) {
  798. diseases := models.XtInspectionReference{}
  799. err := XTReadDB().Model(&diseases).Where("org_id = ? and status = 1", orgid).Find(&diseases).Error
  800. if err == gorm.ErrRecordNotFound {
  801. return nil, err
  802. }
  803. if err != nil {
  804. return nil, err
  805. }
  806. return &diseases, nil
  807. }
  808. func GetAllInspection(orgid int64) (inspection []*models.XtInspectionReference, err error) {
  809. err = XTReadDB().Model(&inspection).Where("org_id = ? and status = 1", orgid).Group("project_name").Find(&inspection).Error
  810. return inspection, err
  811. }
  812. func GetInspection(patientid int64, startime int64, endtime int64, limit int64, page int64, orgid int64, projectid int64) (inspection []*models.Inspection, total int64, err error) {
  813. db := XTReadDB().Table("xt_inspection as x").Where("x.status = 1")
  814. if patientid > 0 {
  815. db = db.Where("x.patient_id = ?", patientid)
  816. }
  817. if startime > 0 {
  818. db = db.Where("x.inspect_date >= ?", startime)
  819. }
  820. if endtime > 0 {
  821. db = db.Where("x.inspect_date<=?", endtime)
  822. }
  823. if orgid > 0 {
  824. db = db.Where("x.org_id = ?", orgid)
  825. }
  826. if projectid > 0 {
  827. db = db.Where("x.project_id = ?", projectid)
  828. }
  829. err = db.Count(&total).Order("x.inspect_date desc").Group("x.id").
  830. 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.created_time").Find(&inspection).Error
  831. return inspection, total, err
  832. }
  833. func GetInspectionDetail(patientid int64, date int64, orgid int64, projectid int64) (inspection []*models.Inspections, err error) {
  834. db := XTReadDB().Table("xt_inspection as x").Where("x.status =1")
  835. table := XTReadDB().Table("xt_inspection_reference as r")
  836. fmt.Print("table", table)
  837. if patientid > 0 {
  838. db = db.Where("x.patient_id = ?", patientid)
  839. }
  840. if date > 0 {
  841. db = db.Where("x.inspect_date = ?", date)
  842. }
  843. if orgid > 0 {
  844. db = db.Where("x.org_id = ?", orgid)
  845. }
  846. if projectid > 0 {
  847. db = db.Where("x.project_id = ?", projectid)
  848. }
  849. err = db.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.id = x.item_id ").Scan(&inspection).Error
  850. return inspection, err
  851. }
  852. func CreateFeedBack(feedback *models.XtPatientFeedback) error {
  853. err := XTWriteDB().Model(&feedback).Create(&feedback).Error
  854. return err
  855. }
  856. func DeleteInspection(date int64, orgid int64) error {
  857. err := XTWriteDB().Model(models.Inspection{}).Where("inspect_date = ? and org_id = ?", date, orgid).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  858. return err
  859. }
  860. func DeleteChildInspection(name string, date int64, orgid int64) error {
  861. err := XTWriteDB().Model(models.Inspection{}).Where("project_name = ? and inspect_date = ? and org_id = ?", name, date, orgid).Update(map[string]interface{}{"status": 0, "updated_time": time.Now().Unix()}).Error
  862. return err
  863. }
  864. func SaveMessage(orgid int64, appid int64, id int64, role *models.App_Role) error {
  865. err := UserWriteDB().Model(models.App_Role{}).Where("org_id = ? and app_id = ? and admin_user_id = ?", orgid, appid, id).Update(map[string]interface{}{"message": role.Message, "mtime": time.Now().Unix()}).Error
  866. return err
  867. }
  868. func SaveSex(id int64, orgid int64, appid int64, role *models.App_Role) error {
  869. err := UserWriteDB().Model(models.App_Role{}).Where("org_id = ? and app_id = ? and admin_user_id = ?", orgid, appid, id).Update(map[string]interface{}{"sex": role.Sex, "mtime": time.Now().Unix()}).Error
  870. return err
  871. }
  872. func SaveBirthday(id int64, orgid int64, appid int64, role *models.App_Role) error {
  873. err := UserWriteDB().Model(models.App_Role{}).Where("org_id = ? and app_id = ? and admin_user_id = ?", orgid, appid, id).Update(map[string]interface{}{"birthday": role.Birthday, "mtime": time.Now().Unix()}).Error
  874. return err
  875. }