楼主: sky_chenyu

是否可以将HIS的业务操作与查询统计功能分开

[复制链接]
论坛徽章:
105
生肖徽章:鸡
日期:2006-12-02 12:25:43生肖徽章:鼠
日期:2007-02-10 06:34:13生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:羊
日期:2009-03-10 21:21:58祖国60周年纪念徽章
日期:2009-10-09 08:28:00祖国60周年纪念徽章
日期:2009-10-09 08:28:00
21#
发表于 2007-1-29 12:55 | 只看该作者
统计查询比较消耗服务器的资源

使用道具 举报

回复
论坛徽章:
0
22#
发表于 2007-3-23 23:51 | 只看该作者
性能优化与设计统计查询具体方法之优劣!

使用道具 举报

回复
论坛徽章:
5
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44行业板块每日发贴之星
日期:2008-07-01 01:02:17
23#
发表于 2007-3-24 08:52 | 只看该作者
合理的设计表结构有助于解决这些问题

使用道具 举报

回复
论坛徽章:
0
24#
发表于 2007-3-24 23:46 | 只看该作者
肯定可以分开,使用报表服务器,同步主服务器的数据,还可以作为应急的服务器使用,报表建议用存储过程做,速度比较快,最好的方案是用数据仓库啦。

使用道具 举报

回复
论坛徽章:
12
行业板块每日发贴之星
日期:2005-10-03 01:02:412010新春纪念徽章
日期:2010-03-01 11:07:22行业板块每日发贴之星
日期:2009-12-14 01:01:022009日食纪念
日期:2009-07-22 09:30:00行业板块每日发贴之星
日期:2008-08-31 01:03:272008新春纪念徽章
日期:2008-02-13 12:43:03行业板块每日发贴之星
日期:2007-12-24 01:06:15ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10行业板块每日发贴之星
日期:2006-03-19 01:02:12
25#
发表于 2007-3-25 10:20 | 只看该作者
到目前为止,我们做报表全部用SELECT语句,还没发现做不出的报表,这真是非常感谢设计SQL语言的前辈。
在一般的服务器上,我们的报表基本上不存在速度问题,这得益于ORACLE的高效和SQL语言功能的强大,及公司产品在结构上的合理性。
如果要进行复杂的分析处理或实时要求高的应用,可以使用数据仓库技术,这是下一步要做的,目前医院能把现有的数据统计尽量从电脑提取做好就不错了。

使用道具 举报

回复
论坛徽章:
12
行业板块每日发贴之星
日期:2005-10-03 01:02:412010新春纪念徽章
日期:2010-03-01 11:07:22行业板块每日发贴之星
日期:2009-12-14 01:01:022009日食纪念
日期:2009-07-22 09:30:00行业板块每日发贴之星
日期:2008-08-31 01:03:272008新春纪念徽章
日期:2008-02-13 12:43:03行业板块每日发贴之星
日期:2007-12-24 01:06:15ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10行业板块每日发贴之星
日期:2006-03-19 01:02:12
26#
发表于 2007-3-25 10:22 | 只看该作者
用过程化语言做怎么样也快不过非过程化语言,这是一个客观事实,只有非过程化语言做不到的,才用过程化语言去设计。

使用道具 举报

