use jkyy
go
alter table 现金流水帐 add 就医方式 nvarchar(50) null
go
alter table 现金流水帐 add 收费类别 nvarchar(50) null
go
update 现金流水帐 set 就医方式='门诊',收费类别='西药'
go
drop proc dbo.病人结帐1
go
drop proc dbo.挂号录入
go
drop proc dbo.门诊发票退费
go
drop proc dbo.预交收费
go
drop proc dbo.预交退费
go
drop proc dbo.住院病人退费
go
drop proc dbo.住院病人中途结费
go
drop VIEW dbo.出院发票1
go
drop proc dbo.门诊号强制出院
go
drop proc dbo.门诊号出院
go
CREATE proc 门诊号出院 @入院日期 smalldatetime
WITH ENCRYPTION
as
begin transaction
declare @xtrq datetime
declare @日期 datetime
select @xtrq=getdate()
select @日期=DATENAME(yyyy,@xtrq) +'-'+DATENAME(mm,@xtrq)+'-'+DATENAME(dd,@xtrq)
begin
update 病人信息 set 是否出院='是',是否结帐='是',出院日期=@日期 where 就医方式='门诊'and 公费类别!='工伤'and 入院日期<=@入院日期 and 是否结帐='否'
end
commit
GO
CREATE proc 门诊号强制出院 @blh nvarchar(50)
WITH ENCRYPTION
as
begin transaction
declare @xtrq datetime
declare @日期 datetime
select @xtrq=getdate()
select @日期=DATENAME(yyyy,@xtrq) +'-'+DATENAME(mm,@xtrq)+'-'+DATENAME(dd,@xtrq)
begin
update 病人信息 set 是否出院='是',是否结帐='是',出院日期=@日期 where 病历号=@blh and 是否结帐='否'
end
commit
GO
CREATE VIEW dbo.出院发票1
WITH ENCRYPTION
AS
SELECT 病历号,流水号, 结帐日期, 结帐收费人,
(SELECT 发票名称
FROM 科目分类 AS b
WHERE 收费类别 = a.收费类别) AS 收费类别, 金额, 处方医生, 退费流水号,发票有效
FROM dbo.出院结帐 a
go
CREATE proc dbo.病人结帐1 @病历号 bigint,@管理员 char(20)
WITH ENCRYPTION
as
begin transaction
declare @是否结帐 char(10)
declare @是否出院 char(10)
declare @xtrq datetime
declare @日期 datetime
declare @lsh bigint
declare @blh1 char(13)
declare @摘要 char(100)
declare @费用类别 char(100)
declare @科目名称 char(50)
declare @科目类别 char(50)
declare @金额 float
declare @预交费 float
declare @就医方式 char(50)
declare @xjrjz int
select @xtrq=getdate()
select @摘要=病人姓名 from 病人信息 where 病历号=@病历号
select @blh1=convert(char(10),@xtrq,102)+'000'
select @blh1=substring(@blh1,1,4)+substring(@blh1,6,2)+substring(@blh1,9,5)
select @lsh=@blh1
select @日期=DATENAME(yyyy,@xtrq) +'-'+DATENAME(mm,@xtrq)+'-'+DATENAME(dd,@xtrq)
select @是否结帐=是否结帐,@是否出院=是否出院,@就医方式=就医方式 from 病人信息 where 病历号=@病历号
select @是否结帐=case when @是否结帐 is null then '是' else @是否结帐 end
select @是否出院=case when @是否出院 is null then '是' else @是否出院 end
declare @流水号 bigint
select @流水号=max(流水号) from 现金流水帐 where 日期=@日期
select @流水号 = case when @流水号 is null then @lsh+1 else @流水号+1 end
select @xjrjz=count(*) from 现金日记帐 where 结帐日期=@日期 and 收款人姓名=@管理员
select @xjrjz=case when @xjrjz is null then 0 else @xjrjz end
select @金额=sum(case when 收费类别<>'预交费' then 金额 else 0 end),@预交费=sum(case when 收费类别='预交费' then 金额 else 0 end) from 病人费用统计 where 病历号=@病历号
select @金额=case when @金额 is null then 0 else @金额 end
select @预交费=case when @预交费 is null then 0 else @预交费 end
if(@就医方式='住院') and (@是否结帐='否')and(@是否出院='是')
begin
insert into 出院结帐 select @流水号 as 流水号,病历号,收费类别,金额,'是'as 发票有效,0 as 退费流水号,null,@管理员 as 结帐收费人,@日期 as 结帐日期,'' from 病人费用统计 where 病历号=@病历号
update 医院病床 set 当前病人=0 where 当前病人=@病历号
update 病人信息 set 是否结帐='是',结帐日期=@日期,结帐=@管理员 where 病历号=@病历号
update 处方管理 set 结帐流水号=@流水号,修改='-1',结帐日期=@日期 where 病历号=@病历号 and 结帐流水号=0
update 预交费明细 set 是否结帐='是',退费日期=@日期,结帐退费人=@管理员 where 病历号=@病历号
insert into 现金流水帐(流水号,总帐科目,明细科目,摘要,金额,现金方向,经手人,日期,就医方式,收费类别) select @流水号 as 流水号,科目类别 as 总帐科目, 科目名称 as 明细科目,(case when 科目名称='其他应付款' then '退'+rtrim(@摘要)+ '的'+'预交费' else '收'+rtrim(@摘要)+ '的'+科目名称 end) as 摘要,sum(金额) as 金额,(case when 科目名称='其他应付款' then '支' else '收' end) as 现金方向,@管理员 as 经手人 ,@日期 as 日期,@就医方式 as 就医方式,收费类别 from 病人费用科目分类统计 as a where 病历号=@病历号 group by 科目名称,科目类别,收费类别
if(@xjrjz=0)
insert into 现金日记帐(收款人姓名,住院收入,预交退费,结帐日期) values (@管理员,@金额,@预交费,@日期)
else
update 现金日记帐 set 住院收入=住院收入+@金额,预交退费=预交退费+@预交费 where 结帐日期=@日期 and 收款人姓名=@管理员
insert into 医院收入分类统计(收费类别,金额,日期) select distinct a.收费类别,0 ,@日期 from 病人费用统计 as a left join 医院收入分类统计 as b on (a.收费类别=b.收费类别 and b.日期=@日期)where a.病历号=@病历号 and b.收费类别 is null
update 医院收入分类统计 set 金额=金额+je from (select 收费类别, 'je'=(case when 收费类别='预交费'then 0-金额 else 金额 end) from 病人费用统计 where 病历号=@病历号) as a where 医院收入分类统计.收费类别=a.收费类别 and 医院收入分类统计.日期=@日期
delete from 医院收入分类统计 where 金额=0
delete from 病人费用统计 where 病历号=@病历号
end
if(@就医方式='门诊')
begin
-- insert into 出院结帐 select @流水号 as 流水号,病历号,收费类别,金额,'是'as 发票有效,null,null,@管理员 as 结帐收费人,@日期 as 结帐日期 from 病人费用统计 where 病历号=@病历号
insert into 出院结帐 select @流水号 as 流水号,病历号,收费类别,sum(金额) as 金额,'是'as 发票有效,0 as 退费流水号,null,@管理员 as 结帐收费人,@日期 as 结帐日期,处方医生 from 处方详情 where 病历号=@病历号 and 结帐流水号=0 group by 处方医生,收费类别,病历号
update 医院病床 set 当前病人=0 where 当前病人=@病历号
update 处方管理 set 结帐流水号=@流水号,修改='-1',结帐日期=@日期 where 病历号=@病历号 and 结帐流水号=0
update 病人信息 set 结帐日期=@日期,结帐=@管理员 where 病历号=@病历号
update 预交费明细 set 是否结帐='是',退费日期=@日期,结帐退费人=@管理员 where 病历号=@病历号
insert into 现金流水帐(流水号,总帐科目,明细科目,摘要,金额,现金方向,经手人,日期,就医方式,收费类别) select @流水号 as 流水号,科目类别 as 总帐科目, 科目名称 as 明细科目,(case when 科目名称='其他应付款' then '退'+rtrim(@摘要)+ '的'+'预交费' else '收'+rtrim(@摘要)+ '的'+科目名称 end) as 摘要,sum(金额) as 金额,(case when 科目名称='其他应付款' then '支' else '收' end) as 现金方向,@管理员 as 经手人 ,@日期 as 日期,@就医方式 as 就医方式,收费类别 from 病人费用科目分类统计 as a where 病历号=@病历号 group by 科目名称,科目类别,收费类别
if(@xjrjz=0)
insert into 现金日记帐(收款人姓名,门诊收入,预交退费,结帐日期) values (@管理员,@金额,@预交费,@日期)