From 80ffd47778de33818351378c1e460ec09474caa3 Mon Sep 17 00:00:00 2001 From: Andreas Martinson Date: Sat, 14 Mar 2026 12:57:39 -0700 Subject: [PATCH 1/4] updating row number to rank --- .../acute_inpatient/acute_inpatient__generate_encounter_id.sql | 2 +- .../emergency_department__generate_encounter_id_pre_sort.sql | 2 +- .../inpatient_hospice__generate_encounter_id.sql | 2 +- .../inpatient_long_term__generate_encounter_id.sql | 2 +- .../inpatient_psych/inpatient_psych__generate_encounter_id.sql | 2 +- .../inpatient_rehab/inpatient_rehab__generate_encounter_id.sql | 2 +- .../inpatient_snf/inpatient_snf__generate_encounter_id.sql | 2 +- .../inpatient_substance_use__generate_encounter_id.sql | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql index 1954bd53f..a750076ff 100644 --- a/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql @@ -38,7 +38,7 @@ select claim_id , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql b/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql index 537e4e8d0..ce70c003f 100644 --- a/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql +++ b/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql @@ -39,7 +39,7 @@ with claim_start_end as ( , facility_id , claim_type , case when claim_type = 'professional' then 1 else 0 end as is_professional - , row_number() over ( + , rank() over ( partition by patient_data_source_id order by end_date, start_date, claim_id ) as row_num diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql index cf4ee243d..5d159d995 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql index 37bf3b0b2..6edd75c61 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql index 8e5ee8399..8718cb5c7 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql index 4f2ef38cb..4a332e0a3 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql index a4c3a1fdd..219e6bf9e 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql index df911c059..e2b7d392f 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_id - , row_number() over (partition by patient_data_source_id + , rank() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) From 0f513334dae617c6cf87454979cb7dcf4ba1b7f7 Mon Sep 17 00:00:00 2001 From: Andreas Martinson Date: Tue, 24 Mar 2026 11:36:00 -0700 Subject: [PATCH 2/4] updating end date --- .../emergency_department__generate_encounter_id_pre_sort.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql b/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql index 097e6b507..b27c5c033 100644 --- a/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql +++ b/models/claims_preprocessing/encounters/intermediate/emergency_department/emergency_department__generate_encounter_id_pre_sort.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code , enc.claim_type -- 'institutional' | 'professional' From c2e5ec412efcd4c35d71bcfbbc9a79fea6605076 Mon Sep 17 00:00:00 2001 From: Andreas Martinson Date: Tue, 24 Mar 2026 14:13:43 -0700 Subject: [PATCH 3/4] updating coalesce for end dates --- .../encounters/encounter_models.yml | 11 ++++++++++- .../acute_inpatient__generate_encounter_id.sql | 2 +- .../inpatient_hospice__generate_encounter_id.sql | 2 +- .../inpatient_long_term__generate_encounter_id.sql | 2 +- .../inpatient_psych__generate_encounter_id.sql | 2 +- .../inpatient_rehab__generate_encounter_id.sql | 2 +- .../inpatient_snf__generate_encounter_id.sql | 2 +- ...inpatient_substance_use__generate_encounter_id.sql | 2 +- 8 files changed, 17 insertions(+), 8 deletions(-) diff --git a/models/claims_preprocessing/encounters/encounter_models.yml b/models/claims_preprocessing/encounters/encounter_models.yml index 6b7f3a01b..80c3e0753 100644 --- a/models/claims_preprocessing/encounters/encounter_models.yml +++ b/models/claims_preprocessing/encounters/encounter_models.yml @@ -4477,7 +4477,16 @@ models: tags: - claims_preprocessing - encounters - + columns: + - name: end_date + description: The discharge date or end date of the claim if discharge date is null. + tests: + - not_null: + description: > + If this is null, the end date will default to the start date for encounters to ensure the encounter is not open-ended and + prevents grouping encounters far into the future. + config: + severity: warn - name: encounters__prof_and_lower_priority description: adding in lower priority institutional claims in one location with professional for grouping to higher level encounters config: diff --git a/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql index d32fef871..89320a954 100644 --- a/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql @@ -18,7 +18,7 @@ select claim_id enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql index f877f593c..0eb7fc825 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql index c822dd476..dbb5a57e4 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql index 6728fa935..ef6bbd1e8 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql index 4ed6f2b1f..839ac8a7e 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql index 43cda99bc..f591033bd 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql index 47d1ad5f9..2915a1692 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql @@ -18,7 +18,7 @@ with claim_start_end as ( enc.claim_id , enc.patient_data_source_id , c.start_date - , c.end_date + , coalesce(c.end_date, c.start_date) as end_date -- Avoids large length of stay gaps being combined , enc.facility_npi , enc.discharge_disposition_code from {{ ref('encounters__stg_medical_claim') }} as enc From 9cf071a47f8b72224a53b4e942e233977abece07 Mon Sep 17 00:00:00 2001 From: Andreas Martinson Date: Fri, 10 Apr 2026 17:10:01 -0700 Subject: [PATCH 4/4] Separating updates into diff PRs --- .../acute_inpatient/acute_inpatient__generate_encounter_id.sql | 2 +- .../inpatient_hospice__generate_encounter_id.sql | 2 +- .../inpatient_long_term__generate_encounter_id.sql | 2 +- .../inpatient_psych/inpatient_psych__generate_encounter_id.sql | 2 +- .../inpatient_rehab/inpatient_rehab__generate_encounter_id.sql | 2 +- .../inpatient_snf/inpatient_snf__generate_encounter_id.sql | 2 +- .../inpatient_substance_use__generate_encounter_id.sql | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql index 89320a954..7329dc653 100644 --- a/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/acute_inpatient/acute_inpatient__generate_encounter_id.sql @@ -38,7 +38,7 @@ select claim_id , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql index 0eb7fc825..b70aa7a43 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_hospice/inpatient_hospice__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql index dbb5a57e4..e48e815e8 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_long_term/inpatient_long_term__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql index ef6bbd1e8..822c8e272 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_psych/inpatient_psych__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql index 839ac8a7e..ab6da5266 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_rehab/inpatient_rehab__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql index f591033bd..dd131423c 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_snf/inpatient_snf__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base ) diff --git a/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql b/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql index 2915a1692..1c5fb689c 100644 --- a/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql +++ b/models/claims_preprocessing/encounters/intermediate/inpatient_substance_use/inpatient_substance_use__generate_encounter_id.sql @@ -38,7 +38,7 @@ with claim_start_end as ( , end_date , discharge_disposition_code , facility_npi - , rank() over (partition by patient_data_source_id + , row_number() over (partition by patient_data_source_id order by end_date, start_date, claim_id) as row_num from base )