Files
St.Clair/MLMStripper/bin/Debug/FORM/FORM_HEPARIN_DOSE_CALC.mlm

182 lines
4.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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: