首页 > 解决方案 > 使用案例表达式选择正确的患者类型

问题描述

在此处输入图像描述,以下代码用于获取患者洗澡。末尾有一个名为 PATIENT_TYPE 的案例表达式。

可以通过 3 种事物中的 1 种将患者定义为类型。如果他们在重症监护室,他们就是 CHG。如果它们有特定类型的中心线,则它们是 CHG 或 STANDARD。

如果它们不在 icu 中并且没有中心线,则它们被定义为标准。

一名患者可以同时拥有 2 条不同的中心线。1行可以是标准的,1行可以是chg的。一个病人一天可以洗澡多次。由于当天洗澡的次数,患者可能会显示多行数据。

在患者逗留期间,患者类型需要保持一致,以便他们获得正确的沐浴。

如果线路是 2 条不同的线路,患者 a 将显示 2 种患者类型。所以在 3 月 1 日,joe 有了一个 cl,所以显示了带有患者类型 chg 的 cl。3/2 joe 移除了 cl,但它在一天中的部分时间在那里,所以仍然显示患者类型 chg。在 3/3 乔仍然在单位,但没有中心线。他的房间类型是标准的,所以他的患者类型现在是标准的,因为他不在 icu 中或有中心线。

我需要能够显示正确的患者类型。线条需要在特定单位的时间内显示。

CL-- PULL ALL CL PATIENTS IN TIME FRAME OF REPORT
AS
(
select DISTINCT
to_char(a.effective_time,'MM/DD/YYYY') AS EFFECT_DATE,
a.effective_time,
L.PAT_ID,
l.PAT_ENC_CSN_ID,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN 'CL' 
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN 'CL' END AS CL,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN  1
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN  1
ELSE NULL END AS CL_FLAG,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN  L.FLO_MEAS_ID 
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN  L.FLO_MEAS_ID 
ELSE NULL END AS FLO_MEAS_ID,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)THEN L.DESCRIPTION 
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN L.DESCRIPTION 
ELSE NULL END AS DISP_NAME,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)THEN L.IP_LDA_ID 
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN L.IP_LDA_ID 
ELSE NULL END AS IP_LDA_ID,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)THEN L.PLACEMENT_INSTANT 
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN L.PLACEMENT_INSTANT 
ELSE NULL END AS PLACEMENT_INSTANT,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)THEN L.REMOVAL_INSTANT
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN L.REMOVAL_INSTANT 
ELSE NULL END AS REMOVAL_INSTANT,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)THEN TO_CHAR(L.PLACEMENT_INSTANT,'MM/DD/YYYY') 
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN TO_CHAR(L.PLACEMENT_INSTANT,'MM/DD/YYYY') 
ELSE NULL END AS PLACEMENT_INSTANT_DATE,
CASE WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND 
TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)THEN TO_CHAR(L.REMOVAL_INSTANT,'MM/DD/YYYY')
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time) THEN TO_CHAR(L.REMOVAL_INSTANT,'MM/DD/YYYY')
ELSE NULL END AS REMOVAL_INSTANT_DATE,
CASE 
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND L.FLO_MEAS_ID =8887095120   AND L.DESCRIPTION LIKE '%Arteriovenous Fistula%' THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND L.FLO_MEAS_ID =8887095120   
AND L.DESCRIPTION LIKE '%Arteriovenous Fistula%' THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION LIKE '%Arteriovenous Graft%'  THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION LIKE '%Arteriovenous Graft%'  THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION LIKE '%Arteriovenous  Graft%' THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION LIKE '%Arteriovenous  Graft%' THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION LIKE '%Tenckhoff Catheter%'   THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION LIKE '%Tenckhoff Catheter%'   THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION LIKE '%Hero Graft%'   THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION LIKE '%Hero Graft%'   THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND L.FLO_MEAS_ID =888300450    AND L.DESCRIPTION LIKE '%Arterial Line%'    THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND L.FLO_MEAS_ID =888300450    
AND L.DESCRIPTION LIKE '%Arterial Line%'    THEN 'STANDARD'

WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION LIKE '%Tenckhoff Catheter%'   THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION LIKE '%Tenckhoff Catheter%'   THEN 'STANDARD'

WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION LIKE '%Hero Graft%'   THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION LIKE '%Hero Graft%'   THEN 'STANDARD'

WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION LIKE '%Arteriovenous Fistula%' THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION LIKE '%Arteriovenous Fistula%' THEN 'STANDARD'

WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION LIKE '%Arteriovenous Graft%'  THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION LIKE '%Arteriovenous Graft%'  THEN 'STANDARD'

WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION LIKE '%Arteriovenous  Graft%' THEN 'STANDARD'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION LIKE '%Arteriovenous  Graft%' THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID IN (26739,26747,26751,26751,26751,26755,26768,8882819,8882826,888304620,888304630,888304640,888304650,888304660,888304670,
3042000201, 3042000202, 3042673901, 8887095100,8887095120,8887095120,8887095120,8883040100580,8883040100583,8883040100584)  THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID IN (26739,26747,26751,26751,26751,26755,26768,8882819,8882826,888304620,888304630,888304640,888304650,888304660,888304670,
3042000201, 3042000202, 3042673901, 8887095100,8887095120,8887095120,8887095120,8883040100580,8883040100583,8883040100584)THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND L.FLO_MEAS_ID =8887095120   AND L.DESCRIPTION NOT LIKE '%Arteriovenous Fistula%' THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND L.FLO_MEAS_ID =8887095120   
AND L.DESCRIPTION NOT LIKE '%Arteriovenous Fistula%' THEN 'STANDARD'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION NOT LIKE  '%Arteriovenous Graft%' THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION NOT LIKE '%Arteriovenous Graft%'  THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION NOT LIKE  '%Arteriovenous  Graft%'    THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION NOT LIKE '%Arteriovenous  Graft%' THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION NOT LIKE  '%Tenckhoff Catheter%'  THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION NOT LIKE '%Tenckhoff Catheter%'   THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095120  AND L.DESCRIPTION NOT LIKE  '%Hero Graft%'  THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095120  
AND L.DESCRIPTION NOT LIKE '%Hero Graft%'   THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND L.FLO_MEAS_ID =888300450    AND L.DESCRIPTION NOT LIKE  '%Arterial Line%'   THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND L.FLO_MEAS_ID =888300450    
AND L.DESCRIPTION NOT LIKE '%Arterial Line%'    THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION NOT LIKE  '%Tenckhoff Catheter%'  THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION NOT LIKE '%Tenckhoff Catheter%'   THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION NOT LIKE  '%Hero Graft%'  THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION NOT LIKE '%Hero Graft%'   THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION NOT LIKE  '%Arteriovenous Fistula%' THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION NOT LIKE '%Arteriovenous Fistula%' THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION NOT LIKE  '%Arteriovenous Graft%' THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION NOT LIKE '%Arteriovenous Graft%'  THEN 'CHG'
WHEN TRUNC(L.PLACEMENT_INSTANT) <= TRUNC(a.effective_time) AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)
AND  L.FLO_MEAS_ID =8887095100  AND L.DESCRIPTION NOT LIKE  '%Arteriovenous  Graft%'    THEN 'CHG'
WHEN L.PLACEMENT_INSTANT IS NULL AND TRUNC(L.REMOVAL_INSTANT)>=  TRUNC(a.effective_time)AND  L.FLO_MEAS_ID =8887095100  
AND L.DESCRIPTION NOT LIKE '%Arteriovenous  Graft%' THEN 'CHG'
ELSE NULL END AS CL_PATIENT_TYPE-- PICKING PATIENT TYPE DEFINED BY LINE TYPES
From IP_LDA_NOADDSINGLE L
JOIN CLARITY_ADT A
ON L.PAT_ENC_CSN_ID = A.PAT_ENC_CSN_ID
where L.FLO_MEAS_ID IN (
26739,  --  Temporary Central Line
26747,  --  Permanent (tunneled) Catheter
)AND
(a.effective_time between (select start_date from dd) AND (select end_date from dd)+1)
)
,
CL2
AS
(
select DISTINCT
L.EFFECT_DATE,
L.effective_time,
L.PAT_ID,
L.IP_LDA_ID,
l.PAT_ENC_CSN_ID,
L.CL_FLAG,
L.FLO_MEAS_ID,
L.DISP_NAME,
L.PLACEMENT_INSTANT,
L.REMOVAL_INSTANT,
L.PLACEMENT_INSTANT_DATE,
L.REMOVAL_INSTANT_DATE,
L.CL_PATIENT_TYPE,-- PICKING PATIENT TYPE DEFINED BY LINE TYPES FROM CL L
MIN(L.CL_PATIENT_TYPE) OVER (PARTITION BY L.PAT_ID,L.EFFECT_DATE)  AS MIN_CLPAT,
MAX(L.CL_PATIENT_TYPE) OVER (PARTITION BY L.PAT_ID,L.EFFECT_DATE)  AS MAX_CLPAT,
L.CL
FROM CL L
WHERE L.CL_FLAG=1 
)
,
PTS -- PATIENTS
AS
(select distinct
DEP.REV_LOC_ID AS HOSPITAL,
adt.DEPARTMENT_ID,
dep.department_name,
to_char(adt.effective_time,'MM/DD/YYYY') AS EFFECT_DATE,
ADT.EFFECTIVE_TIME,
ADT.PAT_ID,
PEH.Y_MRN,
PEH.PAT_ENC_CSN_ID,
peh.inpatient_data_id,
peh.hosp_admsn_time,
CASE WHEN ADT.DEPARTMENT_ID NOT IN 
(2133009,4313023,4313015,4313016,4314007,4314009,4314027,5119219,5119221,5115578,73,5115579,5119222,5123216,5133207,5119223,5101202,5133026,5119220,5120202,5119218,5119235 ) THEN 'STANDARD'WHEN ADT.DEPARTMENT_ID IN (2133009,4313023,4313015,4313016,4314007,4314009,4314027,5119219,5119221,5115578,73,5115579,5119222,5123216,5133207,5119223,5101202,5133026,5119220,5120202,5119218,5119235 )  THEN 'CHG'END AS RM_PATIENT_TYPE--PICKING UP PATIENT TYPE DEFINED BY ROOM 
from
clarity_adt adt
left outer join
pat_enc_hsp peh on
adt.PAT_ENC_CSN_ID = peh.PAT_ENC_CSN_ID
LEFT OUTER join
clarity_dep dep
on adt.DEPARTMENT_ID = dep.DEPARTMENT_ID
where
((adt.effective_time between (select start_date from dd) AND (select end_date from dd)+1)
and trunc (adt.effective_time) <> trunc (peh.hosp_admsn_time)
) and adt.event_type_c in (6)
and PEH.ADT_PAT_CLASS_C = '1' 
AND adt.event_subtype_c <> 2
)
,
FMEAS -- BATHING FLOW MEASURE
AS
(
select distinct
adt.DEPARTMENT_ID,
dep.department_name,
ADT.PAT_ID,
PEH.Y_MRN,
PEH.PAT_ENC_CSN_ID AS FMEAS_PAT_ENC_CSN_ID,
NULL AS y_inpatient_dat,
to_char(ADT.EFFECTIVE_TIME,'MM/DD/YYYY') AS EFFECT_DATE,
NULL AS RECORDED_TIME,
TO_CHAR(ADT.EFFECTIVE_TIME,'MM/DD/YYYY') AS RECORDED_DATE,
NULL AS meas_value,
NULL AS Standard_Bath,
NULL AS CHG
from
clarity_adt adt
LEFT OUTER join
pat_enc_hsp peh
on
adt.PAT_ENC_CSN_ID = peh.PAT_ENC_CSN_ID
LEFT OUTER JOIN
clarity_dep dep
on 
adt.DEPARTMENT_ID = dep.DEPARTMENT_ID
where
DEP.REV_LOC_ID IN (2133)--, 4313,4314,5133)
AND
 (adt.effective_time between (select start_date from dd) AND (select end_date from dd)+1) and adt.event_type_c in (6)
and PEH.ADT_PAT_CLASS_C = '1' 
AND adt.event_subtype_c <> 2

UNION

select distinct
adt.DEPARTMENT_ID,
dep.department_name,
ADT.PAT_ID,
PEH.Y_MRN,
PEH.PAT_ENC_CSN_ID AS FMEAS_PAT_ENC_CSN_ID,
fmeas.y_inpatient_dat,
to_char(ADT.EFFECTIVE_TIME,'MM/DD/YYYY') AS EFFECT_DATE,
Fmeas.Recorded_Time AS RECORDED_TIME,
TO_CHAR(fMEAS.RECORDED_TIME,'MM/DD/YYYY') AS RECORDED_DATE,
fmeas.meas_value,
CASE WHEN Fmeas.MEAS_VALUE LIKE 'Standard%' THEN 'Standard bathing wipes' 
WHEN Fmeas.MEAS_VALUE LIKE '%Standard bathing wipes%' THEN 'Standard bathing wipes' 
WHEN Fmeas.MEAS_VALUE LIKE '%Indep%' THEN 'Independent Shower' END AS Standard_Bath,
CASE WHEN Fmeas.MEAS_VALUE LIKE '%CHG (Chlorhexidine) bathing wipes%' THEN 'CHG (Chlorhexidine) bathing wipes'
WHEN Fmeas.MEAS_VALUE LIKE '%Independent Shower%' THEN 'Independent Shower'
WHEN Fmeas.MEAS_VALUE LIKE '%Incontience Care%'then 'Incontience Care'
WHEN Fmeas.MEAS_VALUE LIKE '%Bath not given - Patient refused CHG  %'then 'Bath not given - Patient refused CHG'
WHEN Fmeas.MEAS_VALUE LIKE '%Bath not given - CHG contraindicated%'then 'Bath not given - CHG contraindicated' 
WHEN Fmeas.MEAS_VALUE LIKE 'Bath not given - Other Comment%'then 'Bath not given - Other Comment' END AS CHG
from
clarity_adt adt
LEFT OUTER join
pat_enc_hsp peh
on
adt.PAT_ENC_CSN_ID = peh.PAT_ENC_CSN_ID
LEFT OUTER join
Ip_Flwsht_Meas fmeas 
on 
fmeas.y_inpatient_dat=peh.inpatient_data_id
LEFT OUTER JOIN
clarity_dep dep
on 
adt.DEPARTMENT_ID = dep.DEPARTMENT_ID
where
(fmeas.RECORDED_TIME between (select start_date from dd) AND (select end_date from dd)+1)
and
 (adt.effective_time between (select start_date from dd) AND (select end_date from dd)+1)
and
fmeas.flo_meas_id='888305660' 
and adt.event_type_c in (6)
and 
PEH.ADT_PAT_CLASS_C = '1' 
AND 
adt.event_subtype_c <> 2
)
,
PT2-- JOIN FLOWMEAS TO PATS
AS
(
SELECT DISTINCT
P.HOSPITAL,
P.DEPARTMENT_ID,
P.department_name,
P.EFFECT_DATE,
P.effective_time,
P.PAT_ID,
P.Y_MRN,
P.hosp_admsn_time,
P.PAT_ENC_CSN_ID,
P.RM_PATIENT_TYPE,
F.RECORDED_TIME,
F.RECORDED_DATE,
F.meas_value,
F.Standard_Bath,
F.CHG,
CASE 
WHEN F.MEAS_VALUE IS NULL THEN 'NOT DOCUMENTED' 
WHEN F.MEAS_VALUE ='Standard bathing wipes' THEN 'WASHED / GIVEN' 
WHEN F.MEAS_VALUE LIKE '%Indep%' THEN 'WASHED / GIVEN'
WHEN F.MEAS_VALUE LIKE 'Indep%' THEN 'WASHED / GIVEN'
WHEN F.MEAS_VALUE LIKE '%CHG (Chlorhexidine) bathing wipes%' THEN 'WASHED / GIVEN'
WHEN F.MEAS_VALUE LIKE 'CHG (Chlorhexidine) bathing wipes%' THEN 'WASHED / GIVEN'
WHEN F.MEAS_VALUE LIKE 'Incontinence care%'then 'WASHED / GIVEN' 
WHEN F.MEAS_VALUE LIKE '%Incontinence care%'then 'WASHED / GIVEN' 
WHEN F.MEAS_VALUE LIKE '%Bath not given – Other (comment)%' THEN 'NOT GIVEN'
WHEN F.MEAS_VALUE LIKE '%refused%' then 'Refused'
WHEN F.MEAS_VALUE LIKE '%CHG contraindicated%' then 'Contraindicated'
WHEN F.MEAS_VALUE = 'Bath not given – CHG contraindicated' then 'Contraindicated'
END AS BATH_STATUS
FROM 
PTS P
LEFT OUTER JOIN
FMEAS F
ON
P.PAT_ENC_CSN_ID = F.FMEAS_PAT_ENC_CSN_ID
WHERE 
P.EFFECT_DATE = F.RECORDED_DATE 
ORDER BY
P.HOSPITAL,
P.DEPARTMENT_ID,
P.EFFECT_DATE,
P.Y_MRN,
F.RECORDED_DATE)
,
FIN
AS
(
SELECT DISTINCT
P.HOSPITAL,
P.DEPARTMENT_ID,
P.department_name,
P.EFFECT_DATE,
P.effective_time,
C.IP_LDA_ID,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.IP_LDA_ID 
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.IP_LDA_ID 
ELSE NULL END AS IP_LDA_ID_A,
C.DISP_NAME,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.DISP_NAME
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.DISP_NAME 
ELSE NULL END AS DISP_NAME_A,
C.PLACEMENT_INSTANT,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.PLACEMENT_INSTANT 
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN TO_DATE('01/01/1900','MM/DD/YYYY') 
ELSE NULL END AS PLACEMENT_INSTANT_A,
C.REMOVAL_INSTANT,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.REMOVAL_INSTANT 
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.REMOVAL_INSTANT 
ELSE NULL END AS REMOVAL_INSTANT_A,
C.PLACEMENT_INSTANT_DATE,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.PLACEMENT_INSTANT_DATE
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.PLACEMENT_INSTANT_DATE
ELSE NULL END AS PLACEMENT_INSTANT_DATE_A,
C.REMOVAL_INSTANT_DATE,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.REMOVAL_INSTANT_DATE 
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.REMOVAL_INSTANT_DATE 
ELSE NULL END AS REMOVAL_INSTANT_DATE_A,
C.CL,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.CL 
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.CL 
ELSE NULL END AS CL_A,
C.CL_PATIENT_TYPE,
CASE WHEN TRUNC(C.PLACEMENT_INSTANT) <= TRUNC(P.effective_time) AND 
TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time)THEN C.CL_PATIENT_TYPE 
WHEN C.PLACEMENT_INSTANT IS NULL AND TRUNC(C.REMOVAL_INSTANT)>=  TRUNC(P.effective_time) THEN C.CL_PATIENT_TYPE
ELSE NULL END AS CL_PATIENT_TYPE_A,
P.RM_PATIENT_TYPE,
P.PAT_ID,
P.Y_MRN,
P.hosp_admsn_time,
P.PAT_ENC_CSN_ID,
P.RECORDED_TIME,
P.RECORDED_DATE,
P.meas_value,
P.Standard_Bath,
P.CHG,
P.BATH_STATUS
FROM 
PT2 P
LEFT OUTER JOIN
CL C
ON
P.PAT_ENC_CSN_ID =C.PAT_ENC_CSN_ID 
WHERE 
(P.effective_time between (select start_date from dd) AND (select end_date from dd)+1)
)
SELECT DISTINCT
P.EFFECT_DATE,
P.Y_MRN,
**CASE WHEN P.DEPARTMENT_ID IN (2133009,4313023,4313015,4313016,4314007,4314009,4314027,5119219,5119221,5115578,73,5115579,5119222,5123216,
5133207,5119223,5101202,5133026,5119220,5120202,5119218,5119235) THEN 'CHG' 
WHEN P.IP_LDA_ID_A IS NOT NULL AND P.DEPARTMENT_ID NOT IN (2133009,4313023,4313015,4313016,4314007,4314009,4314027,5119219,5119221,5115578,73,5115579,5119222,5123216,
5133207,5119223,5101202,5133026,5119220,5120202,5119218,5119235)THEN MIN(P.CL_PATIENT_TYPE_A) OVER (PARTITION BY P.PAT_ID,P.EFFECT_DATE) 
WHEN P.IP_LDA_ID_A IS NULL AND P.DEPARTMENT_ID NOT IN (2133009,4313023,4313015,4313016,4314007,4314009,4314027,5119219,5119221,5115578,73,5115579,5119222,5123216,
5133207,5119223,5101202,5133026,5119220,5120202,5119218,5119235)THEN P.RM_PATIENT_TYPE END AS PATIENT_TYPE,**
FROM 
FIN P

标签: sqloraclecase

解决方案


推荐阅读