全院统计各种数据

select o.名称,
       nvl(sum(a.原有人数), 0) as 原有人数,
       nvl(sum(b.现有人数), 0) as 现有人数,
       nvl(sum(c.入院人数), 0) as 入院人数,
       nvl(sum(d.转入人数), 0) as 转入人数,
       nvl(sum(e.死亡人数), 0) as 死亡人数,
       nvl(sum(f.出院人数), 0) as 出院人数,
       nvl(sum(g.转出人数), 0) as 转出人数,
       nvl(sum(h.病危人数), 0) as 病危人数,
       nvl(sum(i.病重人数), 0) as 病重人数,
       nvl(sum(j.出院者床日数), 0) as 出院者床日数,
       nvl(sum(s.住院天数), 0) as 总住院天数,
       nvl(sum(k.门入符合人数), 0) as 门入符合人数,
       nvl(sum(n.出入符合人数), 0) as 出入符合人数,
       nvl(sum(l.抢救次数), 0) as 抢救次数,
       nvl(sum(m.成功次数), 0) as 成功次数,
       nvl(sum(q.治愈人数), 0) as 治愈,
       nvl(sum(q.好转人数), 0) as 好转,
       nvl(sum(q.未愈人数), 0) as 未愈,
       nvl(sum(q.死亡人数), 0) as 死亡,
       nvl(sum(o.实有床位), 0) as 实有床位,
      nvl( decode (sum(o.实有床位),0,0,(sum(s.住院天数) /
       (sum(o.实有床位) *
        decode((Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
               Trunc( /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/)),
               0,
               1,
               (Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
               Trunc( /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/))+1)))),0) as 床位利用率,
       nvl(sum(f.出院人数) / decode(sum(o.实有床位), 0, 1, sum(o.实有床位)),0) as 床位转次数,
       nvl(sum(k.门入符合人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 门入符合诊断率,
       nvl(sum(j.出院者床日数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)) ,0)as 平均住院日,
       nvl(sum(s.住院天数) / decode(sum(o.实有床位), 0, 1, sum(o.实有床位)),0) as 平均床工作日l,
      nvl( sum(h.病危人数) / decode(sum(s.住院天数), 0, 1, sum(s.住院天数)),0) as 病危占比,
       nvl(sum(i.病重人数) / decode(sum(s.住院天数), 0, 1, sum(s.住院天数)),0) as 病重占比,
       nvl(sum(m.成功次数) / decode(sum(l.抢救次数), 0, 1, sum(l.抢救次数)),0) as 救活率,
      nvl( sum(e.死亡人数) / decode(sum(l.抢救次数), 0, 1, sum(l.抢救次数)),0) as 死亡率一,
       nvl(sum(q.治愈人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 治愈率,
      nvl( sum(q.好转人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 好转率,
      nvl( sum(q.未愈人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 未愈率,
       nvl(sum(q.死亡人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 死亡率二,
       nvl(sum(n.出入符合人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 出入符合诊断率
  from (select id,
               名称,
               decode(a.id,
                      179,
                      10,
                      853,
                      25,
                      1074,
                      12,
                      206,
                      25,
                      187,
                      20,
                      208,
                      25,0) as 实有床位
          from 部门表 a, 部门性质说明 b,  (select distinct c.科室id  from 病区科室对应 c)  c
         where a.id = b.部门id
           and b.工作性质 = '临床'
           and a.id=c.科室id) o,
       (Select 出院科室id, count(*) as 原有人数
          From (Select Distinct A.病人id As Pid,
                                A.主页id As Pvid,
                                b.科室id as 出院科室id
                  From 病案主页 A,
                       病人变动记录 B,
                       (Select 病人ID, 主页ID, Max(开始时间) As 开始时间
                          From 病人变动记录
                         Where 开始时间 < /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                         Group By 病人ID, 主页ID) C
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                   And B.病人id = C.病人id
                   And B.主页ID = C.主页ID
                   And B.开始时间 = C.开始时间
                      -- And B.病区id=n_wardid
                   And (A.出院日期 Is null or
                       A.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                       )
                   And A.入科时间 < /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0)
         group by 出院科室id) a,
       --现有人数
       (Select 出院科室id,
               count(*) as 现有人数,
               sum(总住院天数) as 总住院天数
          From (Select Distinct A.病人id As Pid,
                                A.主页id As Pvid,
                                a.出院科室id,
                                decode((Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                                       Trunc(入院日期)),
                                       0,
                                       1,
                                       (Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                                       Trunc(入院日期))) as 总住院天数
                
                  From 病案主页 A,
                       病人变动记录 B,
                       (Select 病人ID, 主页ID, Max(开始时间) As 开始时间
                          From 病人变动记录
                         Where 开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                         Group By 病人ID, 主页ID) C
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                   And B.病人id = C.病人id
                   And B.主页ID = C.主页ID
                   And B.开始时间 = C.开始时间
                      -- And B.病区id=n_wardid
                   And (A.出院日期 Is null or
                       A.出院日期 >= /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                       )
                   And A.入科时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0)
         group by 出院科室id) b,
       --入院人数
       (Select 出院科室id, count(*) as 入院人数
          From (Select Distinct B.病人id As Pid,
                                B.主页id As Pvid,
                                a.科室id as 出院科室id
                  From 病人变动记录 A, 病案主页 B
                 Where a.病人id = b.病人id
                   And a.主页id = b.主页id
                      --And a.病区id + 0 = n_wardid
                   And Nvl(A.附加床位, 0) = 0
                   And a.开始原因 = 2
                   And a.开始时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                )
         group by 出院科室id) c,
       --转入人数,转病区
       (Select 科室id, Count(*) as 转入人数
          From (Select Distinct D.病人id As Pid, D.主页id As Pvid, a.科室id
                  From 病人变动记录 A, 病人变动记录 B, 病案主页 D
                 Where a.病人id = b.病人id
                   And a.主页id = b.主页id
                   And a.病人id = d.病人id
                   And a.主页id = d.主页id
                   And a.开始时间 = b.终止时间
                   And a.开始原因 in (3, 15)
                      -- And a.病区id + 0 = n_wardid 
                   And Nvl(A.附加床位, 0) = 0
                   And a.开始时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                )
         group by 科室id) d,
       --死亡人数
       (Select 出院科室id, Count(*) as 死亡人数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id
                  From 病案主页 A
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                      --And a.当前病区id + 0 = n_wardid 
                   and a.出院方式 = '死亡')
         group by 出院科室id) e,
       --出院人数
       (Select 出院科室id, count(*) as 出院人数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id
                  From 病案主页 A
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                -- And a.当前病区id + 0 = n_wardid
                --and a.出院方式 <> '死亡'
                )
         group by 出院科室id) f,
       --转出人数,转病区
       (Select 科室id, count(*) as 转出人数
          From (Select Distinct A.病人id As Pid, A.主页id As Pvid, a.科室id
                  From 病人变动记录 A, 病人变动记录 B
                 Where a.病人id = b.病人id
                   And a.主页id = b.主页id
                   And a.开始时间 = b.终止时间
                   And a.开始原因 in (3, 15)
                   And Nvl(B.附加床位, 0) = 0
                   And a.开始时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                )
         group by 科室id) g,
       --危重人数
        (Select 科室id, count(*) as 病危人数
          From (Select Distinct A.病人id As Pid, A.主页id As Pvid, b.科室id
                  From 病案主页 A,
                       病人变动记录 B
                       
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                  -- And B.病人id = C.病人id
                  -- And B.主页ID = C.主页ID
                  -- And B.开始时间 = C.开始时间
                   and b.开始原因=13
                      -- And B.病区id=n_wardi
                   and b.开始时间>/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   and b.开始时间</*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0
                   And B.病情 = '危')
         group by 科室id) h,
       
       (Select 科室id, count(*) as 病重人数
          From (Select Distinct A.病人id As Pid, A.主页id As Pvid, b.科室id
                  From 病案主页 A,
                       病人变动记录 B
                      
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                   --And B.病人id = C.病人id
                   --And B.主页ID = C.主页ID
                  -- And B.开始时间 = C.开始时间
                    and b.开始原因=13
                      --And B.病区id=n_wardid
                    and b.开始时间>/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   and b.开始时间</*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0
                   And B.病情 = '重')
         group by 科室id) i,
       (Select 出院科室id, sum(住院天数) as 出院者床日数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id,
                                a.住院天数
                  From 病案主页 A
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                -- And a.当前病区id + 0 = n_wardid
                )
         group by 出院科室id) j,
      (Select 出院科室id,count(*) as 总住院天数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id
                                
                  From 病案主页 A,住院费用记录 b
                 Where b.发生时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And b.发生时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
           and a.病人id=b.病人id
           and a.主页id=b.主页id
           and b.记录状态=1
           and b.收费细目id=37
                -- And a.当前病区id + 0 = n_wardid
                )
         group by 出院科室id) r,
       (select a.出院科室id, count(*) as 门入符合人数
          from 诊断符合情况 t, 病案主页 a
         where t.符合类型 = 7
           and t.符合情况 = 1
           and a.病人id = t.病人id
           and a.主页id = t.主页id
           and a.出院日期 between
              /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by a.出院科室id) k,
       (select 出院科室id, count(*) as 抢救次数
          from 病案主页
         where 抢救次数 > 0
           and 出院日期 between
              /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by 出院科室id) l,
       (select 出院科室id, count(*) as 成功次数
          from 病案主页
         where 成功次数 > 0
           and 出院日期 between
              /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by 出院科室id) m,
       (select a.出院科室id, count(*) as 出入符合人数
          from 诊断符合情况 t, 病案主页 a
         where t.符合类型 = 2
           and t.符合情况 = 1
           and a.病人id = t.病人id
           and a.主页id = t.主页id
           and a.出院日期 between /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by a.出院科室id) n,
       (Select 出院科室id,
               sum(decode(出院情况, '治愈', 1, 0)) as 治愈人数,
               sum(decode(出院情况, '好转', 1, 0)) as 好转人数,
               sum(decode(出院情况, '未愈', 1, 0)) as 未愈人数,
               sum(decode(出院情况, '死亡', 1, 0)) as 死亡人数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id,
                                p.出院情况
                  From 病案主页 A,
                       (select 病人id, 主页id, 出院情况
                          from 病人诊断记录 p
                         where 记录来源 = 3
                           and 诊断类型 = 3
                           and 诊断次序 = 1
                           and 编码序号 = 1) p
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   and a.病人id = p.病人id
                   and a.主页id = p.主页id
                
                )
         group by 出院科室id) q,
         (
select 出院科室id,sum(住院天数) as 住院天数 from (
select a.出院科室id,
       sum(decode(trunc(a.出院日期) - trunc(a.入科时间),
                  0,
                  1,
                  trunc(a.出院日期 - trunc(a.入科时间)))) as 住院天数
  from 病案主页 a
 where a.入科时间 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.入科时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
   and a.出院日期 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
 group by a.出院科室id
union all
select a.出院科室id,
       sum(decode(trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc(a.入科时间),
                  0,
                  1,
                  trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc(a.入科时间))) as 住院天数
  from 病案主页 a
 where a.入科时间 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.入科时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
      
   and (a.出院日期 > /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
       or a.出院日期 is null)
 group by a.出院科室id
union all
select a.出院科室id,
       sum(decode(trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc( /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/),
                  0,
                  1,
                  trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc(/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/))) as 住院天数
  from 病案主页 a
 where a.入科时间 < /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
      
   and (a.出院日期 > /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
       or a.出院日期 is null)
 group by a.出院科室id
union all
select a.出院科室id,
       sum(decode(trunc(a.出院日期) - trunc(/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/),
                  0,
                  1,
                  trunc(a.出院日期 - trunc(/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/)))) as 住院天数
  from 病案主页 a
 where a.入科时间 </*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   
   and a.出院日期 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
 group by a.出院科室id)
  group by 出院科室id) s
 where o.id = a.出院科室id(+)
   and o.id = b.出院科室id(+)
   and o.id = c.出院科室id(+)
   and o.id = d.科室id(+)
   and o.id = e.出院科室id(+)
   and o.id = f.出院科室id(+)
   and o.id = g.科室id(+)
   and o.id = h.科室id(+)
   and o.id = i.科室id(+)
   and o.id = j.出院科室id(+)
   and o.id = k.出院科室id(+)
   and o.id = l.出院科室id(+)
   and o.id = m.出院科室id(+)
   and o.id = n.出院科室id(+)
   and o.id = q.出院科室id(+)
   and o.id=r.出院科室id(+)
   and o.id=s.出院科室id(+)
 group by o.名称
 union all
 select '全院' as 名称,
       nvl(sum(a.原有人数), 0) as 原有人数,
       nvl(sum(b.现有人数), 0) as 现有人数,
       nvl(sum(c.入院人数), 0) as 入院人数,
       nvl(sum(d.转入人数), 0) as 转入人数,
       nvl(sum(e.死亡人数), 0) as 死亡人数,
       nvl(sum(f.出院人数), 0) as 出院人数,
       nvl(sum(g.转出人数), 0) as 转出人数,
       nvl(sum(h.病危人数), 0) as 病危人数,
       nvl(sum(i.病重人数), 0) as 病重人数,
       nvl(sum(j.出院者床日数), 0) as 出院者床日数,
       nvl(sum(s.住院天数), 0) as 总住院天数,
       nvl(sum(k.门入符合人数), 0) as 门入符合人数,
       nvl(sum(n.出入符合人数), 0) as 出入符合人数,
       nvl(sum(l.抢救次数), 0) as 抢救次数,
       nvl(sum(m.成功次数), 0) as 成功次数,
       nvl(sum(q.治愈人数), 0) as 治愈,
       nvl(sum(q.好转人数), 0) as 好转,
       nvl(sum(q.未愈人数), 0) as 未愈,
       nvl(sum(q.死亡人数), 0) as 死亡,
       nvl(sum(o.实有床位), 0) as 实有床位,
      nvl(decode(sum(o.实有床位),0,0,( sum(s.住院天数) /
       (sum(o.实有床位) *
        decode((Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
               Trunc( /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/)),
               0,
               1,
               (Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
               Trunc( /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/))+1)))),0) as 床位利用率,
       nvl(sum(f.出院人数) / decode(sum(o.实有床位), 0, 1, sum(o.实有床位)),0) as 床位转次数,
       nvl(sum(k.门入符合人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 门入符合诊断率,
       nvl(sum(j.出院者床日数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)) ,0)as 平均住院日,
       nvl(sum(s.住院天数) / decode(sum(o.实有床位), 0, 1, sum(o.实有床位)),0) as 平均床工作日l,
      nvl( sum(h.病危人数) / decode(sum(s.住院天数), 0, 1, sum(s.住院天数)),0) as 病危占比,
       nvl(sum(i.病重人数) / decode(sum(s.住院天数), 0, 1, sum(s.住院天数)),0) as 病重占比,
       nvl(sum(m.成功次数) / decode(sum(l.抢救次数), 0, 1, sum(l.抢救次数)),0) as 救活率,
      nvl( sum(e.死亡人数) / decode(sum(l.抢救次数), 0, 1, sum(l.抢救次数)),0) as 死亡率一,
       nvl(sum(q.治愈人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 治愈率,
      nvl( sum(q.好转人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 好转率,
      nvl( sum(q.未愈人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 未愈率,
       nvl(sum(q.死亡人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 死亡率二,
       nvl(sum(n.出入符合人数) / decode(sum(f.出院人数), 0, 1, sum(f.出院人数)),0) as 出入符合诊断率
  from (select id,
               名称,
               decode(a.id,
                      179,
                      10,
                      853,
                      25,
                      1074,
                      12,
                      206,
                      25,
                      187,
                      20,
                      208,
                      25,0) as 实有床位
          from 部门表 a, 部门性质说明 b,  (select distinct c.科室id  from 病区科室对应 c)  c
         where a.id = b.部门id
           and b.工作性质 = '临床'
           and a.id=c.科室id) o,
       (Select 出院科室id, count(*) as 原有人数
          From (Select Distinct A.病人id As Pid,
                                A.主页id As Pvid,
                                b.科室id as 出院科室id
                  From 病案主页 A,
                       病人变动记录 B,
                       (Select 病人ID, 主页ID, Max(开始时间) As 开始时间
                          From 病人变动记录
                         Where 开始时间 < /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                         Group By 病人ID, 主页ID) C
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                   And B.病人id = C.病人id
                   And B.主页ID = C.主页ID
                   And B.开始时间 = C.开始时间
                      -- And B.病区id=n_wardid
                   And (A.出院日期 Is null or
                       A.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                       )
                   And A.入科时间 < /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0)
         group by 出院科室id) a,
       --现有人数
       (Select 出院科室id,
               count(*) as 现有人数,
               sum(总住院天数) as 总住院天数
          From (Select Distinct A.病人id As Pid,
                                A.主页id As Pvid,
                                a.出院科室id,
                                decode((Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                                       Trunc(入院日期)),
                                       0,
                                       1,
                                       (Trunc( /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                                       Trunc(入院日期))) as 总住院天数
                
                  From 病案主页 A,
                       病人变动记录 B,
                       (Select 病人ID, 主页ID, Max(开始时间) As 开始时间
                          From 病人变动记录
                         Where 开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                         Group By 病人ID, 主页ID) C
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                   And B.病人id = C.病人id
                   And B.主页ID = C.主页ID
                   And B.开始时间 = C.开始时间
                      -- And B.病区id=n_wardid
                   And (A.出院日期 Is null or
                       A.出院日期 >= /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                       )
                   And A.入科时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0)
         group by 出院科室id) b,
       --入院人数
       (Select 出院科室id, count(*) as 入院人数
          From (Select Distinct B.病人id As Pid,
                                B.主页id As Pvid,
                                a.科室id as 出院科室id
                  From 病人变动记录 A, 病案主页 B
                 Where a.病人id = b.病人id
                   And a.主页id = b.主页id
                      --And a.病区id + 0 = n_wardid
                   And Nvl(A.附加床位, 0) = 0
                   And a.开始原因 = 2
                   And a.开始时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                )
         group by 出院科室id) c,
       --转入人数,转病区
       (Select 科室id, Count(*) as 转入人数
          From (Select Distinct D.病人id As Pid, D.主页id As Pvid, a.科室id
                  From 病人变动记录 A, 病人变动记录 B, 病案主页 D
                 Where a.病人id = b.病人id
                   And a.主页id = b.主页id
                   And a.病人id = d.病人id
                   And a.主页id = d.主页id
                   And a.开始时间 = b.终止时间
                   And a.开始原因 in (3, 15)
                      -- And a.病区id + 0 = n_wardid 
                   And Nvl(A.附加床位, 0) = 0
                   And a.开始时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                )
         group by 科室id) d,
       --死亡人数
       (Select 出院科室id, Count(*) as 死亡人数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id
                  From 病案主页 A
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                      --And a.当前病区id + 0 = n_wardid 
                   and a.出院方式 = '死亡')
         group by 出院科室id) e,
       --出院人数
       (Select 出院科室id, count(*) as 出院人数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id
                  From 病案主页 A
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                -- And a.当前病区id + 0 = n_wardid
                --and a.出院方式 <> '死亡'
                )
         group by 出院科室id) f,
       --转出人数,转病区
       (Select 科室id, count(*) as 转出人数
          From (Select Distinct A.病人id As Pid, A.主页id As Pvid, a.科室id
                  From 病人变动记录 A, 病人变动记录 B
                 Where a.病人id = b.病人id
                   And a.主页id = b.主页id
                   And a.开始时间 = b.终止时间
                   And a.开始原因 in (3, 15)
                   And Nvl(B.附加床位, 0) = 0
                   And a.开始时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.开始时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                )
         group by 科室id) g,
       --危重人数
        (Select 科室id, count(*) as 病危人数
          From (Select Distinct A.病人id As Pid, A.主页id As Pvid, b.科室id
                  From 病案主页 A,
                       病人变动记录 B
                       
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                  -- And B.病人id = C.病人id
                  -- And B.主页ID = C.主页ID
                   --And B.开始时间 = C.开始时间
                   and b.开始原因=13
                      -- And B.病区id=n_wardi
                   and b.开始时间>/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   and b.开始时间</*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0
                   And B.病情 = '危')
         group by 科室id) h,
       
       (Select 科室id, count(*) as 病重人数
          From (Select Distinct A.病人id As Pid, A.主页id As Pvid, b.科室id
                  From 病案主页 A,
                       病人变动记录 B
                       
                 Where A.病人id = B.病人id
                   And A.主页ID = B.主页ID
                  -- And B.病人id = C.病人id
                   --And B.主页ID = C.主页ID
                   --And B.开始时间 = C.开始时间
                    and b.开始原因=13
                      --And B.病区id=n_wardid
                    and b.开始时间>/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   and b.开始时间</*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   And Nvl(A.状态, 0) <> 1
                   And Nvl(B.附加床位, 0) = 0
                   And B.病情 = '重')
         group by 科室id) i,
       (Select 出院科室id, sum(住院天数) as 出院者床日数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id,
                                a.住院天数
                  From 病案主页 A
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                -- And a.当前病区id + 0 = n_wardid
                )
         group by 出院科室id) j,
     (Select 出院科室id,count(*) as 总住院天数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id
                                
                  From 病案主页 A,住院费用记录 b
                 Where b.发生时间 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And b.发生时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
           and a.病人id=b.病人id
           and a.主页id=b.主页id
           and b.记录状态=1
           and b.收费细目id=37
                -- And a.当前病区id + 0 = n_wardid
                )
         group by 出院科室id) r,
       (select a.出院科室id, count(*) as 门入符合人数
          from 诊断符合情况 t, 病案主页 a
         where t.符合类型 = 7
           and t.符合情况 = 1
           and a.病人id = t.病人id
           and a.主页id = t.主页id
           and a.出院日期 between
              /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by a.出院科室id) k,
       (select 出院科室id, count(*) as 抢救次数
          from 病案主页
         where 抢救次数 > 0
           and 出院日期 between
              /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by 出院科室id) l,
       (select 出院科室id, count(*) as 成功次数
          from 病案主页
         where 成功次数 > 0
           and 出院日期 between
              /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by 出院科室id) m,
       (select a.出院科室id, count(*) as 出入符合人数
          from 诊断符合情况 t, 病案主页 a
         where t.符合类型 = 2
           and t.符合情况 = 1
           and a.病人id = t.病人id
           and a.主页id = t.主页id
           and a.出院日期 between /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
               and /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
         group by a.出院科室id) n,
       (Select 出院科室id,
               sum(decode(出院情况, '治愈', 1, 0)) as 治愈人数,
               sum(decode(出院情况, '好转', 1, 0)) as 好转人数,
               sum(decode(出院情况, '未愈', 1, 0)) as 未愈人数,
               sum(decode(出院情况, '死亡', 1, 0)) as 死亡人数
          From (Select Distinct A.病人id     As Pid,
                                A.主页id     As Pvid,
                                a.出院科室id,
                                p.出院情况
                  From 病案主页 A,
                       (select 病人id, 主页id, 出院情况
                          from 病人诊断记录 p
                         where 记录来源 = 3
                           and 诊断类型 = 3
                           and 诊断次序 = 1
                           and 编码序号 = 1) p
                 Where a.出院日期 >= /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
                   And a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
                   and a.病人id = p.病人id
                   and a.主页id = p.主页id
                
                )
         group by 出院科室id) q,
         (select 出院科室id,sum(住院天数) as 住院天数 from (
select a.出院科室id,
       sum(decode(trunc(a.出院日期) - trunc(a.入科时间),
                  0,
                  1,
                  trunc(a.出院日期 - trunc(a.入科时间)))) as 住院天数
  from 病案主页 a
 where a.入科时间 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.入科时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
   and a.出院日期 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
 group by a.出院科室id
union all
select a.出院科室id,
       sum(decode(trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc(a.入科时间),
                  0,
                  1,
                  trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc(a.入科时间))) as 住院天数
  from 病案主页 a
 where a.入科时间 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.入科时间 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
      
   and (a.出院日期 > /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
       or a.出院日期 is null)
 group by a.出院科室id
union all
select a.出院科室id,
       sum(decode(trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc( /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/),
                  0,
                  1,
                  trunc(/*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/) -
                  trunc(/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/))) as 住院天数
  from 病案主页 a
 where a.入科时间 < /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
      
   and (a.出院日期 > /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
       or a.出院日期 is null)
 group by a.出院科室id
union all
select a.出院科室id,
       sum(decode(trunc(a.出院日期) - trunc(/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/),
                  0,
                  1,
                  trunc(a.出院日期 - trunc(/*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/)))) as 住院天数
  from 病案主页 a
 where a.入科时间 </*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   
   and a.出院日期 > /*B0*/TO_DATE('2023-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/*E0*/
   and a.出院日期 < /*B1*/TO_DATE('2023-10-31 23:59:59','YYYY-MM-DD HH24:MI:SS')/*E1*/
 group by a.出院科室id)
  group by 出院科室id) s
 where o.id = a.出院科室id(+)
   and o.id = b.出院科室id(+)
   and o.id = c.出院科室id(+)
   and o.id = d.科室id(+)
   and o.id = e.出院科室id(+)
   and o.id = f.出院科室id(+)
   and o.id = g.科室id(+)
   and o.id = h.科室id(+)
   and o.id = i.科室id(+)
   and o.id = j.出院科室id(+)
   and o.id = k.出院科室id(+)
   and o.id = l.出院科室id(+)
   and o.id = m.出院科室id(+)
   and o.id = n.出院科室id(+)
   and o.id = q.出院科室id(+)
   and o.id=r.出院科室id(+)
   and o.id=s.出院科室id(+)
 --group by o.名称


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值