Your User Friendly Name for MyContentIG Here
0.4.6 - CI Build International flag

Your User Friendly Name for MyContentIG Here, published by HL7 International - [Some] Work Group. This guide is not an authorized publication; it is the continuous build for version 0.4.6 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/sample-content-ig/ and changes regularly. See the Directory of published versions

Library: PHQ-9 Depression Scoring Logic Example (Experimental)

Official URL: http://somewhere.org/fhir/uv/mycontentig/Library/PHQ9LogicExample Version: 0.4.6
Draft as of 2024-09-19 Computable Name: PHQ9LogicExample

Example library illustrating basic CQL constructs using PHQ-9 Logic as an Example

Title: PHQ-9 Depression Scoring Logic Example
Id: PHQ9LogicExample
Version: 0.4.6
Url: PHQ-9 Depression Scoring Logic Example
Status: draft
Experimental: true
Type:

system: http://terminology.hl7.org/CodeSystem/library-type

code: logic-library

Subject:

system: http://hl7.org/fhir/resource-types

code: Patient

Date: 2024-09-19 19:22:59+0000
Publisher: HL7 International - [Some] Work Group
Description:

Example library illustrating basic CQL constructs using PHQ-9 Logic as an Example

Jurisdiction: 001
Related Artifacts:

Dependencies

Parameters:
NameTypeMinMaxIn/Out
responseQuestionnaireResponse01In
PatientPatient01Out
QuestionnaireResponsesQuestionnaireResponse0*Out
QuestionnaireResponseQuestionnaireResponse01Out
Responses0*Out
CalculateTotalScoreinteger01Out
Data Requirements:
TypeProfileMSCode Filter
Patient http://hl7.org/fhir/StructureDefinition/Patient
QuestionnaireResponse http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse ;;
Content: text/cql
library PHQ9LogicExample version '0.4.1'

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1'

codesystem "LOINC": 'http://loinc.org'

code "Not at all": 'LA6568-5' from "LOINC"
code "Several days": 'LA6569-3' from "LOINC"
code "More than half the days": 'LA6570-1' from "LOINC"
code "Nearly every day": 'LA6571-9' from "LOINC"

parameter response QuestionnaireResponse

context Patient

define QuestionnaireResponses: [QuestionnaireResponse]

// Use the QuestionnaireResponse provided as a parameter if available
// Otherwise look it up from the record
define "QuestionnaireResponse":
  if response is not null then
    response
  else
    Last(
      [QuestionnaireResponse] QR
        where QR.questionnaire = 'http://somewhere.org/fhir/uv/mycontentig/Questionnaire/phq-9-questionnaire'
        sort by (authored as FHIR.dateTime) desc
    )

// NOTE: This ties this logic directly to this particular rendering of the Questionnaire.
// Ideally the items would be filtered based on Code of the Item, rather than the LinkId,
// but that would require pulling in the Questionnaire because the QuestionnaireResponse
// only has the LinkId.
define "Responses":
  "QuestionnaireResponse" QR
    return QR.item I where I.linkId in {
      'LittleInterest',
      'FeelingDown',
      'TroubleSleeping',
      'FeelingTired',
      'BadApetite',
      'FeelingBadAboutSelf',
      'TroubleConcetrating',
      'MovingSpeaking'
    }

/*
@source: https://www.med.umich.edu/1info/FHP/practiceguides/depress/score.pdf
*/
define function "AnswerCardinality"(answer Coding):
  case
    when answer ~ "Not at all" then 0
    when answer ~ "Several days" then 1
    when answer ~ "More than half the days" then 2
    when answer ~ "Nearly every day" then 3
    else null
  end

define "CalculateTotalScore":
  Sum("Responses" R return all AnswerCardinality(First(R.answer.value)))
Content: application/elm+xml
Encoded data (39840 characters)
Content: application/elm+json
Encoded data (75124 characters)