Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quality Measure: NQF0041 Influenza Immunization #507

Merged
merged 20 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions models/quality_measures/final/quality_measures__summary_long.sql
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ with union_measures as (
{{ dbt_utils.union_relations(

relations=[
ref('quality_measures__int_nqf2372_long'),
ref('quality_measures__int_nqf0034_long'),
ref('quality_measures__int_nqf0059_long'),
ref('quality_measures__int_cqm236_long'),
ref('quality_measures__int_nqf0053_long'),
ref('quality_measures__int_cbe0055_long'),
ref('quality_measures__int_nqf0097_long'),
ref('quality_measures__int_cqm438_long'),
ref('quality_measures__int_nqf2372_long')
, ref('quality_measures__int_nqf0034_long')
, ref('quality_measures__int_nqf0059_long')
, ref('quality_measures__int_cqm236_long')
, ref('quality_measures__int_nqf0053_long')
, ref('quality_measures__int_cbe0055_long')
, ref('quality_measures__int_nqf0097_long')
, ref('quality_measures__int_cqm438_long')
, ref('quality_measures__int_nqf0041_long')
]

) }}
Expand Down
17 changes: 16 additions & 1 deletion models/quality_measures/final/quality_measures__summary_wide.sql
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,16 @@ with measures_long as (

)

, nqf_0041 as (

select
patient_id
, performance_flag
from measures_long
where measure_id = 'NQF0041'

)

, joined as (

select
Expand All @@ -111,6 +121,7 @@ with measures_long as (
, max(cbe_0055.performance_flag) as cbe_0055
, max(nqf_0097.performance_flag) as nqf_0097
, max(cqm_438.performance_flag) as cqm_438
, max(nqf_0041.performance_flag) as nqf_0041
from measures_long
left join nqf_2372
on measures_long.patient_id = nqf_2372.patient_id
Expand All @@ -128,6 +139,8 @@ with measures_long as (
on measures_long.patient_id = nqf_0097.patient_id
left join cqm_438
on measures_long.patient_id = cqm_438.patient_id
left join nqf_0041
on measures_long.patient_id = nqf_0041.patient_id
group by measures_long.patient_id

)
Expand All @@ -143,7 +156,8 @@ with measures_long as (
, cast(nqf_0053 as integer) as nqf_0053
, cast(cbe_0055 as integer) as cbe_0055
, cast(nqf_0097 as integer) as nqf_0097
, cast(cqm_438 as integer) as cqm_438
, cast(cqm_438 as integer) as cqm_438
, cast(nqf_0041 as integer) as nqf_0041
from joined

)
Expand All @@ -158,5 +172,6 @@ select
, cbe_0055
, nqf_0097
, cqm_438
, nqf_0041
, '{{ var('tuva_last_run')}}' as tuva_last_run
from add_data_types
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
{{ config(
enabled = var('quality_measures_enabled',var('claims_enabled',var('clinical_enabled',var('tuva_marts_enabled',False))))
| as_bool
)
}}

{%- set measure_id -%}
(select id
from {{ ref('quality_measures__measures') }}
where id = 'NQF0041')
{%- endset -%}

{%- set measure_name -%}
(select name
from {{ ref('quality_measures__measures') }}
where id = 'NQF0041')
{%- endset -%}

{%- set measure_version -%}
(select version
from {{ ref('quality_measures__measures') }}
where id = 'NQF0041')
{%- endset -%}

/*
set performance period end to the end of the current calendar year
or use the quality_measures_period_end variable if provided
- set quality_measures_period_end to december end for last quarter measurement period
- set quality_measures_period_end to march end for first quarter measurement period
*/

with period_end as (

select
{% if var('quality_measures_period_end',False) == False -%}
{{ last_day(dbt.current_timestamp(), 'year') }}
{% else -%}
cast('{{ var('quality_measures_period_end') }}' as date)
{%- endif %}
as performance_period_end

)

/*
set performance period begin to following day of 3 months prior
for visits in influenza season
*/
, period_begin as (

select
performance_period_end
, {{ dbt.dateadd (
datepart = "day"
, interval = +1
, from_date_or_timestamp =
dbt.dateadd (
datepart = "month"
, interval = -3
, from_date_or_timestamp = "performance_period_end"
)
) }} as performance_period_begin
from period_end

)

/*
lookback_period for august of either current or previous year
for immunization qualifying date
*/
, lookback_period as (

select
*
, case
when extract(month from performance_period_end) between 1 and 8
then (extract(year from performance_period_end) - 1) || '-08-01'
else extract(year from performance_period_end) || '-08-01'
end as lookback_period_august
from period_begin

)

select
cast({{ measure_id }} as {{ dbt.type_string() }}) as measure_id
, cast({{ measure_name }} as {{ dbt.type_string() }}) as measure_name
, cast({{ measure_version }} as {{ dbt.type_string() }}) as measure_version
, cast(performance_period_begin as date) as performance_period_begin
, cast(performance_period_end as date) as performance_period_end
, cast(lookback_period_august as date) as lookback_period_august
from lookback_period
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
{{ config(
enabled = var('quality_measures_enabled',var('claims_enabled',var('clinical_enabled',var('tuva_marts_enabled',False)))) | as_bool
)
}}

with visit_codes as (

select
code
, code_system
from {{ ref('quality_measures__value_sets') }}
where lower(concept_name) in (
'annual wellness visit'
utsavpaudel marked this conversation as resolved.
Show resolved Hide resolved
, 'discharge services nursing facility'
, 'hemodialysis'
, 'home healthcare services'
, 'nursing facility visit'
, 'office visit'
, 'outpatient consultation'
, 'peritoneal dialysis'
, 'preventive care services established office visit, 18 and up'
, 'preventive care services group counseling'
, 'preventive care services individual counseling'
, 'preventive care services initial office visit, 18 and up'
, 'preventive care services, initial office visit, 0 to 17'
, 'preventive care, established office visit, 0 to 17'
, 'online assessments'
, 'patient provider interaction'
, 'telephone visits'
)

)

, visits_encounters as (

select patient_id
, coalesce(encounter.encounter_start_date,encounter.encounter_end_date) as min_date
, coalesce(encounter.encounter_end_date,encounter.encounter_start_date) as max_date
from {{ ref('quality_measures__stg_core__encounter') }} encounter
inner join {{ ref('quality_measures__int_nqf0041__performance_period') }} as pp
on coalesce(encounter.encounter_end_date,encounter.encounter_start_date) >= pp.performance_period_begin
and coalesce(encounter.encounter_start_date,encounter.encounter_end_date) <= pp.performance_period_end
where lower(encounter_type) in (
'home health'
, 'office visit'
, 'outpatient'
, 'outpatient rehabilitation'
, 'telehealth'
)

)

, procedure_encounters as (

select
patient_id
, procedure_date as min_date
, procedure_date as max_date
from {{ ref('quality_measures__stg_core__procedure') }} procedures
inner join {{ ref('quality_measures__int_nqf0041__performance_period') }} as pp
on procedure_date between pp.performance_period_begin and pp.performance_period_end
inner join visit_codes
on coalesce(procedures.normalized_code,procedures.source_code) = visit_codes.code

)

, claims_encounters as (

select
patient_id
, coalesce(claim_start_date,claim_end_date) as min_date
, coalesce(claim_end_date,claim_start_date) as max_date
from {{ ref('quality_measures__stg_medical_claim') }} medical_claim
inner join {{ ref('quality_measures__int_nqf0041__performance_period') }} as pp on
coalesce(claim_end_date,claim_start_date) >= pp.performance_period_begin
and coalesce(claim_start_date,claim_end_date) <= pp.performance_period_end
inner join visit_codes
on medical_claim.hcpcs_code = visit_codes.code

)

, all_encounters as (

select *, 'v' as visit_enc, cast(null as {{ dbt.type_string() }}) as proc_enc, cast(null as {{ dbt.type_string() }}) as claim_enc
from visits_encounters

union all

select *, cast(null as {{ dbt.type_string() }}) as visit_enc, 'p' as proc_enc, cast(null as {{ dbt.type_string() }}) as claim_enc
from procedure_encounters

union all

select *, cast(null as {{ dbt.type_string() }}) as visit_enc, cast(null as {{ dbt.type_string() }}) as proc_enc, 'c' as claim_enc
from claims_encounters

)

, encounters_by_patient as (

select patient_id, min(min_date) min_date, max(max_date) max_date,
concat(concat(
coalesce(min(visit_enc),'')
, coalesce(min(proc_enc),''))
, coalesce(min(claim_enc),'')
) as qualifying_types
from all_encounters
group by patient_id

)

, patients_with_age as (

select
p.patient_id
, min_date
, ({{ datediff('birth_date', 'e.max_date', 'hour') }} / 8760.0) as age_in_decimal_point
, max_date
, qualifying_types
from {{ ref('quality_measures__stg_core__patient') }} p
inner join encounters_by_patient e
on p.patient_id = e.patient_id
where p.death_date is null

)

, qualifying_patients as (

select
distinct
patients_with_age.patient_id
, patients_with_age.age_in_decimal_point as age
, pp.performance_period_begin
, pp.performance_period_end
, pp.measure_id
, pp.measure_name
, pp.measure_version
, 1 as denominator_flag
from patients_with_age
cross join {{ ref('quality_measures__int_nqf0041__performance_period') }} pp
where age_in_decimal_point >= 0.5 --filters patients aged 6 months or older

)

, add_data_types as (

select
cast(patient_id as {{ dbt.type_string() }}) as patient_id
, round(cast(age as {{ dbt.type_numeric() }}), 1) as age -- ensures age is seen in one decimal point
, cast(performance_period_begin as date) as performance_period_begin
, cast(performance_period_end as date) as performance_period_end
, cast(measure_id as {{ dbt.type_string() }}) as measure_id
, cast(measure_name as {{ dbt.type_string() }}) as measure_name
, cast(measure_version as {{ dbt.type_string() }}) as measure_version
, cast(denominator_flag as integer) as denominator_flag
from qualifying_patients

)

select
patient_id
, age
, performance_period_begin
, performance_period_end
, measure_id
, measure_name
, measure_version
, denominator_flag
, '{{ var('tuva_last_run')}}' as tuva_last_run
from add_data_types
Loading