GELLO v.1 as a candidate openEHR CDS language - message reduced to <40kb
Dear CDSSersI am a newbie on this list but have followed and worked with archetypes for a little while now. I would like to talk about the strongly typed, OO, declarative CDS language called GELLO. This is a HL7 standrd that wasn't really ever implemented. OpenClinical gives a fair treatment of the topic. Our group (Medical Objects) has implemented it after some work on resolving ambiguities in the BNF and the development of various editors and interpreters such as a GELLO v.1 editor/ interpreter; an ADL editor (that saves to ADL 1.2, basic xhtml and en13606), a GLIF editor, an existing Snomed- CT server of ours and a virtual medical record (vMR) layer.
We use GELLO almost as a scripting language to calculate values on nodes, to initialise values, to allow node visibility to preserve screen real estate and to calculate reference ranges and autocoments for pathology systems. It is useful for querying (and processing) data retrieved from EN13606 archetypes which we have persisted in HL7 v2 and abstracted to a simple vMR. An example of this would be in a full blood count (or CBC) lab archetype where many elements of type quantity/physical quantity are derived from other values.Indeed we retrieve patient deomgraphic data from the PMS for things like age and gender in 'invariant' ELEMENT node calculations. We propose and have implemented functionality in the GELLO class hierachy for SCT validation and implies methods, as well as general property retrieval on Snomed Descriptor calasses which are a type of Coded Value.
A pathology system built on this technology is real, deployed and used every day by an Australian pathology lab. It uses about 40 lab archetypes which I would like to contribute in openEHR ADL 1.4 form to the CKM. While I am waiting for the new pathology archetypes to specialise or comment on, I just don't know how to do our existing functionality with AQL. Is A-Path capable , what is CLIPS?
for example eGFR (a derived value which indicates renal function) eg:
Let o:observation = parameter[1]
Let Gender = Patient.gender
Let Age: Integer =
patient.age_at(factory.absolutetime("0").now())
// get the creatinine level value from higher in the
tree
Let Cr: Real =
if o.isdefined() then
o.find_observation('1.1.9').value_asPQ().value
else
0.0
endif
//do the agorithm and return the PQ
Let x: Real = Cr*0.0113
Let y: Real = Age
Let Result: Real =
If y > 17.0 then
186*x.power(-1.154)*y.power(-0.203)
else 0.0
endif
Let FemaleResult: Real = Result*0.742
if Gender = 'M' then Factory.PhysicalQuantity
(Result, 'mL/min/1.73m2')
else Factory.PhysicalQuantity (FemaleResult,
'mL/min/1.73m2')
endif
Ok its a it ugly but hey I did it and I am a clinician.
You may have noticed the term GLIF earlier in this post - this higher
level guideline vehicle uses GELLO and archetypes for an Australian Govt
funded demonstration project around the management of lymphoma, a
complex use case again.
happy to discuss further. I think GELLO is a candidate along with AQL and A-Path. Perhaps they complement each other. The BNF for GELLO v1.x is available from the www.medical-objects.com.au website .
Best regards Peter Scott GP and health informatician