Initial Checking with all 820 MLMs
This commit is contained in:
309
MLMStripper/bin/Debug/FORM/FORM_SET_FBC_ADMISSION_ORDERS.mlm
Normal file
309
MLMStripper/bin/Debug/FORM/FORM_SET_FBC_ADMISSION_ORDERS.mlm
Normal file
@@ -0,0 +1,309 @@
|
||||
maintenance:
|
||||
|
||||
title: FORM_SET_FBC_ADMISSION_ORDERS;;
|
||||
mlmname: FORM_SET_FBC_ADMISSION_ORDERS;;
|
||||
arden: version 2;;
|
||||
version: 5.50;;
|
||||
institution: St Clair Hospital;;
|
||||
author: Juliet M. Law, Allscripts Corp ext 7461;;
|
||||
specialist: Dean Miklavic, Allscripts Corp Ext 7466;;
|
||||
date: 2012-03-01;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose: Used for medication grids to disable dosing instruction checkbox in Family Birth Center Admission Order Set
|
||||
;;
|
||||
|
||||
explanation: This MLM is called from the Family Birth Center Admission Order Set
|
||||
|
||||
|
||||
Change history
|
||||
|
||||
03.01.2012 JML Copied from FORM_SET_SUBCUTANEOUS_INSULIN MLM
|
||||
07.26.2016 BB CSR#33588 - Adding Antibiotic scheduling to FBC Admission Orderset
|
||||
|
||||
;;
|
||||
keywords: Called MLMs, Family, Birth
|
||||
;;
|
||||
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";
|
||||
|
||||
/***************************************************************************************/
|
||||
|
||||
// Initialize error message
|
||||
error_message := "";
|
||||
|
||||
// Assigns fields passed in the Form object to the Field object
|
||||
field_list:= this_form.fields;
|
||||
|
||||
//Retrieve Calling Event and Field information
|
||||
CallingEvent := this_communication.CallingEvent;
|
||||
CallingField := this_communication.CallingFieldName;
|
||||
|
||||
//Retrieve list and values of Pharmacy Medication Guidelines Field
|
||||
Pharm_Med_Guidelines := last of (field_list where field_list.DataItemName = "MultiOrderInline"
|
||||
AND field_List.Control_MultiFieldOccNum = 1);
|
||||
Pharm_Med_Guidelines_List := Pharm_Med_Guidelines.Value;
|
||||
|
||||
//Retrieve list and values of Group B Strep Medications Grid
|
||||
GroupB_Strep := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
|
||||
AND field_list.Control_MultiFieldOccNum = 45);
|
||||
GroupB_Strep_List := GroupB_Strep.Value;
|
||||
|
||||
//BB
|
||||
//Retrieve values for Requested Date/Time hidden fields [BB]
|
||||
GroupB_Strep_Pen_ReqDate := last of ( field_list WHERE field_list.DataItemName = "RequestedDate"
|
||||
and field_list.Control_MultiFieldOccNum = 1);
|
||||
GroupB_Strep_Pen_ReqTime := last of ( field_list WHERE field_list.DataItemName = "RequestedTime"
|
||||
and field_list.Control_MultiFieldOccNum = 1);
|
||||
Pen_ReqDate_Val := GroupB_Strep_Pen_ReqDate.Value;
|
||||
Pen_ReqTime_Val := GroupB_Strep_Pen_ReqTime.Value;
|
||||
|
||||
GroupB_Strep_Cef_ReqDate := last of ( field_list WHERE field_list.DataItemName = "RequestedDate"
|
||||
and field_list.Control_MultiFieldOccNum = 2);
|
||||
GroupB_Strep_Cef_ReqTime := last of ( field_list WHERE field_list.DataItemName = "RequestedTime"
|
||||
and field_list.Control_MultiFieldOccNum = 2);
|
||||
Cef_ReqDate_Val := GroupB_Strep_Cef_ReqDate.Value;
|
||||
Cef_ReqTime_Val := GroupB_Strep_Cef_ReqTime.Value;
|
||||
|
||||
GroupB_Strep_Van_ReqDate := last of ( field_list WHERE field_list.DataItemName = "RequestedDate"
|
||||
and field_list.Control_MultiFieldOccNum = 3);
|
||||
GroupB_Strep_Van_ReqTime := last of ( field_list WHERE field_list.DataItemName = "RequestedTime"
|
||||
and field_list.Control_MultiFieldOccNum = 3);
|
||||
Van_ReqDate_Val := GroupB_Strep_Van_ReqDate.Value;
|
||||
Van_ReqTime_Val := GroupB_Strep_Van_ReqTime.Value;
|
||||
|
||||
//Set date/time for current, +4hours, +8hours, +12hours and parse each section for later manipulation [BB]
|
||||
TimeTest := "00:00";
|
||||
MinuteTime := Minute of Now;
|
||||
|
||||
DateTimeNow := now;
|
||||
DateTimePlusFour := DateTimeNow + 4 hour;
|
||||
DateTimePlusFourPlus := DateTimeNow + 5 hour;
|
||||
DateTimePlusEight := DateTimeNow + 8 hour;
|
||||
DateTimePlusEightPlus := DateTimeNow + 9 hour;
|
||||
DateTimePlusTwelve := DateTimeNow + 12 hour;
|
||||
DateTimePlusTwelvePlus := DateTimeNow + 13 hour;
|
||||
|
||||
// Current Date/Time
|
||||
DateMonth := month of DateTimeNow ;
|
||||
if ( length ( DateMonth as string ) = 1 ) then DateMonth := "0" || DateMonth; endif;
|
||||
DateDay := day of DateTimeNow;
|
||||
if ( length ( DateDay as string ) = 1 ) then DateDay := "0" || DateDay; endif;
|
||||
DateYear := year of DateTimeNow;
|
||||
DateSplit := DateMonth ||"-"|| DateDay ||"-"|| DateYear;
|
||||
|
||||
TimeHour := hour of DateTimeNow;
|
||||
if ( length ( TimeHour as string ) = 1 ) then TimeHour := "0" || TimeHour; endif;
|
||||
TimeMinute := minute of DateTimeNow;
|
||||
if ( length ( TimeMinute as string ) = 1 ) then TimeMinute := "0" || TimeMinute; endif;
|
||||
TimeSplit := TimeHour ||":"|| TimeMinute;
|
||||
|
||||
// Date/Time plus 4 hours
|
||||
DateMonth4 := month of DateTimePlusFour ;
|
||||
if ( length ( DateMonth4 as string ) = 1 ) then DateMonth4 := "0" || DateMonth4; endif;
|
||||
DateDay4 := day of DateTimePlusFour;
|
||||
if ( length ( DateDay4 as string ) = 1 ) then DateDay4 := "0" || DateDay4; endif;
|
||||
DateYear4 := year of DateTimePlusFour;
|
||||
DateSplit4 := DateMonth4 ||"-"|| DateDay4 ||"-"|| DateYear4; // || " 00:00") as time; //7/19/16
|
||||
|
||||
TimeHour4 := hour of DateTimePlusFour;
|
||||
if ( length ( TimeHour4 as string ) = 1 ) then TimeHour4 := "0" || TimeHour4; endif;
|
||||
TimeHour4Plus := hour of DateTimePlusFourPlus;
|
||||
if ( length ( TimeHour4Plus as string ) = 1 ) then TimeHour4Plus := "0" || TimeHour4Plus; endif;
|
||||
TimeMinute4 := minute of DateTimePlusFour;
|
||||
if ( length ( TimeMinute4 as string ) = 1 ) then TimeMinute4 := "0" || TimeMinute4; endif;
|
||||
TimeSplit4 := TimeHour4 ||":"|| TimeMinute4;
|
||||
|
||||
// Date/Time plus 8 hours
|
||||
DateMonth8 := month of DateTimePlusEight ;
|
||||
if ( length ( DateMonth8 as string ) = 1 ) then DateMonth8 := "0" || DateMonth8; endif;
|
||||
DateDay8 := day of DateTimePlusEight;
|
||||
if ( length ( DateDay8 as string ) = 1 ) then DateDay8 := "0" || DateDay8; endif;
|
||||
DateYear8 := year of DateTimePlusEight;
|
||||
DateSplit8 := DateMonth8 ||"-"|| DateDay8 ||"-"|| DateYear8;
|
||||
|
||||
TimeHour8 := hour of DateTimePlusEight;
|
||||
if ( length ( TimeHour8 as string ) = 1 ) then TimeHour8 := "0" || TimeHour8; endif;
|
||||
TimeHour8Plus := hour of DateTimePlusEightPlus;
|
||||
if ( length ( TimeHour8Plus as string ) = 1 ) then TimeHour8Plus := "0" || TimeHour8Plus; endif;
|
||||
TimeMinute8 := minute of DateTimePlusEight;
|
||||
if ( length ( TimeMinute8 as string ) = 1 ) then TimeMinute8 := "0" || TimeMinute8; endif;
|
||||
TimeSplit8 := TimeHour8 ||":"|| TimeMinute8;
|
||||
|
||||
// Date/Time plus 12 hours
|
||||
DateMonth12 := month of DateTimePlusTwelve ;
|
||||
if ( length ( DateMonth12 as string ) = 1 ) then DateMonth12 := "0" || DateMonth12; endif;
|
||||
DateDay12 := day of DateTimePlusTwelve;
|
||||
if ( length ( DateDay12 as string ) = 1 ) then DateDay12 := "0" || DateDay12; endif;
|
||||
DateYear12 := year of DateTimePlusTwelve;
|
||||
DateSplit12 := DateMonth12 ||"-"|| DateDay12 ||"-"|| DateYear12;
|
||||
|
||||
TimeHour12 := hour of DateTimePlusTwelve;
|
||||
if ( length ( TimeHour12 as string ) = 1 ) then TimeHour12 := "0" || TimeHour12; endif;
|
||||
TimeHour12Plus := hour of DateTimePlusTwelvePlus;
|
||||
if ( length ( TimeHour12Plus as string ) = 1 ) then TimeHour12Plus := "0" || TimeHour12Plus; endif;
|
||||
TimeMinute12 := minute of DateTimePlusTwelve;
|
||||
if ( length ( TimeMinute12 as string ) = 1 ) then TimeMinute12 := "0" || TimeMinute12; endif;
|
||||
TimeSplit12 := TimeHour12 ||":"|| TimeMinute12;
|
||||
//bb
|
||||
|
||||
//On Form Open Event, disable the checkbox contained in the Pharmacy Medication Guidelines Field
|
||||
if (CallingEvent = "FormOpen") then
|
||||
Pharm_Med_Guidelines_List.IsReadOnly := (True);
|
||||
endif;
|
||||
|
||||
//On Field Change event, control the ability to select group of medications contained in the
|
||||
//Group B Strep Medications Grid
|
||||
if (CallingEvent = "FieldChange") then
|
||||
|
||||
if (CallingField = "MultiOrderGrid|45") then
|
||||
//List of Penicillin medications selected
|
||||
FirstThree := (GroupB_Strep_List.IsSelected[1],
|
||||
GroupB_Strep_list.IsSelected[2],
|
||||
GroupB_Strep_List.IsSelected[3]);
|
||||
//List of Cefazolin medications selected
|
||||
NextTwo := (GroupB_Strep_List.IsSelected[4],
|
||||
GroupB_Strep_List.IsSelected[5]);
|
||||
|
||||
LastTwo := (GroupB_Strep_List.IsSelected[6],
|
||||
GroupB_Strep_List.IsSelected[7]);
|
||||
|
||||
//Determines the number of penicillin medications selected based on list defined above
|
||||
FirstThreeTrueCount := count (FirstThree WHERE FirstThree = true);
|
||||
//Determines the number of cefazolin medications selected based on list defined above
|
||||
NextTwoTrueCount := count (NextTwo WHERE NextTwo = true);
|
||||
//Determines if the vancomycin medication is selected
|
||||
LastTwoTrueCount := count (LastTwo WHERE LastTwo = true);
|
||||
//Count of medications in the Group B Strep Medications Grid that are set to Read Only
|
||||
ReadOnlyTrueCount := count (GroupB_Strep_List.IsReadOnly WHERE GroupB_Strep_List.IsReadOnly = true);
|
||||
|
||||
//Initialize variables used to set the IsReadOnly and IsSelected property on medications in the grid
|
||||
NewReadOnly := ();
|
||||
NewSelected := ();
|
||||
//Begin loop through Group B Strep Medications grid
|
||||
for k in 1 seqto (count GroupB_Strep_List.IsSelected) do
|
||||
|
||||
//If 1 penicillin medication is selected, then select all 3 penicillins and set all other medications in grid
|
||||
//to Read Only
|
||||
if (FirstThreeTrueCount = 1) then
|
||||
if (k <= 3) then
|
||||
NewReadOnly := NewReadOnly, false;
|
||||
NewSelected := NewSelected, true;
|
||||
else
|
||||
NewReadOnly := NewReadOnly, true;
|
||||
NewSelected := NewSelected, false;
|
||||
|
||||
//BB
|
||||
//when Penicillin is selected add 4 hours to additional scheduled Penicillin order admin time [BB]
|
||||
//Adjust for Administration time calculated for < 45 minutes is initiating hour, >= 45 minutes is next hour [BB]
|
||||
GroupB_Strep_Pen_ReqDate.value := DateSplit4 ;
|
||||
Pen_ReqTime_Val.ReqTimeCode := "Scheduled/Start Time";
|
||||
If MinuteTime >= 45 then
|
||||
Pen_ReqTime_Val.ReqTimeValue := TimeHour4Plus ||":00";
|
||||
else
|
||||
Pen_ReqTime_Val.ReqTimeValue := TimeHour4 ||":00";
|
||||
endif;
|
||||
//bb
|
||||
endif;
|
||||
|
||||
//If 2 pencillin medications are selected, we can safely assume user is attempting to unselect the penicillins
|
||||
//UnSelect all penicillin medications and reset the other medications in grid to NOT Read Only
|
||||
elseif (FirstThreeTrueCount = 2) then
|
||||
NewReadOnly := NewReadOnly, false;
|
||||
NewSelected := NewSelected, false;
|
||||
//If 1 cefazolin medication is selected and no other medications in the grid are set to Read Only,
|
||||
//we can safely assume user is attempting to select cefazolin
|
||||
//Select both cefazolin medications and set all other medications in the grid to Read Only
|
||||
elseif (NextTwoTrueCount = 1 AND ReadOnlyTrueCount = 0) then
|
||||
if (k >= 4 AND k < 6) then
|
||||
NewReadOnly := NewReadOnly, false;
|
||||
NewSelected := NewSelected, true;
|
||||
else
|
||||
NewReadOnly := NewReadOnly, true;
|
||||
NewSelected := NewSelected, false;
|
||||
|
||||
//BB
|
||||
//when Cefazolin is selected add 8 hours to additional scheduled Cefazolin order admin time [BB]
|
||||
//Adjust for Administration time calculated for < 45 minutes is initiating hour, >= 45 minutes is next hour [BB]
|
||||
GroupB_Strep_Cef_ReqDate.value := DateSplit8;
|
||||
Cef_ReqTime_Val.ReqTimeCode := "Scheduled/Start Time";
|
||||
If MinuteTime >= 45 then
|
||||
Cef_ReqTime_Val.ReqTimeValue := TimeHour8Plus ||":00";
|
||||
else
|
||||
Cef_ReqTime_Val.ReqTimeValue := TimeHour8 ||":00";
|
||||
endif;
|
||||
//bb
|
||||
endif;
|
||||
//If 1 cefazolin medication is selected and other medications in the grid are set to Read Only,
|
||||
//we can safely assume user is attempting to unselect cefazolin
|
||||
//Unselect both cefazolin medications and reset all other medications in the grid to NOT Read Only
|
||||
elseif (NextTwoTrueCount = 1 AND ReadOnlyTrueCount > 0) then
|
||||
NewReadOnly := NewReadOnly, false;
|
||||
NewSelected := NewSelected, false;
|
||||
//If vancomycin is selected, then set all other medications in the grid to Read Only
|
||||
elseif (LastTwoTrueCount = 1 AND ReadOnlyTrueCount = 0) then
|
||||
if (k = 6 OR k = 7) then
|
||||
NewReadOnly := NewReadOnly, false;
|
||||
NewSelected := NewSelected, true;
|
||||
else
|
||||
NewReadOnly := NewReadOnly, true;
|
||||
NewSelected := NewSelected, false;
|
||||
|
||||
//BB
|
||||
//when Vancomycin is selected add 12 hours to additional scheduled Vancomycin order admin time [BB]
|
||||
//Adjust for Administration time calculated for < 45 minutes is initiating hour, >= 45 minutes is next hour [BB]
|
||||
GroupB_Strep_Van_ReqDate.value := DateSplit12;
|
||||
Van_ReqTime_Val.ReqTimeCode := "Scheduled/Start Time";
|
||||
If MinuteTime >= 45 then
|
||||
Van_ReqTime_Val.ReqTimeValue := TimeHour12Plus ||":00";
|
||||
else
|
||||
Van_ReqTime_Val.ReqTimeValue := TimeHour12 ||":00";
|
||||
endif;
|
||||
//bb
|
||||
|
||||
endif;
|
||||
//If vancomycin is unselected, then reset all other medications in grid to NOT Read Only
|
||||
elseif (LastTwoTrueCount = 1 AND ReadOnlyTrueCount > 0) then
|
||||
NewReadOnly := NewReadOnly, false;
|
||||
NewSelected := NewSelected, false;
|
||||
endif;
|
||||
enddo;
|
||||
//Update Group B Strep List grid fields with the appropriate IsReadOnly and IsSelected properties.
|
||||
GroupB_Strep_List.IsReadOnly := NewReadOnly;
|
||||
GroupB_Strep_List.IsSelected := NewSelected;
|
||||
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:
|
||||
Reference in New Issue
Block a user