diff --git a/FHIR-us-pco.xml b/FHIR-us-pco.xml
index c0793770..ab86024e 100644
--- a/FHIR-us-pco.xml
+++ b/FHIR-us-pco.xml
@@ -10,7 +10,7 @@
-
+
@@ -20,6 +20,7 @@
+
@@ -28,26 +29,28 @@
-
-
+
+
+
-
+
+
diff --git a/input/fsh/ComponentDefinitions.fsh b/input/fsh/ComponentDefinitions.fsh
index def4c99a..6c531537 100644
--- a/input/fsh/ComponentDefinitions.fsh
+++ b/input/fsh/ComponentDefinitions.fsh
@@ -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 = '%' "%"
diff --git a/input/fsh/GASExamples.fsh b/input/fsh/GASExamples.fsh
new file mode 100644
index 00000000..244367c8
--- /dev/null
+++ b/input/fsh/GASExamples.fsh
@@ -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"
diff --git a/input/fsh/GASProfiles.fsh b/input/fsh/GASProfiles.fsh
index ee1d3bd8..3e67ea82 100644
--- a/input/fsh/GASProfiles.fsh
+++ b/input/fsh/GASProfiles.fsh
@@ -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)
diff --git a/input/fsh/GlobalAliasList.fsh b/input/fsh/GlobalAliasList.fsh
new file mode 100644
index 00000000..8dd97fb1
--- /dev/null
+++ b/input/fsh/GlobalAliasList.fsh
@@ -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
diff --git a/input/fsh/PCOCarePlanExamples.fsh b/input/fsh/PCOCarePlanExamples.fsh
index 83b42467..49794eed 100644
--- a/input/fsh/PCOCarePlanExamples.fsh
+++ b/input/fsh/PCOCarePlanExamples.fsh
@@ -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)
@@ -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"
diff --git a/input/fsh/PCOExamples.fsh b/input/fsh/PCOExamples.fsh
index 818cb3a0..c160aec1 100644
--- a/input/fsh/PCOExamples.fsh
+++ b/input/fsh/PCOExamples.fsh
@@ -1,4 +1,3 @@
-Alias: $GoalAchievement = http://terminology.hl7.org/CodeSystem/goal-achievement
Instance: pcoPatientJones
InstanceOf: USCorePatientProfile
@@ -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"
diff --git a/input/fsh/PCOProfiles.fsh b/input/fsh/PCOProfiles.fsh
index c6d0ae86..7ee76042 100644
--- a/input/fsh/PCOProfiles.fsh
+++ b/input/fsh/PCOProfiles.fsh
@@ -5,87 +5,70 @@ RuleSet: PCOCategory
* ^slicing.discriminator.path = "$this"
* ^slicing.rules = #open
* category contains
- pcoCategory 0..* MS
+ pcoCategory 1..1 MS
* category[pcoCategory] from PCOCategoryValueSet (required)
- * ^short = "Person-Centered Outcome category"
+ * ^short = "Person-Centered category"
+
+RuleSet: PCODomainCategory
+* category
+ * ^slicing.discriminator.type = #pattern
+ * ^slicing.discriminator.path = "$this"
+ * ^slicing.rules = #open
+* category contains
+ domainCategory 0..* MS
+* category[domainCategory] from PCODomainCategoryValueSet (preferred)
+ * ^short = "Person-Centered Outcome domain category"
// Include same binding description as in US Core profiles.
-* category[pcoCategory]
+* category[domainCategory]
* ^binding.description = "Note that other codes are permitted, see [Required Bindings When Slicing by Value Sets](http://hl7.org/fhir/us/core/general-requirements.html#required-bindings-when-slicing-by-valuesets)"
+RuleSet: PCOSurveyCategory
+* category MS
+* category ^slicing.discriminator.type = #pattern
+* category ^slicing.discriminator.path = "$this"
+* category ^slicing.rules = #open
+* category ^requirements = "To identify that observation is derived from a questionnaire or other assessment instrument."
+* category contains
+ survey 1..1 MS
+* category[survey] from PCOSurveyCategoryVS
+* category[survey] ^requirements = "Indicates the person-centered outcomes observation is of type survey"
+
Profile: PCOGoalProfile
Parent: USCoreGoalProfile
Id: pco-goal-profile
Title: "Person-Centered Goal"
Description: "Person-centered goal focused on what matters most to an individual. A Person-centered goal SHALL include either a Person-Centered Outcome category, or address a What Matters assessment."
* insert PCOCategory
+* insert PCODomainCategory
* expressedBy 0..1 MS
* expressedBy only Reference(USCorePatientProfile or USCorePractitionerProfile or USCoreRelatedPersonProfile)
* start[x] 1..1 MS
* start[x] only date
-* addresses 0..* MS
- * ^short = "What Matters Assessment or Condition"
-* addresses only Reference(WhatMattersAssessment or USCoreConditionProblemsHealthConcernsProfile)
-// TODO: add a constraint that either category from PCOCategory or addresses WhatMattersAssessment SHALL be present
+* addresses only Reference(Condition or Observation or RiskAssessment)
+* addresses ^slicing.discriminator.type = #profile
+* addresses ^slicing.discriminator.path = "resolve()"
+* addresses ^slicing.rules = #open
+* addresses contains SupportedAddresses 0..* MS
+* addresses[SupportedAddresses] only Reference(WhatMattersAssessment or WhatMattersStatement)
+ * ^short = "What Matters Assessment or Statement"
+ * ^requirements = "When a goal addresses PCO what matters most observations, Goal.addresses should reference instances that comply with the PCO What Matters Assessment profiles. However, references to other instance types are also possible."
-Profile: PCOGoalOutcomeMeasureProfile
-Parent: PCOGoalProfile
-Id: pco-prom-goal-profile
-Title: "Person-Centered PROM Goal"
-Description: "Person-centered goal with a Patient-Reported Outcome Measure (PROM) score target."
-* target 1..1
- * measure 1..1 MS
- * ^short = "Target score for evaluating PCO Goal using PROMs"
- * measure from PROMTargetMeasures (extensible)
- * detailQuantity 1..1 MS
- * ^short = "Target value for the PROM score"
+// TODO: add a constraint that either Goal.category from PCOCategory or Goal.addresses WhatMattersAssessment SHALL be present
Profile: PCOCarePlan
Parent: USCoreCarePlanProfile
Id: pco-care-plan
Title: "Person-Centered Care Plan"
Description: "A person-centered care plan SHALL reference a person-centered goal and SHALL include action steps that support progress toward achievement of the plan's goals and desired outcomes. A plan SHOULD address the person's stated priorities for what matters most to them. Action steps may include both treatment procedures and self-care steps identified by the person."
-* insert PCOCategory
* goal 1..* MS
-* goal only Reference(PCOGoalProfile)
+* goal ^slicing.discriminator.type = #profile
+* goal ^slicing.discriminator.path = "resolve()"
+* goal ^slicing.rules = #open
+* goal contains SupportedGoals 1..* MS
+* goal[SupportedGoals] only Reference(PCOGoalProfile)
* ^short = "Person-centered goals supported by this plan"
* activity.detail 0..0
* ^short = "Removed in FHIR R5"
* activity 1..*
* activity.reference 1..1 MS
* ^short = "Action steps for person-centered goals"
-
-Profile: PCOProgressScoreObservation
-Parent: USCoreObservationScreeningAssessmentProfile
-Id: pco-progress-score-observation
-Title: "Person-Centered Progress Score"
-Description: "A progress score observation for a person-centered goal."
-* effectiveDateTime 1..1 MS
- * ^short = "When the score was assessed"
-* focus 0..1 MS
-* focus only Reference(PCOGoalProfile)
- * ^short = "The goal whose progress was scored"
-/*
-This slicing does not work. Always adds this to example instances:
- {
- "reference": "StructureDefinition/pco-goal"
- }
-*/
-// * focus
-// * ^slicing.discriminator.type = #value
-// * ^slicing.discriminator.path = "$this"
-// * ^slicing.rules = #open
-// * focus contains
-// pcoGoal 1..1 MS
-// * focus[pcoGoal] = only Reference(PCOGoal)
-// * ^short = "Person-centered goal"
-
-Profile: PCOPatientReportedOutcomeScore
-Parent: PCOProgressScoreObservation
-Id: pco-prom-score
-Title: "Patient-Reported Outcome Measure (PROM) score"
-Description: "This observation records how a patient rated their own progress score using a PROM assessment."
-* code from PROMTargetMeasures (extensible)
- * ^short = "Code for PROM score observation"
-* focus only Reference(PCOGoalOutcomeMeasureProfile)
-* value[x] 1..1 MS
-* value[x] only Quantity or integer
diff --git a/input/fsh/PCOTerminology.fsh b/input/fsh/PCOTerminology.fsh
index 1e4f7750..0285d7cf 100644
--- a/input/fsh/PCOTerminology.fsh
+++ b/input/fsh/PCOTerminology.fsh
@@ -1,14 +1,25 @@
-Alias: $LNC = http://loinc.org
-Alias: $SNOMED = http://snomed.info/sct
-Alias: $UCUM = http://unitsofmeasure.org
-
CodeSystem: PCOCodes
-Id: pco
+Id: pco-codes
Title: "Codes for PCO"
Description: "Codes to identify content associated with this IG"
* ^caseSensitive = true
* ^experimental = false
* ^status = #active
+* #person-centered "Person-Centered"
* #person-centered-goal "Person-Centered Goal"
* #pco-data-submission-bundle "PCO Bundle"
* #pco-data-submission-standing-order "PCO Submission Standing Order"
+
+ValueSet: PCOCategoryValueSet
+Title: "Person-Centered Category Value Set"
+Id: pco-category-vs
+Description: "Used to categorize resources as being Person-Centered"
+* ^experimental = false
+* PCOCodes#person-centered "Person-Centered"
+
+ValueSet: PCOSurveyCategoryVS
+Title: "Person-Centered Outcomes Survey Value Set"
+Id: pco-survey-category-vs
+Description: "Used to indicate that all PCO observations of of type Survey"
+* ^experimental = false
+* OBSCAT#survey "Survey"
diff --git a/input/fsh/PCOTerminologyExamples.fsh b/input/fsh/PCOTerminologyExamples.fsh
index 8243a456..2756c711 100644
--- a/input/fsh/PCOTerminologyExamples.fsh
+++ b/input/fsh/PCOTerminologyExamples.fsh
@@ -34,10 +34,10 @@ Description: "NCQA goal domain codes used to identify the category for PCO resou
* #emotional-and-mental-health "Emotional And Mental Health"
""
-ValueSet: PCOCategoryValueSet
-Id: pco-category-valueset
-Title: "PCO Categories"
-Description: "Example value set to identify the category for PCO resources."
+ValueSet: PCODomainCategoryValueSet
+Id: pco-domain-category-valueset
+Title: "PCO Domain Categories"
+Description: "Example value set to identify the domains category for PCO resources."
* ^experimental = false
// Cannot use "include codes" because cqframework -EnsureExecutableValueSet does not support this expansion
// * include codes from system NCQAGoalDomains
@@ -53,12 +53,3 @@ Description: "Example value set to identify the category for PCO resources."
* NCQAGoalDomains#physical-function "Physical Function"
* NCQAGoalDomains#social-functioning "Social Functioning"
* NCQAGoalDomains#emotional-and-mental-health "Emotional And Mental Health"
-* VAWholeHealth#body "Moving the Body"
-* VAWholeHealth#mind "Power of the Mind"
-* VAWholeHealth#nourishment "Food & Drink"
-* VAWholeHealth#recharge "Recharge"
-* VAWholeHealth#surroundings "Surroundings"
-* VAWholeHealth#personal-development "Personal Development"
-* VAWholeHealth#spirit-and-soul "Spirit & Soul"
-* VAWholeHealth#relationships "Family, Friends & Co-Workers"
-* VAWholeHealth#professional-care "Professional Care"
\ No newline at end of file
diff --git a/input/fsh/PROMExamples.fsh b/input/fsh/PROMExamples.fsh
index 221120a5..5885e4fe 100644
--- a/input/fsh/PROMExamples.fsh
+++ b/input/fsh/PROMExamples.fsh
@@ -19,7 +19,8 @@ Description: "Person-centered goal with a PROM outcome target for GAD-7 score."
Usage: #example
* lifecycleStatus = #active
* achievementStatus = $GoalAchievement#in-progress
-* category[pcoCategory] = VAWholeHealth#mind "Power of the Mind"
+* category[pcoCategory] = PCOCodes#person-centered "Person-Centered"
+* category[domainCategory] = NCQAGoalDomains#emotional-and-mental-health "Emotional And Mental Health"
* subject = Reference(pcoPatientLopez)
* expressedBy = Reference(pcoPractitionerAnderson)
* startDate = "2024-08-11"
@@ -35,6 +36,7 @@ Title: "GAD-7 PROM Follow-up Score"
Description: "Follow-up GAD-7 PROM score observation recorded by a Patient showing goal progress."
Usage: #example
* status = #final
+* category[survey] = OBSCAT#survey "Survey"
* subject = Reference(pcoPatientLopez)
* performer = Reference(pcoPatientLopez)
* effectiveDateTime = "2024-09-19T13:15:00Z"
@@ -50,8 +52,6 @@ Usage: #example
* status = #active
* intent = #plan
* subject = Reference(pcoPatientLopez)
-* category[pcoCategory][0] = VAWholeHealth#mind "Power of the Mind"
-* category[pcoCategory][1] = NCQAGoalDomains#emotional-and-mental-health "Emotional And Mental Health"
* goal = Reference(pcoGoalAnxietyExample)
* activity[0].reference = Reference(pcoMindfulnessSupportProgram)
* period.start = "2024-08-11"
@@ -66,7 +66,7 @@ Usage: #example
* intent = #plan
* subject = Reference(pcoPatientLopez)
* requester = Reference(pcoPractitionerAnderson)
-* code.coding = $SNOMED#1259023009 "Mindfulness Based Stress Reduction program (regime/therapy)"
+* code.coding = $SCT#1259023009 "Mindfulness Based Stress Reduction program (regime/therapy)"
* extension[pertainsToGoal].valueReference = Reference(pcoGoalAnxietyExample)
* authoredOn = "2024-08-11"
* occurrenceTiming.repeat.boundsPeriod.start = "2024-08-11"
diff --git a/input/fsh/PROMProfiles.fsh b/input/fsh/PROMProfiles.fsh
new file mode 100644
index 00000000..13b61084
--- /dev/null
+++ b/input/fsh/PROMProfiles.fsh
@@ -0,0 +1,27 @@
+Profile: PCOGoalOutcomeMeasureProfile
+Parent: PCOGoalProfile
+Id: pco-prom-goal-profile
+Title: "Person-Centered PROM Goal"
+Description: "Person-centered goal with a Patient-Reported Outcome Measure (PROM) score target."
+* target 1..1
+ * measure 1..1 MS
+ * ^short = "Target score for evaluating PCO Goal using PROMs"
+ * measure from PROMTargetMeasures (extensible)
+ * detailQuantity 1..1 MS
+ * ^short = "Target value for the PROM score"
+
+Profile: PCOPatientReportedOutcomeScore
+Parent: USCoreSimpleObservationProfile
+Id: pco-prom-score
+Title: "Patient-Reported Outcome Measure (PROM) score"
+Description: "This observation records how a patient's progress score is rated using a PROM assessment."
+* insert PCOSurveyCategory
+* effectiveDateTime 1..1 MS
+ * ^short = "When the score was assessed"
+* code from PROMTargetMeasures (extensible)
+ * ^short = "Code for PROM score observation"
+* focus 0..1 MS
+* focus only Reference(PCOGoalOutcomeMeasureProfile)
+ * ^short = "The goal whose progress was scored"
+* value[x] 1..1 MS
+* value[x] only Quantity or integer
diff --git a/input/fsh/WhatMatters.fsh b/input/fsh/WhatMatters.fsh
index 748dbfaa..86ec3610 100644
--- a/input/fsh/WhatMatters.fsh
+++ b/input/fsh/WhatMatters.fsh
@@ -1,9 +1,34 @@
+Profile: WhatMattersFocusArea
+Parent: USCoreSimpleObservationProfile
+Id: pco-what-matters-focus-area
+Title: "What Matters Focus Area"
+Description: "Assessment observation for one aspect of What Matters Most to a person, with a boolean value indicating if this is a current priority."
+* insert PCOSurveyCategory
+// Must have preferred binding because parent profile has a preferred binding.
+* code from WhatMattersFocusAreas (preferred)
+ * ^short = "Focus area for What Matters assessment"
+* value[x] 1..1 MS
+* value[x] only boolean
+ * ^short = "Indicates if focus area is a current priority"
+
+Profile: WhatMattersStatement
+Parent: USCoreSimpleObservationProfile
+Id: pco-what-matters-statement
+Title: "What Matters Statement"
+Description: "Assessment observation for one aspect of What Matters Most to a person, with a text statement about a focus area."
+* insert PCOSurveyCategory
+* code from WhatMattersFocusAreas (preferred)
+ * ^short = "Focus area for What Matters assessment"
+* value[x] 1..1 MS
+* value[x] only string
+ * ^short = "Description of what matters for this focus area"
Profile: WhatMattersAssessment
-Parent: USCoreObservationScreeningAssessmentProfile
+Parent: USCoreSimpleObservationProfile
Id: pco-what-matters-assessment
Title: "What Matters Assessment"
Description: "Assessment observation for one aspect of What Matters Most to a person, with component values rating where a person is now and where they would like to be in the future."
+* insert PCOSurveyCategory
* code from WhatMattersFocusAreas (preferred)
* ^short = "Focus area for What Matters assessment"
* component
@@ -19,28 +44,28 @@ Description: "Assessment observation for one aspect of What Matters Most to a pe
* component[nowRating]
* code = WhatMattersRating#now-rating
* ^short = "Where are you now?"
- * insert ValueInteger
+ * insert RatingValueInteger
* component[nowReasons]
* code = WhatMattersRating#now-reasons
* ^short = "What are the reasons you chose this number?"
- * insert ValueString
+ * insert RatingValueString
* component[futureRating]
* code = WhatMattersRating#future-rating
* ^short = "Where would you like to be?"
- * insert ValueInteger
+ * insert RatingValueInteger
* component[futureChanges]
* code = WhatMattersRating#future-changes
* ^short = "What changes could you make to help you get there?"
- * insert ValueString
+ * insert RatingValueString
-RuleSet: ValueInteger
+RuleSet: RatingValueInteger
+* value[x] 1..1 MS
* value[x] only integer
-* valueInteger 1..1 MS
- * ^short = "Rating on scale of 1 (low) to 10 (high)"
+ * ^short = "Rating on scale from low to high"
-RuleSet: ValueString
+RuleSet: RatingValueString
+* value[x] 1..1 MS
* value[x] only string
-* valueString 1..1 MS
* ^short = "Reasons for your rating"
CodeSystem: WhatMattersRating
diff --git a/input/fsh/WhatMattersExamples.fsh b/input/fsh/WhatMattersExamples.fsh
index 91d3c949..6b0764c4 100644
--- a/input/fsh/WhatMattersExamples.fsh
+++ b/input/fsh/WhatMattersExamples.fsh
@@ -5,6 +5,7 @@ Title: "What Matters: Moving the Body"
Description: "What Matters assessment observation recorded by a Patient as preparation for creating PCO goals and CarePlan action steps."
Usage: #example
* status = #final
+* category[survey] = OBSCAT#survey "Survey"
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPatientJones)
* effectiveDateTime = "2024-03-27T15:10:00Z"
@@ -18,6 +19,7 @@ InstanceOf: WhatMattersAssessment
Title: "What Matters: Family & Friends"
Description: "What Matters assessment observation recorded by a Patient as preparation for creating PCO goals and CarePlan action steps."
Usage: #example
+* category[survey] = OBSCAT#survey "Survey"
* status = #final
* subject = Reference(pcoPatientJones)
* performer = Reference(pcoPatientJones)