Id: PCOCommon Version: 1.0.0 Url: PCOCommon Status: draft Type: system: http://terminology.hl7.org/CodeSystem/library-type code: logic-library Date: 2026-03-02 20:03:58+0000 Publisher: HL7 International / Patient Care Description: Shared CQL expressions for all Person-Centered Outcome libraries. Jurisdiction: US Related Artifacts: Dependencies http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1 http://hl7.org/fhir/uv/cql/Library/FHIRCommon|2.0.0 http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1 Parameters: Name Type Min Max In/Out Measurement Period Period 0 1 In Patient Patient 0 1 Out Data Requirements: Type Profile MS Code Filter Patient http://hl7.org/fhir/StructureDefinition/Patient ; Condition http://hl7.org/fhir/StructureDefinition/Condition ; Observation http://hl7.org/fhir/StructureDefinition/Observation ; Goal http://hl7.org/fhir/StructureDefinition/Goal ;;;; CarePlan http://hl7.org/fhir/StructureDefinition/CarePlan ; Practitioner http://hl7.org/fhir/StructureDefinition/Practitioner ; RelatedPerson http://hl7.org/fhir/StructureDefinition/RelatedPerson ; Content: text/cql library PCOCommon version '0.1.0' using FHIR version '4.0.1' include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' parameter "Measurement Period" Interval<DateTime> context Patient define function SortAscending(observations List<Observation>): observations O sort by Coalesce( (effective as FHIR.dateTime).value, (effective as FHIR.instant).value, (effective as FHIR.Period)."end".value, (effective as FHIR.Period)."start".value) ascending // Returns Date from the first Goal target that has a due date. define fluent function dueDate(goal Goal): First(goal.target target // TODO if due is Duration, add that quantity to startDate let due:(target.due as FHIR.date).value where due is not null return due ) // Returns a list of Conditions that this Goal addresses. define fluent function addressesConditions(goal Goal): flatten( goal.addresses GA return [Condition] cond where GA.references(cond.id) ) // Returns a list of Observations that this Goal addresses. define fluent function addressesObservations(goal Goal): flatten( goal.addresses GA return [Observation] obs where GA.references(obs.id) ) // Returns a list of Goals that address this Observation define fluent function addressedByGoals(obs Observation): [Goal] goal where exists ( goal.addresses GA where GA.references(obs.id) ) // Returns a list of CarePlan that support this Goal. define fluent function carePlans(goal Goal): [CarePlan] carePlan where exists ( carePlan.goal goalRef where goalRef.references(goal.id) ) /** Use this function to resolve Patient resource from a list of references, e.g. from Goal.expressedBy or Observation.performer Returns null if a Patient resource is not included in the reference list. */ define fluent function resolvePatients(references List<Reference>): flatten( references ref return [Patient] resource where ref.references(resource.id) ) /** Use this function to resolve Pracitioner resource from a list of references, e.g. from Goal.expressedBy or Observation.performer Returns null if a Pracitioner resource is not included in the reference list. */ define fluent function resolvePractitioners(references List<Reference>): flatten( references ref return [Practitioner] resource where ref.references(resource.id) ) /** Use this function to resolve RelatedPerson resource from a list of references, e.g. from Goal.expressedBy or Observation.performer Returns null if a RelatedPerson resource is not included in the reference list. */ define fluent function resolveRelatedPersons(references List<Reference>): flatten( references ref return [RelatedPerson] resource where ref.references(resource.id) ) /** Use this function to resolve Goal resource from a list of references, e.g. from CarePlan.goal Returns null if a Goal resource is not included in the reference list. */ define fluent function resolveGoals(references List<Reference>): flatten( references ref return [Goal] resource where ref.references(resource.id) ) Content: application/elm+xml Encoded data (81604 characters) Content: application/elm+json Encoded data (152736 characters)
Shared CQL expressions for all Person-Centered Outcome libraries.