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

222 lines
9.7 KiB
Plaintext

maintenance:
title: Sedative Orders with Dose Reduction;;
mlmname: FORM_Set_Rx_Sedative_Orders;;
arden: version 2.5;;
version: 5.50;;
institution: St Clair Hospital;;
author: Teresa Spicuzza, Allscripts ;;
specialist: Teresa Spicuzza, Allscripts;;
date: 2011-07-22;;
validation: testing;;
library:
purpose: Used for Dose Reduction of Sedative Orders in patients over 65 years of age (Changed to 18 years of age)
;;
explanation: This MLM is called from ...
Change history
05.07.2013 TMS Change made to reduce age from 65 to 18 per Med Exec for Leapfrog project. Added yes/no
decision box for "if physician has order for do not substitute" CSR 31334
06.11.2015 BB Change made to Lunesta, to reduce the 2mg selection to 1mg. So now when 3mg or 2mg Lunesta
is selected, the 1mg is automatically selected. CSR#33494
03.29.2016 TMS Changes made to remove logic for Eszopiclone 3mg Tab and Zolpidem CR 12.5mg Tab which are
being removed from the formulary. CSR 34225
;;
keywords: Called MLMs, Sedatives
;;
knowledge:
type: data-driven;;
data:
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
include standard_libs;
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:="";
// 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;
CallingSet := comm_obj.OrderSetName;
Info_fld := last of (field_list where field_list.DataItemName = "PRX_NoteComment0"
and field_List.Control_MultiFieldOccNum = 1);
Override_fld := last of (field_list where field_list.DataItemName = "PRX_DosageOverride"
and field_list.Control_MultiFieldOccNum = 2);
Substitute_fld := last of (field_list where field_list.DataItemName = "PRX_NoteComment2"
and field_list.Control_MultiFieldOccNum = 1);
message18 := "Lower dose substituted by approval of Medical Executive Committee.";
message65 := "Lower dose substituted by approval of Medical Executive Committee; patient is 65 years or older";
nomessage := " ";
messageDoNotSub := Override_fld.Label;
SedativeOrders := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
and field_List.Control_MultiFieldOccNum = 1);
SedativeOrders_List := SedativeOrders.Value;
Found_Zolpidem5Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem 5mg Tab");
Found_Zolpidem10Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem 10mg Tab");
Found_Zolpidem5Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem 5mg Tab");
Found_Zolpidem10Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem 10mg Tab");
Found_Zolpidem6CRPrn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem CR 6.25mg Tab");
Found_Zolpidem12CRPrn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem CR 12.5mg Tab");
Found_Zolpidem6CRSch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem CR 6.25mg Tab");
Found_Zolpidem12CRSch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Zolpidem CR 12.5mg Tab");
Found_Temazepam7Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Temazepam 7.5mg Cap");
Found_Temazepam15Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Temazepam 15mg Cap");
Found_Temazepam30Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Temazepam 30mg Cap");
Found_Temazepam7Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Temazepam 7.5mg Cap");
Found_Temazepam15Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Temazepam 15mg Cap");
Found_Temazepam30Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Temazepam 30mg Cap");
Found_Eszopiclone1Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Eszopiclone 1mg Tab");
Found_Eszopiclone2Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Eszopiclone 2mg Tab");
// Found_Eszopiclone3Prn := first of (SedativeOrders_List where SedativeOrders_List.Name = "Eszopiclone 3mg Tab");
Found_Eszopiclone1Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Eszopiclone 1mg Tab");
Found_Eszopiclone2Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Eszopiclone 2mg Tab");
// Found_Eszopiclone3Sch := last of (SedativeOrders_List where SedativeOrders_List.Name = "Eszopiclone 3mg Tab");
if exists (client_info_obj) then
(birthdate,dobM,dobD,dobY) := read last {ClientInfo: BirthDate, BirthMonthNum, BirthDayNum, BirthYearNum
REFERENCING client_info_obj};
endif;
patientAge := (NOW - birthdate) / (1 year);
if (patientAge > 17.99) then
if (CallingField = "MultiOrderGrid|1") then
if (Override_fld.value = false) then
if (Found_Zolpidem10Prn.IsSelected = true) then
SedativeOrders_List.IsSelected := (true, false, false, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Zolpidem10Sch.IsSelected = true) then
SedativeOrders_List.IsSelected := (false, false, true, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Zolpidem12CRPrn.IsSelected = true) then
SedativeOrders_List.IsSelected := (true, false, false, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Zolpidem12CRSch.IsSelected = true) then
SedativeOrders_List.IsSelected := (false, false, true, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Temazepam30Prn.IsSelected = true) then
SedativeOrders_List.IsSelected := (false, true, false, false, false, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Temazepam30Sch.IsSelected = true) then
SedativeOrders_List.IsSelected := (false, false, false, false, true, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
//[BB CSR33494]
elseif (Found_Eszopiclone2Prn.IsSelected = true) then
SedativeOrders_List.IsSelected := (true, false, false, false); //(true, false, false, false, false, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Eszopiclone2Sch.IsSelected = true) then
SedativeOrders_List.IsSelected := (false, false, true, false); //(false, false, false, true, false, false);
Info_fld.Value := message18;
Substitute_fld.Value := message18;
//[BB CSR33494 END]
/*
elseif (Found_Eszopiclone3Prn.IsSelected = true) then
SedativeOrders_List.IsSelected := (true, false, false, false, false, false); //(false, true, false, false, false, false); //[BB mod]
Info_fld.Value := message18;
Substitute_fld.Value := message18;
elseif (Found_Eszopiclone3Sch.IsSelected = true) then
SedativeOrders_List.IsSelected := (false, false, false, true, false, false); //(false, false, false, false, true, false); //[BB mod]
Info_fld.Value := message18;
Substitute_fld.Value := message18;
*/
else
Info_fld.Value := nomessage;
Substitute_fld.Value := nomessage;
endif;
endif; //Override_fld.value = false
endif; //CallingField = "MultiOrderGrid|1"
if (CallingField = "PRX_DosageOverride|2") then
If Override_fld.value = True then
messagetext:="You have chosen to override the Medical Executive Committee "
|| "approved protocol to lower sedative/hypnotic doses in ALL patients over 18 years "
|| "old. \n\n Do you have a physician order to override the automatic "
|| "substitution that states Do Not Substitute the Lower Dose? \n\n If you have an "
|| "order, click YES below.";
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with Messagetext ,"Alert","YesNo" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
if((dialogResult as string) = "Yes") then
Info_fld.Value := nomessage;
Substitute_fld.Value := messageDoNotSub;
if (count(SedativeOrders_List) = 4) then
SedativeOrders_List.IsSelected := (false, false, false, false);
else
SedativeOrders_List.IsSelected := (false, false, false, false, false, false);
endif;
endif;
if((dialogResult as string) = "No") then
Override_fld.Value := false;
endif;
else
Substitute_fld.Value := nomessage;
if (count(SedativeOrders_List) = 4) then
SedativeOrders_List.IsSelected := (false, false, false, false);
else
SedativeOrders_List.IsSelected := (false, false, false, false, false, false);
endif;
endif; //CallingField = "PRX_DosageOverride|2"
endif; //patientAge > 17.99
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: