Presentation is loading. Please wait.

Presentation is loading. Please wait.

Baltimore1. GELLO Update HL7 Working Group Baltimore 2 nd October 2002 Aziz Boxwala and Robert Greenes Brigham and Womens Hospital.

Similar presentations


Presentation on theme: "Baltimore1. GELLO Update HL7 Working Group Baltimore 2 nd October 2002 Aziz Boxwala and Robert Greenes Brigham and Womens Hospital."— Presentation transcript:

1 Baltimore1

2 GELLO Update HL7 Working Group Baltimore 2 nd October 2002 Aziz Boxwala and Robert Greenes Brigham and Womens Hospital Harvard Medical School

3 Baltimore3 What is GELLO? Expression language Query language maps variables in expressions to data in external systems Embedded language Can be used as part of other specs MLM, guidelines, RIM, template constraints, etc. Goal is to facilitate sharing of knowledge

4 Baltimore4 Model Arden Syntax Guideline (Sequential Knowledge) RIM Expressions (Ontology) Other DS & KBs Object-oriented data model GELLO Q&E vMR GELLO Q&E GELLO Q&E GELLO Q&E

5 Baltimore5 Status report As of May 2002 meeting, we had agreed to bring this to TC ballot But decided to defer because of desire to: Reduce complexity of syntax Make more compatible with generic language specification efforts Eliminate side effects in expressions Facilitate use as embedded language distinct from other elements of an application, e.g., those that do assignment or flow control Revised language specification developed To be presented here

6 Baltimore6 Requirements Work with an object-oriented data structure compatible with the RIM Should support different data models (such as VMR) 2. Be platform independent 3. Be easy to write and read for defined class of users 4. Be usable in different applications (Arden MLMs, guidelines, templates, …) 5. Leverage existing standard frameworks/languages where possible

7 Baltimore7 Requirements Be side-effects free 7. Built-in data types (if any) should be compatible with those defined in the RIM 8. Be extensible classes must be compatible with the RIM and language framework 9. Be free of ambiguities

8 Baltimore8 Using OCL grammar Object Constraint Language Part of UML spec Object Management Group standard Language for specifying invariants on classes and its member attributes and functions Not a complete programming language Side-effects free Maps to our needs and requirements

9 Baltimore9 An example with an MLM maintenance: title: Screening for elevated calcium-phosphate product;; library: purpose: provide an alert if the product of the blood calcium and phosphorus exceeds a certain threshold in the setting of renal failure;; explanation: An elevated Ca-PO4 product suggests a tendency toward renal osteodystrophy and predisposes to soft-tissue calcification;;

10 Baltimore10 …MLM knowledge: data: /* trigger on Ca, PO4 or Cr */ 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;

11 Baltimore11 …MLM 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;

12 Baltimore12 MLM in GELLO (data slot) data: creatinine := Observation.allInstances->select(coded_concept= "C ").sort(critical_time.high).last() calcium := Observation.allInstances ->select(coded_concept= "C ").sort(critical_time.high). last() phosphate := Observation.allInstances ->select(coded_concept = "C ").sort(critical_time.high).last() There are ways to make the GELLO query syntax easier – for example by defining class/static functions in VMR classes to retrieve instances Observation.select(coded_concept = "C ").last() List := last(select obs from Observation as obs where obs.service_cd.equals(new Concept(MTH, C042879)) sort descending obs.critical_time.high); creatinine := read last {'dam'="PDQRES2",'constraints'="C****"; ;'32752'};

13 Baltimore13 … MLM in GELLO (data slot) renal_failure_threshold := PhysicalQuantity.new(2.0, "mg/dl") renal_failure := if creatinine->notEmpty and creatine.observed_quantity > renal_failure_threshold then true else false endif threshold_for_osteodystrophy := 70 calcium_phosphate_product := if calcium->notEmpty and phosphate->notEmpty then calcium.observed_quantity.value * phospate.observed_quantity.value else endif

14 Baltimore14 … MLM in GELLO logic: renal_failure and calcium_phosphate_product > threshold_for_osteodystrophy 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;

15 Baltimore15 Implementation model Application (e.g., Arden alert engine) GELLO Interpreter Variable evaluator evaluate(a+b) result: 7 valueOf(a) 5 Data retrieval Observation.allInstances->select(…) result:Collection/tuple

16 Baltimore16 Issues Side-effect free language Constructors Restructuring of MLM… Let expressions Built-in datatypes Same specification or different? Reconciling OCL standard lib with HL7 datatypes Writing back data Observation.write(…) Exception management


Download ppt "Baltimore1. GELLO Update HL7 Working Group Baltimore 2 nd October 2002 Aziz Boxwala and Robert Greenes Brigham and Womens Hospital."

Similar presentations


Ads by Google