view ehis.pool.XML @ 2:a409f2a3ce0a default tip

Fix:修改文件名为英文名(Hgweb不支持中文路径)
author Schmit <liny.jii@nnsui.com>
date Sun, 08 Sep 2024 17:15:31 +0800
parents
children
line wrap: on
line source

<?xml version="1.0" encoding="UTF-8"?>
<report report-id="ehis.数据统计.营业收入.运营情况汇总" title="运营情况汇总" seq="0" is-detail="true">
<description>运营情况汇总</description>
<attrs>
  <attr key="datasource" value="default"/>
  <attr key="leftFixedColCount" value="0"/>
  <attr key="rightFixedColCount" value="0"/>
  <attr key="showTotalRow" value="false"/>
  <attr key="showRowIndex" value="true"/>
  <attr key="showColIndex" value="false"/>
  <attr key="showColLine" value="true"/>
  <attr key="showRowLine" value="true"/>
  <attr key="showHeader" value="false"/>
  <attr key="showTools" value="false"/>
  <attr key="trackMouseOver" value="true"/>
  <attr key="defaultColWidth" value="100"/>
  <attr key="rowNoColWidth" value="40"/>
  <attr key="pageType" value="A4"/>
  <attr key="pageDirect" value="V"/>
  <attr key="pageFontSize" value="11"/>
  <attr key="pageSize" value="297,210"/>
  <attr key="pageMargin" value="10,10,10,10"/>
  <attr key="pageMaxRowCount" value="50"/>
  <attr key="autoSizeCol" value="0" />
</attrs>

<params>
    <param id="jgxs">
    <sql>
    <![CDATA[ 
    select count(1) col into #t from 
    (
    select 机构ID value,名称 text from bas_机构 where 机构ID=${user.companyPartyId}
	  union all
	  select 机构ID value,名称 text from bas_机构 where isnull(管理机构ID,'')=${user.companyPartyId}
    ) a
    ;
    select case when col>1 then 'false' else 'true' end aaa from #t
    ]]>
    </sql>
    </param>
    <param id="mrjg">
    <sql>
    <![CDATA[ 
    select ${user.companyPartyId} id
    ]]>
    </sql>
    </param>
</params>

<enums>
    <enum id="tjjg">
        <sql>
          <![CDATA[ 
            select 机构ID value,名称 text from bas_机构 where 机构ID=${user.companyPartyId}
            union all
            select 机构ID value,名称 text from bas_机构 where isnull(管理机构ID,'')=${user.companyPartyId}
            ]]>
            </sql>
        </enum>
</enums>

<header-items>
  <header-item id="统计机构" type="enum" enum-id="tjjg" title="统计机构"  default="${mrjg}" hidden="${jgxs}" value-col="value" use-like='false' text-col="text" width="250" trigger-query="false"/>
  <header-item id="时间" type="datetimerange" title="统计时间" default="今天"  width="190"  trigger-query="false"/> 
  <header-item id="查找" type="text" width="150" use-like="false" title="查找" hidden="true" empty-text="请输入查找信息" trigger-query="false"/>
</header-items>

<select>
  <field id="分类" title="分类"><![CDATA[分类]]></field>
  <field id="列1" title="列1"><![CDATA[列1]]></field>
  <field id="列1值" title="列1值"><![CDATA[列1值]]></field>
  <field id="列2" title="列2"><![CDATA[列2]]></field>
  <field id="列2值" title="列2值"><![CDATA[列2值]]></field>
  <field id="列3" title="列3"> <![CDATA[列3]]></field>
  <field id="列3值" title="列3值"> <![CDATA[列3值]]></field>
  <field id="列4" title="列4"> <![CDATA[列4]]></field>	
  <field id="列4值" title="列4值"> <![CDATA[列4值]]></field>		
</select>

