diff --git a/docs/decision_language.html b/docs/decision_language.html index 89d0a0c..b1d253e 100644 --- a/docs/decision_language.html +++ b/docs/decision_language.html @@ -4,11 +4,13 @@ - + Decision Language specification + + -

Acknowledgements

@@ -236,7 +204,7 @@

1. Preface

1.1. Purpose

-

This document specifies the openEHR Decision Language, in both abstract syntax form and as a related model. The latter defines the semantics of a first order predicate style logic that can be used to write Decision Logic Modules (DLMs) containing rule-sets that may be used standalone or with a Process / Plan oriented system such as openEHR Task Planning.

+

This document specifies the openEHR Decision Language, in both abstract syntax form and as a related model. The latter defines the semantics of a first order predicate style logic that can be used to write Decision Logic Modules (DLMs) containing rule-sets that may be used standalone or with a Process / Plan oriented system such as openEHR Task Planning.

The intended audience includes:

@@ -273,7 +241,7 @@
@@ -671,7 +639,7 @@

3.8
input
-    heart_rate: Quantity
+ heart_rate: Quantity
@@ -707,8 +675,8 @@
3
rules
 
-    is_hypertensive:
-        Result := systolic_blood_pressure.is_available and then systolic_blood_pressure.in_range([high]) or  ...
+ is_hypertensive: + Result := systolic_blood_pressure.is_available and then systolic_blood_pressure.in_range([high]) or ...
@@ -729,49 +697,49 @@

3.8

-
input -- Administrative State
+
input -- Administrative State
 
-    |
-    | untracked variable:
-    | DOB never changes, no currency needed
-    |
-    date_of_birth: Date
-        ;
+    |
+    | untracked variable:
+    | DOB never changes, no currency needed
+    |
+    date_of_birth: Date
+        ;
 
-input -- Historical State
+input -- Historical State
 
-    |
-    | tracked variable:
-    | weight changes over a period of days
-    |
-    weight: Quantity
-        currency = 3 days
-        ;
+    |
+    | tracked variable:
+    | weight changes over a period of days
+    |
+    weight: Quantity
+        currency = 3 days
+        ;
 
-    |
-    | untracked variable:
-    | assuming an adult subject, height constant
-    |
-    height: Quantity
-        ;
+    |
+    | untracked variable:
+    | assuming an adult subject, height constant
+    |
+    height: Quantity
+        ;
 
-input -- Tracked State
+input -- Tracked State
 
-    |
-    | tracked variable:
-    | blood glucose changes within minutes in response to food
-    |
-    blood_glucose: Quantity
-        currency = 15 min
-        ;
+    |
+    | tracked variable:
+    | blood glucose changes within minutes in response to food
+    |
+    blood_glucose: Quantity
+        currency = 15 min
+        ;
 
-    |
-    | tracked variable:
-    | Heart-rate may change quickly
-    |
-    heart_rate: Quantity
-        currency = 5 sec
-        ;
+ | + | tracked variable: + | Heart-rate may change quickly + | + heart_rate: Quantity + currency = 5 sec + ;
-
rules -- Conditions
+
rules -- Conditions
 
-    her2_positive:
-        Result := her2_expression = [positive]
-        ;
+    her2_positive:
+        Result := her2_expression = [positive]
+        ;
 
-    non_class_I_heart_failure:
-        Result := has_heart_failure_class_II or
-                    has_heart_failure_class_III or
-                    has_heart_failure_class_IV
-        ;
+    non_class_I_heart_failure:
+        Result := has_heart_failure_class_II or
+                    has_heart_failure_class_III or
+                    has_heart_failure_class_IV
+        ;
 
-    anthracyclines_contraindicated:
-        Result := has_transmural_MI or
-            ejection_fraction.in_range ([low]) or
-            non_class_I_heart_failure
-        ;
+ anthracyclines_contraindicated: + Result := has_transmural_MI or + ejection_fraction.in_range ([low]) or + non_class_I_heart_failure + ;
@@ -914,32 +882,32 @@

3.9. Rules

-
rules -- Main
+
rules -- Main
 
-    hypertension_risk: Terminology_term
-        Result :=
-            choice in
-                =================================================
-                has_pre_eclampsia or
-                has_eclampsia:                      [emergency],
-                -------------------------------------------------
-                previous_obstetric_hypertension or
-                previous_pre_eclampsia or
-                previous_eclampsia or
-                has_pregnancy_hypertension:         [high_risk],
-                -------------------------------------------------
-                *:                                  [low_risk]
-                =================================================
-            ;
+    hypertension_risk: Terminology_term
+        Result :=
+            choice in
+                =================================================
+                has_pre_eclampsia or
+                has_eclampsia:                      [emergency],
+                -------------------------------------------------
+                previous_obstetric_hypertension or
+                previous_pre_eclampsia or
+                previous_eclampsia or
+                has_pregnancy_hypertension:         [high_risk],
+                -------------------------------------------------
+                *:                                  [low_risk]
+                =================================================
+            ;
 
-    gestational_diabetes_risk: Boolean
-        Result :=
-            bmi.in_range ([high]) or
-            previous_macrosomic_baby or
-            previous_gestational_diabetes or
-            family_history_of_diabetes or
-            race_related_diabetes_risk
-        ;
+ gestational_diabetes_risk: Boolean + Result := + bmi.in_range ([high]) or + previous_macrosomic_baby or + previous_gestational_diabetes or + family_history_of_diabetes or + race_related_diabetes_risk + ;

@@ -956,43 +924,43 @@

-
definitions -- Terminology
+
definitions -- Terminology
 
-    terminology = {
-        term_definitions: {
-            "en" : {
-                "date_of_birth" : {
-                    text: "Date of birth"
-                },
-                "age_in_years" : {
-                    text: "Age (years)"
-                },
-                "qRisk_score" : {
-                    text: "QRISK2 score"
-                },
-                "diabetes_status" : {
-                    text: "Diabetic status of subject"
-                },
-                "no_diabetes" : {
-                    text: "Non-diabetic"
-                },
-                "type1_diabetes" : {
-                    text: "Has type 1 diabetes"
-                },
-                "type2_diabetes" : {
-                    text: "Has type 2 diabetes"
-                }
-            }
-        }
+    terminology = {
+        term_definitions: {
+            "en" : {
+                "date_of_birth" : {
+                    text: "Date of birth"
+                },
+                "age_in_years" : {
+                    text: "Age (years)"
+                },
+                "qRisk_score" : {
+                    text: "QRISK2 score"
+                },
+                "diabetes_status" : {
+                    text: "Diabetic status of subject"
+                },
+                "no_diabetes" : {
+                    text: "Non-diabetic"
+                },
+                "type1_diabetes" : {
+                    text: "Has type 1 diabetes"
+                },
+                "type2_diabetes" : {
+                    text: "Has type 2 diabetes"
+                }
+            }
+        }
 
-        value_sets: {
-            "diabetes_status" : {
-                id: "diabetes_status",
-                members: ["no_diabetes", "type1_diabetes", "type2_diabetes"]
-            }
-        }
-    }
-    ;
+ value_sets: { + "diabetes_status" : { + id: "diabetes_status", + members: ["no_diabetes", "type1_diabetes", "type2_diabetes"] + } + } + } + ;

@@ -1299,18 +1267,18 @@

-
    systolic_blood_pressure: Quantity
-        currency = 1 min,
-        ranges["mm[Hg]"] =
-            --------------------------------
-            |180|:         [critical_high],
-            |>140|:         [very_high],
-            |>120|:         [high],
-            |>90..120|:    [normal],
-            |90|:          [low],
-            |50|:          [critical_low]
-            --------------------------------
-        ;
+
    systolic_blood_pressure: Quantity
+        currency = 1 min,
+        ranges["mm[Hg]"] =
+            --------------------------------
+            |180|:         [critical_high],
+            |>140|:         [very_high],
+            |>120|:         [high],
+            |>90..120|:    [normal],
+            |90|:          [low],
+            |50|:          [critical_low]
+            --------------------------------
+        ;
@@ -1319,16 +1287,16 @@

