Dear CDSSers
I 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