美文网首页
2019-08-11合并下载的sql

2019-08-11合并下载的sql

作者: AI_Finance | 来源:发表于2019-08-11 23:37 被阅读0次
-- 起始抗菌药物选择占比
select indicator_name as "指标名称",
       valid_count as "分子",
       case 
           when indicator_name="首剂抗生素中位数" then ""
           when indicator_name="住院总天数" then ""
           when indicator_name="住院平均天数" then ""
           when indicator_name="住院日中位数" then ""
           when indicator_name="疗程总天数" then ""
           when indicator_name="疗程平均天数" then ""
           when indicator_name="疗程中位数" then ""
           else all_count
       end "分母",
       case 
           when all_count = 0 then concat("——", " ( ", valid_count, "/",all_count, " )")
           when indicator_name="首剂抗生素中位数" then ""
           when indicator_name="住院总天数" then ""
           when indicator_name="住院平均天数" then ""
           when indicator_name="住院日中位数" then ""
           when indicator_name="疗程总天数" then ""
           when indicator_name="疗程平均天数" then ""
           when indicator_name="疗程中位数" then ""
           else concat(ROUND(valid_count / all_count * 100, 2) , "% ( ", valid_count, "/",all_count, " )")
       end "统计结果值"
from 
(
        -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "严重肺部病变患儿比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where belonged_category="严重肺部病变"
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "非严重肺部病变患儿比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where disease_class_name="小儿肺炎" and (belonged_category!="严重肺部病变" or belonged_category is null)
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "重症肺炎患儿比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where belonged_category="重症肺炎"
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "非重症肺炎患儿比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where disease_class_name="小儿肺炎" and (belonged_category!="重症肺炎" or belonged_category is null)
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "完成血痰培养比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where belonged_category="完成血痰培养"
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "未完成血痰培养" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where disease_class_name="小儿肺炎" and (belonged_category!="完成血痰培养" or belonged_category is null)
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}
       
       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "完成实验室检查比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where belonged_category="完成实验室检查"
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "未完成实验室检查比例" as indicator_name, 
              count(distinct uuid) as valid_count 
       from indicator_statistics.yd_patient_11_basic_info
       where disease_class_name="小儿肺炎" and (belonged_category!="完成实验室检查" or belonged_category is null)
--     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--     AND { inpatient_department = [ inpatient_department ]}  
--     AND { disease_name = [disease_class_name ]}  
--     AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 入院4小时内接受首剂抗生素病人
       select "入院4小时内接受首剂抗生素" as indicator_name, 
              count(distinct uuid) as valid_count
       from cap_statistics_antibiotic
       where (TIMESTAMPDIFF(HOUR, admission_date, antibiotic_execute_date) < 4 
             or TIMESTAMPDIFF(HOUR, admission_date, antibiotic_create_date) < 4)
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { inpatient_department = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}  
--           AND { diagnosis_category = [ diagnose_class_name ]}
       
       union
       -- 入院4小时内未接受首剂抗生素病人
       select "入院4小时内未接受首剂抗生素" as indicator_name, 
              count(distinct uuid) as valid_count
       from cap_statistics_antibiotic
       where (TIMESTAMPDIFF(HOUR, admission_date, antibiotic_execute_date) > 4 
             or TIMESTAMPDIFF(HOUR, admission_date, antibiotic_create_date) > 4)
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { inpatient_department = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}  
--           AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 入院6小时内接受首剂抗生素病人
       select "入院6小时内接受首剂抗生素" as indicator_name, 
              count(distinct uuid) as valid_count
       from cap_statistics_antibiotic
       where (TIMESTAMPDIFF(HOUR, admission_date, antibiotic_execute_date) < 6
             or TIMESTAMPDIFF(HOUR, admission_date, antibiotic_create_date) < 6)
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { inpatient_department = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}  
--           AND { diagnosis_category = [ diagnose_class_name ]}
       
       union
       -- 入院6小时内未接受首剂抗生素病人
       select "入院6小时内未接受首剂抗生素" as indicator_name, 
              count(distinct uuid) as valid_count
       from cap_statistics_antibiotic
       where (TIMESTAMPDIFF(HOUR, admission_date, antibiotic_execute_date) > 6 
             or TIMESTAMPDIFF(HOUR, admission_date, antibiotic_create_date) > 6)
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { inpatient_department = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}  
--           AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 入院8小时内接受首剂抗生素病人
       select "入院8小时内接受首剂抗生素" as indicator_name, 
              count(distinct uuid) as valid_count
       from cap_statistics_antibiotic
       where (TIMESTAMPDIFF(HOUR, admission_date, antibiotic_execute_date) < 8
             or TIMESTAMPDIFF(HOUR, admission_date, antibiotic_create_date) < 8)
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { inpatient_department = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}  
--           AND { diagnosis_category = [ diagnose_class_name ]}
       union
       -- 入院8小时内未接受首剂抗生素病人
       select "入院8小时内未接受首剂抗生素" as indicator_name, 
              count(distinct uuid) as valid_count
       from cap_statistics_antibiotic
       where (TIMESTAMPDIFF(HOUR, admission_date, antibiotic_execute_date) > 8 
             or TIMESTAMPDIFF(HOUR, admission_date, antibiotic_create_date) > 8)
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { inpatient_department = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}  
--           AND { diagnosis_category = [ diagnose_class_name ]}

       union
       -- 首剂抗生素
       select "首剂抗生素中位数" as indicator_name, 
              first_time as valid_count 
       from (
              select  @ID2:=@ID2+1 AS ID, first_time from 
       (
              select detail.uuid, TIMESTAMPDIFF(HOUR, csa.admission_date, if(antibiotic_execute_date is not null, antibiotic_execute_date, antibiotic_create_date)) as first_time  from cap_statistics_antibiotic as csa
              join yd_patient_11_basic_info as detail
              on detail.uuid=csa.uuid
              -- where { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
              -- AND { inpatient_department = [ inpatient_department ]}  
              -- AND { disease_name = [disease_class_name ]}  
              -- AND { diagnosis_category = [ diagnose_class_name ]}
       ) as a, (SELECT @ID2:=0) as b
       order by first_time
       ) t where id = ((@ID2+1) div 2)

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "起始抗菌药物中青霉素占比" as indicator_name,
              count(distinct cap_statistics_drug.uuid) as valid_count
       from cap_statistics_drug, (select csa.uuid, csa.common_drug, csa.drug_category, csa.order_create_date, 
                          min(order_create_date) as min_order_create_date
                                   from cap_statistics_drug as csa
                                   where drug_category!=0
                                   group by csa.uuid
                                   ) as part1 
       where part1.min_order_create_date=cap_statistics_drug.order_create_date and cap_statistics_drug.drug_category=1
       and cap_statistics_drug.uuid in (
                            select uuid from yd_patient_11_basic_info 
                            where disease_class_name="小儿肺炎"
                                   -- and { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
                                   -- AND { inpatient_department = [ inpatient_department ]} 
                                   -- AND { disease_name = [disease_class_name ]}  
                                   -- AND { diagnosis_category = [ diagnose_class_name ]}
       )
       
       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "起始抗菌药物中头孢类占比" as indicator_name,
              count(distinct cap_statistics_drug.uuid) as valid_count
       from cap_statistics_drug, (select csa.uuid, csa.common_drug, csa.drug_category, csa.order_create_date, 
                          min(order_create_date) as min_order_create_date
                                   from cap_statistics_drug as csa
                                   where drug_category!=0
                                   group by csa.uuid
                                   ) as part1 
       where part1.min_order_create_date=cap_statistics_drug.order_create_date and cap_statistics_drug.drug_category=2
       and cap_statistics_drug.uuid in (
                            select uuid from yd_patient_11_basic_info 
                            where disease_class_name="小儿肺炎"
                                   -- and { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
                                   -- AND { inpatient_department = [ inpatient_department ]} 
                                   -- AND { disease_name = [disease_class_name ]}  
                                   -- AND { diagnosis_category = [ diagnose_class_name ]}
       )

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "起始抗菌药物中大环内酯类占比" as indicator_name,
              count(distinct cap_statistics_drug.uuid) as valid_count
       from cap_statistics_drug, (select csa.uuid, csa.common_drug, csa.drug_category, csa.order_create_date, 
                          min(order_create_date) as min_order_create_date
                                   from cap_statistics_drug as csa
                                   where drug_category!=0
                                   group by csa.uuid
                                   ) as part1 
       where part1.min_order_create_date=cap_statistics_drug.order_create_date and cap_statistics_drug.drug_category=3
       and cap_statistics_drug.uuid in (
                            select uuid from yd_patient_11_basic_info 
                            where disease_class_name="小儿肺炎"
                                   -- and { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
                                   -- AND { inpatient_department = [ inpatient_department ]} 
                                   -- AND { disease_name = [disease_class_name ]}  
                                   -- AND { diagnosis_category = [ diagnose_class_name ]}
       )

       union
       -- 分子项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
       select "起始抗菌药物中其他类占比" as indicator_name,
              count(distinct cap_statistics_drug.uuid) as valid_count
       from cap_statistics_drug, (select csa.uuid, csa.common_drug, csa.drug_category, csa.order_create_date, 
                          min(order_create_date) as min_order_create_date
                                   from cap_statistics_drug as csa
                                   where drug_category!=0
                                   group by csa.uuid
                                   ) as part1 
       where part1.min_order_create_date=cap_statistics_drug.order_create_date and cap_statistics_drug.drug_category=4
       and cap_statistics_drug.uuid in (
                            select uuid from yd_patient_11_basic_info 
                            where disease_class_name="小儿肺炎"
                                   -- and { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
                                   -- AND { inpatient_department = [ inpatient_department ]} 
                                   -- AND { disease_name = [disease_class_name ]}  
                                   -- AND { diagnosis_category = [ diagnose_class_name ]}
       )

       union
       -- 住院总天数
       select "住院总天数" as indicator_name, 
              sum(DATEDIFF(discharge_date, admission_date)) as valid_count
       from indicator_statistics.yd_patient_11_basic_info
       where disease_class_name="小儿肺炎" 
--           and { admission_date BETWEEN [ startTime1 ]} AND {[ endTime1 ]} 
--           AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { discharge_dept_name = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}
       
       union
       -- 住院平均数
       select "住院平均天数" as indicator_name, 
              avg(DATEDIFF(discharge_date, admission_date)) as valid_count
       from indicator_statistics.yd_patient_11_basic_info
       where disease_class_name="小儿肺炎" 
--           and { admission_date BETWEEN [ startTime1 ]} AND {[ endTime1 ]} 
--           AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--           AND { discharge_dept_name = [ inpatient_department ]}  
--           AND { disease_name = [disease_class_name ]}

       union
       -- 住院日中位数
       SELECT
              "住院日中位数" as indicator_name,
              hospitalized_duration as valid_count
       FROM
              (
       SELECT
              @ID3 := @ID3 + 1 AS ID,
              hospitalized_duration 
       FROM
              (
       SELECT
              DATEDIFF( discharge_date, admission_date ) AS hospitalized_duration 
       FROM
              indicator_statistics.yd_patient_11_basic_info 
       WHERE
              disease_class_name = "小儿肺炎" 
              AND DATEDIFF( discharge_date, admission_date ) IS NOT NULL 
              -- and diagnose_class_name like "%肺炎%" and patient_age<18
       --                          and { admission_date BETWEEN [ startTime1 ]} AND {[ endTime1 ]}
       --                     AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
       --                     AND { discharge_dept_name = [ inpatient_department ]}
       --                     AND { disease_name = [disease_class_name ]}
              
              ) AS part1,
              ( SELECT @ID3 := 0 ) AS part2 
       ORDER BY
              hospitalized_duration 
              ) AS temp 
       WHERE
       ID = ROUND( @ID3 / 2, 0 )

       union
       -- 疗程总天数
       SELECT
              "疗程总天数" as indicator_name,
              sum(TIMESTAMPDIFF( DAY, part2.order_create_date, part4.order_stop_date )) AS valid_count 
       FROM
              (
       -- 最早一个抗生素的开立时间
       SELECT
              part1.uuid,
              part1.order_create_date,
              part1.order_stop_date 
       FROM
              ( SELECT * FROM cap_statistics_drug WHERE drug_category != 0 ORDER BY order_create_date LIMIT 999999 ) AS part1 
       GROUP BY
              uuid 
              ) AS part2
              JOIN (
       -- 最晚一个抗生素的停止时间
       SELECT
              part3.uuid,
              part3.order_stop_date 
       FROM
              ( SELECT * FROM cap_statistics_drug WHERE drug_category != 0 ORDER BY order_stop_date DESC LIMIT 999999 ) AS part3 
       WHERE
              part3.order_stop_date IS NOT NULL 
       --  and { admission_date BETWEEN [ startTime1 ]} AND {[ endTime1 ]} 
       --  AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
       --  AND { discharge_dept_name = [ inpatient_department ]}  
       --  AND { disease_name = [disease_class_name ]}
       GROUP BY
              uuid 
              ) AS part4 ON part2.uuid = part4.uuid 

       union
       -- 疗程平均天数      
       SELECT
              "疗程平均天数" as indicator_name,
              avg(TIMESTAMPDIFF( DAY, part2.order_create_date, part4.order_stop_date )) AS valid_count 
       FROM
              (
       -- 最早一个抗生素的开立时间
       SELECT
              part1.uuid,
              part1.order_create_date,
              part1.order_stop_date 
       FROM
              ( SELECT * FROM cap_statistics_drug WHERE drug_category != 0 ORDER BY order_create_date LIMIT 999999 ) AS part1 
       GROUP BY
              uuid 
              ) AS part2
              JOIN (
       -- 最晚一个抗生素的停止时间
       SELECT
              part3.uuid,
              part3.order_stop_date 
       FROM
              ( SELECT * FROM cap_statistics_drug WHERE drug_category != 0 ORDER BY order_stop_date DESC LIMIT 999999 ) AS part3 
       WHERE
              part3.order_stop_date IS NOT NULL 
       --  and { admission_date BETWEEN [ startTime1 ]} AND {[ endTime1 ]} 
       --  AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
       --  AND { discharge_dept_name = [ inpatient_department ]}  
       --  AND { disease_name = [disease_class_name ]}
       GROUP BY
              uuid 
              ) AS part4 ON part2.uuid = part4.uuid 

       union
       -- 疗程中位数
       SELECT
              "疗程中位数" as indicator_name,
              duration as valid_count
       FROM
              (
       SELECT
              @ID1 := @ID1 + 1 AS ID,
              duration
       FROM
              (
       SELECT
              TIMESTAMPDIFF( DAY, part2.order_create_date, part4.order_stop_date ) AS duration
       FROM
              (
       -- 最早一个抗生素的开立时间
       SELECT
              part1.uuid,
              part1.order_create_date,
              part1.order_stop_date
       FROM
              ( SELECT * FROM cap_statistics_drug WHERE drug_category != 0 ORDER BY order_create_date LIMIT 999999 ) AS part1
       GROUP BY
              uuid
              ) AS part2
              JOIN (
       -- 最晚一个抗生素的停止时间
       SELECT
              part3.uuid,
              part3.order_stop_date
       FROM
              ( SELECT * FROM cap_statistics_drug WHERE drug_category != 0 ORDER BY order_stop_date DESC LIMIT 999999 ) AS part3
       WHERE
              part3.order_stop_date IS NOT NULL --  and { admission_date BETWEEN [ startTime1 ]} AND {[ endTime1 ]}
       --  AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
       --  AND { discharge_dept_name = [ inpatient_department ]}
       --  AND { disease_name = [disease_class_name ]}
       GROUP BY
              uuid
              ) AS part4 ON part2.uuid = part4.uuid
              ) AS tmp,
              ( SELECT @ID1 := 0 ) AS id_cnt
       ORDER BY
              duration
              ) AS result
       WHERE
       id = ( ( @ID1 + 1 ) DIV 2 )
) as part1
join 
(
              -- 分母项目,由于该项目也需要一个动态交互式查询功能,所以where条件相对复杂且不可省略
              select 
                            count( DISTINCT uuid) as  all_count
                     FROM
                            indicator_statistics.yd_patient_11_basic_info
                     WHERE 
                            disease_class_name="小儿肺炎"
--                          AND { discharge_date BETWEEN [ startTime2 ]} AND {[ endTime2 ]}
--                          AND { inpatient_department = [ inpatient_department ]}  
--                          AND { disease_name = [disease_class_name ]}  
--                          AND { diagnosis_category = [ diagnose_class_name ]}
) as all_AMI_count

相关文章

网友评论

      本文标题:2019-08-11合并下载的sql

      本文链接:https://www.haomeiwen.com/subject/vhvejctx.html