Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Node

Visibiliy************NOTE: this worked example section of the wiki is now out of date as GELLO is currently at R.2. This code will not work in later versions of the editor. We intend to update this section to R2 GELLO soon. ****************

Visibility


GELLO code will be used to display an ELEMENT node or not. GELLO for node visibility can also be applied for CLUSTERs or data groups. This is important for: 


  • managing computer screen real estate
  • developing 'smart forms' that show and hide nodes depending on value(s) entered elsewhere in the archetype tree
  • excluding non-visible nodes from the resulting HL7 message

Apple archetype example


Lets go back to the apple archetype. The example here will add GELLO node visibility to 'Total Cost'. When values have been entered for the higher nodes 'Cost' and 'Number', and the IsCalculated tag isCalculated attribute GELLO has calculated a value , we may decide its fair enough to make the node visible. Another example where node visibility is useful has been in the pathology domain, where calculation of certain values need only be done and displayed where certain other fields have been entered, eg the calculation of electronic glomerular filtration rate (eGFR).

Open CEN13606CEN1-Apple.v1.xml again. Set the VisibleAtStart metadata tag for 'Total Cost' on the RHS to false. We will use the isVisible attribute.

Here's a walk through of the GELLO required:

 


  1. Usual beginning - already done:

    No Format
    let o:observation = parameter[1]Context CEN_Apple_v1::ArchetypeRoot


  2. See if 'Cost' and 'Number' have values. This time we'll just retrieve them as the general type/class Observation:

    No Format
    letLet o1cost: Observation =
     if o.isdefined() then
          o.find_observation('1.2')
     else
          o
     endif
    let o2template.Apple.Cost
    Let number: Observation =
     if o.isdefined() then
          o.find_observation('1.3')
     else
          o
     endiftemplate.Apple.Number


  3. Set up the test:
     

    No Format
    let VisA:booleanBoolean =
       if o1cost.isDefinedoclIsDefined()
        then 
       if o1   If cost.value_asPQ.oclAsType(PQ).value > 0.0  
           then
            true
           else
         false
       endif
     else
        unknown
     endif


    No Format
     let VisB:booleanBoolean =
       if o2number.isDefinedoclIsDefined()
        then 
        if  If o2number.value_asReal.oclAsType(Real) > 0.0  
           then
            true
           else
         false
       endif
     else
        unknown
     endif


  4. Run the test and return the result (as a boolean):

    No Format
     Let Resultresult : Boolean =
         If VisA = true and VisB = true then true
             else false
         endif


    No Format
    Resultresult


  5. Save your work

Table of Contents
outlinetrue
stylenone