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

304 lines
13 KiB
Plaintext

maintenance:
title: FORM_SET_Pediatric_PACU_Meds;;
mlmname: FORM_SET_Pediatric_PACU_Meds;;
arden: version 2.5;;
version: 16.3;;
institution: St Clair Hospital;;
author: Teresa Spicuzza, Allscripts ;;
specialist: Peggy Leschak;;
date: 2017-09-05;;
validation: testing;;
library:
purpose: Provide Pediatric Dose Amounts based upon patient weight and/or age
;;
explanation:
Change history
04.09.2018 TMS CSR 35320 - Created for PACU Pedatric Medication Dose Calculation
;;
keywords: PACU, weight based, pediatric
;;
knowledge:
type: data-driven;;
data:
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
include standard_libs;
// local_session := CDS_SESSION.local;
using "ObjectsPlusXA.SCM.Forms";
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
// 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;
comm_obj := this_communication.primaryobj;
/*******************Make Changes To Spelling And Flags In This Section*******************/
/* Set to true if a decision.log is needed.*/
log_execution_info := FALSE;
/***************************************************************************************/
// Initialize error message
error_message:="";
CR := 13 formatted with "%c";
LF := 10 formatted with "%c";
CRLF:= CR||LF;
TAB := 9 FORMATTED WITH "%C" ;
TAB2 := TAB || TAB ;
TAB3 := TAB || TAB || TAB;
// Assigns fields passed in the Form object to the Field object
field_list:= this_form.fields;
CallingEvent := this_communication.CallingEvent;
CallingField := this_communication.CallingFieldName;
ClientGuid := this_communication.ClientGUID;
ClientVisitGuid := this_communication.ClientVisitGUID;
ChartGuid := this_communication.ChartGUID;
//Form fields
CurrWeight := last of ( field_list WHERE field_list.DataItemName = "CombinedMeasurements"
AND field_list.Control_MultiFieldOccNum = 1 );
Morphine_Mod := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 1 );
Morphine_Sev := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 2 );
Hydromorphone_Mod:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 3 );
Hydromorphone_Sev:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 4 );
Fentanyl_Mod:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 5 );
Fentanyl_Sev:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 6 );
Oxycodone_Liq:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 7 );
Oxycodone_Tab:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 8 );
Ketorolac := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 9 );
Acetaminophen_Oral:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 10 );
Acetaminophen_Rectal:= last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 11 );
Meperidine := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 12 );
Metoclopramide := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 13 );
Ondansetron_IV := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 14 );
Midazolam := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 15 );
RacemicEpi := last of ( field_list WHERE field_list.DataItemName = "DosageLow"
AND field_list.Control_MultiFieldOccNum = 16 );
Morphine_Mod_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 1 );
Morphine_Sev_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 2 );
Hydromorphone_Mod_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 3 );
Hydromorphone_Sev_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 4 );
Fentanyl_Mod_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 5 );
Fentanyl_Sev_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 6 );
Acetaminophen_Stat_Note := last of ( field_list WHERE field_list.DataItemName = "AdminInstructions"
AND field_list.Control_MultiFieldOccNum = 1 );
Acetaminophen_Note := last of ( field_list WHERE field_list.DataItemName = "AdminInstructions"
AND field_list.Control_MultiFieldOccNum = 2 );
AcetaminophenOrders := last of ( field_list WHERE field_list.DataItemName = "MultiOrderGrid"
AND field_list.Control_MultiFieldOccNum = 6 );
Ondansetron_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 8 );
AcetaminophenGrid := AcetaminophenOrders.value;
Metoclopramide_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 7 );
RacemicEpi_Note := last of ( field_list WHERE field_list.DataItemName = "PRX_NoteComment0"
AND field_list.Control_MultiFieldOccNum = 9 );
if exists CurrWeight then
CurrWeight_val := CurrWeight.Value;
wt := CurrWeight_val.weight;
fmtwt := wt formatted with "%.1f";
else
wtgm := read last
{ " Select Text from CV3PhysicalNoteDeclaration "
|| " where ClientGUID = " || SQL(clientguid)
|| " and ClientVisitGUID = " || SQL(clientvisitguid)
|| " and TypeCode = {{{SINGLE-QUOTE}}}weight{{{SINGLE-QUOTE}}} "
|| " order by Entered asc " };
wt := (wtgm as number) / 1000;
fmtwt := wt formatted with "%.1f";
endif;
Calc_0_005 := (wt as number) * 0.005;
Calc_0_01 := (wt as number) * 0.01;
Calc_0_03 := (wt as number) * 0.03;
Calc_0_05 := (wt as number) * 0.05;
Calc_0_15 := (wt as number) * 0.15;
Calc_0_1 := (wt as number) * 0.1;
Calc_0_3 := (wt as number) * 0.3;
Calc_0_5 := (wt as number) * 0.5;
Calc_1_5 := (wt as number) * 1.5;
Calc_15 := (wt as number) * 15;
Calc_3 := wt * 3;
Calc_5 := wt * 5;
Calc_1 := wt * 1;
Calc_15 := wt * 15;
rnd_Calc_0_03:= (int((Calc_3 + 2.5)/5) * 5) /100;
rnd_Calc_0_05:= (int((Calc_5 + 2.5)/5) * 5) /100;
rnd_Calc_0_005:= (int((Calc_5 + 25)/50) * 50) /1000;
rnd_Calc_0_01:= (int((Calc_1 + 2.5)/5) * 5) /100;
rnd_Calc_0_3:= (int((Calc_3 + 0.5)/1) * 1) / 10;
rnd_Calc_0_5:= (int((Calc_5 + 0.5)/1) * 1) / 10;
rnd_Calc_0_15 := (int((Calc_15 + 50)/100) * 100) / 100;
rnd_Calc_1_5 := (int((Calc_15 + 5)/10) * 10) / 10;
rnd_Calc_0_1 := (int((Calc_1 + 0.5)/1) * 1) / 10;
Morphine_Mod.Value := rnd_Calc_0_03 as number;
Morphine_Sev.Value := rnd_Calc_0_05 as number;
Hydromorphone_Mod.Value := rnd_Calc_0_005 as number;
Hydromorphone_Sev.Value := rnd_Calc_0_01 as number;
Fentanyl_Mod.Value := rnd_Calc_0_3 as number;
Fentanyl_Sev.Value := rnd_Calc_0_5 as number;
Metoclopramide.Value := rnd_Calc_0_1 as number;
Acetaminophen_ml := (Int((((Calc_15 / 32) * 10) + 2.5)/5) *5) /10 ;
Morphine_Mod_Note.Value := "Morphine 0.03 mg/kg (" ||rnd_Calc_0_03 || " mg)" || CRLF
|| "(Maximum Dose: 0.15 mg/kg (" || rnd_Calc_0_15 || " mg) TOTAL of all Morphine administered in PACU)";
Morphine_Sev_Note.Value := "Morphine 0.05 mg/kg (" ||rnd_Calc_0_05 || " mg)" || CRLF
|| "(Maximum Dose: 0.15 mg/kg (" || rnd_Calc_0_15 || " mg) TOTAL of all Morphine administered in PACU)";
Hydromorphone_Mod_Note.Value := "Hydromorphine 0.005 mg/kg (" || rnd_Calc_0_005 || " mg)" || CRLF
|| "(Maximum Dose: 0.03 mg/kg (" || rnd_Calc_0_03 || " mg) TOTAL)";
Hydromorphone_Sev_Note.Value := "Hydromorphine 0.01 mg/kg (" || rnd_Calc_0_01 || " mg)" || CRLF
|| "(Maximum Dose: 0.03 mg/kg (" || rnd_Calc_0_03 || " mg) TOTAL)";
Fentanyl_Mod_Note.Value := "Fentanyl 0.3 mcg/kg (" || rnd_Calc_0_3 || " mcg)" || CRLF
|| "(Maximum Dose: 1.5 mcg/kg (" || rnd_Calc_1_5 || " mcg) TOTAL)";
Fentanyl_Sev_Note.Value := "Fentanyl 0.5 mcg/kg (" || rnd_Calc_0_5 || " mcg)" || CRLF
|| "(Maximum Dose: 1.5 mcg/kg (" || rnd_Calc_1_5 || " mcg) TOTAL)";
Metoclopramide_Note.Value := "Metoclopramide 0.1 mg/kg (" || rnd_Calc_0_1 || " mg)" || CRLF
|| "(Maximum Dose: 10 mg)";
If (Calc_0_5 as number) < 30 then
Ketorolac.Value := rnd_Calc_0_5 as number;
else
Ketorolac.Value := 30;
endif;
Acetaminophen_Oral.Value := (Acetaminophen_ml as number) * 32;
Acetaminophen_Stat_Note.Value := "PACU ONLY. Give upon arrival in PACU. Acetaminophen 15 mg/kg. May give through NG tube."|| CRLF
|| Acetaminophen_Oral.Value || " mg = " || Acetaminophen_ml || " ml";
Acetaminophen_Note.Value := "PACU ONLY. For Mild pain score of 1-3. Acetaminophen 15 mg/kg. May give through NG tube."|| CRLF
|| Acetaminophen_Oral.Value || " mg = " || Acetaminophen_ml || " ml";
If (Calc_15 as number) > 0 and (Calc_15 as number) <= 300 then
Acetaminophen_Rectal.Value := 120;
AcetaminophenGrid.IsReadOnly := (False, False, False, True, True);
Elseif (Calc_15 as number) > 300 and (Calc_15 as number) <= 645 then
Acetaminophen_Rectal.Value := 325;
AcetaminophenGrid.IsReadOnly := (False, False, True, False, True);
Elseif (Calc_15 as number) > 645 then
Acetaminophen_Rectal.Value := 650;
AcetaminophenGrid.IsReadOnly := (False, False, True, True, False );
else
AcetaminophenGrid.IsReadOnly := (False, False, False, False, False);
endif;
If (Calc_0_5 as number) >= 50 then
Meperidine.Value := 50;
Else
Meperidine.Value := rnd_Calc_0_5 as number;
endif;
If (rnd_Calc_0_1 as number) >= 10 then
Metoclopramide.Value := 10;
Else
Metoclopramide.Value := rnd_Calc_0_1 as number;
endif;
If (wt as number)> 0 and (wt as number)< 10 then
Ondansetron_IV.value := rnd_Calc_0_1 as number;
Ondansetron_Note.value := "Patients less than 10 kg. 0.1 mg/kg (" ||rnd_Calc_0_1 || "). ";
elseif (wt as number)>= 10 and (wt as number)< 20 then
Ondansetron_IV.value := 1;
Ondansetron_Note.value := "Patients 10 to less than 20 kg.";
elseif (wt as number)>= 20 and (wt as number)< 30 then
Ondansetron_IV.value := 2;
Ondansetron_Note.value := "Patients 20 to less than 30 kg.";
elseif (wt as number)>= 30 and (wt as number)< 40 then
Ondansetron_IV.value := 3;
Ondansetron_Note.value := "Patients 30 to less than 40 kg.";
elseif (wt as number)>= 40 then
Ondansetron_IV.value := 4;
Ondansetron_Note.value := "Patients 40 kg or greater.";
endif;
If (Calc_0_05 as number) >= 2 then
Midazolam.Value := 2;
Else
Midazolam.Value := rnd_Calc_0_05 as number;
endif;
If (Calc_0_05 as number) >= 0.5 then
RacemicEpi.Value := 0.5;
RacemicEpi_Note.Value := "PACU ONLY. Racemic Epinephrine Inhalation 0.05 ml/kg/dose equals " ||RacemicEpi.Value || " ml diluted to 3 ml with normal saline over 15 min (MAXIMUM TOTAL DOSE Racemic Epinephrine: 0.5 ml)";
Else
RacemicEpi.Value := rnd_Calc_0_05 as number;
RacemicEpi_Note.Value := "PACU ONLY. Racemic Epinephrine Inhalation 0.05 ml/kg/dose equals " ||RacemicEpi.Value || " ml diluted to 3 ml with normal saline over 15 min (MAXIMUM TOTAL DOSE Racemic Epinephrine: 0.5 ml)";
endif;
If CurrWeight_val.Weight = 0 then
this_communication.Message := "Please enter a weight on this patient to continue." ; this_communication.MessageType := "Informational";
endif;
;;
evoke: // No evoke statement
;;
logic:
conclude true;
;;
action:
// This MLM returns two parameters, of types communication_type and form_type respectively.
return this_communication, this_form;
;;
end: