FHIR Clinical Guidelines (v1.0.0) (STU1)

This page is part of the Clinical Guidelines (v1.0.0: STU 1) based on FHIR R4. This is the current published version. For a full list of available versions, see the Directory of published versions

Library-RecordDetectedIssue

Formats: XML, JSON, Turtle

Related Artifacts

depends-onhttp://hl7.org/fhir/Library/FHIR-ModelInfo|4.0.1
depends-onhttp://hl7.org/fhir/Library/FHIRHelpers|4.0.1
depends-onCPG Activity Type

Parameters

Patientout01Patient
Inclusion Criteriaout01boolean
Record Detected Issue Taskout0*Task
Detected Issueout0*DetectedIssue
Active or Completed Activityout0*Task
Activity Not Doneout0*Task
Activity Proposalout0*Task
Activity Proposal Rejectedout0*Task
Is Recommendation Applicableout01boolean

Data Requirements

Type: Task (Task)
Type: DetectedIssue (DetectedIssue)

Contents

text/cql

library RecordDetectedIssue

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1'

codesystem "Activity Type": 'http://hl7.org/fhir/uv/cpg/CodeSystem/cpg-activity-type'

code "Record detected issue": 'record-detected-issue' from "Activity Type"

context Patient

/* Recommendation to record a detected issue */

/*
NOTE: This recommendation is dramatically simplified to illustrate the general
pattern for a positive recommendation to record a detected issue, with the ability
for users to reject the recommendation, and flexibility in how the recommendation
is achieved.

Specifically:
* There is no terminology, any task on any topic will do
* There is no timing, any task will do at any time
* There is no reference to participants other than the patient
* There is no relationship to a setting
* There is no relationship to an encounter or episode
* There is no relationship to a care plan

These simplifications allow the example to focus exclusively on the pattern for
recommending and for accepting/rejecting the proposal, as well as documenting
the completion, or explicit non-performance of the activity.
*/

/*
Positive recommendation:

If the patient meets the inclusion criteria
  If the patient does not have the detected issue
    If recording the detected issue has not been planned or proposed
      Propose recording the detected issue

Given a proposal, the user can:
  Accept the proposal
  Ignore the proposal
  Reject the proposal without reason
  Reject the proposal with reason

Scenario 1: No event, no plan or proposal, decision support should propose
Scenario 2: No event, incomplete proposal, decision support should not propose
Scenario 3: No event, rejected proposal, decision support should not propose
Scenario 4: Event, no proposal, decision support should not propose
Scenario 5: Event, completed proposal, decision support should not propose
Scenario 6: Event not done, no proposal, decision support should not propose
Scenario 7: Event not done, proposal, decision support should not propose

*/

define "Inclusion Criteria":
  Patient.active

define "Record Detected Issue Task":
  [Task] C
    where C.code ~ "Record detected issue"
      and not Coalesce(doNotPerform(C), false)

define "Detected Issue":
  [DetectedIssue] DI
    where DI.status = 'final'

define "Active or Completed Activity":
  "Record Detected Issue Task" C
    where C.status in { 'in-progress', 'on-hold', 'completed' }

define "Activity Not Done":
  "Record Detected Issue Task" C
    where C.status in { 'cancelled', 'failed' }

define "Activity Proposal":
  "Record Detected Issue Task" R
    where R.status in { 'draft', 'requested', 'received', 'accepted', 'ready' }

define "Activity Proposal Rejected":
  "Record Detected Issue Task" R
    where R.status in { 'rejected' }

define "Is Recommendation Applicable":
  "Inclusion Criteria"
    and not exists ("Detected Issue")
    and not exists (
      "Active or Completed Activity"
        union "Activity Not Done"
    )
    and not exists (
      "Activity Proposal"
        union "Activity Proposal Rejected"
    )

define function doNotPerform(task Task):
  singleton from (
    task.extension E
      where E.url = 'http://hl7.org/fhir/StructureDefinition/request-doNotPerform'
  ).value as boolean

Content not shown - (application/elm+xml, size = 12Kb)

Content not shown - (application/elm+json, size = 22Kb)