回复
论坛徽章:
12
行业板块每日发贴之星
日期:2005-10-03 01:02:412010新春纪念徽章
日期:2010-03-01 11:07:22行业板块每日发贴之星
日期:2009-12-14 01:01:022009日食纪念
日期:2009-07-22 09:30:00行业板块每日发贴之星
日期:2008-08-31 01:03:272008新春纪念徽章
日期:2008-02-13 12:43:03行业板块每日发贴之星
日期:2007-12-24 01:06:15ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10行业板块每日发贴之星
日期:2006-03-19 01:02:12
27#
发表于 2007-3-25 10:27 | 只看该作者
select 核算医师,费用类别,round(sum(核算金额)+0,2) as 金额
from
(
(
select f.登记时间,
       f.id,
       a.住院号,
       a.姓名,
       s.编码,
       s.名称 as 项目名称,
       s.规格,
       f.标准单价 as 单价,
       f.数次 as 数量,
       f.计算单位 as 单位,
       f.实收金额,
       f.实收金额 as 核算金额,
       decode(f.住院医师, null, 开单人, f.住院医师) as 核算医师,
       '普通费用' as 费用类别
  from 病人信息 a, 病人费用记录 f, 收费项目目录 s
where a.病人id = f.病人id
   and f.收费细目id = s.id
   and f.登记时间 between to_date('2007-02-01', 'yyyy-mm-dd') and
       to_date('2007-02-28', 'yyyy-mm-dd') + 1 - 1 / 24 / 60 / 60
   and f.开单部门id = 69
   and f.门诊标志 = 2
)
union all
(
select f.登记时间,
       f.id,
       a.住院号,
       a.姓名,
       s.编码,
       s.名称 as 项目名称,
       s.规格,
       f.标准单价 as 单价,
       f.数次 as 数量,
       f.计算单位 as 单位,
       f.实收金额,
       f.实收金额 / m.医师数 as 核算金额,
       m.医师 as 核算医师,
       '手术费用' as 费用类别
  from 病人信息 a,
       (select A.病人id, A.主页ID, A.手术日期, 医师, 医师数
          from (select 病人id, 主页ID, 手术日期, 医师
                  from (select t.手术日期,
                               t.病人id,
                               t.主页ID,
                               t.主刀医师 as 医师
                          from 病人手麻记录 t
                         where t.主刀医师 is not null
                           and not(t.已行手术 like '8%' or t.已行手术 like '9%')
                        union
                        select t.手术日期,
                               t.病人id,
                               t.主页ID,
                               t.第一助手 as 医师  from 病人手麻记录 t
                         where t.第一助手 is not null
                           and not(t.已行手术 like '8%' or t.已行手术 like '9%')
                        union
                        select t.手术日期,
                               t.病人id,
                               t.主页ID,
                               t.第二助手 as 医师  from 病人手麻记录 t
                         where t.第二助手 is not null
                           and not(t.已行手术 like '8%' or t.已行手术 like '9%'))
                 group by 病人id, 主页ID, 手术日期, 医师) A,
               (select 病人id, 主页ID, 手术日期, count(*) as 医师数
                  from (select 病人id, 主页ID, 手术日期, 医师
                          from (select t.手术日期,
                                       t.病人id,
                                       t.主页ID,
                                       t.主刀医师 as 医师
                                  from 病人手麻记录 t
                                 where t.主刀医师 is not null
                           and not(t.已行手术 like '8%' or t.已行手术 like '9%')
                                union
                                select t.手术日期,
                                       t.病人id,
                                       t.主页ID,
                                       t.第一助手 as 医师  from 病人手麻记录 t
                                 where t.第一助手 is not null
                           and not(t.已行手术 like '8%' or t.已行手术 like '9%')
                                union
                                select t.手术日期,
                                       t.病人id,
                                       t.主页ID,
                                       t.第二助手 as 医师  from 病人手麻记录 t
                                 where t.第二助手 is not null
                           and not(t.已行手术 like '8%' or t.已行手术 like '9%'))
                         group by 病人id, 主页ID, 手术日期, 医师)
                 group by 病人id, 主页ID, 手术日期) B
         where a.病人id = b.病人id
           and a.主页ID = b.主页ID
           and a.手术日期 = b.手术日期) m,
       病人费用记录 f,
       部门表 b,
       收费项目目录 s,
       (select t.已行手术 as 材料编码
          from 病人手麻记录 t
         where (t.已行手术 like '8%' or t.已行手术 like '9%')
           and t.手术日期 between to_date('2006-02-01', 'yyyy-mm-dd') and
               to_date('2007-02-28', 'yyyy-mm-dd') + 1 - 1 / 24 / 60 / 60
         group by t.已行手术) c
where a.病人id = m.病人id
   and f.病人id = m.病人id
   and f.主页id = m.主页id
   and trunc(f.发生时间) = m.手术日期
   and b.id = f.开单部门id
   and f.收费细目id = s.id
   and s.编码 = c.材料编码(+)
   and c.材料编码 is null
   and f.登记时间 between to_date('2006-02-01', 'yyyy-mm-dd') and
       to_date('2007-02-28', 'yyyy-mm-dd') + 1 - 1 / 24 / 60 / 60
   and f.开单部门id = 69
)
union all
(
select f.登记时间,
       f.id,
       a.住院号,
       a.姓名,
       s.编码,
       s.名称 as 项目名称,
       s.规格,
       f.标准单价 as 单价,
       f.数次 as 数量,
       f.计算单位 as 单位,
       f.实收金额,
       f.实收金额 / m.医师数 as 核算金额,
       m.医师 as 核算医师,
       '特殊材料' as 费用类别
  from 病人信息 a,
       (select A.病人id, A.主页ID, A.手术日期, 医师, 医师数
          from (select 病人id, 主页ID, 手术日期, 医师
                  from (select t.手术日期,
                               t.病人id,
                               t.主页ID,
                               t.主刀医师 as 医师
                          from 病人手麻记录 t
                         where t.主刀医师 is not null
                           and (t.已行手术 like '8%' or t.已行手术 like '9%')
                        union
                        select t.手术日期,
                               t.病人id,
                               t.主页ID,
                               t.第一助手 as 医师  from 病人手麻记录 t
                         where t.第一助手 is not null
                           and (t.已行手术 like '8%' or t.已行手术 like '9%')
                        union
                        select t.手术日期,
                               t.病人id,
                               t.主页ID,
                               t.第二助手 as 医师  from 病人手麻记录 t
                         where t.第二助手 is not null
                           and (t.已行手术 like '8%' or t.已行手术 like '9%'))
                 group by 病人id, 主页ID, 手术日期, 医师) A,
               (select 病人id, 主页ID, 手术日期, count(*) as 医师数
                  from (select 病人id, 主页ID, 手术日期, 医师
                          from (select t.手术日期,
                                       t.病人id,
                                       t.主页ID,
                                       t.主刀医师 as 医师
                                  from 病人手麻记录 t
                                 where t.主刀医师 is not null
                           and (t.已行手术 like '8%' or t.已行手术 like '9%')
                                union
                                select t.手术日期,
                                       t.病人id,
                                       t.主页ID,
                                       t.第一助手 as 医师  from 病人手麻记录 t
                                 where t.第一助手 is not null
                           and (t.已行手术 like '8%' or t.已行手术 like '9%')
                                union
                                select t.手术日期,
                                       t.病人id,
                                       t.主页ID,
                                       t.第二助手 as 医师  from 病人手麻记录 t
                                 where t.第二助手 is not null
                           and (t.已行手术 like '8%' or t.已行手术 like '9%'))
                         group by 病人id, 主页ID, 手术日期, 医师)
                 group by 病人id, 主页ID, 手术日期) B
         where a.病人id = b.病人id
           and a.主页ID = b.主页ID
           and a.手术日期 = b.手术日期) m,
       病人费用记录 f,
       部门表 b,
       收费项目目录 s,
       (select t.已行手术 as 材料编码
          from 病人手麻记录 t
         where (t.已行手术 like '8%' or t.已行手术 like '9%')
           and t.手术日期 between to_date('2006-02-01', 'yyyy-mm-dd') and
               to_date('2007-02-28', 'yyyy-mm-dd') + 1 - 1 / 24 / 60 / 60
         group by t.已行手术) c
where a.病人id = m.病人id
   and f.病人id = m.病人id
   and f.主页id = m.主页id
   and trunc(f.发生时间) = m.手术日期
   and b.id = f.开单部门id
   and f.收费细目id = s.id
   and s.编码 = c.材料编码
   and f.登记时间 between to_date('2006-02-01', 'yyyy-mm-dd') and
       to_date('2007-02-28', 'yyyy-mm-dd') + 1 - 1 / 24 / 60 / 60
   and f.开单部门id = 69
)
)
group by 核算医师,费用类别

