Clinical Practice Guidelines
2.0.0 - STU2 International flag

This page is part of the Clinical Guidelines (v2.0.0: STU2) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version. For a full list of available versions, see the Directory of published versions

Library: Propose Diagnosis Library (Experimental)

Official URL: http://hl7.org/fhir/uv/cpg/Library/proposediagnosis-library Version: 2.0.0
Active as of 2024-11-26 Computable Name: ProposeDiagnosisLibrary
Other Identifiers: OID:2.16.840.1.113883.4.642.40.48.28.14

Logic for an example recommendation to propose a diagnosis

Generated Narrative: Library proposediagnosis-library

Related Artifacts

Depends OnCode System Activity TypeCPG Activity Type Code System
Depends OnCode System Condition Clinical Status CodeCondition Clinical Status Codes
Depends OnCode System Condition Verification Status CodeConditionVerificationStatus

Parameters

Patientout01Patient
Inclusion Criteriaout01boolean
Propose Diagnosis Taskout0*Task
Diagnosisout0*Condition
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: Condition (Condition)

Contents

text/cql

library ProposeDiagnosis

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-cs'
codesystem "Condition Clinical Status Code": 'http://terminology.hl7.org/CodeSystem/condition-clinical'
codesystem "Condition Verification Status Code": 'http://terminology.hl7.org/CodeSystem/condition-ver-status'

code "Propose diagnosis": 'propose-diagnosis' from "Activity Type"
code "Active Condition": 'active' from "Condition Clinical Status Code"
code "Provisional Condition": 'provisional' from "Condition Verification Status Code"
code "Confirmed Condition": 'confirmed' from "Condition Verification Status Code"

context Patient

/* Recommendation to propose a diagnosis */

/*
NOTE: This recommendation is dramatically simplified to illustrate the general
pattern for a positive recommendation to propose a diagnosis, 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 diagnosis
    If proposing the diagnosis has not been planned or proposed
      Propose the diagnosis

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 "Propose Diagnosis Task":
  [Task] C
    where C.code ~ "Propose diagnosis"
      and doNotPerform(C) is not true

define "Diagnosis":
  [Condition] C
    where C.clinicalStatus ~ "Active Condition"
      and C.verificationStatus ~ "Confirmed Condition"

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

define "Activity Not Done":
  "Propose Diagnosis Task" C
    where C.status in { 'cancelled', 'failed' }

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

define "Activity Proposal Rejected":
  "Propose Diagnosis Task" R
    where R.status in { 'rejected' }

define "Is Recommendation Applicable":
  "Inclusion Criteria"
    and not exists ("Diagnosis")
    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 = 38Kb )

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