<from>
  <![CDATA[
  (
	select
	'门诊情况' 分类,'挂号人数' 列1,gh.挂号人数 列1值,'挂号金额' 列2,cast(gh.挂号金额 as nvarchar(10)) 列2值,
	'首诊人数' 列3,gh.首诊人数 列3值,'复诊人数' 列4,gh.复诊人数 列4值
	from #jg jg
	left join #gh gh on jg.机构ID=gh.机构ID
	union all
	select
	'门诊情况' 分类,'门诊人次' 列1,mzjs.门诊人次 列1值,'总金额' 列2,cast(mzjs.总金额 as nvarchar(10)) 列2值,
	'医保金额' 列3,mzjs.报销金额 列3值,'现金金额' 列4,mzzf.现金支付 列4值
	from #jg jg
	left join #mzjs mzjs on jg.机构ID=mzjs.机构ID
	left join #mzzf mzzf on jg.机构ID=mzzf.机构ID
	union all
	select
	'门诊情况' 分类,'处方总数' 列1,mzcf.处方总数 列1值,'药品金额' 列2,cast(mzcf.药品金额 as nvarchar(10))  列2值,
	'诊疗金额' 列3,mzcf.诊疗金额 列3值,'处方均额' 列4,case when mzcf.处方总数<>0 then cast(mzjs.总金额/mzcf.处方总数 as decimal(10,2)) else null end 列4值
	from #jg jg
	left join #mzcf mzcf on jg.机构ID=mzcf.机构ID
	left join #mzjs mzjs on jg.机构ID=mzjs.机构ID
	union all
	select
	'门诊情况' 分类,'自费人次' 列1,mzjs.自费人次 列1值,'医保人次' 列2,cast(mzjs.医保人次 as nvarchar(10))  列2值,
	'普通门诊数' 列3,mzjs.普通门诊人次 列3值,'特病人次' 列4,mzjs.特病人次 列4值
	from #jg jg
	left join #mzjs mzjs on jg.机构ID=mzjs.机构ID
	union all
	select
	'住院情况' 分类,'入院总人数' 列1,ry.入院总人数 列1值,'当前在院总人数' 列2,cast(zy.在院总人数 as nvarchar(10))  列2值,
	'出院总人数' 列3,cy.出院总人数 列3值,'结算总人数' 列4,zyjs.结算总人数 列4值
	from #jg jg
	left join #ry ry on jg.机构ID=ry.机构ID
	left join #cy cy on jg.机构ID=cy.机构ID
	left join #zyjs zyjs on jg.机构ID=zyjs.机构ID
	left join #zy zy on jg.机构ID=zy.机构ID
	union all
	select
	'住院情况' 分类,'结算金额' 列1,zyjs.结算金额 列1值,'职工金额' 列2,cast(zyjs.职工金额 as nvarchar(10))  列2值,
	'居民金额' 列3,zyjs.居民金额 列3值,'自费金额' 列4,zyjs.自费金额 列4值
	from #jg jg
	left join #zyjs zyjs on jg.机构ID=zyjs.机构ID
	union all
	select
	'住院情况' 分类,'预交收入' 列1,zyyj.预交收入 列1值,'药品收入' 列2,cast(zycf.药品收入 as nvarchar(10))  列2值,
	'诊疗收入' 列3,zycf.诊疗收入 列3值,'医院承担' 列4,zyjs.医院承担 列4值
	from #jg jg
	left join #zyjs zyjs on jg.机构ID=zyjs.机构ID
	left join #zyyj zyyj on jg.机构ID=zyyj.机构ID
	left join #zycf zycf on jg.机构ID=zycf.机构ID
	union all
	select null,'',null,'工作量情况(医院实际工','作量情况,与结算','数据无关)',null,null,null
	union all
	select
	null,'总费用',t.总金额,'药品金额',cast(t.药品金额 as nvarchar(10)) ,'诊疗金额',t.诊疗金额,null,null
	from #gzl t
	union all
	select null,'',null,'各项收入项目费用情况','(结算数据)','',null,null,null	
	union all
	select
	null,a.收入项目,a.金额,b.收入项目,cast(b.金额 as nvarchar(10)) ,c.收入项目,c.金额,d.收入项目,d.金额
	from #a a
	left join #b b on a.px+1=b.px
	left join #c c on a.px+2=c.px
	left join #d d on a.px+3=d.px
	union all
	select null, '合计' ,sum(t.金额),null,null,null,null,null,null
	from #srxm t
  ) t     
  ]]>
</from>

