Initial Checking with all 820 MLMs
This commit is contained in:
304
MLMStripper/bin/Debug/FORM/FORM_INSULIN_SLIDING_SCALE_CALC.mlm
Normal file
304
MLMStripper/bin/Debug/FORM/FORM_INSULIN_SLIDING_SCALE_CALC.mlm
Normal file
@@ -0,0 +1,304 @@
|
||||
maintenance:
|
||||
|
||||
title: Form_Insulin_Sliding_Scale_calc;;
|
||||
mlmname: Form_Insulin_Sliding_Scale_calc;;
|
||||
arden: version 2;;
|
||||
version: 4.50;;
|
||||
institution: St. Clair Hospital;;
|
||||
author: Teresa M. Spicuzza ;;
|
||||
specialist: Josue Lopez, Eclipsys Corporation;;
|
||||
date: 2007-02-02;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose: Populate Variable dose fields based upon Sliding scale dosing option
|
||||
and baseline dose of insulin.
|
||||
;;
|
||||
explanation:
|
||||
1. On any activation, this MLM will gather data from the fields:
|
||||
a. Baseline Dose
|
||||
b. Variable Dose
|
||||
c. Dosing Option
|
||||
|
||||
2. On the FieldChange event of the Dose Options field, this MLM will
|
||||
a. clear any previous values from the Variable Dose object,
|
||||
b. if the Dose Option value is "Manual Entry",
|
||||
i. set Dose Options Read Only atribute to "true"
|
||||
ii. set the Baseline Dose Mandatory attribute to "false"
|
||||
c. if the Dose Option value is "Low", "Moderate" or "High",
|
||||
i. set Dose Options Read Only atribute to "false"
|
||||
ii. set the Baseline Dose Mandatory attribute to "true"
|
||||
|
||||
3. On the ButtonClick event, this MLM will
|
||||
a. set error messages for
|
||||
i. missing Dosing Option
|
||||
ii. Dosing Option = "Manual Entry" and Variable Doses are missing
|
||||
iii.Other Dosing Option and Baseline Dosage value is missing
|
||||
b. if errors are found,
|
||||
i. blank out Variable Dose list
|
||||
ii. display error message
|
||||
c. if no errors are found, then for
|
||||
i. Dosing Option = "Manual Entry"
|
||||
1) if missing Baseline Dosage, convert it to 0
|
||||
2) add Baseline Dosage to (entered) Variable Doses
|
||||
3) display informational message about Variable Dose amount.
|
||||
ii. Other Dosing Options
|
||||
1) select Low, Moderate or High Variable Dose increments according
|
||||
to Dosing Option chosen
|
||||
2) create a Variable Dose object for each Blood Sugar range, and
|
||||
3) Set Variable Dose amount = Baseline amount + increment for
|
||||
each object.
|
||||
|
||||
MLM assigned to:
|
||||
OEF: PRX_IjSS
|
||||
Calling Event: ButtonClick
|
||||
Calling Field: CallMLM Button
|
||||
|
||||
Calling Event: FieldChange
|
||||
Calling Field: PRX_InsulinSlideDosing
|
||||
|
||||
;;
|
||||
keywords:
|
||||
Insulin, sliding scale;
|
||||
|
||||
;;
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
/******************* Make Changes To Spelling And Flags In This Section ***************/
|
||||
log_execution_info := false;
|
||||
|
||||
low_incr := (1, 2, 3, 4, 5);
|
||||
mod_incr := (1, 3, 5, 7, 9);
|
||||
high_incr := (2, 4, 7, 10, 13);
|
||||
|
||||
dose_ranges := ("Low", "Moderate", "High");
|
||||
/**************************************************************************************/
|
||||
|
||||
// This MLM receives three arguments from system
|
||||
(this_communication, // Communication object
|
||||
this_form, // Form object
|
||||
client_info_obj // Arden ClientInfo object
|
||||
) := argument;
|
||||
|
||||
// get calling event values from communication object
|
||||
calling_event := this_communication.CallingEvent;
|
||||
calling_field := this_communication.CallingFieldName;
|
||||
|
||||
// Assign pointer to the Field object, get field values
|
||||
field_list := this_form.fields;
|
||||
|
||||
// get Baseline dose
|
||||
baseline_field := first of
|
||||
(field_list where field_list.DataItemName = "PRX_InsulinBaseline" );
|
||||
if exists baseline_field then
|
||||
baseline_value := baseline_field.value as number;
|
||||
endif;
|
||||
|
||||
// get variable dose list
|
||||
VariableDose_field := first of
|
||||
(field_list where field_list.DataItemName = "VariableDose" );
|
||||
if exists VariableDose_field then
|
||||
dose_list := VariableDose_field.Value;
|
||||
endif;
|
||||
|
||||
// This sets the value of the increments depending upon the dosing option selected.
|
||||
Option_field := first of
|
||||
(field_list where field_list.DataItemName = "PRX_InsulinSlideDosing" );
|
||||
if exists Option_field then
|
||||
opt_chosen := Option_field.Value;
|
||||
endif;
|
||||
|
||||
// process fields according to calling events
|
||||
if calling_event = "FieldChange" and calling_field = "PRX_InsulinSlideDosing" then
|
||||
// blank out variable dose list, make read only
|
||||
VariableDose_field.Control_Read_Only := false;
|
||||
if exist dose_list then
|
||||
for ea_dose in dose_list do
|
||||
ea_dose.condition := null;
|
||||
ea_dose.from := null;
|
||||
ea_dose.to := null;
|
||||
ea_dose.DoseInstructions := null;
|
||||
ea_dose.uom := null;
|
||||
ea_dose.ItemID := null;
|
||||
enddo;
|
||||
endif; // exist dose_list
|
||||
VariableDose_field.Control_Read_Only := true;
|
||||
|
||||
// set field characteristics when option is chosen
|
||||
if opt_chosen = "Manual Entry" then
|
||||
VariableDose_field.Control_Read_Only := false;
|
||||
baseline_field.Control_Mandatory := false;
|
||||
|
||||
elseif opt_chosen is in dose_ranges then
|
||||
VariableDose_field.Control_Read_Only := true;
|
||||
baseline_field.Control_Mandatory := true;
|
||||
endif; // opt_chosen = ...
|
||||
|
||||
elseif calling_event = "ButtonClick" then
|
||||
// check for errors
|
||||
err_msg := "";
|
||||
fatal_error := false;
|
||||
|
||||
if (opt_chosen is null) or (opt_chosen = "") then
|
||||
fatal_error := true;
|
||||
err_msg := "Please Select a Dosing Option before proceeding.";
|
||||
|
||||
else
|
||||
if opt_chosen = "Manual Entry" then
|
||||
if not exist dose_list then
|
||||
fatal_error := true;
|
||||
err_msg := "Dosages must be entered manually.";
|
||||
endif;
|
||||
|
||||
elseif opt_chosen is in dose_ranges then
|
||||
if (baseline_value is null) or (baseline_value = "") then
|
||||
fatal_error := true;
|
||||
err_msg := "Please Enter a Baseline Dose before proceeding.";
|
||||
endif; // baseline_value is null
|
||||
endif; // opt_chosen = ...
|
||||
endif; // not exist opt_chosen
|
||||
|
||||
// proceed only if no errors
|
||||
if fatal_error then
|
||||
|
||||
if exist dose_list then
|
||||
for ea_dose in dose_list do
|
||||
ea_dose.condition := null;
|
||||
ea_dose.from := null;
|
||||
ea_dose.to := null;
|
||||
ea_dose.DoseInstructions := null;
|
||||
ea_dose.uom := null;
|
||||
ea_dose.ItemID := null;
|
||||
enddo;
|
||||
endif; // exist dose_list
|
||||
|
||||
this_communication.Message := err_msg;
|
||||
this_communication.MessageType := "Error";
|
||||
|
||||
else // hooray, no errors!
|
||||
if opt_chosen = "Manual Entry" then
|
||||
if (baseline_value is null) or (baseline_value = "") then
|
||||
baseline_value := 0;
|
||||
endif;
|
||||
|
||||
for ea_dose in dose_list do
|
||||
entered_dose := ea_dose.DoseInstructions as number;
|
||||
final_dose := entered_dose + baseline_value;
|
||||
ea_dose.DoseInstructions := final_dose;
|
||||
enddo;
|
||||
|
||||
this_communication.Message := "Baseline amount of "
|
||||
|| baseline_value || " "
|
||||
|| "added to Variable Doses";
|
||||
this_communication.MessageType := "Informational";
|
||||
|
||||
else // other options chosen
|
||||
// select dosage range
|
||||
if opt_chosen = "Low" then
|
||||
dose_opt := low_incr;
|
||||
elseif opt_chosen = "Moderate" then
|
||||
dose_opt := mod_incr;
|
||||
elseif opt_chosen = "High" then
|
||||
dose_opt := high_incr;
|
||||
endif;
|
||||
|
||||
inc1 := dose_opt[1];
|
||||
inc2 := dose_opt[2];
|
||||
inc3 := dose_opt[3];
|
||||
inc4 := dose_opt[4];
|
||||
inc5 := dose_opt[5];
|
||||
|
||||
// set the value in the Variable dose field based upon the baseline
|
||||
// and dosing options selected on form
|
||||
VariableDose_field.Control_Read_Only := false;
|
||||
|
||||
// clear exisisting Variable Dose list
|
||||
if exist dose_list then
|
||||
for ea_dose in dose_list do
|
||||
ea_dose.condition := null;
|
||||
ea_dose.from := null;
|
||||
ea_dose.to := null;
|
||||
ea_dose.DoseInstructions := null;
|
||||
ea_dose.uom := null;
|
||||
ea_dose.ItemID := null;
|
||||
enddo;
|
||||
endif; // exist dose_list
|
||||
|
||||
// create new Variable Dose list
|
||||
variable_dose_type := OBJECT [Condition, From, To, DoseInstructions, UOM, ItemID];
|
||||
var_dose := NEW variable_dose_type;
|
||||
var_dose.condition := "Blood Sugar";
|
||||
var_dose.from := "70";
|
||||
var_dose.to := "149";
|
||||
var_dose.DoseInstructions := (baseline_value as number);
|
||||
var_dose.uom := "units";
|
||||
var_dose.ItemID := NULL;
|
||||
VariableDose_field.Value := VariableDose_field.Value, var_dose;
|
||||
|
||||
var_dose := NEW variable_dose_type;
|
||||
var_dose.condition := "Blood Sugar";
|
||||
var_dose.from := "150";
|
||||
var_dose.to := "199";
|
||||
var_dose.DoseInstructions := (baseline_value as number) + (inc1 as number);
|
||||
var_dose.uom := "units";
|
||||
var_dose.ItemID := NULL;
|
||||
VariableDose_field.Value := VariableDose_field.Value, var_dose;
|
||||
|
||||
var_dose := NEW variable_dose_type;
|
||||
var_dose.condition := "Blood Sugar";
|
||||
var_dose.from := "200";
|
||||
var_dose.to := "249";
|
||||
var_dose.DoseInstructions := (baseline_value as number) + (inc2 as number);
|
||||
var_dose.uom := "units";
|
||||
var_dose.ItemID := NULL;
|
||||
VariableDose_field.Value := VariableDose_field.Value, var_dose;
|
||||
|
||||
var_dose := NEW variable_dose_type;
|
||||
var_dose.condition := "Blood Sugar";
|
||||
var_dose.from := "250";
|
||||
var_dose.to := "299";
|
||||
var_dose.DoseInstructions := (baseline_value as number) + (inc3 as number);
|
||||
var_dose.uom := "units";
|
||||
var_dose.ItemID := NULL;
|
||||
VariableDose_field.Value := VariableDose_field.Value, var_dose;
|
||||
|
||||
var_dose := NEW variable_dose_type;
|
||||
var_dose.condition := "Blood Sugar";
|
||||
var_dose.from := "300";
|
||||
var_dose.to := "349";
|
||||
var_dose.DoseInstructions := (baseline_value as number) + (inc4 as number);
|
||||
var_dose.uom := "units";
|
||||
var_dose.ItemID := NULL;
|
||||
VariableDose_field.Value := VariableDose_field.Value, var_dose;
|
||||
|
||||
var_dose := NEW variable_dose_type;
|
||||
var_dose.condition := "Blood Sugar";
|
||||
var_dose.from := "350";
|
||||
var_dose.to := "399";
|
||||
var_dose.DoseInstructions := (baseline_value as number) + (inc5 as number);
|
||||
var_dose.uom := "units";
|
||||
var_dose.ItemID := NULL;
|
||||
VariableDose_field.Value := VariableDose_field.Value, var_dose;
|
||||
|
||||
VariableDose_field.Control_Read_Only := true;
|
||||
endif; // opt_chosen = ...
|
||||
endif; // fatal_error
|
||||
endif; // calling_event = ...
|
||||
|
||||
;;
|
||||
evoke:
|
||||
|
||||
;;
|
||||
logic:
|
||||
Conclude true;
|
||||
|
||||
;;
|
||||
action:
|
||||
// This MLM returns communication_type and form_type parameters.
|
||||
return this_communication, this_form;
|
||||
|
||||
;;
|
||||
Urgency: 50;;
|
||||
end:
|
||||
Reference in New Issue
Block a user