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

Merged
merged 3 commits into from
Jun 4, 2024

Conversation

pfehlinger
Copy link
Contributor

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

This comment was marked as outdated.

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.

This comment was marked as outdated.

This comment was marked as outdated.

This comment was marked as outdated.

@sarah-tuva
Copy link
Member

Hi @pfehlinger, the CI testing failed for Redshift. It looks like the substring syntax doesn't work in Redshift but does in BigQuery and Snowflake. Dbt has some cross-database macros we can look at using or create a custom macro. Let me know if you want any help with creating/testing this.

image

@pfehlinger
Copy link
Contributor Author

@sarah-tuva I made the changes you suggested:

  1. I added the ephemeral staging layer for member_months.
  2. I created a macro for substring to support cross platform usage.

I didn't do the eligible year per my comment above. There are still all those other items in terms of proper PR I would like to learn (docs & version number)

This comment was marked as outdated.

1 similar comment
Copy link

github-actions bot commented Jun 4, 2024

Workflow has finished with the following statuses:

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

@sarah-tuva sarah-tuva self-assigned this Jun 4, 2024
@sarah-tuva sarah-tuva self-requested a review June 4, 2024 16:22
Copy link

github-actions bot commented Jun 4, 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

@sarah-tuva sarah-tuva merged commit f99ffcd into tuva-health:main Jun 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add weighted risk score to CMS HCC
2 participants