<with> 
  <![CDATA[ 

	with t as (
	select
	gh.登记机构ID 机构ID,
	count(distinct gh.档案ID) 挂号人数,
	count(distinct case when isnull(jzjl.初诊,'是')='是' then jzjl.档案ID else null end) 首诊人数,
	count(distinct case when isnull(jzjl.初诊,'是')='否' then jzjl.档案ID else null end) 复诊人数,
	sum(js.金额) 挂号金额
	from reg_挂号 gh
	inner join opd_记录 jzjl on gh.挂号ID=jzjl.挂号ID
	inner join opc_记录_结算 js on gh.结算ID=js.结算ID
	where gh.就诊日期 between ${时间_START} and ${时间_END} and gh.登记机构ID=${统计机构}
	group by gh.登记机构ID
	)
	select * into #gh from t;
	select
	js.结算机构ID 机构ID,
	count(distinct jl.档案ID+'-'+jl.开单医生ID+'-'+convert(nvarchar(10),jl.登记时间,120)) 门诊人次,
	sum(js.金额) 总金额,
	sum(js.报销金额) 报销金额,
	COUNT(DISTINCT (case when ybjs.结算ID IS NULL THEN jl.档案ID+'-'+jl.开单医生ID+'-'+convert(nvarchar(10),jl.登记时间,120) ELSE NULL END)) 自费人次,
	COUNT(DISTINCT (case when ybjs.结算ID IS NOT NULL THEN jl.档案ID+'-'+jl.开单医生ID+'-'+convert(nvarchar(10),jl.登记时间,120) ELSE NULL END)) 医保人次,
	count(distinct (case when jzlb.名称 in ('门诊慢特病') then jl.档案ID+'-'+jl.开单医生ID+'-'+convert(nvarchar(10),jl.登记时间,120) else null end)) 特病人次,
	count(distinct (case when jzlb.名称 not in ('门诊慢特病') then jl.档案ID+'-'+jl.开单医生ID+'-'+convert(nvarchar(10),jl.登记时间,120) else null end)) 普通门诊人次
	into #mzjs
	from opc_记录 jl
	inner join opc_记录_结算 js on jl.记录ID=js.记录ID
	left join yb_就诊结算记录 ybjs on js.结算ID=ybjs.结算ID
	left join bas_就诊类别 jzlb on jl.医疗类别ID=jzlb.医疗类别ID AND jl.就诊类别ID=jzlb.就诊类别ID
	where js.结算时间 between ${时间_START} and ${时间_END} and js.结算机构ID=${统计机构}
	and jl.处方来源<>'门诊挂号'
	group by js.结算机构ID
	
	
	select 
	js.结算机构ID 机构ID,
	sum(case when zffs.名称='现金' then zf.支付金额 else null end) 现金支付,
	sum(case when zffs.名称!='现金' then zf.支付金额 else null end) 其他支付
	into #mzzf
	from opc_记录_结算 js 
	inner join opc_记录 jl on js.记录ID=jl.记录ID
	inner join opc_记录_结算_支付 zf on js.结算ID=zf.结算ID
	inner join bas_支付方式 zffs on zf.支付方式ID=zffs.支付方式ID
	where js.结算时间 between ${时间_START} and ${时间_END} and js.结算机构ID=${统计机构}
	and jl.处方来源<>'门诊挂号'
	group by js.结算机构ID
	
	
	--cf
	select 
	js.结算机构ID 机构ID,
	count(distinct fymx.处方ID) 处方总数,
	sum(case when xm.类别ID in ('5','6','7','8') then mx.金额 else null end) 药品金额,
	sum(case when xm.类别ID not in ('5','6','7','8') then mx.金额 else null end) 诊疗金额
	into #mzcf
	from opc_记录_明细 mx
	inner join opc_记录_结算 js on mx.结算ID=js.结算ID
	inner join bas_收费项目 xm on mx.项目ID=xm.项目ID
	left join opd_处方_医嘱_费用 fymx on mx.医嘱明细ID=fymx.明细ID
	where js.结算时间 between ${时间_START} and ${时间_END} AND js.结算机构ID=${统计机构}
	group by js.结算机构ID
	
	--住院
	select jl.登记机构ID 机构ID, count(1) 入院总人数 into #ry
	from ihm_记录 jl
	where jl.入院时间 between ${时间_START} and ${时间_END} AND 登记机构ID=${统计机构}
	group by jl.登记机构ID
	
	select
	jl.登记机构ID 机构ID,
	count(1) 在院总人数
	into #zy
	from ihm_记录 jl
	where jl.状态 in ('在床','待分')
	group by jl.登记机构ID
	
	
	
	select 
	jl.登记机构ID 机构ID, count(1) 出院总人数 into #cy
	from ihm_记录 jl
	where jl.出院时间 between ${时间_START} and ${时间_END}
	group by jl.登记机构ID
	
	select js.结算机构ID 机构ID,count(distinct 记录ID) 结算总人数,
	sum(js.金额) 结算金额,
	sum(case when ybjs.险种类型='310' then js.金额 else null end) 职工金额,
	sum(case when ybjs.险种类型='390' then js.金额 else null end) 居民金额,
	sum(case when ybjs.结算ID is null then js.金额 else null end) 自费金额,
	sum(js.医院承担) 医院承担
	into #zyjs
	from ihm_记录_结算 js
	left join yb_就诊结算记录 ybjs on js.结算ID=ybjs.结算ID AND js.结算机构ID=${统计机构}
	where js.结算时间 between ${时间_START} and ${时间_END}
	group by js.结算机构ID
	
	select 
	yj.登记机构ID 机构ID,
	sum(yj.金额) 预交收入
	into #zyyj
	from ihm_记录_预交 yj
	where yj.收费时间 between ${时间_START} and ${时间_END} and yj.登记机构ID=${统计机构}
	group by yj.登记机构ID
	
	select js.结算机构ID 机构ID,
	sum(case when xm.类别ID in ('5','6','7','8') then case when js.状态='作废' then -mx.金额 else mx.金额 end else null end) 药品收入,
	sum(case when xm.类别ID not in ('5','6','7','8') then case when js.状态='作废' then -mx.金额 else mx.金额 end else null end) 诊疗收入
	into #zycf
	from ihm_记录_结算 js
	inner join ihm_记录_结算_明细 jsmx on js.结算ID=jsmx.结算ID
	inner join ihm_记录_明细 mx on jsmx.明细ID=mx.明细ID
	inner join bas_收费项目 xm on mx.项目ID=xm.项目ID
	where js.结算时间 between ${时间_START} and ${时间_END} and js.结算机构ID=${统计机构}
	group by js.结算机构ID
	
	
	select 
	sum(case when xm.类别ID in ('5','6','7','8') then mx.金额 else null end) 药品金额,
	sum(case when xm.类别ID not in ('5','6','7','8') then mx.金额 else null end) 诊疗金额,
	sum(mx.金额) 总金额 into #mx
	from opc_记录_明细 mx
	inner join bas_收费项目 xm on mx.项目ID=xm.项目ID
	where mx.登记时间 between ${时间_START} and ${时间_END} and mx.登记机构ID=${统计机构}
	union all
	select 
	sum(case when xm.类别ID in ('5','6','7','8') then mx.金额 else null end) 药品金额,
	sum(case when xm.类别ID not in ('5','6','7','8') then mx.金额 else null end) 诊疗金额,
	sum(mx.金额) 总金额
	from ihm_记录_明细 mx
	inner join bas_收费项目 xm on mx.项目ID=xm.项目ID
	where mx.登记时间 between ${时间_START} and ${时间_END} and mx.登记机构ID=${统计机构}
	
	select
	sum(t.总金额) 总金额,
	sum(t.药品金额) 药品金额,
	sum(t.诊疗金额) 诊疗金额
	into #gzl
	from #mx t
	
	
	select
	js.结算机构ID,
	xm.收入项目,
	sum(mx.金额) 金额 into #srxmmx
	from opc_记录_结算 js
	inner join opc_记录_明细 mx on js.结算ID=mx.结算ID
	inner join bas_收费项目 xm on mx.项目ID=xm.项目ID
	where js.结算时间 between ${时间_START} and ${时间_END} and js.结算机构ID=${统计机构}
	group by js.结算机构ID,xm.收入项目
	union all
	select
	js.结算机构ID,
	xm.收入项目,
	sum(case when js.状态='作废' then -mx.金额 else mx.金额 end) 金额
	from ihm_记录_结算 js
	inner join ihm_记录_结算_明细 jsmx on js.结算ID=jsmx.结算ID
	inner join ihm_记录_明细 mx on jsmx.明细ID=mx.明细ID
	inner join bas_收费项目 xm on mx.项目ID=xm.项目ID
	where js.结算时间 between ${时间_START} and ${时间_END} and js.结算机构ID=${统计机构}
	group by js.结算机构ID,xm.收入项目
	
	
	
	select
	t.结算机构ID,t.收入项目,sum(t.金额) 金额,
	ROW_NUMBER()over(order by t.收入项目) px into #srxm
	from #srxmmx t
	group by t.结算机构ID,t.收入项目
	
	select 收入项目,金额,px into #a  from #srxm t where t.px%4=1
	select 收入项目,金额,px into #b  from #srxm t where t.px%4=2
	select 收入项目,金额,px into #c  from #srxm t where t.px%4=3
	select 收入项目,金额,px into #d  from #srxm t where t.px%4=0
	
	
	select jg.机构ID into #jg
	from bas_机构 jg
	where jg.机构ID=${统计机构}

  ]]>
</with>


<where>
  <![CDATA[ 

  ]]>
</where>

<groups>
  <group>
    <group-col id="分类" field-id="分类" width="120"  span="true"  span-dep-col-id="分类"/>
    <group-col id="列1" field-id="列1" width="120" />
    <group-col id="列1值" field-id="列1值" width="80" />
    <group-col id="列2" field-id="列2" width="170"/>
    <group-col id="列2值" field-id="列2值" width="125"/>
    <group-col id="列3" field-id="列3" width="120"/>
    <group-col id="列3值" field-id="列3值" width="80"/>
    <group-col id="列4" field-id="列4"  width="120"/>
    <group-col id="列4值" field-id="列4值" width="80" />
  </group>
</groups>

</report>
备案号:苏ICP备2024087954号-2 | 渝公网安备50010402001513