- fee_out_account
--门诊收费结算总表,一次收费,一条记录- fee_out_invoice
--门诊收费发票项目表,门诊费用明细表- fee_out_drug
--门诊药品明细表- fee_out_treat
--门诊治疗项目明细表- fee_out_lis
--门诊检验项目明细表- fee_registered_detail
--挂号项目明细表- fee_out_mater
--门诊材料项目明细表
- 表间关联 费用总表与发票表以及明细表间均以门诊收费流水号account_no连接 药品明细对应药品字典. 治疗,检验,挂号明细对应材料字典
- fee_out_account.account_no = fee_out_invoice.account_no
- fee_out_account.account_no = fee_out_drug.account_no
- fee_out_account.account_no = fee_out_mater.account_no
- fee_out_account.account_no = fee_registered_detail.account_no
- 字典类
- fee_out_drug.code = dict_drug_union.code
- fee_out_treat.fee_code = dict_fee_union.code
- fee_out_list.fee_code = dict_fee_union.code
- fee_registered_detail.fee_code = dict_fee_union.code
- fee_out_mater.mater_code = dict_mater_union.code
- 门诊收费流程
- 门诊医师开医嘱
- 在费用明细表中产生记录
- 根据门诊号查询费用明细记录
- HIS调用医保接口程序进行医保结算(ybgl_gaoutaccount, fee_out_ybdetail)
- HIS调用第三方接口(微信 支付宝)扣款
- HIS门诊结算
a. 产生门诊收费结算总表 fee_out_account 记录产生发票记录 fee_out_invoice
b. 标记明细收费表中的收款流水号
C 收费时间
d 发票明细ID
e HIS调用医保接口标记医保已收完
f HIS调用标记第三方支付已收完
g 打印发票
三. 门诊医保结算基本流程
- 基本流程: 读医保卡-->预结算-->结算
- 预结算和结算过程具体要参考医保说明文档,一般情况下预结算和结算传入的入参一致. 只是调用方式不一样而已.
- 多步方式 门诊登记: 传入医保业务类型 普通门诊 慢性病 疾病等 发送数据明细: 根据医保对照表找到医保项目代码,形成医保待收费明细 预结算 结算
- 一步方式: 登记及结算方式一起执行(一个接口把登记信息和费用明细发送给医保).
- 医保结算后,要在门诊医保登记表和门诊医保结算结果表 fee_out_ybdetail 分别写入院登记信息和返回的医保结算信息.
四.门诊医保相关表
- 门诊医保登记表 修水为ybgl_xyboutaccount. 每种医保可以不一样,但关键字段应该一样,具体参考ybgl_xyboutaccount说明. 一般一个医保接口一个. 用于记录医保登记信息,比如医保结算时间,医保登记流水号,医保单据号,总费用,医保结算时间,门诊收费流水号等. 里面有一系列字段用于保证吞卡(即医保收了,HIS没有收)记录的处理等.
- 门诊医保结算结果表 fee_out_ybdetail, 用于存医保返回的各种报销信息. 比如总费用,个人账户等等数字型内容. 若是文字型内容要存入到医保登记表中.
- 门诊医保登记表与门诊医保结算结果表(fee_out_ybdetail)关系. fee_out_ybdetail.main_tal 为门诊医保登记表 表名称大写. fee_out_ybdetail.key_value 为对应名字医保登记表中唯一行号记录表.
五. 门诊医保接口实现
- 整体调用流程
- 1 根据医保类型,找到医保接口(HIS门诊收费)
- 2 调用门诊医保接口(医保接口中代码)
a. 读医保卡 b. 数据处理, 根据医保对照获取医保目录等上传医保明细时必要信息. c. 选择医保业务类型和疾病等. d. 医保预结算. e. 医保结算.
- 3 填入记账项目(HIS门诊收费中)
- 4 标记医保记录HIS为收费状态(HIS中代码) 2.门诊医保前端程序实现
1 具体医保业务类继承于医保基类 2 医保基类门诊相关说明(HIS和医保接口程序之间的接口函数)
- 医保后端程序实现
//获取医保对照信息
- DataTable GetMedItemInfo (string UnitId, int ItemType,string SelfCode,string JGBM). //存入门诊结算记录
- OutYBAccountPayInf OutAccount(OutMedAccountInf entOutMedAccountInf); // 门诊退费查询待退费用
- DataTable GetOutReturningInf(string HisAccountId, string JGBM,string PersonCode); // 存入门诊退结算记录
- OutYBAccountPayInf SaveOutReturnedInf(string Ordinalno, string StationId, string OperatorId, string UnitId, int OperateType); // 获的退费之后的合计金额
- OutYBAccountPayInf GetOutReturnAccountDetail(string ReturnOrdinalNo, string AcceptOrdinaNo, string OrginOrdinalNo); // 获得需要同步的记录
- DataTable GetSynInf(string PersonCode, string JGBM); //门诊收费后同步
- string OutMedAccountSyn(string AcceptOdinalNo, string ReturnOrdinalNo, string AccountNo);
六 门诊医保同步问题
- 医保没有部分退功能,只能整笔退费, 所以部分退要先撤销原先整笔退再收部分.
- 门诊操作中,先执行医保操作,在执行HIS操作. 门诊收费,先医保结算,再HIS门诊收费结算. 门诊退费,先医保退费,再HIS门诊退费.
- 收费过程中, 有可能医保结算了,但是HIS没收费记录,就会多扣了患者医保的款,退费过程中医保先退了,HIS没有退,患者医保的款就多了.
- 事后补救,根据同步标志,若未同步的,需要执行医保逆操作,此操作简称医保同步.
住院医保接口相关说明
七 住院收费系统
1.相关表
- cis_inpatient 住院花名册表 一次入院 一条记录
- fee_in_pregtcash 住院预收款表,住院期间缴款明细存入此表.担保只是允许患者开药,做检查.不涉及任务账务计算.
- fee_in_account 住院结算支付表,出院结算时写入. 记录结算汇总性信息.比如结算时间.结算流水号, 总费用,总预收款, 结算收/退款等. 一般一次,住院就一次结算. 但也可以一次住院多次结算. 撤销结算也存入此表,相关费用用字段用负记录.
- fee_in_invoice 住院结算发票明细表,存入某次住院结算的发票项目明细信息.
住院费用明细相表.- fee_in_drug 住院药品明细表 对应字典表 dict_drug_union
- fee_in_treat 住院治疗明细表 对应字典表 dict_fee_union
- fee_in_lis 住院检验明细表 对应字典表 dict_fee_union
- fee_in_day 住院检验明细表 对应字典表 dict_fee_union
- fee_in_mater 住院材料明细表 对应字典表 dict_mat_union
2.表间关联
- cis_inpatient 花名册表与其他业务表均是 一对多的关系,用字段住院流水号Visit_id关联.
- fee_in_account 住院结算支付表 与其他业务表(住院预收款表 fee_In_pregtcash, 住院担保表 fee_in_guanrantee, 住院发票表 fee_in_invoice,5个住院费用明细表)是一对多的关系, 以字段结算流水号AccountId进行关联.
八 住院基本流程
- 医师开入院证,入院证记录存入表cis_enterorder.
- 住院处办理入院登记,建立一条住院登记记录. 存入表cis_inpatient中,同时相应的病案相关表中也产生一条记录.
- 住院期间交预交款,每交一次在住院预收款表fee_in_pregetcash中添加一条记录,退预收款则在此表中添加一条负记录. 同时更新cis_inpatient中预收款合计字段Pre_Amount.
- 住院期间担保,每担保一次在住院担保表fee_in_guarantee中添加一条记录,撤销担保则添加一条负记录. 同时更新cis_inpatient中预约时间bespoke_time及预约人bespoke_man.
- 住院护士预约,修改cis_inpatient中预约时间bespoke_time及预约人bespoke_man.
- 若是医保患者则调用医保接口
- 获得各记账金额.
- 出院结算.
- 在住院结算支付表fee_in_account中产生一条结算支付记录,产生住院结算流水号及住院结算时间字段等.
- 在住院预收款表fee_in_pregetcash中产生一条结算收款或者结算退款记录.
- 在住院结算发票明细表fee_in_invoice中产生N条发票明细记录.
- 回写fee_in_pregetcash中的住院期间收退款记录的部分的住院结算流水号字段account_id及住院结算时间字段account_dt.
- 回写5个费用明细记录中住院结算流水号字段account_id及住院结算时间字段account_dt.
- 回写担保明细表 fee_in_guarantee 住院结算流水号字段 account_id及住院结算时间字段account_dt. 9.标记医保已收完. 10.标记第三方支付已收完. 11 打印住院发票.
九 住院医保相关表
- 住院医保登记表(修水为ybgl_xybinhospotalinf,每种一医保表名称可以不一样,但关键字段应该一样,具体参考ybgl_xybinhospitalinf说明),一般一个医保接口一个,用于记录医保登记信息,比如医保结算时间.医保登记流水号,医保结算时间,一波啊类别,报销金额,结算序号等.
- 住院医保结算结果表fee_in_ybdetail,用于存医保返回的各种报销信息,比如总费用,个人账户等等数字型内容,若是文字型内容要存入到医保登记表中
- 住院医保登记表与住院医保结算结果表(FEE_IN_YBDETAIL)关系.
1.fee_in_ybdetail.maintbl 为住院医保登记表名称大写. 2.fee_in_ybdetail.keyValue 为对应名字医保登记表中的唯一行号记录表.
十 住院医保接口调用流程
1. 转医保/自费流程(HIS入院登记中)
1.根据结算类型获取医保接口,调用医保入院函数
2.调用转自费(撤销转医保)
2.医保结算流程.
通过调用医保接口中的住院管理界面来操作
十一 住院医保基类前端接口.
//医保入院
public async InPatientEnter(){ }
//住院患者发送费用明细到医保
public async SendDetailToMed(){ }
//医保退院
public async LeaveHospital() { }
//医保结算
public async InPatientAccount(){ }
//撤销医保结算
public async InpatientUndoMedAccount() { }
//住院医保是否结算
public async InpatientMedIsAccounted(){ }
//获取医保报销金额信息
public async GetInpatientMedAccountPay(){ }
//获得医保管理页面
public async CallBXSImple() { }
//住院结算同步
public async InMedAccountSyn(){ }
十二 住院医保基类后端接口
//检查住院入院登记信息
- string CheckInpatientEnter(string UnitId, string VisitId, int AccountOrd); //获得医保登记信息
- YBInpatientRegInf GetInpatientYBRegInf(string VisitId, int AccountOrd); // 获得患者HIS住院登记信息
- DataTable GetInPatientRegInf(YBInpatientRegInf, int OperateType,string OperatorId, string StationId); //医保退院
- string LeaveHospital(string VisitId, int AccountOrd); //检查住院结算前检查
- InpatientAccountCheckResult CheckInpatientAccount(string UnitId,string VisitId,int AccountOrd, int IsPreAccount); //存入住院结算结果
- string SaveInpatientAccount(YBInpatientRegInf INpatientRegInf, string MedAccountResultInf,string OperatorId); //住院结算撤销前检查
- InpatientAccountChecBoxResult CheckUndoINpatientAccount(string UnitId, string VisitId, int AccountOrd); //住院结算撤销
- string SaveInpatientUndoAccount(string VisitId, int AccountOrd); // 获得待发送数据明细
- DataTable GetInpatientSendDetail(string VIsitId, int AccountOrd, string UnitId,stirng JGBM); //标记为已发送状态
- string MarkInpatientMedIsAccounted(string VisitId, int AccountOrd, double HisTotalFee); // 获取医保报销金额信息
- InYBAccountPayInf GetInpatientMedAccountPay(string VisitId, int AccountOrd);