maintenance: title: Alcohol Withdrawal Protocol Orders;; mlmname: FORM_Set_AWP;; arden: version 2.5;; version: 5.50;; institution: St Clair Hospital;; author: Teresa Spicuzza, Allscripts ;; specialist: Teresa Spicuzza, Allscripts;; date: 2011-09-20;; validation: testing;; library: purpose: Used for - Alcohol Withdrawal Protocol ;; explanation: This MLM is called from ... Alcohol Withdrawal Protocol Orderset Change history 09.20.2011 TMS Copy of ED Admit AWP with coding added to schedule Ativan orders when ordered on Nurse Unit. 01.20.2012 TMS Added logic to schedule correct day when start time between 18:00 and 22:00 HD Ticket 146364 04.26.2016 TMS Add call on form Close to Medication Order Management MLM CSR 33465 ;; keywords: Called MLMs, Lab Grids on Order Sets, Alcohol Withdrawal Protocol ;; knowledge: type: data-driven;; data: // Use String parse str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}}; 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; /*******************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; RequestedTime_obj := OBJECT [ReqTimeCode, RegTimeValue, ReqTimeUOM, ReqTimeEventModifier, ReqTimeEventCode]; //Get the multi order grid check box value Checkbox_fld := last of (field_list where field_list.DataItemName = "PRX_Checkbox1"); // and field_List.Control_MultiFieldOccNum = 1); Ativan_grid := last of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 64); Ativan_list :=Ativan_grid.Value; Ativan_SelList := Ativan_List.IsSelected; Other_Med_Grid:= first of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 66); Other_Med_list := Other_Med_Grid.Value; Nurse_Inst_Grid:= first of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 48); Nurse_Inst_List := Nurse_Inst_Grid.Value; Day1reqdate:= last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 1); Day2reqdate:= last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 2); Day3reqdate:= last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 3); Day4reqdate:= last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 4); Day5reqdate:= last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 5); Day6reqdate:= last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 6); Day1reqtime:= last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 1); Day2reqtime:= last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 2); Day3reqtime:= last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 3); Day4reqtime:= last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 4); Day5reqtime:= last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 5); Day6reqtime:= last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 6); If exists Day1reqtime then ReqTimeValue := Day1reqtime.Value; // Found_DeSelect:= First of (Grid_list where Grid_list.Name = DeSelect ); If CallingEvent = "FieldChange" Then If Callingfield = "PRX_Checkbox1|1" then If Checkbox_fld.Value = False then ListMembs:= count Ativan_SelList; FalseList := (); for k in (1 seqto ListMembs) do FalseList := FalseList,False; enddo; Ativan_List.IsSelected:= FalseList; ReqTimeValue.ReqTimeCode := NULL; Day6reqtimeValue.ReqTimeCode := NULL; endif; // If Checkbox_fld.Value = False then InstMembs:= count Nurse_Inst_List; schedlist:= (True, False, False); p:=4; for p in (4 seqto InstMembs) do schedlist := schedlist, Nurse_Inst_List.isselected [p]; enddo; Nurse_Inst_List.IsSelected := schedlist; endif; // If Checkbox_fld.Value = True then ListMembs:= count Ativan_SelList; TrueList := (); for k in (1 seqto ListMembs) do TrueList := TrueList,True; enddo; Ativan_List.IsSelected:= TrueList; endif; // If Checkbox_fld.Value = True then InstMembs:= count Nurse_Inst_List; schedlist:= (True, True, True); p:=4; for p in (4 seqto InstMembs) do schedlist := schedlist, Nurse_Inst_List.isselected [p]; enddo; Nurse_Inst_List.IsSelected := schedlist; endif; // If Checkbox_fld.Value = True then // If exists Day1reqtime then // ReqTimeValue := Day1reqtime.Value; ReqTimeValue.ReqTimeCode := "Scheduled/Start Time"; endif; endif; // endif; endif; If CallingField = "RequestedTime|1" or CallingField = "RequestedDate|1" then StartDate := day1reqdate.value; StartTime := Day1reqtime.value; StartTime_code := starttime.reqtimecode; StartTime_value := starttime.reqtimevalue; ParseTime_list := call str_parse with StartTime_value, ":"; hourvalue := first(ParseTime_list); minvalue := last(ParseTime_list); q6hour := StartTime_Value; q8hour := (hourvalue as number) + 2; if q8hour >= 24 then q8hour := q8hour - 24; endif; if q8hour < 10 then q8hour := "0" || q8hour; endif; q8hour := q8hour || ":" || minvalue; q12hour := (hourvalue as number) + 6; if q12hour >= 24 then q12hour := q12hour - 24; endif; if q12hour < 10 then q12hour := "0" || q12hour; endif; q12hour := q12hour || ":" || minvalue; /* //changed to logic below to address issue with start times between 18:00 and 21:00 If starttime_value >= "22:00" then skipday := "true"; day2reqdate.value := startdate + 1 day; day3reqdate.value := startdate + 2 day; day4reqdate.value := startdate + 3 day; day5reqdate.value := startdate + 5 day; day6reqdate.value := startdate + 6 day; else skipday := false; day2reqdate.value := startdate + 1 day; day3reqdate.value := startdate + 2 day; day4reqdate.value := startdate + 3 day; day5reqdate.value := startdate + 4 day; day6reqdate.value := startdate + 5 day; endif; */ If starttime_value >= "18:00" then If starttime_value < "22:00" then day2reqdate.value := startdate + 1 day; day3reqdate.value := startdate + 2 day; day4reqdate.value := startdate + 3 day; day5reqdate.value := startdate + 4 day; day6reqdate.value := startdate + 6 day; else day2reqdate.value := startdate + 1 day; day3reqdate.value := startdate + 2 day; day4reqdate.value := startdate + 3 day; day5reqdate.value := startdate + 5 day; day6reqdate.value := startdate + 6 day; endif; else day2reqdate.value := startdate + 1 day; day3reqdate.value := startdate + 2 day; day4reqdate.value := startdate + 3 day; day5reqdate.value := startdate + 4 day; day6reqdate.value := startdate + 5 day; endif; Day2reqtimeValue := Day2reqtime.Value; Day2reqtimeValue.ReqTimeCode := "Scheduled/Start Time"; Day2reqtimeValue.ReqTimeValue := q6hour; Day3reqtimeValue := Day3reqtime.Value; Day3reqtimeValue.ReqTimeCode := "Scheduled/Start Time"; Day3reqtimeValue.ReqTimeValue := q6hour; Day4reqtimeValue := Day4reqtime.Value; Day4reqtimeValue.ReqTimeCode := "Scheduled/Start Time"; Day4reqtimeValue.ReqTimeValue := q6hour; Day5reqtimeValue := Day5reqtime.Value; Day5reqtimeValue.ReqTimeCode := "Scheduled/Start Time"; Day5reqtimeValue.ReqTimeValue := q8hour; Day6reqtimeValue := Day6reqtime.Value; Day6reqtimeValue.ReqTimeCode := "Scheduled/Start Time"; Day6reqtimeValue.ReqTimeValue := q12hour; endif; /* // Found_DeSelect:= First of (Grid_list where Grid_list.Name = DeSelect ); If CallingEvent = "FieldChange" Then If Callingfield = "PRX_Checkbox1|1" then If Checkbox_fld.Value = False then ListMembs:= count Ativan_SelList; FalseList := (); for k in (1 seqto ListMembs) do FalseList := FalseList,False; enddo; Ativan_List.IsSelected:= FalseList; endif; // If Checkbox_fld.Value = False then InstMembs:= count Nurse_Inst_List; schedlist:= (True, False, False); p:=4; for p in (4 seqto InstMembs) do schedlist := schedlist, Nurse_Inst_List.isselected [p]; enddo; Nurse_Inst_List.IsSelected := schedlist; endif; // If Checkbox_fld.Value = True then ListMembs:= count Ativan_SelList; TrueList := (); for k in (1 seqto ListMembs) do TrueList := TrueList,True; enddo; Ativan_List.IsSelected:= TrueList; endif; // If Checkbox_fld.Value = True then InstMembs:= count Nurse_Inst_List; schedlist:= (True, True, True); p:=4; for p in (4 seqto InstMembs) do schedlist := schedlist, Nurse_Inst_List.isselected [p]; enddo; Nurse_Inst_List.IsSelected := schedlist; If exists Day1reqtime then Day1reqtimeValue := Day1reqtime.Value; Day1reqtimeValue.ReqTimeCode := "Scheduled/Start Time"; endif; endif; // endif; endif; */ If CallingField = "MultiOrderGrid|66" and CallingEvent = "FieldChange" Then blocklist2 := (False, False, False); blocklist3 := (False, False); truelist2 := (False, False, False); truelist3 := (False, False); If Other_Med_list.IsSelected [1] = true then truelist2 := (True, False, False); blocklist2 := (False, True, True); endif; If Other_Med_list.IsSelected [2] = true then truelist2 := (False, True, False); blocklist2 := (True, False, True); endif; If Other_Med_list.IsSelected [3] = true then truelist2 := (False, False, True); blocklist2 := (True, True, False); endif; If Other_Med_list.IsSelected [4] = true then truelist3 := (True, False); blocklist3 := (False, True); endif; If Other_Med_list.IsSelected [5] = true then truelist3 := (False, True); blocklist3 := (True, False); endif; blocklistA:= blocklist2, blocklist3; truelistA:= truelist2, truelist3; r:=6; listother := count Other_Med_list; for r in (6 seqto listother) do truelistA := truelistA, other_med_list.isselected [r]; blocklistA := blocklistA, false; enddo; Other_Med_list.IsSelected := truelistA; Other_Med_list.IsReadOnly := blocklistA; 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; endif; //dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n Other_med_list: "||Other_Med_list.IsSelected ||"\n truelist2: "|| truelist2 ||"\n Value of r: "|| r ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}}; 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:', N'8a189793-bc89-48b9-8d3f-670bc7bedebc', 2, N'Alcohol Withdrawal Protocol Orders', N'2.5', N'5.50', CAST(N'2011-09-20T00:00:00.000' AS DateTime), NULL)