maintenance: title: Medrol Dose Pak Orders;; mlmname: FORM_Set_Medrol_Dose_Pak;; arden: version 2.5;; version: 6.10;; institution: St Clair Hospital;; author: Teresa Spicuzza, Allscripts Corp ext 7448;; specialist: Teresa Spicuzza, Allscripts Corp ext 7448;; date: 2014-10-16;; validation: testing;; library: purpose: Used for medication grids on Medrol Dose Pak Orders ;; explanation: This MLM is called from the Medrol Dose Pak Orders Change history 11.04.2014 TMS Created for new Medrol dose pak order set. MLM looks at current time and selects correct order in the grid for start time. CSR #31407 09.12.2016 TMS Call added on FormClose to call Order Mgt MLM and to uncheck all methylprednisolone 4mg tab orders if the dose pack in the multiordercheckbox is selected to be unchecked as a duplicate. HD 2347914 ;; keywords: Called MLMs, Medrol Dose Pak, Methylprednisolone ;; knowledge: type: data-driven;; data: // 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; /*******************Make Changes To Spelling And Flags In This Section*******************/ /* Set to true if a decision.log is needed.*/ log_execution_info := FALSE; standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}}; include standard_libs; using "ObjectsPlusXA.SCM.Forms"; using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms"; //local_session := cds_session.local; /***************************************************************************************/ // 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; Med_Orders := last of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 1); Med_Orders_List := Med_Orders.Value; Med_Selected := true in Med_Orders_List; Dose_Pak_Order := last of (field_list where field_list.DataItemName = "MultiOrderCheckbox" and field_List.Control_MultiFieldOccNum = 1); Dose_Pak_Order_List := Dose_Pak_Order.Value; Dose_Pak_Selected := true in Dose_Pak_Order_List ; // Test time for testing only // Testtime := now + 5 hours; // testtime := testtime + 53 minutes; // thishour := extract hour testtime; // thismin := extract minute testtime; if ThisMin < 10 then ThisMin := "0"||ThisMin; endif; ThisHour := extract hour now; ThisMin := extract minute now; if ThisMin < 10 then ThisMin := "0"||ThisMin; endif; ThisTime := (ThisHour||ThisMin) as number; // On form open check current hour and select appropriate start time If CallingEvent = "FormOpen" or (CallingEvent = "FormClose" and true not in Med_Orders_list.isSelected) then Dose_Pak_Order_List.IsReadOnly := (True); If ThisTime >= 0 and ThisTime <= 700 then Med_Orders_List.IsSelected := (True, False, False, False, False); Med_Orders_List.IsReadOnly := (False, True, True, True, True); elseIf ThisTime > 700 and ThisTime <= 1300 then Med_Orders_List.isselected := (False, True, False, False, False); Med_Orders_List.IsReadOnly := (True, False, True, True, True); elseIf ThisTime > 1300 and ThisTime <= 1800 then Med_Orders_List.isselected := (False, False, True, False, False); Med_Orders_List.IsReadOnly := (True, True, False, True, True); elseIf ThisTime > 1800 and ThisTime <= 2100 then Med_Orders_List.isselected := (False, False, False, True, False); Med_Orders_List.IsReadOnly := (True, True, True, False, True); elseIf ThisTime > 2100 and ThisTime <= 2400 then Med_Orders_List.IsSelected := (False, False, False, False, True); Med_Orders_List.IsReadOnly := (True, True, True, True, False); Endif; Endif; If CallingEvent = "FieldChange" and true not in Med_Orders_list.isSelected then Med_Orders_List.IsReadOnly := (False, False, False, False, False); else protectvaluelist := (); for r in 1 seqto (count Med_Orders_List) do If Med_Orders_List.IsSelected [r] = true then protectvalue := "false"; else protectvalue := "true"; endif; protectvaluelist := protectvaluelist , protectvalue; enddo; Med_Orders_List.IsReadOnly := protectvaluelist; Endif; If CallingEvent = "FormClose" then Med_Order_Mgt := mlm {{{SINGLE-QUOTE}}}FORM_SET_Rx_Medication_Order_Mgt{{{SINGLE-QUOTE}}}; (this_communication, this_form) := call Med_Order_Mgt with this_communication, this_form, client_info_obj; if false in Dose_Pak_Order_List.isselected then Med_Orders_List.IsSelected := (False, False, False, False, False); Med_Orders_List.IsReadOnly := (True, True, True, True, True); endif; 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: