Mercurial > HIS > BLT-XML
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ehis.pool.XML Sun Sep 08 17:15:31 2024 +0800 @@ -0,0 +1,359 @@ +<?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> \ No newline at end of file