// build the ranges Map
-ranges: Map <Terminology_code, Interval<Quantity> ();
-ranges.put (Terminology_code("critical_high"), Interval<Quantity>(180 mm[Hg], Void);
-    ...
-ranges.put (Terminology_code("critical_low"), Interval<Quantity>(Void, 50 mm[Hg]);
+ranges: Map <Terminology_code, Interval<Quantity> ();
+ranges.put (Terminology_code("critical_high"), Interval<Quantity>(180 mm[Hg], Void);
+    ...
+ranges.put (Terminology_code("critical_low"), Interval<Quantity>(Void, 50 mm[Hg]);
 
 // instantiate the tracked variable object
-systolic_blood_pressure: TRACKED_QUANTITATIVE_VARIABLE<Quantity> (
-    "systolic_blood_pressure",   // name
-    "PT1M",                      // currency
-    ranges                       // ranges
+systolic_blood_pressure: TRACKED_QUANTITATIVE_VARIABLE<Quantity> (
+    "systolic_blood_pressure",   // name
+    "PT1M",                      // currency
+    ranges                       // ranges
 );

@@ -1655,6 +1623,48 @@

+

Amendment Record

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
IssueDetailsRaiser, ImplementerCompleted

PROC Release 1.7.0

1.7.0

+

SPECPROC-52. Retire Process component and all its specifications.

+

openEHR SEC

07 Aug 2024

0.6.0

+

SPECPROC-41. Add Decision Language specification.

+

T Beale

02 Jan 2021

+
+
+

References

@@ -1663,9 +1673,9 @@

References

- + \ No newline at end of file diff --git a/docs/overview.html b/docs/overview.html index fcc162f..871badd 100644 --- a/docs/overview.html +++ b/docs/overview.html @@ -4,11 +4,12 @@ - + CDS, Guidelines and Planning Overview +
-

Amendment Record

-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IssueDetailsRaiser, ImplementerCompleted

PROC Release 1.6.0

0.5.2

-

SPECPROC-45. Add Process component Overview document.
- Add conceptual CIG model; adjust nomenclature in artefacts diagram.

-

T Beale

16 Mar 2021

-

GDL-oriented review.

-

T Beale,
- R Chen

30 Jan 2021

0.5.1

-

Improvements due to reviews.

-

R Chen,
- K Salzman,
- K Lord

15 Dec 2020

0.5.0

-

Initial writing.

-

T Beale

15 Dec 2020

-
-
-

Acknowledgements

@@ -311,7 +250,7 @@

1. Preface

1.1. Purpose

-

This document provides an overview of the openEHR PROC component specifications, including the openEHR Decision Logic Module (DLM) Language, openEHR Task Planning and Subject Proxy service.

+

This document provides an overview of the openEHR PROC component specifications, including the openEHR Decision Logic Module (DLM) Language, openEHR Task Planning and Subject Proxy service.

The intended audience includes:

@@ -348,13 +287,13 @@

4.1.2. Care

-

A care pathway is thus a higher-level entity aimed at achieving a patient outcome, whereas a guideline is aimed at performing a more specific professional task. Consequently, care pathways typically refer to one or more guidelines that describe in detail how to deal with specific situations within the management of the condition (Schrijvers van Hoorn & Huiskes (2012), van Haecht de Witte & Sermeus (2007)). Care pathway examples include:

+

A care pathway is thus a higher-level entity aimed at achieving a patient outcome, whereas a guideline is aimed at performing a more specific professional task. Consequently, care pathways typically refer to one or more guidelines that describe in detail how to deal with specific situations within the management of the condition (Schrijvers van Hoorn & Huiskes (2012), van Haecht de Witte & Sermeus (2007)). Care pathway examples include:

For convenience, we term a care pathway- or guideline-like artefact for a specific patient, incorporating any necessary conflict resolution, merging and localisation, a patient plan.

@@ -1159,7 +1098,7 @@

4.3. Formal

4.3.1. Conceptual Model of Guidelines

-

In the description of guidelines above, two of the key candidates for formal representation are plans and rules. Over some decades, the use of formal languages specifically designed for representing computable CPGs, often known as computer interpretable guidelines (CIGs), including Arden, Asbru, EON, PROforma and others (summarised in Sutton Taylor & Earle (2006)) has shown that plans and rules indeed emerge as the two main components, and each consists of certain conceptual elements. Not all of these languages agree in all details, nor support all concepts equally well (temporal operators for example), however the common set of general features can be used to inform a conceptual basis and nomenclature for the formal elements of CIGs, which we take to be as follows:

+

In the description of guidelines above, two of the key candidates for formal representation are plans and rules. Over some decades, the use of formal languages specifically designed for representing computable CPGs, often known as computer interpretable guidelines (CIGs), including Arden, Asbru, EON, PROforma and others (summarised in Sutton Taylor & Earle (2006)) has shown that plans and rules indeed emerge as the two main components, and each consists of certain conceptual elements. Not all of these languages agree in all details, nor support all concepts equally well (temporal operators for example), however the common set of general features can be used to inform a conceptual basis and nomenclature for the formal elements of CIGs, which we take to be as follows:

@@ -3687,132 +3601,229 @@

12.3. BMI: Body Mass Index

-
dlm Body_mass_index.v0.5.0
-
-definitions -- Descriptive
-
-    language = {
-        original_language: [ISO_639-1::en]
-    }
-    ;
-
-    description = {
-        lifecycle_state: "unmanaged",
-        original_author: {
-            name:           "Thomas Beale",
-            email:          "thomas.beale@openEHR.org",
-            organisation:   "openEHR Foundation <http://www.openEHR.org>",
-            date:           "2021-01-10"
-        },
-        details: {
-            "en" : {
-                language: [ISO_639-1::en],
-                purpose:  "Body mass index.",
-                use:      "Used as a rough surrogate for determining whether a
+
dlm Body_mass_index.v0.5.0
+
+definitions -- Descriptive
+
+    language = {
+        original_language: [ISO_639-1::en]
+    }
+    ;
+
+    description = {
+        lifecycle_state: "unmanaged",
+        original_author: {
+            name:           "Thomas Beale",
+            email:          "thomas.beale@openEHR.org",
+            organisation:   "openEHR Foundation <http://www.openEHR.org>",
+            date:           "2021-01-10"
+        },
+        details: {
+            "en" : {
+                language: [ISO_639-1::en],
+                purpose:  "Body mass index.",
+                use:      "Used as a rough surrogate for determining whether a
                           person has in the normal weight range for their height."
-            }
-        }
-    }
-    ;
-
-input -- State
-
-    |
-    | Weight as recorded in local system
-    |
-    weight: Quantity
-        currency = 30d
-        ;
-
-    |
-    | Height as recorded in local system
-    |
-    height: Quantity
-        currency = 5y
-        ;
-
-rules -- Main
-
-    |
-    | Weight in kg, converted as necessary from subject weight
-    |
-    weight_in_kg: Real
-        Result := choice of
-            ====================================================
-            weight.units = "kg":    weight.magnitude,
-            ----------------------------------------------------
-            weight.units = "lb":    weight.magnitude / 2.2,
-            ----------------------------------------------------
-            *:                      {Quantity_converter}.
-                                    convert_value (weight.value,
-                                        from: weight.units,
-                                        to: "kg",
-                                        UCUM.#mass)
-            ====================================================
-        ;
-
-    |
-    | Height in m, converted as necessary from subject height
-    |
-    height_in_m: Real
-        Result := choice of
-            =====================================================
-            height.units = "m":     height.magnitude,
-            -----------------------------------------------------
-            height.units = "cm":    height.magnitude / 100,
-            -----------------------------------------------------
-            *:                      {Quantity_converter}.
-                                    convert_value (height.value,
-                                        from: height.units,
-                                        to: "m",
-                                        UCUM.#length)
-            =====================================================
-        ;
-
-rules -- Output
-
-    |
-    | Body mass index
-    |
-    BMI: Real
-        Result := weight_in_kg / height_in_m ^ 2
-        ;
-
-definitions -- Terminology
-
-    terminology = {
-        term_definitions: {
-            "en" : {
-                "bmi" : {
-                    text: "Body mass index"
-                },
-                "weight" : {
-                    text: "Body weight, in whatever units are in local use"
-                },
-                "height" : {
-                    text: "Body height, in whatever units are in local use"
-                },
-                "weight_in_kg" : {
-                    text: "Body weight in kg"
-                },
-                "height_in_m" : {
-                    text: "Body height in m"
-                }
-            }
-        }
-    }
-    ;
+ } + } + } + ; + +input -- State + + | + | Weight as recorded in local system + | + weight: Quantity + currency = 30d + ; + + | + | Height as recorded in local system + | + height: Quantity + currency = 5y + ; + +rules -- Main + + | + | Weight in kg, converted as necessary from subject weight + | + weight_in_kg: Real + Result := choice of + ==================================================== + weight.units = "kg": weight.magnitude, + ---------------------------------------------------- + weight.units = "lb": weight.magnitude / 2.2, + ---------------------------------------------------- + *: {Quantity_converter}. + convert_value (weight.value, + from: weight.units, + to: "kg", + UCUM.#mass) + ==================================================== + ; + + | + | Height in m, converted as necessary from subject height + | + height_in_m: Real + Result := choice of + ===================================================== + height.units = "m": height.magnitude, + ----------------------------------------------------- + height.units = "cm": height.magnitude / 100, + ----------------------------------------------------- + *: {Quantity_converter}. + convert_value (height.value, + from: height.units, + to: "m", + UCUM.#length) + ===================================================== + ; + +rules -- Output + + | + | Body mass index + | + BMI: Real + Result := weight_in_kg / height_in_m ^ 2 + ; + +definitions -- Terminology + + terminology = { + term_definitions: { + "en" : { + "bmi" : { + text: "Body mass index" + }, + "weight" : { + text: "Body weight, in whatever units are in local use" + }, + "height" : { + text: "Body height, in whatever units are in local use" + }, + "weight_in_kg" : { + text: "Body weight in kg" + }, + "height_in_m" : { + text: "Body height in m" + } + } + } + } + ;
+

+
+

Amendment Record

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IssueDetailsRaiserCompleted

PROC Release 1.7.0

1.7.0

SPECPROC-52. Retire Process component and all its specifications.

openEHR SEC

07 Aug 2024

PROC Release 1.6.0

1.0.1

Convert [term_code] to #term_code.

T Beale

22 Feb 2022

1.0.0

Add initial version of BMJ Sepsis example.

T Beale

02 Mar 2021

Add initial version of NEWS2 DLM.

T Beale

02 Mar 2021

Add CHA2DS2-VASc, qRISK3 and common DLM (BMI, BSA) examples.

T Beale

31 Jan 2021

Add ACEP Covid19 severity guideline (version 1).

T Beale

03 Dec 2020

Add perinatal care DLM.

D S Alves

18 Nov 2020

Add RCHOPS21 chemotherapy example.

T Beale

02 Jun 2020

PROC Release 1.5.0

PROC Release 1.0.0

0.1.1

Replace 'manual notification' callback by normal Handoff followed by manual notification Task wait state.

M Polajnar,
+ T Beale

16 Apr 2020

0.1.0

Initial writing.

T Beale,
+ B Næss

25 Apr 2019

+
- + \ No newline at end of file diff --git a/docs/task_planning.html b/docs/task_planning.html index 53b534c..65ba794 100644 --- a/docs/task_planning.html +++ b/docs/task_planning.html @@ -4,11 +4,13 @@ - + Task Planning (TP) Specification + + -
-

Acknowledgements

+

Acknowledgements

@@ -995,7 +680,7 @@

1. Preface

1.1. Purpose

-

This specification of the openEHR Task Planning facility addresses requirements in the area of clinical process automation in which some form of granular planning of clinical work is required. The central concept is that of a plan (or set of plans) designed to achieve a goal and that relate to an active subject. Plans generally have related decision logic and require a means of extracting data from back-end systems concerning the subject. These other elements and their relationship to plans are described in the openEHR Process and Planning Overview.

+

This specification of the openEHR Task Planning facility addresses requirements in the area of clinical process automation in which some form of granular planning of clinical work is required. The central concept is that of a plan (or set of plans) designed to achieve a goal and that relate to an active subject. Plans generally have related decision logic and require a means of extracting data from back-end systems concerning the subject. These other elements and their relationship to plans are described in the openEHR Process and Planning Overview.

The intended audience includes:

@@ -1034,7 +719,7 @@
@@ -1044,13 +729,13 @@