1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 判断医院项目是否重复收费

判断医院项目是否重复收费

时间:2022-09-01 19:21:32

相关推荐

判断医院项目是否重复收费

步骤一:收费标准库中提取按天计费的医疗服务项目,分别生成“ECHO日收费标准表”和”HIS日收费标准表”。

步骤二:根据日收费标准表查询ECHO(旧)和HIS(新)系统中的收费明细表中的所有重复收费记录。

首先尝试使用游标方式进行查询,因数据量太大,执行效率太低,之后改成了SQL查询语句。建议超过1万条记录的均不宜采用游标查询方式。

1.游标查询语句:

declare @住院号 nvarchar(10),@姓名 nvarchar(20),@年龄 decimal(11,0),@入院日期 datetime,@出院日期 datetime,@记帐时间 datetime,@收费明细序 nvarchar(12),@费用编码 nvarchar(10),@发生额 decimal(15,4),@费用类别 nvarchar(4),@账目有效标 nvarchar(2),@记账次数 decimal(15,4),@收费标准编 nvarchar(9),@收费标准 nvarchar(255),@单位 nvarchar(255),@id int

declare yb1 cursor

for

select [住院号],[姓名], [年龄],[入院日期],[出院日期],[收费明细序],[费用编码],[发生额],[记帐时间],[费用类别],[账目有效标],[记账次数],[收费标准编],id,b.[收费标准],b.[单位]

from dbo.[住院收费汇总表-01-03] a

join dbo.[ECHO系统日收费标准] b on a.费用编码=b.收费标准编码 where b.单位 like '%日%' or b.单位 like '%天%'

order by id

open yb1

fetch next from yb1 into @住院号,@姓名,@年龄,@入院日期,@出院日期,@收费明细序,@费用编码,@发生额,@记帐时间,@费用类别,@账目有效标,@记账次数,@收费标准编,@id,@收费标准,@单位

while @@FETCH_STATUS=0

begin

insert into dbo.[ECHO系统住院重复收费记录] select [住院号],[姓名], [年龄],[入院日期],[出院日期],[收费明细序],[费用编码],[发生额],[记帐时间],[费用类别],[账目有效标],[记账次数],[收费标准编],b.[收费标准],b.[单位]

from dbo.[住院收费汇总表-01-03] a

join dbo.[ECHO系统日收费标准] b on a.费用编码=b.收费标准编码where a.id>@id

and a.住院号=@住院号 and a.姓名=@姓名 and a.发生额=@发生额 and a.费用类别=@费用类别 and a.费用编码=@费用编码

and CONVERT(varchar(10),a.入院日期,110)= CONVERT(varchar(10),@入院日期,110)

and CONVERT(varchar(10),a.出院日期,110)= CONVERT(varchar(10),@出院日期,110)

and CONVERT(varchar(10),a.记帐时间,110)= CONVERT(varchar(10),@记帐时间,110)

and (b.单位 like '%日%' or b.单位 like '%天%')

fetch next from yb1 into @住院号,@姓名,@年龄,@入院日期,@出院日期,@收费明细序,@费用编码,@发生额,@记帐时间,@费用类别,@账目有效标,@记账次数,

@收费标准编,@id,@收费标准,@单位

end

close yb1

deallocate yb1

2.SQL查询方式:

查询a.[住院号],a.[姓名], a.[年龄],a.[入院日期],a.[出院日期],a.[费用编码]等字段都相同,,a.[收费明细序]字段不同的记录。视为同一天多次计费。

(1)ECHO系统SQL语句如下:

insert intodbo.[ECHO系统住院重复收费记录]

select a.[住院号],a.[姓名], a.[年龄],CONVERT(varchar(10),a.入院日期,110) as 入院日期 ,

CONVERT(varchar(10),a.出院日期,110) as [出院日期],a.[收费明细序],a.[费用编码],a.[发生额],

CONVERT(varchar(10),a.记帐时间,110) as [记账时间],a.[记账次数],d.收费标准,d.单位

fromdbo.[住院收费汇总表-01-03]a left join dbo.[ECHO系统标准过渡表] d on a.费用编码=d.收费标准编码

where exists (select 1

from(select 住院号,记帐时间,费用编码

fromdbo.[住院收费汇总表-01-03]

groupby 住院号,记帐时间,费用编码

havingcount(*)> 1) b

whereCONVERT(varchar(10),a.记帐时间,110)= CONVERT(varchar(10),b.记帐时间,110)

and a.费用编码=b.费用编码 and a.住院号=b.住院号

) and (d.单位 like '%天%' or d.单位 like '%日%')

(2)HIS系统SQL语句:

insert into dbo.[HIS系统住院重复收费记录]

select a.[姓名], CONVERT(varchar(10),a.入院时间,110) as 入院日期 ,

CONVERT(varchar(10),a.出院时间,110) as [出院日期],

cast(a.收费项目数量 as float)*cast(a.单价 as float) as [发生额],

CONVERT(varchar(10),a.开医嘱日期,110) as [记账时间],a.收费项名称,a.单位,a.卡号,

备注='HIS系统1',a.[收费项编码],a.收费项目数量 as 数量

fromdbo.[新系统数据表1] a

where exists (select 1

from(select 卡号,开医嘱日期,收费项编码

fromdbo.[新系统数据表1]

groupby 卡号,开医嘱日期,收费项编码

havingcount(*)> 1) b

whereCONVERT(varchar(10),a.开医嘱日期,110)= CONVERT(varchar(10),b.开医嘱日期,110)

and a.收费项编码=b.收费项编码 and a.卡号=b.卡号

) and (a.单位 like '%天%' or a.单位 like '%日%')

分年度生成住院重复收费记录表。

步骤三:查询结果整理,删除HIS系统测试记录。

SELECT DISTINCT([登记号]),[卡号],max(datediff(day,入院时间,出院时间)) as 住院天数FROM [县医院版信息系统数据].[dbo].[新系统数据表1]where [住院或门诊]='i' and 出院时间 is not null and 姓名 not like '%测试%' and 卡号 not like '%测试%'group by 登记号,卡号

步骤四:根据查询的重复收费记录进行统计重复记录数和金额。

(1)ECHO系统SQL语句:

SELECTDISTINCT(住院号),姓名,费用编码,[收费标准],a.[单位],记帐时间,sum(cast(记账次数 as float)) as 当日收费次数,SUM(发生额) as 当日金额FROM [dbo].[ECHO系统住院重复收费记录] agroup by 住院号,姓名,费用编码,[收费标准],a.[单位],记帐时间 order by 当日金额 desc

(2)HIS系统SQL语句:

SELECTDISTINCT(卡号),姓名,费用编码,[收费标准],a.[单位],记帐时间,sum(cast(数量 as float)) as 当日收费次数,SUM(发生额) as 当日金额,备注 FROM [县医院版信息系统数据].[dbo].[HIS系统住院重复收费记录] agroup by 卡号,姓名,费用编码,[收费标准],a.[单位],记帐时间,备注 order by 当日收费次数 desc

生成ECHO系统住院重复收费记录初表和HIS系统住院重复收费记录初表。经医院核实后,造成同一天多次收费情况的主要原因是冲账、补记或一次性记录多天应收费用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。