DBMS: postgresql Error: org.postgresql.util.PSQLException: ERROR: syntax error at or near "#" Position: 971 SQL: with primary_events (event_id, person_id, start_date, end_date, op_start_date, op_end_date, visit_occurrence_id) as ( -- Begin Primary Events select P.ordinal as event_id, P.person_id, P.start_date, P.end_date, op_start_date, op_end_date, cast(P.visit_occurrence_id as bigint) as visit_occurrence_id FROM ( select E.person_id, E.start_date, E.end_date, row_number() OVER (PARTITION BY E.person_id ORDER BY E.sort_date ASC) ordinal, OP.observation_period_start_date as op_start_date, OP.observation_period_end_date as op_end_date, cast(E.visit_occurrence_id as bigint) as visit_occurrence_id FROM ( -- Begin Condition Occurrence Criteria SELECT C.person_id, C.condition_occurrence_id as event_id, C.condition_start_date as start_date, COALESCE(C.condition_end_date, DATEADD(day,1,C.condition_start_date)) as end_date, C.visit_occurrence_id, C.condition_start_date as sort_date FROM ( SELECT co.* FROM cdm.CONDITION_OCCURRENCE co JOIN #Codesets cs on (co.condition_concept_id = cs.concept_id and cs.codeset_id = 7) ) C -- End Condition Occurrence Criteria UNION ALL -- Begin Drug Exposure Criteria select C.person_id, C.drug_exposure_id as event_id, C.drug_exposure_start_date as start_date, COALESCE(C.DRUG_EXPOSURE_END_DATE, DATEADD(day,C.DAYS_SUPPLY,DRUG_EXPOSURE_START_DATE), DATEADD(day,1,C.DRUG_EXPOSURE_START_DATE)) as end_date, C.visit_occurrence_id,C.drug_exposure_start_date as sort_date from ( select de.* FROM cdm.DRUG_EXPOSURE de JOIN #Codesets cs on (de.drug_concept_id = cs.concept_id and cs.codeset_id = 11) ) C -- End Drug Exposure Criteria UNION ALL -- Begin Device Exposure Criteria select C.person_id, C.device_exposure_id as event_id, C.device_exposure_start_date as start_date, COALESCE(C.device_exposure_end_date, DATEADD(day,1,C.device_exposure_start_date)) as end_date, C.visit_occurrence_id, C.device_exposure_start_date as sort_date from ( select de.* FROM cdm.DEVICE_EXPOSURE de JOIN #Codesets cs on (de.device_concept_id = cs.concept_id and cs.codeset_id = 10) ) C -- End Device Exposure Criteria ) E JOIN cdm.observation_period OP on E.person_id = OP.person_id and E.start_date >= OP.observation_period_start_date and E.start_date <= op.observation_period_end_date WHERE DATEADD(day,365,OP.OBSERVATION_PERIOD_START_DATE) <= E.START_DATE AND DATEADD(day,0,E.START_DATE) <= OP.OBSERVATION_PERIOD_END_DATE ) P WHERE P.ordinal = 1 -- End Primary Events ) SELECT event_id, person_id, start_date, end_date, op_start_date, op_end_date, visit_occurrence_id INTO #qualified_events FROM ( select pe.event_id, pe.person_id, pe.start_date, pe.end_date, pe.op_start_date, pe.op_end_date, row_number() over (partition by pe.person_id order by pe.start_date ASC) as ordinal, cast(pe.visit_occurrence_id as bigint) as visit_occurrence_id FROM primary_events pe ) QE ; --- Inclusion Rule Inserts select 0 as inclusion_rule_id, person_id, event_id INTO #Inclusion_0 FROM ( select pe.person_id, pe.event_id FROM #qualified_events pe JOIN ( -- Begin Criteria Group select 0 as index_id, person_id, event_id FROM ( select E.person_id, E.event_id FROM #qualified_events E INNER JOIN ( -- Begin Correlated Criteria select 0 as index_id, cc.person_id, cc.event_id from (SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Condition Occurrence Criteria SELECT C.person_id, C.condition_occurrence_id as event_id, C.condition_start_date as start_date, COALESCE(C.condition_end_date, DATEADD(day,1,C.condition_start_date)) as end_date, C.visit_occurrence_id, C.condition_start_date as sort_date FROM ( SELECT co.* FROM cdm.CONDITION_OCCURRENCE co JOIN #Codesets cs on (co.condition_concept_id = cs.concept_id and cs.codeset_id = 7) ) C -- End Condition Occurrence Criteria ) A on A.person_id = P.person_id AND A.START_DATE >= P.OP_START_DATE AND A.START_DATE <= P.OP_END_DATE AND A.START_DATE >= DATEADD(day,0,P.START_DATE) AND A.START_DATE <= P.OP_END_DATE ) cc GROUP BY cc.person_id, cc.event_id HAVING COUNT(cc.event_id) >= 2 -- End Correlated Criteria UNION ALL -- Begin Correlated Criteria select 1 as index_id, cc.person_id, cc.event_id from (SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Drug Exposure Criteria select C.person_id, C.drug_exposure_id as event_id, C.drug_exposure_start_date as start_date, COALESCE(C.DRUG_EXPOSURE_END_DATE, DATEADD(day,C.DAYS_SUPPLY,DRUG_EXPOSURE_START_DATE), DATEADD(day,1,C.DRUG_EXPOSURE_START_DATE)) as end_date, C.visit_occurrence_id,C.drug_exposure_start_date as sort_date from ( select de.* FROM cdm.DRUG_EXPOSURE de JOIN #Codesets cs on (de.drug_concept_id = cs.concept_id and cs.codeset_id = 11) ) C -- End Drug Exposure Criteria ) A on A.person_id = P.person_id AND A.START_DATE >= P.OP_START_DATE AND A.START_DATE <= P.OP_END_DATE AND A.START_DATE >= DATEADD(day,0,P.START_DATE) AND A.START_DATE <= P.OP_END_DATE ) cc GROUP BY cc.person_id, cc.event_id HAVING COUNT(cc.event_id) >= 1 -- End Correlated Criteria UNION ALL -- Begin Correlated Criteria select 2 as index_id, cc.person_id, cc.event_id from (SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Device Exposure Criteria select C.person_id, C.device_exposure_id as event_id, C.device_exposure_start_date as start_date, COALESCE(C.device_exposure_end_date, DATEADD(day,1,C.device_exposure_start_date)) as end_date, C.visit_occurrence_id, C.device_exposure_start_date as sort_date from ( select de.* FROM cdm.DEVICE_EXPOSURE de JOIN #Codesets cs on (de.device_concept_id = cs.concept_id and cs.codeset_id = 10) ) C -- End Device Exposure Criteria ) A on A.person_id = P.person_id AND A.START_DATE >= P.OP_START_DATE AND A.START_DATE <= P.OP_END_DATE AND A.START_DATE >= DATEADD(day,0,P.START_DATE) AND A.START_DATE <= P.OP_END_DATE ) cc GROUP BY cc.person_id, cc.event_id HAVING COUNT(cc.event_id) >= 1 -- End Correlated Criteria ) CQ on E.person_id = CQ.person_id and E.event_id = CQ.event_id GROUP BY E.person_id, E.event_id HAVING COUNT(index_id) > 0 ) G -- End Criteria Group ) AC on AC.person_id = pe.person_id AND AC.event_id = pe.event_id ) Results ; select 1 as inclusion_rule_id, person_id, event_id INTO #Inclusion_1 FROM ( select pe.person_id, pe.event_id FROM #qualified_events pe JOIN ( -- Begin Criteria Group select 0 as index_id, person_id, event_id FROM ( select E.person_id, E.event_id FROM #qualified_events E INNER JOIN ( -- Begin Correlated Criteria select 0 as index_id, cc.person_id, cc.event_id from (SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Condition Occurrence Criteria SELECT C.person_id, C.condition_occurrence_id as event_id, C.condition_start_date as start_date, COALESCE(C.condition_end_date, DATEADD(day,1,C.condition_start_date)) as end_date, C.visit_occurrence_id, C.condition_start_date as sort_date FROM ( SELECT co.* FROM cdm.CONDITION_OCCURRENCE co JOIN #Codesets cs on (co.condition_concept_id = cs.concept_id and cs.codeset_id = 7) ) C -- End Condition Occurrence Criteria ) A on A.person_id = P.person_id AND A.START_DATE >= P.OP_START_DATE AND A.START_DATE <= P.OP_END_DATE AND A.START_DATE >= DATEADD(day,0,P.START_DATE) AND A.START_DATE <= P.OP_END_DATE ) cc GROUP BY cc.person_id, cc.event_id HAVING COUNT(cc.event_id) >= 1 -- End Correlated Criteria ) CQ on E.person_id = CQ.person_id and E.event_id = CQ.event_id GROUP BY E.person_id, E.event_id HAVING COUNT(index_id) = 1 ) G -- End Criteria Group ) AC on AC.person_id = pe.person_id AND AC.event_id = pe.event_id ) Results ; select 2 as inclusion_rule_id, person_id, event_id INTO #Inclusion_2 FROM ( select pe.person_id, pe.event_id FROM #qualified_events pe JOIN ( -- Begin Criteria Group select 0 as index_id, person_id, event_id FROM ( select E.person_id, E.event_id FROM #qualified_events E INNER JOIN ( -- Begin Correlated Criteria select 0 as index_id, p.person_id, p.event_id from #qualified_events p LEFT JOIN ( SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Condition Occurrence Criteria SELECT C.person_id, C.condition_occurrence_id as event_id, C.condition_start_date as start_date, COALESCE(C.condition_end_date, DATEADD(day,1,C.condition_start_date)) as end_date, C.visit_occurrence_id, C.condition_start_date as sort_date FROM ( SELECT co.* FROM cdm.CONDITION_OCCURRENCE co JOIN #Codesets cs on (co.condition_concept_id = cs.concept_id and cs.codeset_id = 7) ) C -- End Condition Occurrence Criteria ) A on A.person_id = P.person_id AND A.START_DATE <= DATEADD(day,-1,P.START_DATE) ) cc on p.person_id = cc.person_id and p.event_id = cc.event_id GROUP BY p.person_id, p.event_id HAVING COUNT(cc.event_id) <= 0 -- End Correlated Criteria UNION ALL -- Begin Correlated Criteria select 1 as index_id, p.person_id, p.event_id from #qualified_events p LEFT JOIN ( SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Drug Exposure Criteria select C.person_id, C.drug_exposure_id as event_id, C.drug_exposure_start_date as start_date, COALESCE(C.DRUG_EXPOSURE_END_DATE, DATEADD(day,C.DAYS_SUPPLY,DRUG_EXPOSURE_START_DATE), DATEADD(day,1,C.DRUG_EXPOSURE_START_DATE)) as end_date, C.visit_occurrence_id,C.drug_exposure_start_date as sort_date from ( select de.* FROM cdm.DRUG_EXPOSURE de JOIN #Codesets cs on (de.drug_concept_id = cs.concept_id and cs.codeset_id = 11) ) C -- End Drug Exposure Criteria ) A on A.person_id = P.person_id AND A.START_DATE <= DATEADD(day,-1,P.START_DATE) ) cc on p.person_id = cc.person_id and p.event_id = cc.event_id GROUP BY p.person_id, p.event_id HAVING COUNT(cc.event_id) <= 0 -- End Correlated Criteria UNION ALL -- Begin Correlated Criteria select 2 as index_id, p.person_id, p.event_id from #qualified_events p LEFT JOIN ( SELECT p.person_id, p.event_id FROM #qualified_events P JOIN ( -- Begin Device Exposure Criteria select C.person_id, C.device_exposure_id as event_id, C.device_exposure_start_date as start_date, COALESCE(C.device_exposure_end_date, DATEADD(day,1,C.device_exposure_start_date)) as end_date, C.visit_occurrence_id, C.device_exposure_start_date as sort_date from ( select de.* FROM cdm.DEVICE_EXPOSURE de JOIN #Codesets cs on (de.device_concept_id = cs.concept_id and cs.codeset_id = 10) ) C -- End Device Exposure Criteria ) A on A.person_id = P.person_id AND A.START_DATE <= DATEADD(day,-1,P.START_DATE) ) cc on p.person_id = cc.person_id and p.event_id = cc.event_id GROUP BY p.person_id, p.event_id HAVING COUNT(cc.event_id) <= 0 -- End Correlated Criteria ) CQ on E.person_id = CQ.person_id and E.event_id = CQ.event_id GROUP BY E.person_id, E.event_id HAVING COUNT(index_id) = 3 ) G -- End Criteria Group ) AC on AC.person_id = pe.person_id AND AC.event_id = pe.event_id ) Results ; SELECT inclusion_rule_id, person_id, event_id INTO inclusion_events FROM (select inclusion_rule_id, person_id, event_id from Inclusion_0 UNION ALL select inclusion_rule_id, person_id, event_id from Inclusion_1 UNION ALL select inclusion_rule_id, person_id, event_id from Inclusion_2) I R version: R version 4.1.2 (2021-11-01) Platform: x86_64-w64-mingw32 Attached base packages: - stats - graphics - grDevices - utils - datasets - methods - base Other attached packages: