From c1fa8dabc43fff5a0b82f76696d69449a78c339a Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Fri, 6 Mar 2026 16:16:16 -0500 Subject: [PATCH 1/9] First draft --- .../base_sedm__student_iep_disabilities.sql | 23 ++++++++++++ .../stg_sedm__student_iep_disabilities.sql | 35 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 models/staging/sedm/base/base_sedm__student_iep_disabilities.sql create mode 100644 models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql diff --git a/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql b/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql new file mode 100644 index 00000000..a2c65d77 --- /dev/null +++ b/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql @@ -0,0 +1,23 @@ +with disabilities as ( + {{ source('student_iep_disability_collections')}} +), +renamed as ( + select + tenant_code, + api_year, + pull_timestamp, + last_modified_timestamp, + file_row_number, + filename, + is_deleted, + v:id::string as record_guid, + ods_version, + data_model_version, + v:studentIEPReference as student_iep_reference, + v:disabilities as v_disabilities, + + -- edfi extensions + v:_ext as v_ext + from disabilities +) +select * from renamed \ No newline at end of file diff --git a/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql b/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql new file mode 100644 index 00000000..542bfda3 --- /dev/null +++ b/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql @@ -0,0 +1,35 @@ +with base as ( + select * from {{ ref('base_sedm__student_iep_disabilities') }} +), +keyed as ( + select + {{ gen_skey('k_student_iep') }}, + {{ edorg_ref(annualize=True) }}, + api_year as school_year, + base.*, + {{ extract_extension(model_name=this.name, flatten=True) }} + from base +), +deduped as ( + {{ + dbt_utils.deduplicate( + relation='keyed', + partition_by='k_student_iep, ed_org_id', + order_by='last_modified_timestamp desc, pull_timestamp desc' + ) + }} +), +flattened as ( + select + tenant_code, + school_year, + k_student_iep, + ed_org_id, + {{ extract_descriptor('value:disabilityDescriptor::string') }} as disability_descriptor, + {{ extract_descriptor('value:disabilityDeterminationSourceTypeDescriptor::string') }} as disability_determination_source_type_descriptor, + {{ extract_descriptor('value:disabilityDiagnosis::string') }} as disability_diagnosis, + {{ extract_descriptor('value:orderOfDisability::int') }} as order_of_disability + from deduped + {{ json_flatten('v_disabilities') }} + where not is_deleted +) \ No newline at end of file From 4a59a64c35418e306bd0ac29a8f4947d270e8a0b Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Mon, 9 Mar 2026 11:00:09 -0400 Subject: [PATCH 2/9] Add ed org ref --- .../sedm/base/base_sedm__student_iep_disabilities.sql | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql b/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql index a2c65d77..260bfb33 100644 --- a/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql +++ b/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql @@ -1,5 +1,5 @@ with disabilities as ( - {{ source('student_iep_disability_collections')}} + {{ source_edfi3('student_iep_disability_collections')}} ), renamed as ( select @@ -13,7 +13,11 @@ renamed as ( v:id::string as record_guid, ods_version, data_model_version, + v:educationOrganizationReference:educationOrganizationId::int as ed_org_id, + -- references v:studentIEPReference as student_iep_reference, + v:educationOrganizationReference as education_organization_reference, + -- lists v:disabilities as v_disabilities, -- edfi extensions From 3e274cdf218275af543c5bd203c291b1ac559726 Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Wed, 25 Mar 2026 14:30:50 -0400 Subject: [PATCH 3/9] Fix event column names, change disabilities ed_org ref annualize to False --- models/staging/sedm/base/base_sedm__idea_events.sql | 4 ++-- .../sedm/stage/stg_sedm__student_iep_disabilities.sql | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/models/staging/sedm/base/base_sedm__idea_events.sql b/models/staging/sedm/base/base_sedm__idea_events.sql index d2579e28..4134c225 100644 --- a/models/staging/sedm/base/base_sedm__idea_events.sql +++ b/models/staging/sedm/base/base_sedm__idea_events.sql @@ -21,8 +21,8 @@ renamed as ( v:educationOrganizationReference:link:rel::string as ed_org_type, {{ extract_descriptor('v:ideaEventDescriptor::string') }} as idea_event, -- value columns - v:eventBeginDate::date as event_begin_date, - v:eventEndDate::date as event_end_date, + v:beginDate::date as event_begin_date, + v:endDate::date as event_end_date, v:eventNarrative::string as event_narrative, -- descriptors {{ extract_descriptor('v:eventReasonDescriptor::string') }} as event_reason, diff --git a/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql b/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql index 542bfda3..96381fa8 100644 --- a/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql +++ b/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql @@ -4,7 +4,7 @@ with base as ( keyed as ( select {{ gen_skey('k_student_iep') }}, - {{ edorg_ref(annualize=True) }}, + {{ edorg_ref(annualize=False) }}, api_year as school_year, base.*, {{ extract_extension(model_name=this.name, flatten=True) }} @@ -32,4 +32,5 @@ flattened as ( from deduped {{ json_flatten('v_disabilities') }} where not is_deleted -) \ No newline at end of file +) +select * from flattened \ No newline at end of file From fac20f97a1134b1e3ad1dc125b6567f804c06451 Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Tue, 28 Apr 2026 06:45:07 -0400 Subject: [PATCH 4/9] Camel case k student iep macro --- macros/gen_skey.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/macros/gen_skey.sql b/macros/gen_skey.sql index 8958ed7a..8f047ff7 100644 --- a/macros/gen_skey.sql +++ b/macros/gen_skey.sql @@ -352,10 +352,10 @@ }, 'k_student_iep': { 'reference_name': 'student_iep_reference', - 'col_list': ['iep_finalized_date', - 'ed_org_id', - 'student_iep_association_id', - 'student_unique_id'], + 'col_list': ['iepFinalizedDate', + 'educationOrganizationId', + 'studentIEPAssociationId', + 'studentUniqueId'], 'annualize': True }, 'k_student_iep_service_prescription': { From ff439dc0cdd65f4a6f8760a3c237421cd2c4d877 Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Tue, 28 Apr 2026 06:50:58 -0400 Subject: [PATCH 5/9] Camel case k idea event macro --- macros/gen_skey.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/macros/gen_skey.sql b/macros/gen_skey.sql index 8f047ff7..11f5de33 100644 --- a/macros/gen_skey.sql +++ b/macros/gen_skey.sql @@ -344,10 +344,10 @@ }, 'k_idea_event': { 'reference_name': 'idea_event_reference', - 'col_list': ['ed_org_id', - 'idea_event_id', - 'student_unique_id', - 'idea_event'], + 'col_list': ['educationOrganizationId', + 'ideaEventId', + 'studentUniqueId', + 'ideaEvent'], 'annualize': True }, 'k_student_iep': { From d5fd88ba313c57ff8fef939eee76cdc1b0e52387 Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Thu, 14 May 2026 14:45:58 -0400 Subject: [PATCH 6/9] Change student iep disability model name, update gen_skey macros --- macros/gen_skey.sql | 8 ++--- .../base_sedm__student_iep_disabilities.sql | 27 -------------- models/staging/sedm/stage/_sedm_stage.yml | 4 +++ .../stg_sedm__student_iep_disabilities.sql | 36 ------------------- .../sedm/stage/stg_sedm__student_ieps.sql | 2 +- packages.yml | 2 +- 6 files changed, 10 insertions(+), 69 deletions(-) delete mode 100644 models/staging/sedm/base/base_sedm__student_iep_disabilities.sql delete mode 100644 models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql diff --git a/macros/gen_skey.sql b/macros/gen_skey.sql index 11f5de33..c529e434 100644 --- a/macros/gen_skey.sql +++ b/macros/gen_skey.sql @@ -345,15 +345,15 @@ 'k_idea_event': { 'reference_name': 'idea_event_reference', 'col_list': ['educationOrganizationId', + 'ideaEvent', 'ideaEventId', - 'studentUniqueId', - 'ideaEvent'], + 'studentUniqueId'], 'annualize': True }, 'k_student_iep': { 'reference_name': 'student_iep_reference', - 'col_list': ['iepFinalizedDate', - 'educationOrganizationId', + 'col_list': ['educationOrganizationId', + 'iepFinalizedDate', 'studentIEPAssociationId', 'studentUniqueId'], 'annualize': True diff --git a/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql b/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql deleted file mode 100644 index 260bfb33..00000000 --- a/models/staging/sedm/base/base_sedm__student_iep_disabilities.sql +++ /dev/null @@ -1,27 +0,0 @@ -with disabilities as ( - {{ source_edfi3('student_iep_disability_collections')}} -), -renamed as ( - select - tenant_code, - api_year, - pull_timestamp, - last_modified_timestamp, - file_row_number, - filename, - is_deleted, - v:id::string as record_guid, - ods_version, - data_model_version, - v:educationOrganizationReference:educationOrganizationId::int as ed_org_id, - -- references - v:studentIEPReference as student_iep_reference, - v:educationOrganizationReference as education_organization_reference, - -- lists - v:disabilities as v_disabilities, - - -- edfi extensions - v:_ext as v_ext - from disabilities -) -select * from renamed \ No newline at end of file diff --git a/models/staging/sedm/stage/_sedm_stage.yml b/models/staging/sedm/stage/_sedm_stage.yml index cff66b27..e63beaad 100644 --- a/models/staging/sedm/stage/_sedm_stage.yml +++ b/models/staging/sedm/stage/_sedm_stage.yml @@ -11,4 +11,8 @@ models: config: tags: ['sedm'] enabled: "{{ var('src:domain:sedm:enabled', False) }}" + - name: stg_sedm__student_iep_disability_collections + config: + tags: ['sedm'] + enabled: "{{ var('src:domain:sedm:enabled', False) }}" diff --git a/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql b/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql deleted file mode 100644 index 96381fa8..00000000 --- a/models/staging/sedm/stage/stg_sedm__student_iep_disabilities.sql +++ /dev/null @@ -1,36 +0,0 @@ -with base as ( - select * from {{ ref('base_sedm__student_iep_disabilities') }} -), -keyed as ( - select - {{ gen_skey('k_student_iep') }}, - {{ edorg_ref(annualize=False) }}, - api_year as school_year, - base.*, - {{ extract_extension(model_name=this.name, flatten=True) }} - from base -), -deduped as ( - {{ - dbt_utils.deduplicate( - relation='keyed', - partition_by='k_student_iep, ed_org_id', - order_by='last_modified_timestamp desc, pull_timestamp desc' - ) - }} -), -flattened as ( - select - tenant_code, - school_year, - k_student_iep, - ed_org_id, - {{ extract_descriptor('value:disabilityDescriptor::string') }} as disability_descriptor, - {{ extract_descriptor('value:disabilityDeterminationSourceTypeDescriptor::string') }} as disability_determination_source_type_descriptor, - {{ extract_descriptor('value:disabilityDiagnosis::string') }} as disability_diagnosis, - {{ extract_descriptor('value:orderOfDisability::int') }} as order_of_disability - from deduped - {{ json_flatten('v_disabilities') }} - where not is_deleted -) -select * from flattened \ No newline at end of file diff --git a/models/staging/sedm/stage/stg_sedm__student_ieps.sql b/models/staging/sedm/stage/stg_sedm__student_ieps.sql index 6e57ad7d..3741d33d 100644 --- a/models/staging/sedm/stage/stg_sedm__student_ieps.sql +++ b/models/staging/sedm/stage/stg_sedm__student_ieps.sql @@ -8,9 +8,9 @@ keyed as ( [ 'tenant_code', 'api_year', - 'lower(student_iep_association_id)', 'ed_org_id', 'iep_finalized_date', + 'lower(student_iep_association_id)', 'lower(student_unique_id)' ] ) }} as k_student_iep, diff --git a/packages.yml b/packages.yml index 625b040e..58de1cc8 100644 --- a/packages.yml +++ b/packages.yml @@ -1,3 +1,3 @@ packages: - package: dbt-labs/dbt_utils - version: [">=1.0.0", "<=1.3.0"] \ No newline at end of file + version: [">=1.0.0", "<=1.3.3"] \ No newline at end of file From 430f522b741b5721abb3d37b7571b67a208e40e7 Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Fri, 15 May 2026 13:49:53 -0400 Subject: [PATCH 7/9] Revert dbt_utils version bounds --- packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.yml b/packages.yml index 58de1cc8..625b040e 100644 --- a/packages.yml +++ b/packages.yml @@ -1,3 +1,3 @@ packages: - package: dbt-labs/dbt_utils - version: [">=1.0.0", "<=1.3.3"] \ No newline at end of file + version: [">=1.0.0", "<=1.3.0"] \ No newline at end of file From 69e57aa3359703bb0767d2c56887e468d38e0e04 Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Fri, 15 May 2026 14:12:59 -0400 Subject: [PATCH 8/9] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 285f5ad3..9e629fa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased ## New features +- Update base/stg models for SEDM `student_ieps` and `iep_events` +- Add base/stg models for new SEDM `student_iep_disability_collections` ## Under the hood ## Fixes From 1dc40411cde2e74dc3d8369f59ca1f9b046482cd Mon Sep 17 00:00:00 2001 From: Ryan Aguilar Date: Fri, 15 May 2026 14:32:07 -0400 Subject: [PATCH 9/9] Add disability collection models --- models/staging/sedm/base/_sedm__base.yml | 4 ++ ...dm__student_iep_disability_collections.sql | 29 ++++++++++++ ...dm__student_iep_disability_collections.sql | 45 +++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 models/staging/sedm/base/base_sedm__student_iep_disability_collections.sql create mode 100644 models/staging/sedm/stage/stg_sedm__student_iep_disability_collections.sql diff --git a/models/staging/sedm/base/_sedm__base.yml b/models/staging/sedm/base/_sedm__base.yml index e012faaa..39f3d760 100644 --- a/models/staging/sedm/base/_sedm__base.yml +++ b/models/staging/sedm/base/_sedm__base.yml @@ -5,6 +5,10 @@ models: config: tags: ['sedm'] enabled: "{{ var('src:domain:sedm:enabled', False) }}" + - name: base_sedm__student_iep_disability_collections + config: + tags: ['sedm'] + enabled: "{{ var('src:domain:sedm:enabled', False) }}" - name: base_sedm__idea_events config: tags: ['sedm'] diff --git a/models/staging/sedm/base/base_sedm__student_iep_disability_collections.sql b/models/staging/sedm/base/base_sedm__student_iep_disability_collections.sql new file mode 100644 index 00000000..8cc7fdad --- /dev/null +++ b/models/staging/sedm/base/base_sedm__student_iep_disability_collections.sql @@ -0,0 +1,29 @@ +with disabilities as ( + {{ source_edfi3('student_iep_disability_collections')}} +), +renamed as ( + select + tenant_code, + api_year, + pull_timestamp, + last_modified_timestamp, + file_row_number, + filename, + is_deleted, + v:id::string as record_guid, + ods_version, + data_model_version, + v:studentIEPReference:educationOrganizationId::int as ed_org_id, + v:studentIEPReference:iepFinalizedDate::date as iep_finalized_date, + v:studentIEPReference:studentIEPAssociationID::string as student_iep_association_id, + v:studentIEPReference:studentUniqueId::string as student_unique_id, + -- references + v:studentIEPReference as student_iep_reference, + -- lists + v:disabilities as v_disabilities, + + -- edfi extensions + v:_ext as v_ext + from disabilities +) +select * from renamed \ No newline at end of file diff --git a/models/staging/sedm/stage/stg_sedm__student_iep_disability_collections.sql b/models/staging/sedm/stage/stg_sedm__student_iep_disability_collections.sql new file mode 100644 index 00000000..a0a742d7 --- /dev/null +++ b/models/staging/sedm/stage/stg_sedm__student_iep_disability_collections.sql @@ -0,0 +1,45 @@ +with base as ( + select * from {{ ref('base_sedm__student_iep_disability_collections') }} +), +keyed as ( + select + {{ dbt_utils.generate_surrogate_key( + [ + 'tenant_code', + 'api_year', + 'ed_org_id', + 'iep_finalized_date', + 'lower(student_iep_association_id)', + 'lower(student_unique_id)' + ] + ) }} as k_student_iep, + api_year as school_year, + base.*, + {{ extract_extension(model_name=this.name, flatten=True) }} + from base +), +deduped as ( + {{ + dbt_utils.deduplicate( + relation='keyed', + partition_by='k_student_iep, ed_org_id', + order_by='last_modified_timestamp desc, pull_timestamp desc' + ) + }} +), +flattened as ( + select + tenant_code, + school_year, + k_student_iep, + ed_org_id, + student_iep_association_id, + {{ extract_descriptor('value:disabilityDescriptor::string') }} as disability_descriptor, + {{ extract_descriptor('value:disabilityDeterminationSourceTypeDescriptor::string') }} as disability_determination_source_type_descriptor, + {{ extract_descriptor('value:disabilityDiagnosis::string') }} as disability_diagnosis, + {{ extract_descriptor('value:orderOfDisability::int') }} as order_of_disability + from deduped + {{ json_flatten('v_disabilities') }} + where not is_deleted +) +select * from flattened \ No newline at end of file