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: