SiZyDao.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. package thyyxxk.webserver.dao.his.medicalinsurance;
  2. import org.apache.ibatis.annotations.*;
  3. import thyyxxk.webserver.entity.medicalinsurance.inpatient.ZyPatientInfo;
  4. import thyyxxk.webserver.entity.medicalinsurance.inpatient.*;
  5. import java.util.Date;
  6. import java.util.List;
  7. /**
  8. * @description: 新医保住院mapper
  9. * @author: DingJie
  10. * @create: 2021-05-28 14:50:31
  11. **/
  12. @Mapper
  13. public interface SiZyDao {
  14. /**
  15. * 获取员工姓名
  16. *
  17. * @param staffId 员工5位长度唯一编码
  18. * @return 员工姓名
  19. */
  20. @Select("select rtrim(name) from a_employee_mi where code=#{staffId}")
  21. String selectStaffName(@Param("staffId") String staffId);
  22. /**
  23. * 获取入院医保诊断
  24. *
  25. * @param patNo 住院号
  26. * @param times 住院次数
  27. * @return 入院医保诊断
  28. */
  29. @Select("select psnNo=(select top 1 psn_no from t_si_pat_info where pat_no=#{patNo} and times=#{times}), " +
  30. "psnName=(select top 1 psn_name from t_si_pat_info where pat_no=#{patNo} and times=#{times}), " +
  31. "diag_type as diagType, " +
  32. "maindiagFlag=case when diag_no=1 then '1' else '0' end, " +
  33. "diag_no as diagSrtNo, " +
  34. "icd_code as diagCode, " +
  35. "icd_text as diagName, " +
  36. "diagDept=(select rtrim(name) from zd_unit_code where code=( " +
  37. "select small_dept from zy_actpatient where zy_actpatient.inpatient_no=zy_in_diag_yb.inpatient_no)), " +
  38. "diseDorNo=(select rtrim(isnull(yb_code,code)) from a_employee_mi where code=oper_id), " +
  39. "diseDorName=(select rtrim(name) from a_employee_mi where code=oper_id), " +
  40. "op_date as diagTime " +
  41. "from zy_in_diag_yb where inpatient_no=#{patNo} and admiss_times=#{times}")
  42. List<AdmDiseinfo> selectAdmDiags(@Param("patNo") String patNo, @Param("times") int times);
  43. /**
  44. * 获取入院基本信息
  45. *
  46. * @param inpatientNo 住院号
  47. * @param ledgerSn 账页号
  48. * @return 入院基本信息
  49. */
  50. @Select("select b.psn_no,b.insutype,b.psn_name, " +
  51. "isnull(a.yb_register_date,a.admiss_date) as begntime, " +
  52. "mdtrtCertType='02', " +
  53. "b.certno as mdtrtCertNo, " +
  54. "certType='1', " +
  55. "b.certno, " +
  56. "b.med_type, " +
  57. "rtrim(a.inpatient_no) as iptNo, " +
  58. "atddrNo=(select rtrim(isnull(yb_code,code)) from a_employee_mi where code=isnull(a.refer_physician,a.admiss_physician)), " +
  59. "chfpdrName=(select rtrim(name) from a_employee_mi where code=isnull(a.refer_physician,a.admiss_physician)), " +
  60. "rtrim(a.small_dept) as admDeptCodg, " +
  61. "admDeptName=(select rtrim(name) from zd_unit_code where code=a.small_dept), " +
  62. "rtrim(a.bed_no) as admBed " +
  63. "from zy_actpatient a, t_si_pat_info b " +
  64. "where a.inpatient_no=#{inpatientNo} and b.pat_no=a.inpatient_no " +
  65. "and b.times=a.admiss_times and b.ledger_sn=#{ledgerSn}")
  66. AdmMdtrtinfo selectAdmMdtrtinfo(@Param("inpatientNo") String inpatientNo,
  67. @Param("ledgerSn") int ledgerSn);
  68. /**
  69. * 获取当前患者最大账页号
  70. *
  71. * @param inpatientNo 住院号
  72. * @param admissTimes 住院次数
  73. * @return 账页号
  74. */
  75. @Select("select isnull(max(ledger_sn), isnull(min(ledger_sn), 1)) from zy_ledger_file where " +
  76. "inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes}")
  77. Integer selectMaxLedgerSn(@Param("inpatientNo") String inpatientNo,
  78. @Param("admissTimes") int admissTimes);
  79. /**
  80. * 撤销医保费用上传后,更改上传标志为0
  81. *
  82. * @param inpatientNo 住院号
  83. * @param admissTimes 住院次数
  84. * @param ledgerSn 账页号
  85. */
  86. @Update("update zy_detail_charge set trans_flag_yb=0 where inpatient_no=#{inpatientNo} and " +
  87. "admiss_times=#{admissTimes} and ledger_sn=#{ledgerSn} and isnull(trans_flag_yb,0)!=2")
  88. void revokeAllUploadFee(@Param("inpatientNo") String inpatientNo,
  89. @Param("admissTimes") int admissTimes,
  90. @Param("ledgerSn") int ledgerSn);
  91. @Update("<script>" +
  92. "update zy_detail_charge set trans_flag_yb=0 where inpatient_no=#{inpatientNo} and " +
  93. "admiss_times=#{admissTimes} and ledger_sn=#{ledgerSn} and isnull(trans_flag_yb,0)!=2 " +
  94. "and detail_sn in " +
  95. "<foreach collection='list' item='sn' separator=',' open='(' close=')'>" +
  96. "#{sn}</foreach>" +
  97. "</script>")
  98. void revokePartUploadFee(@Param("inpatientNo") String inpatientNo,
  99. @Param("admissTimes") int admissTimes,
  100. @Param("ledgerSn") int ledgerSn,
  101. @Param("list") List<Integer> list);
  102. /**
  103. * 更新患者医保报销金额
  104. *
  105. * @param fundPay 医保报销金额
  106. * @param inpatientNo 住院号
  107. * @param admissTimes 住院次数
  108. * @param ledgerSn 账页号
  109. */
  110. @Update("update zy_ledger_file set charge_yb=#{fundPay} where inpatient_no=#{inpatientNo} " +
  111. "and admiss_times=#{admissTimes} and ledger_sn=#{ledgerSn}")
  112. void updateFundPay(@Param("fundPay") String fundPay,
  113. @Param("inpatientNo") String inpatientNo,
  114. @Param("admissTimes") int admissTimes,
  115. @Param("ledgerSn") int ledgerSn);
  116. /**
  117. * 获取预结算参数
  118. *
  119. * @param patNo 住院号
  120. * @param times 住院次数
  121. * @param ledgerSn 账页号
  122. * @return 预结算参数
  123. */
  124. @Select("select psn_no,certno as mdtrtCertNo,certno,mdtrtCertType='02', " +
  125. "psn_cert_type,psn_type,mdtrt_id,insutype,insuplc_admdvs, " +
  126. "medfeeSumamt=(select sum(charge_fee) from zy_detail_charge b where b.inpatient_no=a.pat_no " +
  127. "and b.admiss_times=a.times and b.ledger_sn=a.ledger_sn and isnull(b.infant_flag,0)=0 " +
  128. "and trans_flag_yb!=2 and charge_date<=#{endtime}) " +
  129. "from t_si_pat_info a where pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
  130. PreSetlmt selectPreSetlmt(@Param("patNo") String patNo,
  131. @Param("times") int times,
  132. @Param("ledgerSn") int ledgerSn,
  133. @Param("endtime") String endtime);
  134. @Select("select psn_no,certno as mdtrtCertNo,certno,mdtrtCertType='02', " +
  135. "psn_cert_type,psn_type,mdtrt_id,insutype,insuplc_admdvs, " +
  136. "medfeeSumamt=(select sum(charge_fee) from zy_detail_charge b where b.inpatient_no=a.pat_no " +
  137. "and b.admiss_times=a.times and b.ledger_sn=a.ledger_sn and isnull(b.infant_flag,0)=0 " +
  138. "and trans_flag_yb!=2 and charge_date>=#{begntime} and charge_date<=#{endtime}) " +
  139. "from t_si_pat_info a where pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
  140. PreSetlmt selectPreSetlmtForMidSetl(@Param("patNo") String patNo,
  141. @Param("times") int times,
  142. @Param("ledgerSn") int ledgerSn,
  143. @Param("begntime") Date begntime,
  144. @Param("endtime") Date endtime);
  145. @Select("select a.mdtrt_id,a.psn_no,a.insutype,b.start_time as endtime,b.exec_unit as dscgDeptCodg, " +
  146. "dscgDeptName=(select rtrim(name) from zd_unit_code where code=b.exec_unit) " +
  147. "from t_si_pat_info a, yz_act_order b " +
  148. "where a.pat_no=#{patNo} and a.times=#{times} and a.ledger_sn=#{ledgerSn} " +
  149. "and a.pat_no=b.inpatient_no and a.times=b.admiss_times " +
  150. "and b.status_flag>'1' and isnull(b.group_no, '00')='00' and b.order_code in ('06026','06053','05973')")
  151. Dscginfo selectDscginfo(@Param("patNo") String patNo,
  152. @Param("times") int times,
  153. @Param("ledgerSn") int ledgerSn);
  154. @Select("select a.mdtrt_id,a.psn_no,a.insutype,b.small_dept as dscgDeptCodg, " +
  155. "dscgDeptName=(select rtrim(name) from zd_unit_code where code=b.small_dept) " +
  156. "from t_si_pat_info a, zy_actpatient b " +
  157. "where a.pat_no=#{patNo} and a.times=#{times} and a.ledger_sn=#{ledgerSn} " +
  158. "and a.pat_no=b.inpatient_no and a.times=b.admiss_times ")
  159. Dscginfo selectDscginfoForMidSetl(@Param("patNo") String patNo,
  160. @Param("times") int times,
  161. @Param("ledgerSn") int ledgerSn);
  162. @Select("select insuplc_admdvs from t_si_pat_info where pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
  163. String selectAdmdvs(@Param("patNo") String patNo,
  164. @Param("times") int times,
  165. @Param("ledgerSn") int ledgerSn);
  166. /**
  167. * 获取患者出院医保诊断
  168. *
  169. * @param patNo 住院号
  170. * @param times 住院次数
  171. * @param ledgerSn 账页号
  172. * @return 患者出院医保诊断
  173. */
  174. @Select("select b.mdtrt_id,b.psn_no, " +
  175. "a.si_diag_type as diagType, " +
  176. "maindiagFlag=case when a.dis_diag_no=1 then 1 else 0 end, " +
  177. "a.dis_diag_no as diagSrtNo, " +
  178. "rtrim(a.dis_diag) as diagCode, " +
  179. "rtrim(a.dis_diag_comment) as diagName, " +
  180. "diagDept=(select rtrim(dept_code) from a_employee_mi where code=a.op_id_code), " +
  181. "diseDorNo=(select rtrim(isnull(yb_code,code)) from a_employee_mi where code=op_id_code), " +
  182. "diseDorName=(select rtrim(name) from a_employee_mi where code=a.op_id_code), " +
  183. "a.op_diag_date as diagTime " +
  184. "from zy_dis_diag_yb a, t_si_pat_info b " +
  185. "where b.pat_no=#{patNo} and b.times=#{times} and b.ledger_sn=#{ledgerSn} " +
  186. "and a.inpatient_no=b.pat_no and a.admiss_times=b.times")
  187. List<SetlDiseinfo> selectSetlDises(@Param("patNo") String patNo,
  188. @Param("times") int times,
  189. @Param("ledgerSn") int ledgerSn);
  190. /**
  191. * 入院登记成功后更新患者医保信息
  192. *
  193. * @param p 患者基本信息
  194. */
  195. @Update("update t_si_pat_info set insuplc_admdvs=#{insuplcAdmdvs},psn_type=#{psnType},emp_name=#{empName}," +
  196. "mdtrt_id=#{mdtrtId},insutype=#{insutype},visit_datetime=#{ybRegisterDate},adm_reg_msgid=#{admRegMsgid} " +
  197. "where pat_no=#{inpatientNo} and times=#{admissTimes} and ledger_sn=#{ledgerSn}")
  198. void afterAdmissRegister(ZyPatientInfo p);
  199. @Update("update zy_actpatient set responce_type=#{restype},med_type=#{medtype} where inpatient_no=#{patNo} ;" +
  200. "update zy_ledger_file set responce_type=#{restype} where inpatient_no=#{patNo} " +
  201. "and admiss_times=#{times} and ledger_sn=#{sn}")
  202. void updateResponceType(@Param("restype") String restype,
  203. @Param("medtype") String medtype,
  204. @Param("patNo") String patNo,
  205. @Param("times") int times,
  206. @Param("sn") int sn);
  207. @Select("select code from zy_zd_responce_type where med_type=#{medtype} ")
  208. String selectResponceType(@Param("medtype") String medtype);
  209. @Update("update t_si_setlinfo set revoked=1 where pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
  210. void deleteSetlInfo(@Param("patNo") String patNo, @Param("times") int times, @Param("ledgerSn") int ledgerSn);
  211. @Update("delete from t_si_setldetail where pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
  212. void deleteSetlDetail(@Param("patNo") String patNo, @Param("times") int times, @Param("ledgerSn") int ledgerSn);
  213. @Update("update t_si_pat_info set rvk_setl_msgid=#{rvkSetlMsgid} where " +
  214. "pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
  215. void updateRvkSetlMsgid(@Param("patNo") String patNo,
  216. @Param("times") int times,
  217. @Param("ledgerSn") int ledgerSn,
  218. @Param("rvkSetlMsgid") String rvkSetlMsgid);
  219. @Delete("delete from t_si_setl_fee_detl where mdtrt_id=#{mdtrtId}")
  220. void deleteSiSetlFeeDetl(@Param("mdtrtId") String mdtrtId);
  221. @Delete("delete from zy_ledger_file_yb where inpatient_no=#{patNo} and admiss_times=#{times} and ledger_sn=#{ledgerSn}")
  222. void deleteZyLedgerFileYb(@Param("patNo") String patNo,
  223. @Param("times") int times,
  224. @Param("ledgerSn") int ledgerSn);
  225. @Delete("delete from zy_receipt where inpatient_no=#{patNo} and admiss_times=#{times} and ledger_sn=#{ledgerSn}")
  226. void deleteZyReceipt(@Param("patNo") String patNo,
  227. @Param("times") int times,
  228. @Param("ledgerSn") int ledgerSn);
  229. @Update("update zy_ledger_file set settle_type=0 where inpatient_no=#{patNo} and admiss_times=#{times} and ledger_sn=#{ledgerSn}")
  230. void updateSettleType(@Param("patNo") String patNo,
  231. @Param("times") int times,
  232. @Param("ledgerSn") int ledgerSn);
  233. @Update("update zy_detail_charge set charge_status=2 where charge_status=3 and " +
  234. "inpatient_no=#{patNo} and admiss_times=#{times} and ledger_sn=#{ledgerSn}")
  235. void updateChargeStatus(@Param("patNo") String patNo,
  236. @Param("times") int times,
  237. @Param("ledgerSn") int ledgerSn);
  238. }