his_charge_service.go 111KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215
  1. package service
  2. import (
  3. "XT_New/models"
  4. "github.com/jinzhu/gorm"
  5. "time"
  6. )
  7. func GetAllPatientChargeDetails(org_id int64, start_time int64, end_time int64, keyword string, item_type int64) (patients []*models.NewChargePatient, err error) {
  8. if len(keyword) == 0 {
  9. switch item_type {
  10. case 0:
  11. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  12. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  13. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  14. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  15. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  16. return db.Preload("Drug", "status = 1").Where("status = 1")
  17. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  18. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  19. return db.Select("id,project_name,unit").Where("status = 1 ")
  20. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  21. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  22. }).Where("status = 1 ")
  23. }).Where("status = 1")
  24. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  25. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  26. break
  27. case 1:
  28. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  29. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  30. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  31. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Where("advice_id > 0 AND project_id = 0").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  32. return db.Preload("Drug", "status = 1").Where("status = 1")
  33. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  34. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  35. return db.Select("id,project_name,unit").Where("status = 1 ")
  36. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  37. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  38. }).Where("status = 1 ")
  39. }).Where("status = 1")
  40. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  41. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  42. break
  43. case 2:
  44. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  45. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  46. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  47. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Where("advice_id = 0 AND project_id > 0").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  48. return db.Preload("Drug", "status = 1").Where("status = 1")
  49. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  50. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  51. return db.Select("id,project_name,unit").Where("status = 1 ")
  52. }).Where("status = 1 ")
  53. }).Where("status = 1")
  54. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  55. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  56. break
  57. case 3:
  58. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  59. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  60. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  61. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Where("advice_id = 0 AND project_id > 0").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  62. return db.Preload("Drug", "status = 1").Where("status = 1")
  63. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  64. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  65. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  66. }).Where("status = 1 ")
  67. }).Where("status = 1")
  68. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  69. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  70. break
  71. }
  72. } else {
  73. keyword := "%" + keyword + "%"
  74. switch item_type {
  75. case 0:
  76. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  77. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  78. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  79. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  80. return db.Preload("Drug", "status = 1").Where("status = 1")
  81. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  82. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  83. return db.Select("id,project_name,unit").Where("status = 1 ")
  84. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  85. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  86. }).Where("status = 1 ")
  87. }).Where("status = 1")
  88. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  89. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  90. break
  91. case 1:
  92. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  93. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  94. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  95. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Where("advice_id > 0 AND project_id = 0").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  96. return db.Preload("Drug", "status = 1").Where("status = 1")
  97. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  98. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  99. return db.Select("id,project_name,unit").Where("status = 1 ")
  100. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  101. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  102. }).Where("status = 1 ")
  103. }).Where("status = 1")
  104. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  105. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  106. break
  107. case 2:
  108. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  109. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  110. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  111. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Where("advice_id = 0 AND project_id > 0").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  112. return db.Preload("Drug", "status = 1").Where("status = 1")
  113. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  114. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  115. return db.Select("id,project_name,unit").Where("status = 1 ")
  116. }).Where("status = 1 ")
  117. }).Where("status = 1")
  118. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  119. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  120. break
  121. case 3:
  122. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  123. return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  124. Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  125. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").Where("advice_id = 0 AND project_id > 0").Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  126. return db.Preload("Drug", "status = 1").Where("status = 1")
  127. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  128. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  129. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  130. }).Where("status = 1 ")
  131. }).Where("status = 1")
  132. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  133. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  134. break
  135. }
  136. }
  137. return
  138. }
  139. func GetNewAllPatientDrugChargeDetails(org_id int64, start_time_str string, end_time_str string, start_time int64, end_time int64, keyword string, item_type int64, time_type string) (patients []*models.NewChargeDetail, err error) {
  140. if len(keyword) == 0 {
  141. switch item_type {
  142. case 0:
  143. if time_type == "0" {
  144. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify, oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  145. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  146. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  147. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  148. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  149. Where("oi.advice_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  150. } else {
  151. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  152. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  153. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  154. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  155. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  156. Where("oi.advice_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  157. }
  158. break
  159. case 1:
  160. if time_type == "0" {
  161. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  162. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  163. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  164. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  165. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  166. Where("oi.advice_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  167. } else {
  168. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  169. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  170. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  171. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  172. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  173. Where("oi.advice_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  174. }
  175. break
  176. }
  177. } else {
  178. keyword := "%" + keyword + "%"
  179. switch item_type {
  180. case 0:
  181. if time_type == "0" {
  182. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  183. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  184. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  185. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  186. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  187. Where("oi.advice_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  188. } else {
  189. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  190. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  191. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  192. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  193. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  194. Where("oi.advice_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  195. }
  196. break
  197. case 1:
  198. if time_type == "0" {
  199. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  200. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  201. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  202. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  203. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  204. Where("oi.advice_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  205. } else {
  206. err = readDb.Table("his_order_info as oi").Select("-1000 as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,oi.advice_id as advice_id, 0 as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,drug.drug_name as item_name,drug.dose as dose,drug.dose_unit as dose_unit, drug.min_number as min_number,drug.min_unit as min_unit, drug.max_unit as max_unit,drug.id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  207. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  208. Joins(" JOIN his_doctor_advice_info a ON oi.advice_id = a.id").
  209. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  210. Joins(" JOIN xt_base_drug drug on a.drug_id = drug.id").
  211. Where("oi.advice_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  212. }
  213. break
  214. }
  215. }
  216. return
  217. }
  218. func GetNewAllPatientProjectAndGoodChargeDetails(org_id int64, start_time_str string, end_time_str string, start_time int64, end_time int64, keyword string, item_type int64, time_type string) (patients []*models.NewChargeDetail, err error) {
  219. if len(keyword) == 0 {
  220. switch item_type {
  221. case 0:
  222. if time_type == "0" {
  223. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  224. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  225. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id ").
  226. Joins(" left join xt_his_project project on p.project_id = project.id").
  227. Joins(" left join xt_good_information good on p.project_id = good.id").
  228. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  229. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  230. } else {
  231. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  232. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  233. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id ").
  234. Joins(" left join xt_his_project project on p.project_id = project.id").
  235. Joins(" left join xt_good_information good on p.project_id = good.id").
  236. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  237. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  238. }
  239. //err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeOrder", func(db *gorm.DB) *gorm.DB {
  240. // return db.Select("id,user_org_id,his_patient_id,settle_accounts_date,status,number,order_status,mdtrt_id,patient_id").
  241. // Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  242. // return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  243. // Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  244. // return db.Preload("Drug", "status = 1").Where("status = 1")
  245. // }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  246. // return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  247. // return db.Select("id,project_name,unit").Where("status = 1 ")
  248. // }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  249. // return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  250. // }).Where("status = 1 ")
  251. // }).Where("status = 1")
  252. // }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id)
  253. //}).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  254. break
  255. case 2:
  256. if time_type == "0" {
  257. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  258. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  259. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  260. Joins("left join xt_his_project project on p.project_id = project.id").
  261. Joins("left join xt_good_information good on p.project_id = good.id").
  262. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  263. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  264. } else {
  265. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  266. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  267. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  268. Joins("left join xt_his_project project on p.project_id = project.id").
  269. Joins("left join xt_good_information good on p.project_id = good.id").
  270. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  271. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  272. }
  273. break
  274. case 3:
  275. if time_type == "0" {
  276. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  277. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  278. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 3").
  279. Joins("left join xt_his_project project on p.project_id = project.id").
  280. Joins("left join xt_good_information good on p.project_id = good.id").
  281. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  282. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  283. } else {
  284. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  285. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  286. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 3").
  287. Joins("left join xt_his_project project on p.project_id = project.id").
  288. Joins("left join xt_good_information good on p.project_id = good.id").
  289. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  290. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  291. }
  292. break
  293. case 4:
  294. if time_type == "0" {
  295. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  296. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  297. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  298. Joins("left join xt_his_project project on p.project_id = project.id").
  299. Joins("left join xt_good_information good on p.project_id = good.id").
  300. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  301. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 3", org_id, start_time, end_time).Scan(&patients).Error
  302. } else {
  303. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  304. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  305. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  306. Joins("left join xt_his_project project on p.project_id = project.id").
  307. Joins("left join xt_good_information good on p.project_id = good.id").
  308. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  309. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 3 ", org_id, start_time, end_time).Scan(&patients).Error
  310. }
  311. break
  312. case 5:
  313. if time_type == "0" {
  314. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  315. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  316. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  317. Joins("left join xt_his_project project on p.project_id = project.id").
  318. Joins("left join xt_good_information good on p.project_id = good.id").
  319. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  320. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 2", org_id, start_time, end_time).Scan(&patients).Error
  321. } else {
  322. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  323. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  324. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  325. Joins("left join xt_his_project project on p.project_id = project.id").
  326. Joins("left join xt_good_information good on p.project_id = good.id").
  327. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  328. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 2", org_id, start_time, end_time).Scan(&patients).Error
  329. }
  330. break
  331. case 6:
  332. if time_type == "0" {
  333. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  334. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  335. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  336. Joins("left join xt_his_project project on p.project_id = project.id").
  337. Joins("left join xt_good_information good on p.project_id = good.id").
  338. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  339. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 6", org_id, start_time, end_time).Scan(&patients).Error
  340. } else {
  341. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  342. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  343. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  344. Joins("left join xt_his_project project on p.project_id = project.id").
  345. Joins("left join xt_good_information good on p.project_id = good.id").
  346. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  347. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 6", org_id, start_time, end_time).Scan(&patients).Error
  348. }
  349. break
  350. case 7:
  351. if time_type == "0" {
  352. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  353. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  354. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  355. Joins("left join xt_his_project project on p.project_id = project.id").
  356. Joins("left join xt_good_information good on p.project_id = good.id").
  357. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  358. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 11", org_id, start_time, end_time).Scan(&patients).Error
  359. } else {
  360. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  361. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1 ", start_time_str, end_time_str).
  362. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  363. Joins("left join xt_his_project project on p.project_id = project.id").
  364. Joins("left join xt_good_information good on p.project_id = good.id").
  365. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id").
  366. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 11", org_id, start_time, end_time).Scan(&patients).Error
  367. }
  368. break
  369. }
  370. } else {
  371. keyword := "%" + keyword + "%"
  372. switch item_type {
  373. case 0:
  374. if time_type == "0" {
  375. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  376. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  377. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id ").
  378. Joins("left join xt_his_project project on p.project_id = project.id").
  379. Joins("left join xt_good_information good on p.project_id = good.id").
  380. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  381. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  382. } else {
  383. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  384. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  385. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id ").
  386. Joins("left join xt_his_project project on p.project_id = project.id").
  387. Joins("left join xt_good_information good on p.project_id = good.id").
  388. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  389. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  390. }
  391. break
  392. case 2:
  393. if time_type == "0" {
  394. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  395. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  396. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  397. Joins("left join xt_his_project project on p.project_id = project.id").
  398. Joins("left join xt_good_information good on p.project_id = good.id").
  399. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  400. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  401. } else {
  402. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  403. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  404. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  405. Joins("left join xt_his_project project on p.project_id = project.id").
  406. Joins("left join xt_good_information good on p.project_id = good.id").
  407. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  408. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  409. }
  410. break
  411. case 3:
  412. if time_type == "0" {
  413. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  414. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  415. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 3").
  416. Joins("left join xt_his_project project on p.project_id = project.id").
  417. Joins("left join xt_good_information good on p.project_id = good.id").
  418. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  419. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  420. } else {
  421. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  422. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  423. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 3").
  424. Joins("left join xt_his_project project on p.project_id = project.id").
  425. Joins("left join xt_good_information good on p.project_id = good.id").
  426. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  427. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 ", org_id, start_time, end_time).Scan(&patients).Error
  428. }
  429. case 4:
  430. if time_type == "0" {
  431. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  432. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  433. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  434. Joins("left join xt_his_project project on p.project_id = project.id").
  435. Joins("left join xt_good_information good on p.project_id = good.id").
  436. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  437. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 3 ", org_id, start_time, end_time).Scan(&patients).Error
  438. } else {
  439. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  440. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  441. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  442. Joins("left join xt_his_project project on p.project_id = project.id").
  443. Joins("left join xt_good_information good on p.project_id = good.id").
  444. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  445. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 3 ", org_id, start_time, end_time).Scan(&patients).Error
  446. }
  447. case 5:
  448. if time_type == "0" {
  449. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  450. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  451. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  452. Joins("left join xt_his_project project on p.project_id = project.id").
  453. Joins("left join xt_good_information good on p.project_id = good.id").
  454. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  455. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 2", org_id, start_time, end_time).Scan(&patients).Error
  456. } else {
  457. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  458. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  459. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  460. Joins("left join xt_his_project project on p.project_id = project.id").
  461. Joins("left join xt_good_information good on p.project_id = good.id").
  462. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  463. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 2 ", org_id, start_time, end_time).Scan(&patients).Error
  464. }
  465. case 6:
  466. if time_type == "0" {
  467. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  468. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  469. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  470. Joins("left join xt_his_project project on p.project_id = project.id").
  471. Joins("left join xt_good_information good on p.project_id = good.id").
  472. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  473. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 10", org_id, start_time, end_time).Scan(&patients).Error
  474. } else {
  475. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  476. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  477. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  478. Joins("left join xt_his_project project on p.project_id = project.id").
  479. Joins("left join xt_good_information good on p.project_id = good.id").
  480. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  481. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 10", org_id, start_time, end_time).Scan(&patients).Error
  482. }
  483. case 7:
  484. if time_type == "0" {
  485. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  486. Joins("JOIN his_order o ON oi.order_number = o.number and FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  487. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  488. Joins("left join xt_his_project project on p.project_id = project.id").
  489. Joins("left join xt_good_information good on p.project_id = good.id").
  490. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  491. Where("oi.project_id > 0 and oi.user_org_id = ? and o.settle_accounts_date >= ? and o.settle_accounts_date <= ? and oi.status = 1 and project.cost_classify = 11", org_id, start_time, end_time).Scan(&patients).Error
  492. } else {
  493. err = readDb.Table("his_order_info as oi").Select("(case p.type when 2 then project.cost_classify when 3 then -100 END) as cost_classify,FROM_UNIXTIME(o.settle_accounts_date, '%Y-%m-%d %H:%i:%S') as pdate,0 as advice_id, oi.project_id as project_id, oi.patient_id as p_id,oi.cnt as cnt,oi.pric as pric,pp.name as p_name,p.type as p_type, (case p.type when 2 then project.project_name when 3 then good.good_name END) as item_name,(case p.type when 2 then '' when 3 then good.specification_name END) as specification_name, p.project_id as item_id,oi.det_item_fee_sumamt as det_item_fee_sumamt").
  494. Joins("JOIN his_order o ON oi.order_number = o.number and o.setl_time BETWEEN ? AND ? and o.order_status = 2 and o.status = 1", start_time_str, end_time_str).
  495. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  496. Joins("left join xt_his_project project on p.project_id = project.id").
  497. Joins("left join xt_good_information good on p.project_id = good.id").
  498. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  499. Where("oi.project_id > 0 and oi.user_org_id = ? and oi.upload_date >= ? and oi.upload_date <= ? and oi.status = 1 and project.cost_classify = 11", org_id, start_time, end_time).Scan(&patients).Error
  500. }
  501. break
  502. }
  503. }
  504. return
  505. }
  506. func GetAllPatientChargeSettle(org_id int64, start_time int64, end_time int64, keyword string, item_type int64, limit int64, page int64) (patients []*models.SettlePatient, total int64, err error) {
  507. offset := (page - 1) * limit
  508. if len(keyword) == 0 {
  509. switch item_type {
  510. case 0:
  511. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  512. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  513. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group(" p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  514. break
  515. case 1:
  516. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  517. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 1 ", start_time, end_time, org_id).Order("ctime")
  518. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group(" p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  519. break
  520. case 2:
  521. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  522. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 0", start_time, end_time, org_id).Order("ctime")
  523. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group(" p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  524. break
  525. case 3:
  526. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  527. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 14", start_time, end_time, org_id).Order("ctime")
  528. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  529. break
  530. case 4:
  531. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  532. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 11", start_time, end_time, org_id).Order("ctime")
  533. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  534. break
  535. case 5:
  536. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2 AND orders.insutype = 390", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  537. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 ", start_time, end_time, org_id).Order("ctime")
  538. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  539. break
  540. case 6:
  541. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2 AND orders.insutype = 310 ", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  542. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  543. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("p.id").Count(&total).Offset(offset).Limit(limit).Find(&patients).Error
  544. break
  545. }
  546. } else {
  547. keyword = "%" + keyword + "%"
  548. switch item_type {
  549. case 0:
  550. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  551. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  552. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Count(&total).Offset(offset).Limit(limit).Group("p.id").Find(&patients).Error
  553. break
  554. case 1:
  555. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  556. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 1 ", start_time, end_time, org_id).Order("ctime")
  557. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Count(&total).Offset(offset).Limit(limit).Group("p.id").Find(&patients).Error
  558. break
  559. case 2:
  560. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  561. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 0", start_time, end_time, org_id).Order("ctime")
  562. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Count(&total).Offset(offset).Limit(limit).Group("p.id").Find(&patients).Error
  563. break
  564. case 3:
  565. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  566. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 14", start_time, end_time, org_id).Order("ctime")
  567. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Count(&total).Offset(offset).Limit(limit).Group("p.id").Find(&patients).Error
  568. break
  569. case 4:
  570. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  571. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 11", start_time, end_time, org_id).Order("ctime")
  572. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Count(&total).Offset(offset).Limit(limit).Group("p.id").Find(&patients).Error
  573. break
  574. }
  575. }
  576. return
  577. }
  578. func GetAllPatientChargeSettleTwo(org_id int64, start_time int64, end_time int64, keyword string, item_type int64) (patients []*models.SettlePatient, err error) {
  579. if len(keyword) == 0 {
  580. switch item_type {
  581. case 0:
  582. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  583. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  584. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  585. break
  586. case 1:
  587. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  588. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 1 ", start_time, end_time, org_id).Order("ctime")
  589. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  590. break
  591. case 2:
  592. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  593. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 0", start_time, end_time, org_id).Order("ctime")
  594. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  595. break
  596. case 3:
  597. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  598. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 14", start_time, end_time, org_id).Order("ctime")
  599. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  600. break
  601. case 4:
  602. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  603. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 11", start_time, end_time, org_id).Order("ctime")
  604. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  605. break
  606. case 5:
  607. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2 AND orders.insutype = 390 and is_medicine_insurance = 1", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  608. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 and is_medicine_insurance = 1", start_time, end_time, org_id).Order("ctime")
  609. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  610. break
  611. case 6:
  612. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2 AND orders.insutype = 310 and is_medicine_insurance = 1", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  613. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 and is_medicine_insurance = 1", start_time, end_time, org_id).Order("ctime")
  614. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  615. break
  616. }
  617. } else {
  618. keyword = "%" + keyword + "%"
  619. switch item_type {
  620. case 0:
  621. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  622. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  623. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  624. break
  625. case 1:
  626. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  627. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 1 ", start_time, end_time, org_id).Order("ctime")
  628. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  629. break
  630. case 2:
  631. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  632. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND is_medicine_insurance = 0", start_time, end_time, org_id).Order("ctime")
  633. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  634. break
  635. case 3:
  636. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  637. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 14", start_time, end_time, org_id).Order("ctime")
  638. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  639. break
  640. case 4:
  641. err = readDb2.Table("xt_patients as p").Select("p.id,p.user_org_id,p.name,p.lapseto,p.status,p.id_card_no").Joins("JOIN his_order AS orders ON orders.patient_id = p.id AND orders.status = 1 AND orders.ctime >= ? AND orders.ctime <= ? AND orders.user_org_id = ? AND orders.order_status = 2", start_time, end_time, org_id).Preload("TempDialysisOrder", "status = 1 and dialysis_date >= ? and dialysis_date <= ?", start_time, end_time).Preload("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  642. return db.Preload("OrderSchedule", "status = 1 and user_org_id = ?", org_id).Preload("OrderHisPatient", "status = 1").Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND med_type = 11", start_time, end_time, org_id).Order("ctime")
  643. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  644. break
  645. }
  646. }
  647. return
  648. }
  649. func GetLabelPrintList(page int64, limit int64, user_org_id int64, record_time int64, is_print int64, keywors string, tube_color int64) (labels []*models.HisLabelPrintInfo, total int64, err error) {
  650. offset := (page - 1) * limit
  651. db := readDb.Model(&models.HisLabelPrintInfo{})
  652. db = db.Preload("HisProjectTeam", "status = 1")
  653. if is_print > 0 {
  654. db = db.Where("is_print = ?", is_print)
  655. }
  656. if len(keywors) > 0 {
  657. keywors = "%" + keywors + "%"
  658. db = db.Where("patient_name Like ?", keywors)
  659. }
  660. if tube_color > 0 {
  661. db = db.Joins("Right join xt_his_project_team as team on team.id = his_label_print_info.item_id AND his_label_print_info.item_id <> 0 and team.status = 1 and team.tube_color = ?", tube_color)
  662. //db = db.Joins("Right join xt_his_project as pro on pro.id = his_label_print_info.project_id AND his_label_print_info.item_id = 0 and his_label_print_info.project_id > 0 and pro.status = 1 and pro.tube_color = ?",tube_color)
  663. }
  664. err = db.Where("his_label_print_info.user_org_id = ? AND his_label_print_info.record_date = ? AND his_label_print_info.status = 1 ", user_org_id, record_time).Count(&total).Offset(offset).Limit(limit).Find(&labels).Error
  665. return
  666. }
  667. func GetLabelPrintListTwo(page int64, limit int64, user_org_id int64, record_time int64, is_print int64, keywors string, tube_color int64) (labels []*models.HisLabelPrintInfo, total int64, err error) {
  668. offset := (page - 1) * limit
  669. db := readDb.Model(&models.HisLabelPrintInfo{})
  670. db = db.Preload("HisProjectTeam", "status = 1")
  671. if is_print > 0 {
  672. db = db.Where("is_print = ?", is_print)
  673. }
  674. if len(keywors) > 0 {
  675. keywors = "%" + keywors + "%"
  676. db = db.Where("patient_name Like ?", keywors)
  677. }
  678. if tube_color > 0 {
  679. //db = db.Joins("Right join xt_his_project_team as team on team.id = his_label_print_info.item_id AND his_label_print_info.item_id <> 0 and team.status = 1 and team.tube_color = ?",tube_color)
  680. db = db.Joins("Right join xt_his_project as pro on pro.id = his_label_print_info.project_id AND his_label_print_info.item_id = 0 and his_label_print_info.project_id > 0 and pro.status = 1 and pro.tube_color = ?", tube_color)
  681. }
  682. err = db.Where("his_label_print_info.user_org_id = ? AND his_label_print_info.record_date = ? AND his_label_print_info.status = 1 ", user_org_id, record_time).Count(&total).Offset(offset).Limit(limit).Find(&labels).Error
  683. return
  684. }
  685. func GetLabelPrintListThree(user_org_id int64, record_time int64, is_print int64, keywors string, tube_color int64) (labels []*models.HisLabelPrintInfo, total int64, err error) {
  686. db := readDb.Model(&models.HisLabelPrintInfo{})
  687. db = db.Preload("HisProjectTeam", "status = 1")
  688. if is_print > 0 {
  689. db = db.Where("is_print = ?", is_print)
  690. }
  691. if len(keywors) > 0 {
  692. keywors = "%" + keywors + "%"
  693. db = db.Where("patient_name Like ?", keywors)
  694. }
  695. //if tube_color > 0 {
  696. // db = db.Joins("Right join xt_his_project_team as team on team.id = his_label_print_info.item_id AND his_label_print_info.item_id <> 0 and team.status = 1 and team.tube_color = ?", tube_color)
  697. //}
  698. err = db.Where("his_label_print_info.user_org_id = ? AND his_label_print_info.record_date = ? AND his_label_print_info.status = 1 ", user_org_id, record_time).Count(&total).Find(&labels).Error
  699. return
  700. }
  701. //func GetLabelPrintListFour(user_org_id int64, record_time int64, is_print int64, keywors string, tube_color int64) (labels []*models.HisLabelPrintInfo, total int64, err error) {
  702. // db := readDb.Model(&models.HisLabelPrintInfo{})
  703. // db = db.Preload("HisProjectTeam", "status = 1")
  704. //
  705. // if is_print > 0 {
  706. // db = db.Where("is_print = ?", is_print)
  707. // }
  708. // if len(keywors) > 0 {
  709. // keywors = "%" + keywors + "%"
  710. // db = db.Where("patient_name Like ?", keywors)
  711. //
  712. // }
  713. // //if tube_color > 0 {
  714. // // //db = db.Joins("Right join xt_his_project_team as team on team.id = his_label_print_info.item_id AND his_label_print_info.item_id <> 0 and team.status = 1 and team.tube_color = ?",tube_color)
  715. // // db = db.Joins("Right join xt_his_project as pro on pro.id = his_label_print_info.project_id AND his_label_print_info.item_id = 0 and his_label_print_info.project_id > 0 and pro.status = 1 and pro.tube_color = ?", tube_color)
  716. // //}
  717. //
  718. // err = db.Where("his_label_print_info.user_org_id = ? AND his_label_print_info.record_date = ? AND his_label_print_info.status = 1 ", user_org_id, record_time).Count(&total).Find(&labels).Error
  719. // return
  720. //}
  721. func GetLabelPrintInfo(id int64) (labels models.HisLabelPrintInfo, err error) {
  722. db := readDb.Model(&models.HisLabelPrintInfo{})
  723. err = db.Where("id = ?", id).First(&labels).Error
  724. return
  725. }
  726. func AddSigleFapiaoRecord(dealer *models.HisFapiaoRecord) (err error, record *models.HisFapiaoRecord) {
  727. err = writeDb.Create(&dealer).Error
  728. return err, dealer
  729. }
  730. func ModifyFapiao(mesick *models.HisFapiaoRecord) error {
  731. err := writeDb.Save(&mesick).Error
  732. return err
  733. }
  734. func UpdateFapiaoIsUse(org_id int64) {
  735. writeDb.Model(&models.HisFapiaoRecord{}).Where("user_org_id = ?", org_id).Updates(map[string]interface{}{"mtime": time.Now().Unix(), "is_use": 0})
  736. }
  737. func FindAllFapiaoList(orgId int64, page int64, limit int64) (list []*models.HisFapiaoRecord, total int64, err error) {
  738. offset := (page - 1) * limit
  739. db := readDb.Model(&models.HisFapiaoRecord{})
  740. db = db.Where("user_org_id = ? AND status = 1", orgId)
  741. err = db.Count(&total).Offset(offset).Limit(limit).Order("ctime desc").Find(&list).Error
  742. return
  743. }
  744. func DeleteFapiaoById(id int64) error {
  745. err := writeDb.Model(&models.HisFapiaoRecord{}).Where("id = ? AND status = 1", id).Updates(map[string]interface{}{"mtime": time.Now().Unix(), "status": 0}).Error
  746. return err
  747. }
  748. func FindFapiaoById(id int64) (*models.HisFapiaoRecord, error) {
  749. dealer := &models.HisFapiaoRecord{}
  750. err := readDb.Model(&models.HisFapiaoRecord{}).Where("id = ? AND status = 1", id).First(&dealer).Error
  751. return dealer, err
  752. }
  753. func FindFapiaoByIsUse(org_id int64) (models.HisFapiaoRecord, error) {
  754. record := models.HisFapiaoRecord{}
  755. err := readDb.Model(&models.HisFapiaoRecord{}).Where("user_org_id = ? AND status = 1 AND is_use = 1", org_id).First(&record).Error
  756. return record, err
  757. }
  758. func FindHisYidiClearRecord(org_id int64) (records []*models.HisYidiClearRecord, err error) {
  759. err = readDb.Model(&models.HisYidiClearRecord{}).Where("user_org_id = ? AND status = 1", org_id).Find(&records).Error
  760. return
  761. }
  762. func GetHisYidiClearRecordById(org_id int64, id int64) (record models.HisYidiClearRecord, err error) {
  763. err = readDb.Model(&models.HisYidiClearRecord{}).Where("user_org_id = ? AND status = 1 AND id = ?", org_id, id).First(&record).Error
  764. return
  765. }
  766. func GetAllPatientTwo(org_id int64) (patients []*models.ChargePatientTwo, err error) {
  767. err = readDb.Model(&models.ChargePatientTwo{}).Where("user_org_id = ? AND status = 1", org_id).Find(&patients).Error
  768. return
  769. }
  770. func GetPatientChargeDetails(patient_id int64, org_id int64, start_time int64, end_time int64, keyword string, item_type int64, settle_type int64) (patients []*models.HisChargeOrderTwo, err error) {
  771. if len(keyword) == 0 {
  772. switch item_type {
  773. case 0:
  774. readDb2.Model(&models.HisChargeOrderTwo{}).Joins("join his_patient his on his.number = his_order.mdtrt_id AND his.patient_id = ").Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  775. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  776. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  777. return db.Preload("Drug", "status = 1").Where("status = 1")
  778. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  779. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  780. return db.Select("id,project_name,unit").Where("status = 1 ")
  781. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  782. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  783. }).Where("status = 1 ")
  784. })
  785. }).Where("status = 1 AND settle_accounts_date >= ? AND settle_accounts_date <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  786. break
  787. case 1:
  788. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  789. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  790. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  791. return db.Preload("Drug", "status = 1").Where("status = 1")
  792. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  793. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  794. break
  795. case 2:
  796. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  797. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  798. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  799. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  800. return db.Select("id,project_name,unit").Where("status = 1 ")
  801. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  802. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  803. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  804. })
  805. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  806. break
  807. case 3:
  808. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  809. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  810. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  811. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  812. return db.Select("id,project_name,unit").Where("status = 1 ")
  813. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  814. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  815. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  816. })
  817. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  818. break
  819. }
  820. } else {
  821. //keyword := "%" + keyword + "%"
  822. switch item_type {
  823. case 0:
  824. readDb2.Model(&models.HisChargeOrderTwo{}).Joins("join his_patient his on his.number = his_order.mdtrt_id AND his.patient_id = ").Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  825. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  826. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  827. return db.Preload("Drug", "status = 1").Where("status = 1")
  828. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  829. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  830. return db.Select("id,project_name,unit").Where("status = 1 ")
  831. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  832. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  833. }).Where("status = 1 ")
  834. })
  835. }).Where("status = 1 AND settle_accounts_date >= ? AND settle_accounts_date <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  836. break
  837. case 1:
  838. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  839. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  840. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  841. return db.Preload("Drug", "status = 1").Where("status = 1")
  842. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  843. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  844. break
  845. case 2:
  846. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  847. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  848. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  849. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  850. return db.Select("id,project_name,unit").Where("status = 1 ")
  851. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  852. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  853. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  854. })
  855. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  856. break
  857. case 3:
  858. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  859. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  860. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  861. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  862. return db.Select("id,project_name,unit").Where("status = 1 ")
  863. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  864. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  865. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  866. })
  867. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  868. break
  869. }
  870. }
  871. return
  872. }
  873. func GetPatientGather(patient_id int64, org_id int64, start_time int64, end_time int64, keyword string, item_type int64, settle_type int64) (patients []*models.HisChargeOrderTwo, err error) {
  874. if len(keyword) == 0 {
  875. switch item_type {
  876. case 0:
  877. readDb2.Model(&models.HisChargeOrderTwo{}).Joins("join his_patient his on his.number = his_order.mdtrt_id AND his.patient_id = ").Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  878. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  879. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  880. return db.Preload("Drug", "status = 1").Where("status = 1")
  881. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  882. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  883. return db.Select("id,project_name,unit").Where("status = 1 ")
  884. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  885. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  886. }).Where("status = 1 ")
  887. })
  888. }).Where("status = 1 AND settle_accounts_date >= ? AND settle_accounts_date <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  889. break
  890. case 1:
  891. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  892. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  893. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  894. return db.Preload("Drug", "status = 1").Where("status = 1")
  895. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  896. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  897. break
  898. case 2:
  899. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  900. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  901. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  902. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  903. return db.Select("id,project_name,unit").Where("status = 1 ")
  904. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  905. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  906. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  907. })
  908. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  909. break
  910. case 3:
  911. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  912. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  913. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  914. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  915. return db.Select("id,project_name,unit").Where("status = 1 ")
  916. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  917. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  918. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  919. })
  920. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  921. break
  922. }
  923. } else {
  924. //keyword := "%" + keyword + "%"
  925. switch item_type {
  926. case 0:
  927. readDb2.Model(&models.HisChargeOrderTwo{}).Joins("join his_patient his on his.number = his_order.mdtrt_id AND his.patient_id = ").Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  928. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  929. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  930. return db.Preload("Drug", "status = 1").Where("status = 1")
  931. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  932. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  933. return db.Select("id,project_name,unit").Where("status = 1 ")
  934. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  935. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  936. }).Where("status = 1 ")
  937. })
  938. }).Where("status = 1 AND settle_accounts_date >= ? AND settle_accounts_date <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  939. break
  940. case 1:
  941. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  942. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  943. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  944. return db.Preload("Drug", "status = 1").Where("status = 1")
  945. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  946. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type=?", start_time, end_time, org_id, patient_id, settle_type)
  947. break
  948. case 2:
  949. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  950. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  951. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  952. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  953. return db.Select("id,project_name,unit").Where("status = 1 ")
  954. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  955. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  956. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  957. })
  958. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  959. break
  960. case 3:
  961. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  962. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  963. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  964. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  965. return db.Select("id,project_name,unit").Where("status = 1 ")
  966. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  967. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  968. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  969. })
  970. }).Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 AND patient_id = ? AND p_type = ?", start_time, end_time, org_id, patient_id, settle_type)
  971. break
  972. }
  973. }
  974. return
  975. }
  976. func GetAllChargeDetailsTwo(org_id int64, start_time int64, end_time int64) (patients []*models.HisChargeOrder, err error) {
  977. err = readDb2.Model(&models.HisChargeOrder{}).Preload("Patients", "status = 1").Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  978. return db.Select("id,order_number,advice_id,det_item_fee_sumamt,cnt,pric,med_chrgitm_type,status,chld_medc_flag,chrgitm_lv,user_org_id,project_id,type").
  979. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  980. return db.Preload("Drug", "status = 1").Where("status = 1")
  981. }).
  982. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  983. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").
  984. Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  985. return db.Select("id,project_name,unit").Where("status = 1 ")
  986. }).
  987. Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  988. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  989. }).Where("status = 1 ")
  990. }).Where("status = 1")
  991. }).Where("status = 1 AND user_org_id = ? AND settle_accounts_date >= ? AND settle_accounts_date <= ? AND order_status = 2", org_id, start_time, end_time).Group("id").Find(&patients).Error
  992. return
  993. }
  994. func GetAllLisDataFor10191(org_id int64) (list []models.HisLabelPrintStatusInfo, err error) {
  995. err = readDb.Model(&models.HisLabelPrintStatusInfo{}).Preload("Patient", "status = 1").Where("user_org_id = ? AND status = 1 and apply_code = ''", org_id).Find(&list).Error
  996. return
  997. }
  998. func GetHisPrescriptionDrugDetails(org_id int64, start_time_str string, end_time_str string, start_time int64, end_time int64, patient_id int64, item_type int64) (patients []*models.NewPDetail, err error) {
  999. db := readDb.Table("his_doctor_advice_info as oi").Select("pp.id_card_no as cert_no, oo.mdtrt_id as mdtrt_id,oi.advice_doctor as advice_doctor,oo.setl_time as setl_time, drug.id as item_id,1 as p_type,oi.id as advice_id,0 as project_id,pp.id as p_id,pp.name as p_name,FROM_UNIXTIME(o.`record_date`, '%Y-%m-%d') as record_date, drug.drug_type as item_cost_type,o.med_type as med_type,oi.`prescribing_number` as cnt,oi.`price` as pric,drug.drug_name as item_name,CONCAT(drug.dose, \"\", drug.dose_unit, \"*\", drug.min_number, \"\", drug.min_unit, \"/\", drug.max_unit) as spec,o.order_status as order_status,oi.`prescribing_number_unit` as unit").
  1000. Joins("JOIN xt_base_drug drug ON oi.drug_id = drug.id ")
  1001. if patient_id == 0 {
  1002. db = db.Joins("JOIN xt_patients pp on oi.patient_id = pp.id")
  1003. } else {
  1004. db = db.Joins("JOIN xt_patients pp on oi.patient_id = pp.id and pp.id = ?", patient_id)
  1005. }
  1006. if item_type == 0 {
  1007. db = db.Joins("JOIN `his_prescription` o ON oi.`prescription_id` = o.id and FROM_UNIXTIME(o.record_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.status = 1", start_time_str, end_time_str)
  1008. } else {
  1009. if item_type == 2 {
  1010. db = db.Joins("JOIN `his_prescription` o ON oi.`prescription_id` = o.id and FROM_UNIXTIME(o.record_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.status = 1 and o.order_status = 2", start_time_str, end_time_str)
  1011. } else {
  1012. db = db.Joins("JOIN `his_prescription` o ON oi.`prescription_id` = o.id and FROM_UNIXTIME(o.record_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.status = 1 and o.order_status <> 2", start_time_str, end_time_str)
  1013. }
  1014. }
  1015. db = db.Joins("left JOIN `his_order` oo on oo.`number` = o.`batch_number` and oo.user_org_id = ?", org_id)
  1016. err = db.Where(" oi.user_org_id = ? AND o.record_date >= ? AND o.record_date <= ? AND oi.status = 1", org_id, start_time, end_time).Group("oi.id").Scan(&patients).Error
  1017. return
  1018. }
  1019. func GetHisPrescriptionProjectDetails(org_id int64, start_time_str string, end_time_str string, start_time int64, end_time int64, patient_id int64, item_type int64) (patients []*models.NewPDetail, err error) {
  1020. db := readDb.Table("`his_prescription_project` AS oi").Select("pp.id_card_no as cert_no,oo.mdtrt_id as mdtrt_id,oi.doctor as advice_doctor,oo.setl_time as setl_time,(case oi.type\n\t\t\tWHEN 2 THEN\n\t\t\tproject.id\n\t\t\tWHEN 3 THEN\n\t\t\tgood.id END) AS item_id,oi.type as p_type,oi.id as project_id,0 as advice_id,pp.id as p_id,(case oi.type\n\t\t\tWHEN 2 THEN\n\t\t\tproject.`cost_classify`\n\t\t\tWHEN 3 THEN\n\t\t\t-100 END) AS item_cost_type,\n\t o.med_type as med_type,\n\t oi.count AS cnt,\n \t oi.price AS pric,\n \t pp.name AS p_name, \n \tFROM_UNIXTIME(o.`record_date`,'%Y-%m-%d') as record_date,\n\t\t (case oi.type\n\tWHEN 2 THEN\n\tproject.project_name\n\tWHEN 3 THEN\n\tgood.good_name END) AS item_name,\n\t\t (case oi.type\n\tWHEN 2 THEN\n\t\"\"\n\tWHEN 3 THEN\n\tgood.`specification_name` END) AS spec,\n\toi.`unit` as unit,o.order_status as order_status")
  1021. db = db.Joins("LEFT JOIN xt_his_project project\n\tON oi.project_id = project.id").
  1022. Joins("LEFT JOIN xt_good_information good\n\tON oi.project_id = good.id\n")
  1023. //Joins("JOIN his_order ord ON o.batch_number = ord.number ")
  1024. if patient_id > 0 {
  1025. db = db.Joins("JOIN xt_patients pp on oi.patient_id = pp.id and pp.id = ?", patient_id)
  1026. } else {
  1027. db = db.Joins("JOIN xt_patients pp on oi.patient_id = pp.id")
  1028. }
  1029. if item_type > 0 {
  1030. if item_type == 2 {
  1031. db = db.Joins("JOIN `his_prescription` o ON oi.`prescription_id` = o.id and FROM_UNIXTIME(o.record_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.status = 1 and o.order_status = 2", start_time_str, end_time_str)
  1032. } else {
  1033. db = db.Joins("JOIN `his_prescription` o ON oi.`prescription_id` = o.id and FROM_UNIXTIME(o.record_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.status = 1 and o.order_status <> 2", start_time_str, end_time_str)
  1034. }
  1035. } else {
  1036. db = db.Joins("JOIN `his_prescription` o ON oi.`prescription_id` = o.id and FROM_UNIXTIME(o.record_date, '%Y-%m-%d %H:%i:%S') BETWEEN ? AND ? and o.status = 1", start_time_str, end_time_str)
  1037. }
  1038. db = db.Joins("left JOIN `his_order` oo on oo.`number` = o.`batch_number` and oo.user_org_id = ?", org_id)
  1039. err = db.Where(" oi.user_org_id = ? AND o.record_date >= ? AND o.record_date <= ? AND oi.status = 1", org_id, start_time, end_time).Group("oi.id").Scan(&patients).Error
  1040. return
  1041. }
  1042. func GetHisPreOrderByPatient(patient_id int64, org_id int64, record_date int64) (total int64, err error) {
  1043. err = readDb.Model(&models.HisOrder{}).Where("order_status = 1 and status = 1 and user_org_id = ? and patient_id = ? and settle_account_date = ?", org_id, patient_id, record_date).Count(&total).Error
  1044. return
  1045. }