Skip to content

Commit

Permalink
Updates to improve What Matters observations and support Patient Prio…
Browse files Browse the repository at this point in the history
…rities Care
  • Loading branch information
drdavec committed Jan 2, 2025
1 parent 8444037 commit 3192727
Show file tree
Hide file tree
Showing 93 changed files with 4,245 additions and 401 deletions.
32 changes: 23 additions & 9 deletions FHIR-us-pco.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
<artifactPageExtension value="-definitions"/>
<artifactPageExtension value="-examples"/>
<artifactPageExtension value="-mappings"/>
<artifact id="StructureDefinition/pco-bothersome-health-concern" key="StructureDefinition-pco-bothersome-health-concern" name="Bothersome Health Concern"/>
<artifact id="CodeSystem/pco-bothersome-health-concern-concepts" key="CodeSystem-pco-bothersome-health-concern-concepts" name="Bothersome Health Concern Concepts"/>
<artifact id="ValueSet/pco-bothersome-health-concern-valueset" key="ValueSet-pco-bothersome-health-concern-valueset" name="Bothersome Health Concern Example ValueSet"/>
<artifact id="CarePlan/pcoAnxietyCarePlanExample" key="CarePlan-pcoAnxietyCarePlanExample" name="Care Plan for PCO Anxiety Goal"/>
Expand All @@ -17,10 +16,8 @@
<artifact id="CodeSystem/pco-care-tradeoff-choices" key="CodeSystem-pco-care-tradeoff-choices" name="Care Trade-off Choices"/>
<artifact id="ValueSet/pco-care-tradeoff-choices-valueset" key="ValueSet-pco-care-tradeoff-choices-valueset" name="Care Trade-off Choices ValueSet"/>
<artifact id="CodeSystem/pco-care-tradeoff-concepts" key="CodeSystem-pco-care-tradeoff-concepts" name="Care Trade-off Concepts"/>
<artifact id="ValueSet/pco-care-tradeoff-valueset" key="ValueSet-pco-care-tradeoff-valueset" name="Care Trade-off Example ValueSet"/>
<artifact id="ValueSet/pco-care-tradeoff-valueset" key="ValueSet-pco-care-tradeoff-valueset" name="Care Trade-off ValueSet"/>
<artifact id="CodeSystem/pco-codes" key="CodeSystem-pco-codes" name="Codes for PCO"/>
<artifact id="Patient/pcoPatientLopez" key="Patient-pcoPatientLopez" name="Example Patient Camila"/>
<artifact id="Patient/pcoPatientJones" key="Patient-pcoPatientJones" name="Example Patient Dorothy"/>
<artifact id="Library/FHIRHelpers" key="Library-FHIRHelpers" name="FHIRHelpers"/>
<artifact id="ValueSet/gas-score-answers" key="ValueSet-gas-score-answers" name="Follow-Up GAS Score Answers"/>
<artifact id="Observation/pcoPROMScoreAnxietyExample" key="Observation-pcoPROMScoreAnxietyExample" name="GAD-7 PROM Follow-up Score"/>
Expand All @@ -29,6 +26,7 @@
<artifact id="StructureDefinition/pco-goal-attainment-scaling" key="StructureDefinition-pco-goal-attainment-scaling" name="Goal Attainment Scaling"/>
<artifact id="ValueSet/goal-attainment-scaling-score" key="ValueSet-goal-attainment-scaling-score" name="Goal Attainment Scaling (GAS) Score"/>
<artifact id="StructureDefinition/pco-gas-score-observation" key="StructureDefinition-pco-gas-score-observation" name="Goal Attainment Scaling (GAS) score"/>
<artifact id="ValueSet/goal-barrier-codes" key="ValueSet-goal-barrier-codes" name="Goal Barrier Assessment Codes"/>
<artifact id="Goal/pcoGoalAnxietyExample" key="Goal-pcoGoalAnxietyExample" name="Goal for GAD-7 PROM Outcome"/>
<artifact id="Goal/pcoGoalWalkDogExample" key="Goal-pcoGoalWalkDogExample" name="Goal with GAS"/>
<artifact id="Goal/pcoGoalWalkDogExampleWithoutExtensions" key="Goal-pcoGoalWalkDogExampleWithoutExtensions" name="Goal without GAS Extensions"/>
Expand All @@ -37,32 +35,48 @@
<artifact id="Library/GoalFollowUpMeasure" key="Library-GoalFollowUpMeasure" name="GoalFollowUpMeasure"/>
<artifact id="Library/GoalIdentificationMeasure" key="Library-GoalIdentificationMeasure" name="GoalIdentificationMeasure"/>
<artifact id="Practitioner/pcoPractitionerGonzalez" key="Practitioner-pcoPractitionerGonzalez" name="Health &amp; Wellness Coach"/>
<artifact id="ValueSet/pco-domain-category-valueset" key="ValueSet-pco-domain-category-valueset" name="PCO Domain Categories"/>
<artifact id="ValueSet/pco-goal-domains-example-vs" key="ValueSet-pco-goal-domains-example-vs" name="PCO Goal Domain Categories Example"/>
<artifact id="CodeSystem/pco-goal-domains" key="CodeSystem-pco-goal-domains" name="PCO Goal Domains"/>
<artifact id="Library/PCOCommon" key="Library-PCOCommon" name="PCOCommon"/>
<artifact id="Questionnaire/44249-1" key="Questionnaire-44249-1" name="PHQ-9 quick depression assessment panel"/>
<artifact id="Observation/ppcBarrierDiabetes" key="Observation-ppcBarrierDiabetes" name="PPC Bothersome Health Concern: Diabeted diet (other)"/>
<artifact id="Observation/ppcBarrierUnsteady" key="Observation-ppcBarrierUnsteady" name="PPC Bothersome Symptom: Feeling Unsteady"/>
<artifact id="CarePlan/ppcCookingDinnerCarePlanExample" key="CarePlan-ppcCookingDinnerCarePlanExample" name="PPC Care Plan for person-centered goal"/>
<artifact id="ServiceRequest/ppcPhysicalTherapyReferral" key="ServiceRequest-ppcPhysicalTherapyReferral" name="PPC Care Plan: Clinical action step for PT"/>
<artifact id="Observation/ppcCareTradeOffBothersome" key="Observation-ppcCareTradeOffBothersome" name="PPC Care Trade-Off: Following a special diet"/>
<artifact id="Observation/ppcCareTradeOffHelpful" key="Observation-ppcCareTradeOffHelpful" name="PPC Care Trade-Off: Health care visits"/>
<artifact id="Observation/ppcGASScoreBaselineExample" key="Observation-ppcGASScoreBaselineExample" name="PPC GAS Baseline Score"/>
<artifact id="Goal/ppcGoalCookingDinner" key="Goal-ppcGoalCookingDinner" name="PPC Goal: Cooking Dinner"/>
<artifact id="List/ppcPrioritiesList" key="List-ppcPrioritiesList" name="PPC Priorities List"/>
<artifact id="CodeSystem/ppc-what-matters-concepts" key="CodeSystem-ppc-what-matters-concepts" name="PPC What Matters Concepts"/>
<artifact id="ValueSet/ppc-what-matters-example-vs" key="ValueSet-ppc-what-matters-example-vs" name="PPC What Matters Example ValueSet"/>
<artifact id="Observation/ppcWhatMattersActivitiesWithFamily" key="Observation-ppcWhatMattersActivitiesWithFamily" name="PPC What Matters: Activities with Family"/>
<artifact id="Observation/ppcWhatMattersMovingTheBody" key="Observation-ppcWhatMattersMovingTheBody" name="PPC What Matters: Walking or moving"/>
<artifact id="ValueSet/prom-target-measures" key="ValueSet-prom-target-measures" name="PROM Target Measures"/>
<artifact id="Patient/pcoPatientLopez" key="Patient-pcoPatientLopez" name="Patient Camila Lopez"/>
<artifact id="Patient/pcoPatientJones" key="Patient-pcoPatientJones" name="Patient Dorothy Jones"/>
<artifact id="Observation/pcoGASScorePatientFollowupExample" key="Observation-pcoGASScorePatientFollowupExample" name="Patient GAS Follow-up Score"/>
<artifact id="Patient/ppcPatientKay" key="Patient-ppcPatientKay" name="Patient John Kay"/>
<artifact id="StructureDefinition/pco-prom-score-observation" key="StructureDefinition-pco-prom-score-observation" name="Patient-Reported Outcome Measure (PROM) score"/>
<artifact id="StructureDefinition/pco-care-plan" key="StructureDefinition-pco-care-plan" name="Person-Centered Care Plan"/>
<artifact id="ValueSet/pco-category-vs" key="ValueSet-pco-category-vs" name="Person-Centered Category Value Set"/>
<artifact id="StructureDefinition/pco-gas-goal-profile" key="StructureDefinition-pco-gas-goal-profile" name="Person-Centered GAS Goal"/>
<artifact id="StructureDefinition/pco-goal-profile" key="StructureDefinition-pco-goal-profile" name="Person-Centered Goal"/>
<artifact id="StructureDefinition/pco-goal-barrier" key="StructureDefinition-pco-goal-barrier" name="Person-Centered Goal Barrier"/>
<artifact id="Measure/GoalFollowUpMeasure" key="Measure-GoalFollowUpMeasure" name="Person-Centered Goal Follow-Up"/>
<artifact id="Measure/GoalIdentificationMeasure" key="Measure-GoalIdentificationMeasure" name="Person-Centered Goal Identification"/>
<artifact id="ValueSet/pco-survey-category-vs" key="ValueSet-pco-survey-category-vs" name="Person-Centered Outcomes Survey Value Set"/>
<artifact id="StructureDefinition/pco-prom-goal-profile" key="StructureDefinition-pco-prom-goal-profile" name="Person-Centered PROM Goal"/>
<artifact id="StructureDefinition/pco-personal-priorities-organizer" key="StructureDefinition-pco-personal-priorities-organizer" name="Personal Priorities Organizer"/>
<artifact id="Observation/pcoGASScorePractitionerFollowupExample" key="Observation-pcoGASScorePractitionerFollowupExample" name="Practitioner GAS Follow-up Score"/>
<artifact id="Practitioner/pcoPractitionerAnderson" key="Practitioner-pcoPractitionerAnderson" name="Primary Care Physician"/>
<artifact id="CodeSystem/va-whole-health-example" key="CodeSystem-va-whole-health-example" name="VA Whole Health Concepts"/>
<artifact id="ValueSet/wellbeing-category-vs" key="ValueSet-wellbeing-category-vs" name="Well-Being Categories"/>
<artifact id="CodeSystem/wellbeing-concepts" key="CodeSystem-wellbeing-concepts" name="Well-Being Concepts"/>
<artifact id="ValueSet/wellbeing-domains-example-vs" key="ValueSet-wellbeing-domains-example-vs" name="Well-Being Domains Example"/>
<artifact id="ValueSet/wellbeing-priority-focus-vs" key="ValueSet-wellbeing-priority-focus-vs" name="Well-Being Priority Or Focus"/>
<artifact id="StructureDefinition/pco-what-matters-assessment" key="StructureDefinition-pco-what-matters-assessment" name="What Matters Assessment"/>
<artifact id="StructureDefinition/pco-what-matters-priority-focus" key="StructureDefinition-pco-what-matters-priority-focus" name="What Matters Priority or Focus Area"/>
<artifact id="ValueSet/what-matters-vs" key="ValueSet-what-matters-vs" name="What Matters Categories"/>
<artifact id="StructureDefinition/pco-what-matters-priority" key="StructureDefinition-pco-what-matters-priority" name="What Matters Priority"/>
<artifact id="Observation/pcoWhatMattersPriorityExample" key="Observation-pcoWhatMattersPriorityExample" name="What Matters Priority: Moving the Body"/>
<artifact id="StructureDefinition/pco-what-matters-statement" key="StructureDefinition-pco-what-matters-statement" name="What Matters Statement"/>
<artifact id="Observation/pcoWhatMattersStatementExample" key="Observation-pcoWhatMattersStatementExample" name="What Matters Statement: Family &amp; Friends"/>
<artifact id="Observation/pcoWhatMattersRelationshipsExample" key="Observation-pcoWhatMattersRelationshipsExample" name="What Matters: Family &amp; Friends"/>
<artifact id="Observation/pcoWhatMattersBodyExample" key="Observation-pcoWhatMattersBodyExample" name="What Matters: Moving the Body"/>
Expand Down
19 changes: 10 additions & 9 deletions input/cql/GoalAttainmentLogic.cql
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ using FHIR version '4.0.1'

include FHIRHelpers version '4.4.000' called FHIRHelpers
include PCOCommon version '0.1.0' called PC
include WhatMattersLogic version '0.1.0' called WM

codesystem "LOINC": 'http://loinc.org'
// codesystem "PCO GAS Codes": 'http://hl7.org/fhir/us/pco/CodeSystem/pco-gas-codes-temporary'

valueset "Person-Centered Category": 'http://hl7.org/fhir/us/pco/ValueSet/pco-category-vs'
valueset "PCO Domain Categories": 'http://hl7.org/fhir/us/pco/ValueSet/pco-domain-category-valueset'
valueset "PCO Goal Domain Categories": 'http://hl7.org/fhir/us/pco/ValueSet/pco-goal-domains-example-vs'
valueset "Goal Attainment Scaling (GAS) Score": 'http://hl7.org/fhir/us/pco/ValueSet/goal-attainment-scaling-score'
valueset "Follow-Up GAS Score Answers": 'http://hl7.org/fhir/us/pco/ValueSet/gas-score-answers'
valueset "PROM Target Measures": 'http://hl7.org/fhir/us/pco/ValueSet/prom-target-measures'
Expand All @@ -33,7 +31,9 @@ define GoalSummary:
return {
id: goal.id.value,
dueDate: goal.dueDate(),
pcoCategories: goal.category in "Person-Centered Category",
whatMattersCategory: goal.category in WM."What Matters Categories",
goalDomainCategory: goal.category in "PCO Goal Domain Categories",
addressesWhatMatters: exists goal.whatMattersObservations(),
hasGAS: goal.hasGAS(),
hasPROM: goal.hasPROM(),
carePlans: goal.carePlans()
Expand All @@ -52,14 +52,15 @@ define "All Goals":
[Goal] goal

/*
A "PCO Goal" is any FHIR Goal that has a category in "Person-Centered Category" or "PCO Domain Categories"
A "PCO Goal" is any FHIR Goal that has a category in "What Matters Category" or "PCO Domain Categories"
or that addresses a What Matters observation
and has a start date.
TODO: or a Goal that addresses a What Matters observation.
*/
define "PCO Goals":
[Goal] goal
where (goal.category in "Person-Centered Category"
or goal.category in "PCO Domain Categories")
where (goal.category in WM."What Matters Categories"
or goal.category in "PCO Goal Domain Categories"
or exists goal.whatMattersObservations())
and (goal.start as FHIR.date) is not null

// A "GAS Goal" is any PCO Goal that includes GAS extensions
Expand Down
7 changes: 7 additions & 0 deletions input/cql/PCOCommon.cql
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ define fluent function addressesConditions(goal Goal):
where obs.id = GA.reference.getId()
)

// Returns a list of Observations that this Goal addresses.
define fluent function addressesObservations(goal Goal):
flatten( goal.addresses GA
return [Observation] obs
where obs.id = GA.reference.getId()
)

// Returns a list of Goals that address this Observation
define fluent function addressedByGoals(obs Observation):
[Goal] goal
Expand Down
18 changes: 2 additions & 16 deletions input/cql/WhatMattersLogic.cql
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ using FHIR version '4.0.1'
include FHIRHelpers version '4.4.000' called FHIRHelpers
include PCOCommon version '0.1.0' called PC

valueset "Well-Being Categories": 'http://hl7.org/fhir/us/pco/ValueSet/wellbeing-category-vs'
valueset "What Matters Categories": 'http://hl7.org/fhir/us/pco/ValueSet/what-matters-vs'
valueset "Well-Being Domains": 'http://hl7.org/fhir/us/pco/ValueSet/wellbeing-domains-example-vs'

parameter "Measurement Period" Interval<DateTime>
Expand All @@ -18,7 +18,7 @@ context Patient

define "What Matters Observations":
[Observation] obs
where obs.category in "Well-Being Categories"
where obs.category in "What Matters Categories"
or obs.code in "Well-Being Domains"

// Returns a list of what matters Observations this Goal addresses.
Expand All @@ -31,17 +31,3 @@ define fluent function whatMattersObservations(goal Goal):

