Top Banner
Progress on Object- Oriented Guideline Expression Language (GELLO)
28

Progress on Object-Oriented Guideline Expression Language (GELLO)

Jan 16, 2016

Download

Documents

Jaimie

Progress on Object-Oriented Guideline Expression Language (GELLO). Overview. Goal of demonstrating use of GELLO ability to recode decision logic of existing MLMs new knowledge-based constructs that are possible simplifications possible when used with a VMR - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Progress on Object-Oriented Guideline Expression Language (GELLO)

Progress on Object-Oriented Guideline Expression Language (GELLO)

Page 2: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 2

Overview Goal of demonstrating use of GELLO

ability to recode decision logic of existing MLMs new knowledge-based constructs that are possible simplifications possible when used with a VMR

Four new MLMs were encoded and a previously encoded MLM updated admission alert for acute coronary artery disease alert when physician orders CT study with contrast in a patient with

renal failure alert if product of blood calcium and phosphorus exceeds a certain

threshold (possible renal failure) reminder to staff to draw ABG at appropriate time screen for hypokalemia with digoxin therapy

VMR classes used provided by Samson Tu & Peter Johnson

Page 3: Progress on Object-Oriented Guideline Expression Language (GELLO)

Sample Virtual EMR

Page 4: Progress on Object-Oriented Guideline Expression Language (GELLO)

Sample Virtual EMR

Page 5: Progress on Object-Oriented Guideline Expression Language (GELLO)

Sample Virtual EMR

Page 6: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 6

Acute coronary artery disease

Arden Syntax (data)

admission := event {'32511','32467'; '32511','32472'};inpatient_case := read last

{'evoking','dam'="GYDAPMP",'constraints'=" I***";"HCASE";"K"};

diagnosis_text := read {'evoking','dam'="GYDAPMP"; "HDIAGNOS"; "HDIAGTXT"};

target_diagnoses := ("MI","R/O MI","MYOCARDIAL INFARCTION",

"CARDIOGENIC SHOCK","CHEST PAIN","CP","ANGINA", "CHEST PAIN NOS","INTERMED CORONARY SYND","UNSTABLE

ANGINA","CAD", "ANGINA PECTORIS NOS","CHR ISCHEMIC HRT DIS NEC", "RULE OUT MI","R/O MYOCARDIAL INFARCTION", "ACUTE MI", "SUBENDO INFARCT","UNSTABLE ANGINA/MI",

"ANGINA PECTORIS","CORONARY ARTERY DISEASE");

Page 7: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 7

Acute coronary artery disease

GELLO

// Assumption: VMR has a notion of an admission eventAbsoluteTime admission_time := admission_event.recording_time;

// Retrieve the reasons for admission, encoded as Observations // Assumes the particular Intervention in question is admission

List<Observation> reasons_for_admission := select adm.reason from Intervention as adm where adm.reason.recording_time.equals(admission_time);

// Create a Concept representing acute ischemia using a UMLS source vocabularyConcept acute_ischemia := new Concept("MTH","CXXXXXXX");

// Select diagnoses from reasons for admission as coded Concepts List<Concept> diagnosis_text := select coded_concept

from reasons_for_admission;

Page 8: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 8

Acute coronary artery disease

Arden Syntax (logic)

if inpatient_case is null then conclude false; endif; if any (diagnosis_text are in target_diagnoses) then conclude true; else conclude false; endif;

Page 9: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 9

Acute coronary artery disease

GELLO

if reasons_for_admission.is_empty() then conclude false;endif;

// Indicate that we want diagnoses that have an “is a” relationship to acute ischemia

if diagnosis_text.has_relationship(acute_ischemia, "is a") then conclude true;else conclude false;endif;

Page 10: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 10

Acute coronary artery diseaseMLM ISSUES

Need for an HL7/Arden Syntax SIG specification of the event model for an MLM to encode the GELLO queries so that they have the same

semantics as in the Arden version VMR assumes actions are performed on a known

patient Where does context for patient identity as used in an

MLM come from? GELLO encoding of MLM is different from

institution-derived encoding Not possible to encode free-text diagnoses with current

VMR model However, use of data dictionary could ensure institution-

independent encoding

Robert Greenes
Why not? I still don't understand this point about why you can't retrieve a text field from the VMR, and then do string matching in GELLO.
Page 11: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 11

ASTM CT contrast

Arden Syntax (data)last_creat := read last {"Creatinine level"};last_BUN := read last {"BUN level"};

GELLOQuantitativeObservation last_creat := last(select obs

from QuantitativeObservation as obs where obs.coded_concept.equals(new Concept("MTH", "C0600061"))

order by ascending obs.recording_time);QuantitativeObservation last_BUN := last(select obs

from QuantitativeObservation as obs where obs.coded_concept.equals(new Concept("MTH",

"C0005845")) order by ascending obs.recording_time);

Page 12: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 12

ASTM CT contrast

Arden Syntax (logic)if last_creat is null and last_BUN is null then alert_text := "No recent serum creatinine available. Consider

patient's kidney function before ordering contrast studies."; conclude true;elseif last_creat > 1.5 or last_BUN > 30 then alert_text := "Consider impaired kidney function when ordering

contrast studies for this patient."; conclude true;else conclude false;endif;

Page 13: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 13

ASTM CT contrast

GELLOString alert;PhysicalQuantity creat_threshold := new PhysicalQuantity(1.5,

"mg/dl","");PhysicalQuantity BUN_threshold := new PhysicalQuantity(30,

"mg/dl","");if is null(last_creat) and is null(last_BUN) then alert := "No recent serum creatinine available. Consider patient's

kidney function before ordering contrast studies."; conclude true;elseif last_creat.observed_quantity.gt(creat_threshold) or last_BUN.observed_quantity.gt(BUN_threshold) alert := "Consider impaired kidney function when ordering contrast

studies for this patient."; conclude true;else conclude false;endif;

Page 14: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 14

Calcium phosphate product

Arden Syntax (data)

creatinine := read last {'dam'="PDQRES2",'constraints'="C****"; ;'32752'};

calcium := read last {'dam'="PDQRES2",'constraints'="C****"; ;'32109'};

phosphate := read last {'dam'="PDQRES2",'constraints'="C****"; ;'33824'};

creatinine_threshold := 2; product_threshold := 70;

Page 15: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 15

Calcium phosphate product

GELLO

QuantitativeObservation creatinine := last(select obs from QuantitativeObservation as obs where obs.coded_concept.equals(new Concept("RCD99",

"C0428279")) order by ascending obs.recording_time);

QuantitativeObservation calcium := last(select obs from QuantitativeObservation as obs where obs.coded_concept.equals(new Concept("RCD99",

"C0428302")) order by ascending obs.recording_time);

QuantitativeObservation phosphate := last(select obs from QuantitativeObservation as obs where obs.coded_concept.equals(new Concept("RCD99",

"C0428304")) order by ascending obs.recording_time);

PhysicalQuantity creatinine_threshold := new PhysicalQuantity(2.0, "mg/dl","");

Double product_threshold := 70.0;

Page 16: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 16

Calcium phosphate product

Arden Syntax (logic)

if (creatinine is not number) or (calcium is not number) or (phosphate is not number) then conclude false; endif; product := calcium * phosphate; if (creatinine >= creatinine_threshold) and (product >= product_threshold) then conclude true; else conclude false; endif;

Page 17: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 17

Calcium phosphate product

GELLO

if is null(creatinine) or is null(calcium) or is null(phosphate) then conclude false;endif;

Double product := calcium.observed_quantity.value *

phosphate.observed_quantity.value;if creatinine.observed_quantity.gte(creatinine_threshold) and (product >= product_threshold) then conclude true;else conclude false;endif;

Page 18: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 18

Extubate blood gas reminder

Arden Syntax (data)

// only patients explicitly on protocol patient_on_protocol := {/* patient is on protocol */}; has_abg := read exist {/*abg where it occurred within last 2 hours

*/};

Page 19: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 19

Extubate blood gas reminder

GELLO

AbsoluteTime t := new AbsoluteTime();AbsoluteTime threshold_time :=

t.before_now(new Duration(2, hours));Procedure abg_done := last(select abg

from Procedure as abg where abg.recording_time.is_after(threshold_time)

order by ascending abg.recording_time);

Page 20: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 20

Extubate blood gas reminder

Arden Syntax (logic)

if not patient_on_protocol then conclude false; elseif has_abg then conclude false; else conclude true; endif;

Page 21: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 21

Extubate blood gas reminder

GELLO

if not(is null(abg_done)) then conclude false;else conclude true;endif;

Page 22: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 22

Extubate gas reminder

Issue

A VMR-implicit assumption is that data collected is for a particular patient

The MLM, on the other hand, needs to survey data from a collection of patients on a protocol

In this case we assume we are performing the reminder for a particular patient who is already on the protocol

Page 23: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 23

Hypokalemia and Digoxin

Arden Syntax (data)

/* read the potassium that evoked the MLM */potassium := READ LAST {potassium level};/* get the last active digoxin or digitoxin order

*/digoxin_order := read last {digoxin order};

Page 24: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 24

Hypokalemia and Digoxin

GELLO/* read the potassium that evoked the MLM */QuantitativeObservation potassium := last (select obs

from QuantitativeObservation as obs where obs.coded_concept.equals(new Concept("MTH", "C0543465")) order by descending obs.recording_time);

/* get the last active digoxin or digitoxin order */List<Medication> digoxin_orders := select meds

from Medication as meds where meds.coded_concept.equals(new Concept("MTH", "C0012265"));

PhysicalQuantity potassium_threshold := new PhysicalQuantity(3.3, "mEq/l", "");

Page 25: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 25

Hypokalemia and Digoxin

Arden Syntax (logic)/* exit if the potassium value is invalid */ if potassium is not number then

conclude false;endif; /* exit if there is no hypokalemia */ if potassium >= 3.3 then

conclude false;endif; /* exit if indication of digoxin use cannot be found */ if (digoxin_order is null) then

conclude false;endif; /* send an alert */ conclude true;

Page 26: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 26

Hypokalemia and Digoxin

GELLO

if is null (potassium) then conclude false;

endif;/* alert if patient has hypokalemia and is on digoxin */if potassium.lt(potassium_threshold) and not(digoxin_orders.is_empty()) then

conclude true;endif;conclude false;

Page 27: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 27

Discussion

Knowledge modeling is facilitated by GELLO Example is acute MI term class in first MLM translation This can provide advantages in using drug interaction

databases, etc.

Guidelines present other issues, not covered in MLMs These include scoping, implied gets, etc. We have chosen not to focus on these now, because they

relate to guideline modeling, not to the expression language

VMR not yet stable As it evolves, it should be possible to converge on stable

MLM representations across institutions Note that this cannot be done with curly braces

Page 28: Progress on Object-Oriented Guideline Expression Language (GELLO)

Decision Systems Group –Harvard/BrighamJanuary 3, 2002 28

Authoring in GELLO

Query and expression writing can be simplified using editing GUIs that provide templates and object navigators Example of such an editing GUI: QuickRules Builder

(http://www.yasutech.com/rules-engine-components.htm)