A
AND has precedence over OR. However evaluating the exact order gets complicated, and you cannot guarantee the next person maintaining the code does know the precedence rules.
So I always recommend explicitly using parentheses when mixing ANDS and ORS.
For your code example, remove the unnecessary parentheses around the individual, and grouped and conditions, and just place a single set of parentheses around the whole group of AND statements - that whole section is only true, if all the conditions are met.
Then do your OR
Then group the next set of conditions in a single set of parentheses
It will be MUCH clearer then.
Also looks quite familiar - I work in a hospital too!
OK, I've edited as I suggested (Roughly - I'd work on the indentation a little) - bear in mind I can't test it so I might have made a typo.
Additional point, using ANSI style joins e.g
FROM encounter e JOIN enctr_alias ea ON e.enctr_id = ea.encntr_id
instead of joining in the where clause will make this easier to maintain and more flexible as well - is this old code?
Oracle PL/SQL: how to get the stack trace, package name and procedure name
SELECT /*+ ALL_ROWS */
ENCOUNTER.ENCNTR_ID,
ENCNTR_ALIAS.ALIAS,
PERSON.NAME_FULL_FORMATTED,
CLINICAL_EVENT.EVENT_CD,
CV_EVENT.DISPLAY,
CLINICAL_EVENT.RESULT_VAL,
pi_from_gmt(CLINICAL_EVENT.EVENT_END_DT_TM,( pi_time_zone(1,@Variable('BOUSER')) ))
,
CE_PRSNL.NAME_FULL_FORMATTED,
CV_FACILITY.DISPLAY,
CV_NURSE_UNIT.DISPLAY,
pi_from_gmt(ENCOUNTER.REG_DT_TM,( pi_time_zone(1,@Variable('BOUSER')) )),
pi_from_gmt(ENCOUNTER.ARRIVE_DT_TM,( pi_time_zone(1,@Variable('BOUSER')) )),
CV_ROOM.DISPLAY,
CV_BED.DISPLAY,
trunc((pi_to_gmt(sysdate,( pi_time_zone(2,@Variable('BOUSER')) )) - ( Da2_birth_dttm(PERSON.BIRTH_DT_TM,PERSON.BIRTH_TZ,PERSON.BIRTH_PREC_FLAG,1,0)
))/365.25,0)
,
ENCOUNTER.REASON_FOR_VISIT,
NOMENCLATURE3.SOURCE_IDENTIFIER,
NOMENCLATURE3.SOURCE_STRING
FROM
ENCOUNTER,
ENCNTR_ALIAS,
CODE_VALUE CV_ENCNTR_ALIAS_TYPE,
PERSON,
CLINICAL_EVENT,
CODE_VALUE CV_EVENT,
PRSNL CE_PRSNL,
CODE_VALUE CV_FACILITY,
CODE_VALUE CV_NURSE_UNIT,
CODE_VALUE CV_ROOM,
CODE_VALUE CV_BED,
DIAGNOSIS,
NOMENCLATURE NOMENCLATURE3,
PERSON CE_PERSON
WHERE
--Start of compulsory conditions
(
ENCNTR_ALIAS.ENCNTR_ID=ENCOUNTER.ENCNTR_ID
AND ENCNTR_ALIAS.ACTIVE_IND = 1
AND ENCNTR_ALIAS.END_EFFECTIVE_DT_TM > SYSDATE AND ENCOUNTER.ACTIVE_IND = 1
AND ENCNTR_ALIAS.ENCNTR_ALIAS_TYPE_CD=CV_ENCNTR_ALIAS_TYPE.CODE_VALUE
AND CV_FACILITY.CODE_VALUE=ENCOUNTER.LOC_FACILITY_CD AND ENCOUNTER.ACTIVE_IND = 1
AND ENCOUNTER.LOC_NURSE_UNIT_CD=CV_NURSE_UNIT.CODE_VALUE AND ENCOUNTER.ACTIVE_IND = 1
AND CV_ROOM.CODE_VALUE=ENCOUNTER.LOC_ROOM_CD AND ENCOUNTER.ACTIVE_IND = 1
AND CV_BED.CODE_VALUE=ENCOUNTER.LOC_BED_CD AND ENCOUNTER.ACTIVE_IND = 1
AND DIAGNOSIS.ENCNTR_ID=ENCOUNTER.ENCNTR_ID AND ENCOUNTER.ACTIVE_IND = 1
AND DIAGNOSIS.ACTIVE_IND =1
AND DIAGNOSIS.NOMENCLATURE_ID=NOMENCLATURE3.NOMENCLATURE_ID
AND CLINICAL_EVENT.EVENT_CD=CV_EVENT.CODE_VALUE
AND ENCOUNTER.ENCNTR_ID=CLINICAL_EVENT.ENCNTR_ID AND ENCOUNTER.ACTIVE_IND = 1 AND ENCOUNTER.PERSON_ID = CLINICAL_EVENT.PERSON_ID
AND CLINICAL_EVENT.PERFORMED_PRSNL_ID=CE_PERSON.PERSON_ID
AND ENCNTR_ALIAS.ENCNTR_ID=ENCOUNTER.ENCNTR_ID
AND CV_ENCNTR_ALIAS_TYPE.CODE_VALUE=ENCNTR_ALIAS.ENCNTR_ALIAS_TYPE_CD
AND ENCOUNTER.PERSON_ID=PERSON.PERSON_ID
AND DIAGNOSIS.ACTIVE_IND = 1
AND PERSON.ACTIVE_IND = 1
AND ENCNTR_ALIAS.ENCNTR_ID=ENCOUNTER.ENCNTR_ID
AND ENCNTR_ALIAS.ACTIVE_IND = 1
AND ENCNTR_ALIAS.END_EFFECTIVE_DT_TM> SYSDATE
AND ENCOUNTER.ACTIVE_IND = 1
AND CE_PERSON.PERSON_ID=CE_PRSNL.PERSON_ID
AND ENCOUNTER.ACTIVE_IND = 1
AND NOMENCLATURE3.ACTIVE_IND= 1
AND CV_ENCNTR_ALIAS_TYPE.ACTIVE_IND= 1
AND CV_ENCNTR_ALIAS_TYPE.CODE_SET = 319
and CV_ENCNTR_ALIAS_TYPE.CDF_MEANING = 'FIN NBR'
and ENCNTR_ALIAS.end_effective_dt_tm> SYSDATE
and ENCNTR_ALIAS.active_ind=1
AND CV_FACILITY.CODE_VALUE IN ( 5026 )
-- Look Back 24 hours
AND ENCOUNTER.ARRIVE_DT_TM BETWEEN pi_to_gmt(trunc(sysdate-21, 'DAY'), ( pi_time_zone(2,@Variable('BOUSER')) )) AND pi_to_gmt(SYSDATE,( pi_time_zone(2,@Variable('BOUSER')) ))
-- AND
-- trunc((( pi_from_gmt(ENCOUNTER.REG_DT_TM,( pi_time_zone(1,@Variable('BOUSER')) )) ) - PERSON.BIRTH_DT_TM)/365.25,0)
-- >= 74
AND ENCOUNTER.DISCH_DT_TM Is Null
) -- End of compulsory conditions
AND CV_EVENT.CODE_VALUE IN (15680255)
-- Case #1 All Trach patient
OR
-----------ALL these need to be met for the data set to qualify
(
CV_EVENT.DISPLAY IN ( 'Braden Score' )
AND CLINICAL_EVENT.RESULT_VAL < '14'
AND NOMENCLATURE3.SOURCE_IDENTIFIER IN ( '0048084F-1C9E-401C-BBFC-460A9CB4F917','03F9F547-33FA-4938-8BF0-4A8F0F1B69D1','0708636D-9213-4C7A-A226-3E5F71E4647F','208688010','A10673A7-D965-43C4-8B58-9E6174988FC9','AA5E3378-66C0-4317-824F-DD5868512949','C01','C02.0','C02.1','C02.3','C02.8','C02.9','C03.0','C03.1','C03.9','C04.1','C04.9','C05.1','C05.9','C06.0','C06.2','C06.9','C07','C08.0','C08.9','C09.0','C09.8','C09.9','C10.8','C10.9','C11.8','C11.9','C12','C13.1','C13.2','C13.9','C14.0','C15.3','C15.4','C15.5','C15.9','C16.0','C16.1','C16.3','C16.4','C16.9','C17.0','C17.2','C17.9','C18.0','C18.1','C18.2','C18.4','C18.5','C18.6','C18.7','C18.8','C18.9','C19','C20','C21.0','C21.1','C21.8','C22.0','C22.1','C22.2','C22.4','C22.8','C22.9','C23','C24.0','C24.1','C24.8','C24.9','C241771B-DD13-41AC-85CE-63AB8E7B7FC5','C25.0','C25.1','C25.2','C25.4','C25.8','C25.9','C30.0','C31.0','C31.1','C31.2','C31.3','C31.8','C31.9','C32.0','C32.1','C32.2','C32.3','C32.8','C32.9','C34.01','C34.02','C34.10','C34.11','C34.12','C34.2','C34.31','C34.32','C34.90','C34.91','C34.92','C37','C38.1','C40.02','C40.21','C41.0','C41.1','C41.2','C41.3','C41.4','C41.9','C43.10','C43.20','C43.21','C43.30','C43.39','C43.4','C43.52','C43.59','C43.60','C43.61','C43.62','C43.71','C43.72','C43.9',
'C43.9',
'C44.211',
'C44.219',
'Z99.11')
AND CLINICAL_EVENT.EVENT_CD IN (839632151, 828777784, 3895375)
AND CLINICAL_EVENT.EVENT_CD IN (3797004, 245586366, 82473347, 2165572293)
AND CLINICAL_EVENT.RESULT_VAL < '64'
)
/* @Variable('UNVNAME') - @Variable('BOUSER') - @Variable('DOCNAME') */
'''