Initial Checking with all 820 MLMs

This commit is contained in:
2020-02-02 00:54:01 -05:00
parent c59dc6de2e
commit 840d0432f4
828 changed files with 239162 additions and 0 deletions

View File

@@ -0,0 +1,156 @@
maintenance:
title: Form_RX_TPN_Rate_calc;;
mlmname: Form_Rx_TPN_RATE_calc;;
arden: version 2;;
version: 4.50;;
institution: St. Clair Hospital;;
author: Teresa M. Spicuzza ;;
specialist: Eclipsys Corporation;;
date: 2007-06-27;;
validation: testing;;
library:
purpose: Calculate TPN rate based upon ordered volume
;;
explanation:
Ordered Volume /24 =
Infusion rate (rounded to nearest whole number)
History:
03.03.2014 TMS Created to calculate TPN and Cyclic TPN rates
and to allow charting on veriscan. CSR{{{SINGLE-QUOTE}}}s: 30737 and 32895
08.17.2015 TMS For cyclic TPN, add total volume to be infused for each cycle
to the informational message for use with infusion pump settings.
CSR 33645.
;;
keywords:
TPN, Rate, Volume, Cyclic;
;;
knowledge:
type: data-driven;;
data:
/********************Make Changes To Spelling And Flags In This Section*********************/
/*************************************************************************************************/
// This MLM is passed three arguments, of types
// communication_type, form_type and client info object respectively.
(this_communication, // Communication object
this_form, // Form object
client_info_obj // Arden ClientInfo object
) := argument;
SP := " ";
CR := 13 formatted with "%c";
LF := 10 formatted with "%c";
CRLF:= CR||LF;
TAB := 9 formatted with "%c";
CallingEvent := this_communication.CallingEvent;
CallingField := this_communication.CallingFieldName;
// Assigns fields passed in the Form object to the Field object
field_list:= this_form.fields;
CyclicTPN := first of (field_list where field_list.DataItemName = "PRX_Cyclic_TPN_Order");
CyclicTPN_On := first of (field_list where field_list.DataItemName = "PRX_Cyclic_TPN_On_Hours");
CyclicTPN_Off := first of (field_list where field_list.DataItemName = "PRX_Cyclic_TPN_Off_Hours");
Instruct := first of (field_list where field_list.DataItemName = "AdminInstructions");
rate := first of (field_list where field_list.DataItemName = "OrderIVRate");
vol := first of (field_list where field_list.DataItemName = "DosageLow");
IVduration := first of (field_list where field_list.DataItemName = "stopafter");
IVduration_val := IVduration.value;
ratevalue := rate.value;
Freq := first of (field_list where field_list.DataItemName = "FrequencyCode");
Freq_value := Freq.value;
// If order is for cyclic TPN, make the rate not mandatory calculate the 3 rates and populate them into
// the instructions, make the frequency variable
If exist CyclicTPN and CyclicTPN.value = true then
CyclicTPN_On.Control_Mandatory := true;
CyclicTPN_On.control_read_only := false;
CyclicTPN_Off.Control_Mandatory := true;
CyclicTPN_Off.control_read_only := false;
rate.control_mandatory := false;
RateValue.Amount := Null;
RateValue.UOM := Null;
Rate.control_read_only := True;
if exists vol and vol.value is not null and CyclicTPN_On.value is not null then
IvDuration_Val.Number := 1;
Freq.value.frequencysummary := "Variable";
IvDuration_Val.Option := "Times";
vol_val := vol.value;
CyclicTPN_On_val := CyclicTPN_On.value as number;
CyclicTPN_Off.value := (24 - CyclicTPN_On_val);
Cycle2 := CyclicTPN_On_Val - 1;
Cycle2hours := CyclicTPN_On_Val - 2;
Cycle2Rate := (vol_val / Cycle2) as number;
Cycle2Rateround := int(cycle2rate + 0.5);
Cycle1Rate := (Cycle2Rate / 2) as number;
Cycle1Rateround := int(cycle1rate + 0.5);
TotalVolume := ((Cycle1rateround * 2) + (Cycle2rateround * Cycle2hours)) as number;
Cycle2Volume := (Cycle2rateround * Cycle2hours) as number;
Cycle1Volume := Cycle1rateround as number;
If TotalVolume >= vol.value then
TotalVolume := vol.value;
Total_vol_msg := " ml.";
else
Total_vol_msg := " ml, which is approximately the volume ordered. Because the rate has been rounded the volume is slightly different.";
endif;
Msg := "Start the TPN at " || cycle1rateround || " ml/hr for (1) hour (Volume: " || Cycle1Volume || " ml), then run the TPN at "
|| cycle2rateround || " ml/hr for (" || Cycle2hours ||") hours (Volume: " || Cycle2Volume || " ml); finally run the TPN at "
||cycle1rateround || " ml/hr for (1) hour (Volume: " || Cycle1Volume || " ml), then stop."
|| CRLF || "The total volume that will be infused is " || totalvolume || Total_vol_msg;
Instruct.value := msg;
Endif;
Else
// If order is not for cyclic TPN calculate the rate based upon the volume ordered over 24 hours
If exist CyclicTPN and CyclicTPN.value = false then
CyclicTPN_On.value := Null;
CyclicTPN_On.Control_Mandatory := false;
CyclicTPN_On.control_read_only := true;
CyclicTPN_Off.value := Null;
CyclicTPN_Off.Control_Mandatory := false;
CyclicTPN_Off.control_read_only := True;
Rate.control_mandatory := true;
Rate.control_read_only := False;
Freq.value.frequencysummary := "";
if exists vol and vol.value is not null then
vol_val := vol.value;
dose_rate := vol_val / 24;
IvDuration_Val.Number := 1;
IvDuration_Val.Option := "Times";
RateValue := Rate.Value;
RateValue.Amount := dose_rate formatted with "%.0f";
RateValue.UOM := "ml/hr";
OrderIVRateValue.KVODisplayed := false;
OrderIVRateValue.IsKVO := false;
msg := " ";
Instruct.value := msg;
Endif;
Endif;
Endif;
;;
evoke:
;;
logic:
Conclude true;
;;
action:
// This MLM returns two parameters, of types
//communication_type and form_type respectively.
return this_communication, this_form;
;;
Urgency: 50;;
end: