This wiki has undergone a migration to Confluence found Here
Arden Syntax:Implementation Guide:Clinical use cases
Clinical Use Cases
How to use Arden to deliver decision support in particular clinical or administrative scenarios
- Drug-Disease Interaction
- Immunization Guidlines
- immunizations
- hospital admission quality indicators
- population-based decision support (e.g., infection control)
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: