GELLO and RIMBAA
The scope of this article is to identify how GELLO can be used within RIMBAA realm.
GELLO is an object oriented expression language that is build based on the Object Constraint Language (OCL) which is maintained by Object Management Group.
The GELLO language can be used to:
- Build up expressions to extract and manipulate data from medical records.
- Construct decision criteria by building up expressions to reason about particular data features/values. These criteria can be used in decision-support knowledge bases such as those designed to provide alerts and reminders, guidelines, or other decision rules.
- Create expressions, formulae, etc. for other applications.
RIMBAA ( HL7V3 RIM Based Application Architecture) defines a set of generic approaches and best practices related to the use of HL7 version 3 RIM-based models for purposes other than messaging.
A. Using GELLO similarly to SQL
SQL (Structured Query Language) is a database computer language designed for managing data in relational database management systems (RDBMS), and originally based upon Relational Algebra. Initially developed at IBM, later became the most widely used language for relational databases. SQL based code is commonly used within other languages like Java, C#.NET, VB.NET, PHP etc, to seamlessly access and manage data from different RDBMS like Oracle, MySQL, Microsoft SQLServer, DB2.
Following Java code creates a result set containing all Person data from Person table using a filter for persons older than 46 and with condition ‘ILL’ . This code should work regardless on what RDBMS the Person table is stored.
} catch (SQLException e) {
}
Similarly to SQL, GELLO can be used as a language to query any RIMBAA model representation, assuming that the respective cell from RIMBAA Technology Matrix is GELLO-enabled. This way, applications can reuse GELLO expressions between different RIMBAA solutions.

PL/UI Applications could use GELLO expressions to find patients older than 50 years and with condition of ‘ILL’ using following code fragment:
} catch (Exception e) {
}
The GELLO expression from code sample can be executed against any of RIMBAA Technology Matrix cell and therefore the PL/UI Application would not be dependent of how the underlying RIMBAA model representation is selected as a combination of RIMBAA Technology Matrix cells.
B. Using GELLO to define action semantics for MDE
HealthMDX is a project that I currently am working on and the scope of which is to build an eHealth Software Production Line for RIMBAA based solutions. HealthMDX uses a Model Driven Engineering approach and it takes as input a set of MIF2 files, applies a chain of transformations, finally generating the target RIMBAA solutions for specific environments like WebMethods, Java EE, BizTalk, Tibco, C#.NET etc. Since most of the components of HealthMDX use standards (MIF2 for HL7 V3 Messages, EMOF/Eclipse EMF for Modelling Tool, OMG QVT / Eclipse M2M QVTo for transformations), the obvious choice is to continue to use a standard to add action semantics to HealthMDX models by using a standard expression language like GELLO. GELLO expressions will then be a new input for HealthMDX eHealthSPL besides MIF2 instances.
In order to add more sophisticated processing rules, HealthMDX needs something like GELLO which could provide an platform independent way of defining these complex rules. HealthMDX will automatically translate the GELLO expressions to the target architecture of choice (Java SE, Java EE, .NET /Tibco Matrix/WebMethods and so on). Using MIF2 as input, eHealth SPL is able to produce messaging services but with an expression language like GELLO, processing rules (alerts, routing, guidelines etc) can be captured once and then transformed into any target RIMBAA based processing services.



