his_charge_service.go 68KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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("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").
  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. }
  294. } else {
  295. keyword := "%" + keyword + "%"
  296. switch item_type {
  297. case 0:
  298. if time_type == "0" {
  299. err = readDb.Table("his_order_info as oi").Select("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").
  300. 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).
  301. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id ").
  302. Joins("left join xt_his_project project on p.project_id = project.id").
  303. Joins("left join xt_good_information good on p.project_id = good.id").
  304. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  305. 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
  306. } else {
  307. err = readDb.Table("his_order_info as oi").Select("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").
  308. 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).
  309. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id ").
  310. Joins("left join xt_his_project project on p.project_id = project.id").
  311. Joins("left join xt_good_information good on p.project_id = good.id").
  312. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  313. 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
  314. }
  315. break
  316. case 2:
  317. if time_type == "0" {
  318. err = readDb.Table("his_order_info as oi").Select("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").
  319. 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).
  320. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  321. Joins("left join xt_his_project project on p.project_id = project.id").
  322. Joins("left join xt_good_information good on p.project_id = good.id").
  323. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  324. 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
  325. } else {
  326. err = readDb.Table("his_order_info as oi").Select("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").
  327. 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).
  328. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 2").
  329. Joins("left join xt_his_project project on p.project_id = project.id").
  330. Joins("left join xt_good_information good on p.project_id = good.id").
  331. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  332. 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
  333. }
  334. break
  335. case 3:
  336. if time_type == "0" {
  337. err = readDb.Table("his_order_info as oi").Select("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").
  338. 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).
  339. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 3").
  340. Joins("left join xt_his_project project on p.project_id = project.id").
  341. Joins("left join xt_good_information good on p.project_id = good.id").
  342. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  343. 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
  344. } else {
  345. err = readDb.Table("his_order_info as oi").Select("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").
  346. 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).
  347. Joins(" JOIN his_prescription_project p ON oi.project_id = p.id and p.type = 3").
  348. Joins("left join xt_his_project project on p.project_id = project.id").
  349. Joins("left join xt_good_information good on p.project_id = good.id").
  350. Joins(" JOIN xt_patients pp on oi.patient_id = pp.id and pp.name like ?", keyword).
  351. 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
  352. }
  353. break
  354. }
  355. }
  356. return
  357. }
  358. func GetAllPatientChargeSettle(org_id int64, start_time int64, end_time int64, keyword string, item_type int64) (patients []*models.SettlePatient, err error) {
  359. if len(keyword) == 0 {
  360. switch item_type {
  361. case 0:
  362. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  363. return db.Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  364. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  365. break
  366. case 1:
  367. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  368. return db.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")
  369. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  370. break
  371. case 2:
  372. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  373. return db.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")
  374. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  375. break
  376. case 3:
  377. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  378. return db.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")
  379. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  380. break
  381. case 4:
  382. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  383. return db.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")
  384. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  385. break
  386. case 5:
  387. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  388. return db.Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2 ", start_time, end_time, org_id).Order("ctime")
  389. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  390. break
  391. case 6:
  392. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  393. return db.Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  394. }).Where("p.status = 1 AND p.user_org_id = ?", org_id).Group("id").Find(&patients).Error
  395. break
  396. }
  397. } else {
  398. keyword = "%" + keyword + "%"
  399. switch item_type {
  400. case 0:
  401. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  402. return db.Where("status = 1 AND ctime >= ? AND ctime <= ? AND user_org_id = ? AND order_status = 2", start_time, end_time, org_id).Order("ctime")
  403. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  404. break
  405. case 1:
  406. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  407. return db.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")
  408. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  409. break
  410. case 2:
  411. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  412. return db.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")
  413. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  414. break
  415. case 3:
  416. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  417. return db.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")
  418. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  419. break
  420. case 4:
  421. 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("HisChargeSettleOrder", func(db *gorm.DB) *gorm.DB {
  422. return db.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")
  423. }).Where("p.status = 1 AND p.user_org_id = ? AND p.name LIKE ?", org_id, keyword).Group("id").Find(&patients).Error
  424. break
  425. }
  426. }
  427. return
  428. }
  429. 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) {
  430. offset := (page - 1) * limit
  431. db := readDb.Model(&models.HisLabelPrintInfo{})
  432. db = db.Preload("HisProjectTeam", "status = 1")
  433. if is_print > 0 {
  434. db = db.Where("is_print = ?", is_print)
  435. }
  436. if len(keywors) > 0 {
  437. keywors = "%" + keywors + "%"
  438. db = db.Where("patient_name Like ?", keywors)
  439. }
  440. if tube_color > 0 {
  441. 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)
  442. //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)
  443. }
  444. 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
  445. return
  446. }
  447. 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) {
  448. offset := (page - 1) * limit
  449. db := readDb.Model(&models.HisLabelPrintInfo{})
  450. db = db.Preload("HisProjectTeam", "status = 1")
  451. if is_print > 0 {
  452. db = db.Where("is_print = ?", is_print)
  453. }
  454. if len(keywors) > 0 {
  455. keywors = "%" + keywors + "%"
  456. db = db.Where("patient_name Like ?", keywors)
  457. }
  458. if tube_color > 0 {
  459. //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)
  460. 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)
  461. }
  462. 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
  463. return
  464. }
  465. func GetLabelPrintListThree(user_org_id int64, record_time int64, is_print int64, keywors string, tube_color int64) (labels []*models.HisLabelPrintInfo, total int64, err error) {
  466. db := readDb.Model(&models.HisLabelPrintInfo{})
  467. db = db.Preload("HisProjectTeam", "status = 1")
  468. if is_print > 0 {
  469. db = db.Where("is_print = ?", is_print)
  470. }
  471. if len(keywors) > 0 {
  472. keywors = "%" + keywors + "%"
  473. db = db.Where("patient_name Like ?", keywors)
  474. }
  475. //if tube_color > 0 {
  476. // 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)
  477. //}
  478. 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
  479. return
  480. }
  481. //func GetLabelPrintListFour(user_org_id int64, record_time int64, is_print int64, keywors string, tube_color int64) (labels []*models.HisLabelPrintInfo, total int64, err error) {
  482. // db := readDb.Model(&models.HisLabelPrintInfo{})
  483. // db = db.Preload("HisProjectTeam", "status = 1")
  484. //
  485. // if is_print > 0 {
  486. // db = db.Where("is_print = ?", is_print)
  487. // }
  488. // if len(keywors) > 0 {
  489. // keywors = "%" + keywors + "%"
  490. // db = db.Where("patient_name Like ?", keywors)
  491. //
  492. // }
  493. // //if tube_color > 0 {
  494. // // //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)
  495. // // 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)
  496. // //}
  497. //
  498. // 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
  499. // return
  500. //}
  501. func GetLabelPrintInfo(id int64) (labels models.HisLabelPrintInfo, err error) {
  502. db := readDb.Model(&models.HisLabelPrintInfo{})
  503. err = db.Where("id = ?", id).First(&labels).Error
  504. return
  505. }
  506. func AddSigleFapiaoRecord(dealer *models.HisFapiaoRecord) (err error, record *models.HisFapiaoRecord) {
  507. err = writeDb.Create(&dealer).Error
  508. return err, dealer
  509. }
  510. func ModifyFapiao(mesick *models.HisFapiaoRecord) error {
  511. err := writeDb.Save(&mesick).Error
  512. return err
  513. }
  514. func UpdateFapiaoIsUse(org_id int64) {
  515. writeDb.Model(&models.HisFapiaoRecord{}).Where("user_org_id = ?", org_id).Updates(map[string]interface{}{"mtime": time.Now().Unix(), "is_use": 0})
  516. }
  517. func FindAllFapiaoList(orgId int64, page int64, limit int64) (list []*models.HisFapiaoRecord, total int64, err error) {
  518. offset := (page - 1) * limit
  519. db := readDb.Model(&models.HisFapiaoRecord{})
  520. db = db.Where("user_org_id = ? AND status = 1", orgId)
  521. err = db.Count(&total).Offset(offset).Limit(limit).Order("ctime desc").Find(&list).Error
  522. return
  523. }
  524. func DeleteFapiaoById(id int64) error {
  525. err := writeDb.Model(&models.HisFapiaoRecord{}).Where("id = ? AND status = 1", id).Updates(map[string]interface{}{"mtime": time.Now().Unix(), "status": 0}).Error
  526. return err
  527. }
  528. func FindFapiaoById(id int64) (*models.HisFapiaoRecord, error) {
  529. dealer := &models.HisFapiaoRecord{}
  530. err := readDb.Model(&models.HisFapiaoRecord{}).Where("id = ? AND status = 1", id).First(&dealer).Error
  531. return dealer, err
  532. }
  533. func FindFapiaoByIsUse(org_id int64) (models.HisFapiaoRecord, error) {
  534. record := models.HisFapiaoRecord{}
  535. err := readDb.Model(&models.HisFapiaoRecord{}).Where("user_org_id = ? AND status = 1 AND is_use = 1", org_id).First(&record).Error
  536. return record, err
  537. }
  538. func FindHisYidiClearRecord(org_id int64) (records []*models.HisYidiClearRecord, err error) {
  539. err = readDb.Model(&models.HisYidiClearRecord{}).Where("user_org_id = ? AND status = 1", org_id).Find(&records).Error
  540. return
  541. }
  542. func GetHisYidiClearRecordById(org_id int64, id int64) (record models.HisYidiClearRecord, err error) {
  543. err = readDb.Model(&models.HisYidiClearRecord{}).Where("user_org_id = ? AND status = 1 AND id = ?", org_id, id).First(&record).Error
  544. return
  545. }
  546. func GetAllPatientTwo(org_id int64) (patients []*models.ChargePatientTwo, err error) {
  547. err = readDb.Model(&models.ChargePatientTwo{}).Where("user_org_id = ? AND status = 1", org_id).Find(&patients).Error
  548. return
  549. }
  550. 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) {
  551. if len(keyword) == 0 {
  552. switch item_type {
  553. case 0:
  554. 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 {
  555. 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").
  556. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  557. return db.Preload("Drug", "status = 1").Where("status = 1")
  558. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  559. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  560. return db.Select("id,project_name,unit").Where("status = 1 ")
  561. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  562. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  563. }).Where("status = 1 ")
  564. })
  565. }).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)
  566. break
  567. case 1:
  568. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  569. 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").
  570. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  571. return db.Preload("Drug", "status = 1").Where("status = 1")
  572. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  573. }).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)
  574. break
  575. case 2:
  576. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  577. 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").
  578. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  579. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  580. return db.Select("id,project_name,unit").Where("status = 1 ")
  581. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  582. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  583. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  584. })
  585. }).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)
  586. break
  587. case 3:
  588. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  589. 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").
  590. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  591. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  592. return db.Select("id,project_name,unit").Where("status = 1 ")
  593. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  594. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  595. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  596. })
  597. }).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)
  598. break
  599. }
  600. } else {
  601. //keyword := "%" + keyword + "%"
  602. switch item_type {
  603. case 0:
  604. 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 {
  605. 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").
  606. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  607. return db.Preload("Drug", "status = 1").Where("status = 1")
  608. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  609. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  610. return db.Select("id,project_name,unit").Where("status = 1 ")
  611. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  612. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  613. }).Where("status = 1 ")
  614. })
  615. }).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)
  616. break
  617. case 1:
  618. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  619. 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").
  620. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  621. return db.Preload("Drug", "status = 1").Where("status = 1")
  622. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  623. }).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)
  624. break
  625. case 2:
  626. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  627. 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").
  628. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  629. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  630. return db.Select("id,project_name,unit").Where("status = 1 ")
  631. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  632. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  633. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  634. })
  635. }).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)
  636. break
  637. case 3:
  638. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  639. 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").
  640. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  641. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  642. return db.Select("id,project_name,unit").Where("status = 1 ")
  643. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  644. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  645. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  646. })
  647. }).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)
  648. break
  649. }
  650. }
  651. return
  652. }
  653. 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) {
  654. if len(keyword) == 0 {
  655. switch item_type {
  656. case 0:
  657. 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 {
  658. 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").
  659. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  660. return db.Preload("Drug", "status = 1").Where("status = 1")
  661. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  662. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  663. return db.Select("id,project_name,unit").Where("status = 1 ")
  664. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  665. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  666. }).Where("status = 1 ")
  667. })
  668. }).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)
  669. break
  670. case 1:
  671. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  672. 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").
  673. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  674. return db.Preload("Drug", "status = 1").Where("status = 1")
  675. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  676. }).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)
  677. break
  678. case 2:
  679. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  680. 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").
  681. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  682. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  683. return db.Select("id,project_name,unit").Where("status = 1 ")
  684. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  685. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  686. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  687. })
  688. }).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)
  689. break
  690. case 3:
  691. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  692. 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").
  693. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  694. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  695. return db.Select("id,project_name,unit").Where("status = 1 ")
  696. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  697. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  698. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  699. })
  700. }).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)
  701. break
  702. }
  703. } else {
  704. //keyword := "%" + keyword + "%"
  705. switch item_type {
  706. case 0:
  707. 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 {
  708. 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").
  709. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  710. return db.Preload("Drug", "status = 1").Where("status = 1")
  711. }).Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  712. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  713. return db.Select("id,project_name,unit").Where("status = 1 ")
  714. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  715. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  716. }).Where("status = 1 ")
  717. })
  718. }).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)
  719. break
  720. case 1:
  721. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  722. 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").
  723. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  724. return db.Preload("Drug", "status = 1").Where("status = 1")
  725. }).Where("status = 1 AND advice_id > 0 AND project_id = 0")
  726. }).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)
  727. break
  728. case 2:
  729. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  730. 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").
  731. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  732. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  733. return db.Select("id,project_name,unit").Where("status = 1 ")
  734. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  735. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  736. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  737. })
  738. }).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)
  739. break
  740. case 3:
  741. readDb2.Model(&models.HisChargeOrderTwo{}).Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  742. 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").
  743. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  744. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  745. return db.Select("id,project_name,unit").Where("status = 1 ")
  746. }).Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  747. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  748. }).Where("status = 1 AND advice_id = 0 AND project_id > 0 ")
  749. })
  750. }).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)
  751. break
  752. }
  753. }
  754. return
  755. }
  756. func GetAllChargeDetailsTwo(org_id int64, start_time int64, end_time int64) (patients []*models.HisChargeOrder, err error) {
  757. err = readDb2.Model(&models.HisChargeOrder{}).Preload("Patients", "status = 1").Preload("HisChargeOrderInfo", func(db *gorm.DB) *gorm.DB {
  758. 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").
  759. Preload("HisChargeDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
  760. return db.Preload("Drug", "status = 1").Where("status = 1")
  761. }).
  762. Preload("HisChargePrescriptionProject", func(db *gorm.DB) *gorm.DB {
  763. return db.Select("id,project_id,user_org_id,status,patient_id,record_date,count,type").
  764. Preload("HisChargeProject", func(db *gorm.DB) *gorm.DB {
  765. return db.Select("id,project_name,unit").Where("status = 1 ")
  766. }).
  767. Preload("HisChargeGoodInfo", func(db *gorm.DB) *gorm.DB {
  768. return db.Select("id,good_name,good_unit,specification_name").Where("status = 1 ")
  769. }).Where("status = 1 ")
  770. }).Where("status = 1")
  771. }).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
  772. return
  773. }
  774. func GetAllLisDataFor10191(org_id int64) (list []models.HisLabelPrintStatusInfo, err error) {
  775. err = readDb.Model(&models.HisLabelPrintStatusInfo{}).Preload("Patient", "status = 1").Where("user_org_id = ? AND status = 1 and apply_code = ''", org_id).Find(&list).Error
  776. return
  777. }