выбор правильного типа пациента с использованием выражения регистра - PullRequest
0 голосов
/ 26 марта 2019

введите описание изображения здесь следующий код принимает купание пациента. в конце есть выражение case, которое называется PATIENT_TYPE.

Пациент может быть определен как тип по 1 из 3 вещей. Если они находятся в отделении интенсивной терапии, они являются CHG. Если у них есть определенный тип центральной линии, они являются CHG или STANDARD.

Если они не в icu и не имеют центральной линии, они определяются как STANDARD.

Пациент может иметь 2 разные центральные линии одновременно. 1 строка может быть стандартной, 1 строка может быть chg. Пациент может купаться несколько раз в течение дня. Пациент может показывать несколько строк данных из-за того, сколько раз они купались в этот день.

Тип пациента должен быть постоянным во время пребывания пациента, чтобы он мог правильно купаться.

Пациент а отобразит 2 типа пациентов, если строки - это две разные строки. Так что на 3/1 у Джо был кл, так диспл кл с типом пациента chg. У 3/2 Джо был удален 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...