define fluent function isWhatMatters(obs Observation):
"What Matters Observations" contains obs

// Returns a list of Goals that address this Observation
define fluent function addressedByGoals(obs Observation):
[Goal] goal
where exists ( goal.addresses GA
where obs.id = GA.reference.getId()
)

// Returns a list of Conditions that this Goal addresses.
define fluent function addressesConditions(goal Goal):
flatten( goal.addresses GA
return [Condition] obs
where obs.id = GA.reference.getId()
)
99 changes: 0 additions & 99 deletions input/fsh/BothersomeHealthConcern.fsh

This file was deleted.

2 changes: 2 additions & 0 deletions input/fsh/GASExamples.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Description: "Person-centered goal with attainment scaling extensions"
Usage: #example
* lifecycleStatus = #active
* achievementStatus = $GoalAchievement#in-progress
* category[what-matters] = WellBeingConcepts#what-matters "What Matters Most"
* category[goal-domain] = PCOGoalDomains#physical-function "Physical Function"
* subject = Reference(pcoPatientJones)
* expressedBy = Reference(pcoPatientJones)
Expand All @@ -32,6 +33,7 @@ Description: "Person-centered goal with GAS target measure and without GAS exten
Usage: #example
* lifecycleStatus = #active
* achievementStatus = $GoalAchievement#in-progress
* category[what-matters] = WellBeingConcepts#what-matters "What Matters Most"
* category[goal-domain] = PCOGoalDomains#physical-function "Physical Function"
* subject = Reference(pcoPatientJones)
* expressedBy = Reference(pcoPatientJones)
Expand Down
Loading

0 comments on commit 3192727

Please sign in to comment.