This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Arden Syntax:Implementation Guide:Clinical use cases

From HL7Wiki
Jump to navigation Jump to search

Clinical Use Cases

How to use Arden to deliver decision support in particular clinical or administrative scenarios

body mass index

Calculation of body mass index

maintenance:
 title:       body mass index;;
 mlmname:     BMI_complex;;
 arden:       Version 2.5;;
 version:     1.00;;
 institution: Medexter Healthcare;;
 author:      Karsten Fehre;;
 specialist:  Harald Mandl;;
 date:        2013-11-11;;
 validation:  testing;;
library:
 purpose:     body mass index;;
 explanation: calculation of body mass index
              input: compound list with:
                (number) size in m,
                (number) weight in kg,
                (time)   birth date.
              output: compound list with:
                If the age is not less then 19 and the classification  
                wrt.WHO is not normal, a message containing  
                the BMI  and the classification will be returned. 
              The classification follows the definition by the WHO, 2008.
              The interpretation follows the BMI definition. For non adults
              (age < 19) the definition by Kromeyer-Hauschild is used with the
              3. and the 97. percentile.
 ;;
 keywords:    BMI, body mass index;;
 citations:   ;;
 links:       http://de.wikipedia.org/wiki/Body-Mass-Index;;
knowledge:
 type:		   data_driven;;
 data:        
   (size, weight, birth) := argument;           // input of MLM
   bmiEvent := EVENT {bmiEvent};
 ;;
 priority:    ;;
 evoke:       
   bmiEvent;;
 logic:
 
   // calculation of BMI

   let bmi be weight / (size ** 2);             // BMI
   age := currenttime - birth;                  // age
   
   // classification wrt. WHO (only for adults)
   if     age < 19 years then classification := null;
   elseif bmi < 16       then classification := localized 'strongunder';
   elseif bmi < 17       then classification := localized 'modunder';
   elseif bmi < 18,5     then classification := localized 'slightunder';
   elseif bmi < 25       then classification := null;
   elseif bmi < 30       then classification := localized 'obese';
   elseif bmi < 35       then classification := localized 'obeseI';
   elseif bmi < 40       then classification := localized 'obeseII';
   else                       classification := localized 'obeseIII';
   endif;

   bmi := bmi formatted with localized 'msg';  // construct the localized message

   conclude classification is present ;        // if there is a classification, execute the action slot
 ;;
 action:	 
   return bmi || classification || ".";         // return result 
 ;;
 urgency:     ;;

resources:
 default: de;;
 language: en
   'msg'        : "The patient's BMI %.1f is not in the normal range and is classified as ";
   'strongunder': "severe thinness";
   'modunder'   : "moderate thinness";
   'slightunder': "mild thinness";
   'obese'      : "pre-obese";
   'obeseI'     : "obese class I";
   'obeseII'    : "obese class II";
   'obeseIII'   : "obese class III"
 ;;
 language: de
   'msg'        : "Der BMI %.1f des Patienten ist nicht im normalen Bereich und wird klassifiziert als ";
   'strongunder': "starkes Untergewicht";
   'modunder'   : "mäßiges Untergewicht";
   'slightunder': "leichtes Untergewicht";
   'obese'      : "Präadipositas (Übergewicht)";
   'obeseI'     : "Adipositas Grad I";
   'obeseII'    : "Adipositas Grad II";
   'obeseIII'   : "Adipositas Grad III"
 ;;
end: