feat(deploy): ecqm and twh instance support#46
Conversation
- Add 4 wellness CQL measures (hypertension, diabetes_hba1c, obesity_bmi, cholesterol_ldl) - Add WORKWELL_INSTANCE env var with instance-aware seeding in MeasureService - Add 4 new measureSeedSpecFor() cases in CqlEvaluationService - Add 10 wellness value sets in ValueSetGovernanceService (b000... UUID range) - Add NEXT_PUBLIC_APP_NAME/NEXT_PUBLIC_APP_TAGLINE branding to Dockerfile and all public frontend surfaces - Add deploy-ecqm-mieweb.yml and deploy-twh-mieweb.yml GitHub Actions workflows - Add docs/ECQM_TWH_DEPLOYMENT_PLAN.md and JOURNAL.md entry Owner actions needed before deploy: create two Neon projects and add DATABASE_URL_ECQM, DATABASE_URL_TWH, WORKWELL_AUTH_JWT_SECRET_ECQM, WORKWELL_AUTH_JWT_SECRET_TWH as GitHub repository secrets. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5dd9e966fc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| and "Days Since Last HbA1c" > 160 | ||
| and "Days Since Last HbA1c" <= 180 |
There was a problem hiding this comment.
Align diabetes seeded due-soon window with CQL threshold
This new diabetes measure defines Due Soon as 161–180 days since last HbA1c, but demo seeding in CqlEvaluationService.input() still assigns DUE_SOON subjects a fixed 350-day gap (the same value used for annual measures). In practice, seeded diabetes subjects targeted as DUE_SOON will evaluate as OVERDUE, which distorts demo run distributions (zero/near-zero due-soon and inflated overdue) for Diabetes HbA1c Monitoring.
Useful? React with 👍 / 👎.
Hardcoded DUE_SOON->350 days caused diabetes HbA1c seeds to evaluate as OVERDUE instead of DUE_SOON (window is 180 days, not 365). Add complianceWindowDays to MeasureSeedSpec (defaults to 365 via compact constructor) and derive seed gaps: compliant=window/3, due_soon=window-10, overdue=window+60. Set 180 for diabetes; all other measures keep 365. Addresses Codex review on PR #46. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
ecqm.os.mieweb.org(clinical quality / wellness measures: hypertension, diabetes HbA1c, BMI, cholesterol LDL)twh.os.mieweb.org(Total Worker Health: all 8 OSHA + wellness measures combined)workwell.os.mieweb.orgis unchanged (4 OSHA measures only)What changed
Backend:
WORKWELL_INSTANCEenv var controls which measures are seeded (workwell|ecqm|twh)measureSeedSpecFor()cases inCqlEvaluationServiceValueSetGovernanceService(b000... UUID range, non-colliding)application.ymlFrontend:
NEXT_PUBLIC_APP_NAMEandNEXT_PUBLIC_APP_TAGLINEbuild args in DockerfileCI/CD:
deploy-ecqm-mieweb.yml— deploys toecqm-api/ecqmhostnames withWORKWELL_INSTANCE=ecqmdeploy-twh-mieweb.yml— deploys totwh-api/twhhostnames withWORKWELL_INSTANCE=twhSecrets required (all added)
DATABASE_URL_ECQM,DATABASE_URL_TWH,WORKWELL_AUTH_JWT_SECRET_ECQM,WORKWELL_AUTH_JWT_SECRET_TWHTest plan
GET https://ecqm-api.os.mieweb.org/actuator/health→{"status":"UP"}GET https://ecqm-api.os.mieweb.org/api/measures→ 4 wellness measures (no OSHA)GET https://twh-api.os.mieweb.org/api/measures→ 8 measures (OSHA + wellness)https://ecqm.os.mieweb.orgpage title = "WorkWell eCQM Studio"https://twh.os.mieweb.orgpage title = "WorkWell TWH"workwell-ecqm-frontendandworkwell-twh-frontendGHCR packages public🤖 Generated with Claude Code