使用道具 举报

回复
论坛徽章:
12
行业板块每日发贴之星
日期:2005-10-03 01:02:412010新春纪念徽章
日期:2010-03-01 11:07:22行业板块每日发贴之星
日期:2009-12-14 01:01:022009日食纪念
日期:2009-07-22 09:30:00行业板块每日发贴之星
日期:2008-08-31 01:03:272008新春纪念徽章
日期:2008-02-13 12:43:03行业板块每日发贴之星
日期:2007-12-24 01:06:15ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10行业板块每日发贴之星
日期:2006-03-19 01:02:12
28#
发表于 2007-3-25 10:34 | 只看该作者
这是我刚做的一个统计报表的数据源,统计一个科室50个病人(全院350住院病人)的费用分类,大概要几秒钟时间(第一次运行4秒,第二次2秒)。
服务器:手提电脑,半年的数据。1.6GCPU,1G内存

使用道具 举报

回复
论坛徽章:
114
授权会员
日期:2005-10-30 17:05:332013年新春福章
日期:2013-02-25 14:51:24奔驰
日期:2013-08-01 21:18:36宝马
日期:2013-12-04 21:52:282014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
29#
发表于 2007-3-25 11:27 | 只看该作者
恐怖,用中文字段名

使用道具 举报

回复
论坛徽章:
12
行业板块每日发贴之星
日期:2005-10-03 01:02:412010新春纪念徽章
日期:2010-03-01 11:07:22行业板块每日发贴之星
日期:2009-12-14 01:01:022009日食纪念
日期:2009-07-22 09:30:00行业板块每日发贴之星
日期:2008-08-31 01:03:272008新春纪念徽章
日期:2008-02-13 12:43:03行业板块每日发贴之星
日期:2007-12-24 01:06:15ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10行业板块每日发贴之星
日期:2006-03-19 01:02:12
30#
发表于 2007-3-25 12:20 | 只看该作者
表名、字段名等都用中文,全国也没几家,不过看起来顺眼多了,医院的管理员也可以做报表。有些公司认为用英文可以保密,扯谈,自己都不一定看得懂,保什么密呢?谁去盗你的版呢?真有人去研究你的结构,说明你还有一定的影响力。上面的中文名称,谁想研究都行。
我曾经说过中文的好处,但没人认同,软件是自己做的,怎么样自己明白,不强求别人认同。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表