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

CMS HCC Payment Risk Score Weighting by Member Months #453

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

pfehlinger
Copy link

Describe your changes

This resolves #337 by adding two new columns to cms_hcc.patient_risk_scores: member_months and payment_risk_score_weighted_by_months. The member months are derived from the finanicial_pmpm mart, specifically financial_pmpm.member_months, utilizing payment year eligibility. Weighting is simply multiplying the payment_risk_score by member_months. This enables easier membership aggregations as a "population risk score" would now be sum(payment_risk_score_weighted_by_months)/sum(member_months). If a member does not have eligibility in the payment year, both fields are NULL.

I chose to link to financial_pmpm at the suggestion of @sarah-tuva (thank you!). I am calling this out explicitly in case there are concerns about dependencies between two marts.

The weighting occurs prior to rounding, thus there is a loss of accuracy due to rounding. Technically, the rounding for the score calculations today do not align with CMS rounding, namely rounding to the third decimal after each step. See pg. 11ff. If there is a desire to align with CMS, I would be happy to adjust the code to follow that methodology and update my weighting to align as well.

How has this been tested?

The tuva-demo data does not have 2019 eligibility which is necessary for this implementation. As such, I updated enrollment_end_date for patient_id 10013 in core.eligibility to be '2019-12-31'. I then executed dbt run --select tag:financial_pmpm and then dbt run --select tag:cms_hcc to confirm the value of 12 was showing for member_months and that the multiplication was correct.

Reviewer focus

  1. Testing on a larger dataset than one member and use more relevant payment years.
  2. Evaluating the rounding of scores and when is the right place to do the multiplication.
  3. Evaluating if NULL is the right approach for when eligibility doesn't exist in the payment year or if there is another preferred method (pattern appears to be 0s but want to explicitly check).
  4. Creating a link to the financial_pmpm mart and ensuring it is the right and appropriate dependency.
  5. From the checklist below, I did not update the dbt_project.yml as I don't know the release number associated with this PR. I also didn't update the docs files as I don't what the necessary files are. Guidance for both of these would be appreciated :)

Checklist before requesting a review

  • I have updated the version number in dbt_project.yml file to reflect the release number of this PR
  • I have updated the docs files (by running dbt docs generate/serve and copying the necessary files into the docs folder)
  • I have commented my code as necessary
  • I have added at least one Github label to this PR
  • My code follows style guidelines
  • (Optional) I have recorded a Loom to explain this PR

(Optional) Gif of how this PR makes you feel

Loom link

Copy link

github-actions bot commented May 9, 2024

Workflow has finished with the following statuses:

  • Snowflake: failure
  • Snowflake: skipped
  • Snowflake: skipped
  • Redshift: success
  • Redshift: success
  • Redshift: success
  • BigQuery: success
  • BigQuery: success
  • BigQuery: success

Copy link
Member

@sarah-tuva sarah-tuva left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @pfehlinger, I'm sorry for the delayed review while I was out on PTO. This is looking really good! This solution makes a lot of sense, and I like how you calculated the member months for the total year.

I appreciate your comments about creating a dependency between CMS HCC and Financial PMPM. I'm not super concerned about this. We have other marts that have dependencies as well. We use the data type variables (claims_enabled / clinical_enabled) to help control this. In theory, someone has to have claims in order to run both CMS HCC and Financial PMPM.

I left two comments with requests for changes. I am running the CI testing as well to make sure the syntax works in the other data warehouses we support.

patient_id
, cast(substr(year_month, 1, 4) as integer) as eligible_year
, COUNT(1) as member_months
from {{ ref('financial_pmpm__member_months') }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of our design patterns is to include an ephemeral staging model for every data mart. You can think of this as an "input layer" for the data mart. This helps with documentation and mapping.

You can see in the staging folder for this mart that we are referencing models from Core. Can you add a new staging model for financial_pmpm__member_months? You can then replace your reference in this CTE with the staging model. I would name it something like cms_hcc__stg_financial_pmpm__member_months.

, cast(substr(year_month, 1, 4) as integer) as eligible_year
, COUNT(1) as member_months
from {{ ref('financial_pmpm__member_months') }}
group by
Copy link
Member

@sarah-tuva sarah-tuva May 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a payment_year filter to ensure that the member months being used in this calculation are from the correct date range? You can see how we do this in the intermediate model for eligibility. You can include the Jinja code for payment year at the top and then add a where clause to make sure your eligible_year matches the payment_year.

Copy link

github-actions bot commented May 9, 2024

Workflow has finished with the following statuses:

  • Snowflake: success
  • Snowflake: failure
  • Snowflake: skipped
  • Redshift: success
  • Redshift: success
  • Redshift: success
  • BigQuery: success
  • BigQuery: success
  • BigQuery: success

Copy link

github-actions bot commented May 9, 2024

Workflow has finished with the following statuses:

  • Snowflake: success
  • Snowflake: success
  • Snowflake: success
  • Redshift: success
  • Redshift: success
  • Redshift: success
  • BigQuery: success
  • BigQuery: success
  • BigQuery: success

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add weighted risk score to CMS HCC
2 participants