Skip to content

Commit

Permalink
Reorganize FSH files. Revise category valuesets.
Browse files Browse the repository at this point in the history
  • Loading branch information
drdavec committed Dec 9, 2024
1 parent 37bedf6 commit 37c370f
Show file tree
Hide file tree
Showing 14 changed files with 247 additions and 168 deletions.
11 changes: 7 additions & 4 deletions FHIR-us-pco.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<artifact id="MedicationRequest/pcoAntiInflammatoryMedication" key="MedicationRequest-pcoAntiInflammatoryMedication" name="Care Plan: Anti-Inflammatory Medication"/>
<artifact id="ServiceRequest/pcoPhysicalTherapyReferral" key="ServiceRequest-pcoPhysicalTherapyReferral" name="Care Plan: Clinical action step for PT"/>
<artifact id="ServiceRequest/pcoWalkOutsideActionStep" key="ServiceRequest-pcoWalkOutsideActionStep" name="Care Plan: Personal action step"/>
<artifact id="CodeSystem/pco" key="CodeSystem-pco" name="Codes for PCO"/>
<artifact id="CodeSystem/pco-cs" key="CodeSystem-pco-cs" 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"/>
Expand All @@ -20,6 +20,7 @@
<artifact id="Questionnaire/69737-5" key="Questionnaire-69737-5" name="Generalized anxiety disorder 7 item"/>
<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="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/pcoGoalPainLevelExample" key="Goal-pcoGoalPainLevelExample" name="Goal without GAS or PROM"/>
Expand All @@ -28,26 +29,28 @@
<artifact id="Library/GoalIdentificationMeasure" key="Library-GoalIdentificationMeasure" name="GoalIdentificationMeasure"/>
<artifact id="Practitioner/pcoPractitionerGonzalez" key="Practitioner-pcoPractitionerGonzalez" name="Health &amp; Wellness Coach"/>
<artifact id="CodeSystem/ncqa-goal-domains" key="CodeSystem-ncqa-goal-domains" name="NCQA Goal Domains"/>
<artifact id="ValueSet/pco-category-valueset" key="ValueSet-pco-category-valueset" name="PCO Categories"/>
<artifact id="StructureDefinition/pco-gas-score-observation" key="StructureDefinition-pco-gas-score-observation" name="PCO Goal Attainment Scaling (GAS) score"/>
<artifact id="ValueSet/pco-domain-category-valueset" key="ValueSet-pco-domain-category-valueset" name="PCO Domain Categories"/>
<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="ValueSet/prom-target-measures" key="ValueSet-prom-target-measures" name="PROM Target Measures"/>
<artifact id="Observation/pcoGASScorePatientFollowupExample" key="Observation-pcoGASScorePatientFollowupExample" name="Patient GAS Follow-up Score"/>
<artifact id="StructureDefinition/pco-prom-score" key="StructureDefinition-pco-prom-score" 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="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-progress-score-observation" key="StructureDefinition-pco-progress-score-observation" name="Person-Centered Progress Score"/>
<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" key="CodeSystem-va-whole-health" name="VA Whole Health Concepts"/>
<artifact id="StructureDefinition/pco-what-matters-assessment" key="StructureDefinition-pco-what-matters-assessment" name="What Matters Assessment"/>
<artifact id="StructureDefinition/pco-what-matters-focus-area" key="StructureDefinition-pco-what-matters-focus-area" name="What Matters Focus Area"/>
<artifact id="ValueSet/what-matters-focus-areas" key="ValueSet-what-matters-focus-areas" name="What Matters Focus Areas"/>
<artifact id="CodeSystem/what-matters-rating" key="CodeSystem-what-matters-rating" name="What Matters Rating Concepts"/>
<artifact id="StructureDefinition/pco-what-matters-statement" key="StructureDefinition-pco-what-matters-statement" name="What Matters Statement"/>
<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"/>
<artifact id="Library/WhatMattersLogic" key="Library-WhatMattersLogic" name="WhatMattersLogic"/>
Expand Down
4 changes: 1 addition & 3 deletions input/fsh/ComponentDefinitions.fsh
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@

Alias: $compliesWithProfile = http://hl7.org/fhir/StructureDefinition/structuredefinition-compliesWithProfile

RuleSet: QuantityPercent
RuleSet: ValueQuantityPercent
* value[x] only Quantity
* valueQuantity 1..1 MS
* valueQuantity = '%' "%"
Expand Down
69 changes: 69 additions & 0 deletions input/fsh/GASExamples.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@

Instance: pcoGoalWalkDogExample
InstanceOf: PCOGoalAttainmentScaleProfile
Title: "Goal with GAS"
Description: "Person-centered goal with attainment scaling extensions"
Usage: #example
* lifecycleStatus = #active
* achievementStatus = $GoalAchievement#in-progress
* category[pcoCategory] = PCOCodes#person-centered "Person-Centered"
* category[domainCategory] = NCQAGoalDomains#physical-function "Physical Function"
* subject = Reference(pcoPatientJones)
* expressedBy = Reference(pcoPatientJones)
* startDate = "2024-04-03"
* target.dueDate = "2024-09-30"
* addresses[0] = Reference(pcoWhatMattersBodyExample) "What Matters: Moving the Body"
* addresses[1] = Reference(pcoWhatMattersRelationshipsExample) "What Matters: Family & Friends"
* description.text = "Walk dog outside once a week"
* extension[gas-scaling][0].extension[level].valueCoding = $LNC#LA6113-0 "Much better than expected"
* extension[gas-scaling][0].extension[text].valueString = "Walk dog outside three times a week"
* extension[gas-scaling][1].extension[level].valueCoding = $LNC#LA6112-2 "Better than expected"
* extension[gas-scaling][1].extension[text].valueString = "Walk dog outside twice a week"
* extension[gas-scaling][2].extension[level].valueCoding = $LNC#LA6111-4 "Expected outcome"
* extension[gas-scaling][2].extension[text].valueString = "Walk dog outside once a week"
* extension[gas-scaling][3].extension[level].valueCoding = $LNC#gas-less-than-expected "Less than expected"
* extension[gas-scaling][3].extension[text].valueString = "Does not walk dog but goes outside with dog"
* extension[gas-scaling][4].extension[level].valueCoding = $LNC#gas-much-less-than-expected "Much less than expected"
* extension[gas-scaling][4].extension[text].valueString = "Unable to go outside with dog"

Instance: pcoGASScoretBaselineExample
InstanceOf: PCOGoalAttainmentScoreObservation
Title: "GAS Baseline Score"
Description: "Baseline GAS score observation at start of goal."
Usage: #example
* status = #final
* category[survey] = OBSCAT#survey "Survey"
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPractitionerGonzalez)
* effectiveDateTime = "2024-04-03T10:15:00Z"
* code = $LNC#68489 "Goal attainment scale"
* focus = Reference(pcoGoalWalkDogExample)
* valueCodeableConcept = $LNC#gas-less-than-expected "Less than expected"

Instance: pcoGASScorePatientFollowupExample
InstanceOf: PCOGoalAttainmentScoreObservation
Title: "Patient GAS Follow-up Score"
Description: "Follow-up GAS score observation recorded by a Patient showing goal progress."
Usage: #example
* status = #final
* category[survey] = OBSCAT#survey "Survey"
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPatientJones)
* effectiveDateTime = "2024-05-10T10:15:00Z"
* code = $LNC#68491 "Patient follow-up goal attainment scaling score"
* focus = Reference(pcoGoalWalkDogExample)
* valueCodeableConcept = $LNC#LA6112-2 "Better than expected"

Instance: pcoGASScorePractitionerFollowupExample
InstanceOf: PCOGoalAttainmentScoreObservation
Title: "Practitioner GAS Follow-up Score"
Description: "Follow-up GAS score observation recorded by a Practitioner showing goal progress."
Usage: #example
* status = #final
* category[survey] = OBSCAT#survey "Survey"
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPractitionerGonzalez)
* effectiveDateTime = "2024-05-22T10:15:00Z"
* code = $LNC#68490 "Practitioner follow-up goal attainment scaling score"
* focus = Reference(pcoGoalWalkDogExample)
* valueCodeableConcept = $LNC#LA6111-4 "Expected outcome"
11 changes: 8 additions & 3 deletions input/fsh/GASProfiles.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,18 @@ Description: "Person-centered goal with goal attainment scaling."
* measure = $LNC#68489 "Goal attainment scale"

Profile: PCOGoalAttainmentScoreObservation
Parent: PCOProgressScoreObservation
Parent: USCoreSimpleObservationProfile
Id: pco-gas-score-observation
Title: "PCO Goal Attainment Scaling (GAS) score"
Title: "Goal Attainment Scaling (GAS) score"
Description: "The follow-up score indicates how a patient, caregiver, or practitioner rated progress on goal attainment scaling."
* insert PCOSurveyCategory
* effectiveDateTime 1..1 MS
* ^short = "When the score was assessed"
* code from GoalAttainmentScalingScore (extensible)
* ^short = "Code for Goal Attainment Scaling (GAS) score observation"
* focus 0..1 MS
* focus only Reference(PCOGoalAttainmentScaleProfile)
* ^short = "The goal whose progress was scored"
* value[x] 1..1 MS
* value[x] only CodeableConcept
* valueCodeableConcept 1..1 MS
* valueCodeableConcept from GASScoreAnswers (required)
32 changes: 32 additions & 0 deletions input/fsh/GlobalAliasList.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Code Systems
// NOTE: use a code system (not value set) in instances
Alias: $LNC = http://loinc.org
Alias: $SCT = http://snomed.info/sct
Alias: CAT = http://terminology.hl7.org/CodeSystem/observation-category
Alias: UOM = http://unitsofmeasure.org
Alias: DAR = http://terminology.hl7.org/CodeSystem/data-absent-reason
Alias: Hl7FhirAdminGender = http://hl7.org/fhir/administrative-gender
Alias: NUCC = http://nucc.org/provider-taxonomy
Alias: USCORECAT = http://hl7.org/fhir/us/core/CodeSystem/us-core-category
Alias: OBSCAT = http://terminology.hl7.org/CodeSystem/observation-category

// Value Sets
// NOTE: use a value set (not code system) when binding a field
Alias: LNCVS = http://hl7.org/fhir/ValueSet/observation-codes
Alias: CATVS = http://hl7.org/fhir/ValueSet/observation-category

Alias: $compliesWithProfile = http://hl7.org/fhir/StructureDefinition/structuredefinition-compliesWithProfile

Alias: $GoalAchievement = http://terminology.hl7.org/CodeSystem/goal-achievement

// Misc
// Alias: USCorePatient = http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient
// Alias: USCoreEncounter = http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter
// Alias: USCoreLocation = http://hl7.org/fhir/us/core/StructureDefinition/us-core-location
// Alias: USCorePractitioner = http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
// Alias: USCorePractitionerRole = http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
// Alias: USCoreOrganization = http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization
// Alias: USCoreQuestionnaireResponse = http://hl7.org/fhir/us/core/StructureDefinition/us-core-questionnaireresponse
// Alias: USCoreDocumentReference = http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference
// Alias: USCoreDiagnosticReport = http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note
// Alias: $us-core-diagnosticreport-category = http://hl7.org/fhir/us/core/ValueSet/us-core-diagnosticreport-category
4 changes: 1 addition & 3 deletions input/fsh/PCOCarePlanExamples.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ Usage: #example
* status = #active
* intent = #plan
* subject = Reference(pcoPatientJones)
* category[pcoCategory][0] = NCQAGoalDomains#physical-function "Physical Function"
* category[pcoCategory][1] = NCQAGoalDomains#independence "Independence"
* goal = Reference(pcoGoalWalkDogExample)
* activity[0].reference = Reference(pcoWalkOutsideActionStep)
* activity[1].reference = Reference(pcoPhysicalTherapyReferral)
Expand Down Expand Up @@ -47,7 +45,7 @@ Usage: #example
* intent = #plan
* subject = Reference(pcoPatientJones)
* requester = Reference(pcoPractitionerAnderson)
* code.coding = $SNOMED#91251008 "Physical therapy procedure (regime/therapy)"
* code.coding = $SCT#91251008 "Physical therapy procedure (regime/therapy)"
* extension[pertainsToGoal].valueReference = Reference(pcoGoalWalkDogExample)
* authoredOn = "2024-02-22"
* occurrenceTiming.repeat.boundsPeriod.start = "2024-03-01"
Expand Down
69 changes: 2 additions & 67 deletions input/fsh/PCOExamples.fsh
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
Alias: $GoalAchievement = http://terminology.hl7.org/CodeSystem/goal-achievement

Instance: pcoPatientJones
InstanceOf: USCorePatientProfile
Expand Down Expand Up @@ -48,74 +47,10 @@ Description: "Person-centered goal without attainment scaling or PROM"
Usage: #example
* lifecycleStatus = #active
* achievementStatus = $GoalAchievement#in-progress
* category[pcoCategory] = NCQAGoalDomains#physical-function "Physical Function"
* category[pcoCategory] = PCOCodes#person-centered "Person-Centered"
* category[domainCategory] = NCQAGoalDomains#physical-function "Physical Function"
* subject = Reference(pcoPatientJones)
* expressedBy = Reference(pcoPatientJones)
* startDate = "2024-02-15"
* target.dueDate = "2024-06-30"
* description.text = "Maintain pain level below 5 while walking"

Instance: pcoGoalWalkDogExample
InstanceOf: PCOGoalAttainmentScaleProfile
Title: "Goal with GAS"
Description: "Person-centered goal with attainment scaling extensions"
Usage: #example
* lifecycleStatus = #active
* achievementStatus = $GoalAchievement#in-progress
* category[pcoCategory] = NCQAGoalDomains#physical-function "Physical Function"
* subject = Reference(pcoPatientJones)
* expressedBy = Reference(pcoPatientJones)
* startDate = "2024-04-03"
* target.dueDate = "2024-09-30"
* addresses[0] = Reference(pcoWhatMattersBodyExample) "What Matters: Moving the Body"
* addresses[1] = Reference(pcoWhatMattersRelationshipsExample) "What Matters: Family & Friends"
* description.text = "Walk dog outside once a week"
* extension[gas-scaling][0].extension[level].valueCoding = $LNC#LA6113-0 "Much better than expected"
* extension[gas-scaling][0].extension[text].valueString = "Walk dog outside three times a week"
* extension[gas-scaling][1].extension[level].valueCoding = $LNC#LA6112-2 "Better than expected"
* extension[gas-scaling][1].extension[text].valueString = "Walk dog outside twice a week"
* extension[gas-scaling][2].extension[level].valueCoding = $LNC#LA6111-4 "Expected outcome"
* extension[gas-scaling][2].extension[text].valueString = "Walk dog outside once a week"
* extension[gas-scaling][3].extension[level].valueCoding = $LNC#gas-less-than-expected "Less than expected"
* extension[gas-scaling][3].extension[text].valueString = "Does not walk dog but goes outside with dog"
* extension[gas-scaling][4].extension[level].valueCoding = $LNC#gas-much-less-than-expected "Much less than expected"
* extension[gas-scaling][4].extension[text].valueString = "Unable to go outside with dog"

Instance: pcoGASScoretBaselineExample
InstanceOf: PCOGoalAttainmentScoreObservation
Title: "GAS Baseline Score"
Description: "Baseline GAS score observation at start of goal."
Usage: #example
* status = #final
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPractitionerGonzalez)
* effectiveDateTime = "2024-04-03T10:15:00Z"
* code = $LNC#68489 "Goal attainment scale"
* focus = Reference(pcoGoalWalkDogExample)
* valueCodeableConcept = $LNC#gas-less-than-expected "Less than expected"

Instance: pcoGASScorePatientFollowupExample
InstanceOf: PCOGoalAttainmentScoreObservation
Title: "Patient GAS Follow-up Score"
Description: "Follow-up GAS score observation recorded by a Patient showing goal progress."
Usage: #example
* status = #final
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPatientJones)
* effectiveDateTime = "2024-05-10T10:15:00Z"
* code = $LNC#68491 "Patient follow-up goal attainment scaling score"
* focus = Reference(pcoGoalWalkDogExample)
* valueCodeableConcept = $LNC#LA6112-2 "Better than expected"

Instance: pcoGASScorePractitionerFollowupExample
InstanceOf: PCOGoalAttainmentScoreObservation
Title: "Practitioner GAS Follow-up Score"
Description: "Follow-up GAS score observation recorded by a Practitioner showing goal progress."
Usage: #example
* status = #final
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPractitionerGonzalez)
* effectiveDateTime = "2024-05-22T10:15:00Z"
* code = $LNC#68490 "Practitioner follow-up goal attainment scaling score"
* focus = Reference(pcoGoalWalkDogExample)
* valueCodeableConcept = $LNC#LA6111-4 "Expected outcome"
Loading

0 comments on commit 37c370f

Please sign in to comment.