182 lines
4.8 KiB
Plaintext
182 lines
4.8 KiB
Plaintext
maintenance:
|
||
|
||
title: Form_Heparin_Dose_calc;;
|
||
mlmname: Form_Heparin_Dose_calc;;
|
||
arden: version 2;;
|
||
version: 4.50;;
|
||
institution: St. Clair Hospital;;
|
||
author: Teresa M. Spicuzza (Teresa.Spicuzza@stclair.org), 412.942.1721 ;;
|
||
specialist: Eclipsys Corporation;;
|
||
date: 2006-10-27;;
|
||
validation: testing;;
|
||
|
||
library:
|
||
purpose: Caculate Heparin bolus dose based on weight.
|
||
;;
|
||
explanation: (Per T. Spicuzza, 10-26-06):
|
||
Dosing Weight in Kilograms * Bolus Concentration =
|
||
Bolus Dose (round to nearest 100)
|
||
|
||
Dose equals value of (rounded) Bolus Dose
|
||
If (rounded) Bolus Dose is 5000 or less Then
|
||
Product Concentration equals ‘1000’
|
||
WORx Product Code equals ‘06466’
|
||
Concentration Text equals ‘(1000units/ml)’
|
||
|
||
ElseIf (rounded) Bolus Dose is 5001 or greater
|
||
Product Concentration equals ‘1000’
|
||
WORx Product Code equals ‘06466’
|
||
Concentration Text equals ‘(1000units/ml)’
|
||
Endif
|
||
|
||
If Dosing Weight in Kilograms is null alert user to
|
||
‘Enter a Calculation Weight on the Vital Sign Flowsheet before proceeding’
|
||
;;
|
||
keywords:
|
||
Heparin, bolus, weight;
|
||
;;
|
||
knowledge:
|
||
type: data-driven;;
|
||
data:
|
||
/********************Make Changes To Spelling And Flags In This Section*********************/
|
||
|
||
|
||
/********************************************************************************JAB********/
|
||
|
||
// 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;
|
||
|
||
called_by := this_communication.CallingEvent;
|
||
call_field := this_communication.CallingFieldName;
|
||
|
||
//RS Set some needed fields
|
||
if called_by_editor then
|
||
client_guid := "9000001369400200";
|
||
visit_guid := visit_obj.GUID;
|
||
chart_guid := "9000001918900170";
|
||
orderId := "1000002689073001";
|
||
called_by := "FormOpen";
|
||
else
|
||
client_guid := this_communication.ClientGUID;
|
||
visit_guid := this_communication.ClientVisitGUID;
|
||
chart_guid := this_communication.ChartGuid;
|
||
orderid := this_comm.ItemID;
|
||
endif;
|
||
|
||
//Initialize MLM pointers:
|
||
round_dose := mlm {{{SINGLE-QUOTE}}}SYS_ROUND_DOSAGE{{{SINGLE-QUOTE}}};
|
||
|
||
|
||
// Assigns fields passed in the Form object to the Field object
|
||
field_list:= this_form.fields;
|
||
|
||
|
||
|
||
comb_ht_wt_field := first of
|
||
(field_list where field_list.DataItemName = "CombinedMeasurements");
|
||
if exists comb_ht_wt_field then
|
||
comb_ht_wt_val := comb_ht_wt_field.value;
|
||
|
||
wt := comb_ht_wt_val.weight;
|
||
ht := comb_ht_wt_val.height;
|
||
wt_type := comb_ht_wt_val.weighttype;
|
||
bsa := comb_ht_wt_val.bsa;
|
||
bmi := comb_ht_wt_val.bmi;
|
||
endif;
|
||
|
||
if not exists wt then
|
||
|
||
DoNada:=True;
|
||
else
|
||
|
||
//Units per Kg wt
|
||
bolus_conc := first of (field_list where field_list.DataItemName
|
||
= "PRX_WtBasedHeparinBolusUnitsPerKg");
|
||
|
||
//Route
|
||
dose_route := first of
|
||
(field_list where field_list.DataItemName = "OrderRouteCode");
|
||
|
||
//Dose
|
||
dose := first of
|
||
(field_list where field_list.DataItemName = "dosagelow");
|
||
|
||
//Strength
|
||
prod_conc_str := first of
|
||
(field_list where field_list.DataItemName = "PRX_CONCSTRENGTH");
|
||
|
||
//WORx Code
|
||
worx_prod_code := first of
|
||
(field_list where field_list.DataItemName = "PRX_DRUGIDCODE");
|
||
|
||
//Concentration Text
|
||
prod_conc_txt := first of
|
||
(field_list where field_list.DataItemName = "PRX_Concentration");
|
||
|
||
if exists bolus_conc then
|
||
bolus_dose := (wt as number) * (bolus_conc.value as number);
|
||
endif;
|
||
|
||
//round the dose
|
||
// per trackit 100664 problem with system rounding to 50 not 100
|
||
// RS Overridin system call and using our own integer rounding calculation
|
||
|
||
|
||
// Original code
|
||
|
||
// (error_msg, rnd_bolus_dose) := call round_dose
|
||
// with bolus_dose, dose_route.value;
|
||
|
||
// new code introduced 11/11/2008
|
||
|
||
rnd_bolus_dose := int((bolus_dose + 50)/100) * 100;
|
||
|
||
|
||
//use the rounded dose for the actual dose
|
||
if exists dose then
|
||
dose.value := rnd_bolus_dose;
|
||
endif;
|
||
|
||
If rnd_bolus_dose <= 5000 then
|
||
prod_conc_str.value := "1000";
|
||
worx_prod_code.value := "06466";
|
||
prod_conc_txt.value := "(1000units/ml)";
|
||
else
|
||
prod_conc_str.value := "1000";
|
||
worx_prod_code.value := "06466";
|
||
prod_conc_txt.value := "(1000units/ml)";
|
||
|
||
endif; // rnd_bolus_dose <= 5000
|
||
|
||
endif; // not exists wt
|
||
|
||
/* // FOR DEBUGGING PURPOSES: display a message to the user
|
||
this_communication.Message :=
|
||
"wt = "|| wt
|
||
|| "\nbolus_conc.value = " || bolus_conc.value
|
||
|| "\nbolus_dose = " || bolus_dose
|
||
|| "\ndose_route.value = " || dose_route.value
|
||
|| "\nrnd_bolus_dose = " || rnd_bolus_dose
|
||
;
|
||
this_communication.MessageType := "Informational";
|
||
*/
|
||
|
||
;;
|
||
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:
|