maintenance: title: Configure NonFormulary Meds OEF;; mlmname: FORM_NonFormulary_Meds;; arden: version 2;; version: 4.50;; institution: St. Clair Hospital ;; author: ;; specialist: Josue Lopez, Eclipsys Corporation;; date: 2007-01-16;; validation: testing;; library: purpose: to set visible and mandatory characteristics on the Non-Formulary Order Entry Form. ;; explanation: On the FormOpen event, this MLM will 1. Set order entry fields to hidden and non-mandatory 2. Display an advisory message about the usage of the form. On the FieldChange event, the three checkboxes designating the type of order will be used to set the visibility and mandatory settings for the rest of the Order Entry Form. The field characteristics will be set as listed below for each of the checkboxes: Form Field Open Field Change ------- PRX_Checkbox1 (Med/Inj) v x PRX_Checkbox3 (IV Addv) v x PRX_Checkbox2 (IV Fluid) v x PRX_NOTECOMMENT0 h v,m v,m v,m PRX_BRANDNAME h v,m v,m v,m AdminInstructions h v v v BaseSolution h v v h IVAdditive h h v v DosageLow h v,m h h DosageHigh h v h h OrderIVRate h h v,m v,m Uom h v,m h v,m OrderRouteCode h v,m v,m v,m FrequencyCode h v,m h h IsPRN h v h h PRX_PRNCONDITION h ? h h StopAfter h v v v RequestedDate h v v v RequestedTime h v v v StopDate h v v v StopTime h v v v (No change to fields below: ) PRX_DRUGIDCODE h h h h PRX_WORx_Route h h h h FormCode h h h h IsScheduleFromWorklist h h h h 01/22/07 change status of base solution field to be visible on IV additive choice. MLM Assigned to: Order Entry Form: PRX_NonFormulary Calling Event: FormOpen Calling Event: FieldChange Calling Field: PRX_Checkbox1 PRX_Checkbox3 PRX_Checkbox2 ;; keywords: Form-Called MLM, Form fields,; ;; knowledge: type: data-driven;; data: /*-------------------------------------------------------------------------*/ /* This MLM receives three arguments from the system, of types shown below */ /*-------------------------------------------------------------------------*/ (this_comm, // Communication type object this_form, // Form type object client_obj // Arden ClientInfo type object ) := argument; /************* Make Changes To Spelling And Flags In This Section *************/ /*------------------------------------*/ /* Set to true if a CDS log is needed */ /*------------------------------------*/ log_execution_info := false; /*-------------------------*/ /* set flags and variables */ /*-------------------------*/ opening_msg := "Use only for Medications or IV Fluids not found through " || "manual entry or Non Formulary order set.\n\n" || "Verify Medication availability with Pharmacy before " || "continuing with order."; /******************************************************************************/ /*--------------------------*/ /* set up testing variables */ /*--------------------------*/ if called_by_editor then visit_obj := read last {ClientVisit: THIS}; // client_obj := read last {ClientInfo: THIS}; endif; /*----------------------------------------------------*/ /* declare other MLMs that will be called by this one */ /*----------------------------------------------------*/ func_set_haz_med_warning := MLM {{{SINGLE-QUOTE}}}FORM_VALUE_IVF_IDCODE{{{SINGLE-QUOTE}}}; /*--------------------------*/ /* Initialize error message */ /*--------------------------*/ error_message:=""; /*----------------------------------------------------*/ /* get information from Communication object argument */ /*----------------------------------------------------*/ called_by := this_comm.CallingEvent; call_field := this_comm.CallingFieldName; if called_by_editor then client_guid := visit_obj.ClientGUID; visit_guid := visit_obj.GUID; else client_guid := this_comm.ClientGUID; visit_guid := this_comm.ClientVisitGUID; endif; /*-------------------------------------------------*/ /* Assign pointers to the Field list (a sub-object */ /* in the Form object) and to individual fields */ /*-------------------------------------------------*/ field_list := this_form.fields; NonFormMedInj_fld := first of (field_list where field_list.DataItemName = "PRX_Checkbox1"); if exist NonFormMedInj_fld then MedOrInj_val := NonFormMedInj_fld.Value; MedOrInj_lbl := NonFormMedInj_fld.Label; endif; NonFormIVAddv_fld := first of (field_list where field_list.DataItemName = "PRX_Checkbox3"); if exist NonFormIVAddv_fld then IVAddv_val := NonFormIVAddv_fld.Value; IVAddv_lbl := NonFormIVAddv_fld.Label; endif; NonFormIVFld_fld := first of (field_list where field_list.DataItemName = "PRX_Checkbox2"); if exist NonFormIVFld_fld then IVFld_val := NonFormIVFld_fld.Value; IVFld_lbl := NonFormIVFld_fld.Label; endif; chkbox_flds := ("PRX_Checkbox1", "PRX_Checkbox3", "PRX_Checkbox2"); chkbox_vals := (MedOrInj_val, IVAddv_val, IVFld_val); chkbox_lbls := (MedOrInj_lbl, IVAddv_lbl, IVFld_lbl); selected_nf_item := first of (chkbox_lbls where chkbox_vals); /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ /* assign pointers to subobjects as needed */ PRX_Note_fld := first of (field_list where field_list.DataItemName = "PRX_NOTECOMMENT0"); Medication_fld := first of (field_list where field_list.DataItemName = "PRX_BRANDNAME"); AddlInfo_fld := first of (field_list where field_list.DataItemName = "AdminInstructions"); Fluid_fld := first of (field_list where field_list.DataItemName = "BaseSolution"); if exist Fluid_fld then Fluid_dtls := Fluid_fld.Value; // Fluid detail fields: // NAME=null, // ITEMID=null, // DOSE=null, // UOM=null, // ORDERCATALOGMASTERITEMGUID=null endif; IVAdditive_fld := first of (field_list where field_list.DataItemName = "IVAdditive"); if exist IVAdditive_fld then IVAdditive_dtls := IVAdditive_fld.Value; // IVAdditive detail fields: note empty defaults to () // NAME=Abciximab-, // DOSE=500, // UOM=mg, // ORDERCATALOGMASTERITEMGUID=1000001805073001 endif; DoseLow_fld := first of (field_list where field_list.DataItemName = "DosageLow"); DoseMax_fld := first of (field_list where field_list.DataItemName = "DosageHigh"); IVRate_fld := first of (field_list where field_list.DataItemName = "OrderIVRate"); if exist IVRate_fld then IVRate_dtls := IVRate_fld.Value; // IVRate details fields: // AMOUNT=0, // UOM=null, // DISABLEUOM=false, // KVODISPLAYED=false, // ISKVO=false, // ALLOWKVORATE=false, // DEFAULTKVORATE=0, // MAXKVORATE=9999.900390625 endif; Units_fld := first of (field_list where field_list.DataItemName = "Uom"); Route_fld := first of (field_list where field_list.DataItemName = "OrderRouteCode"); Frequency_fld := first of (field_list where field_list.DataItemName = "FrequencyCode"); if exist Frequency_fld then Frequency_dtls := Frequency_fld.Value; // Frequency detail fields: // FREQUENCYSUMMARY=null, // FREQFROMTIME=0, // FREQTOTIME=0, // FREQUOM=null, // FREQEVENTMODIFIER=null, // FREQEVENTCODE=null, // FREQTIMES=null, // FREQWEEKLYDAYS=null, // FREQIRREGULARDTM=null endif; PRN_fld := first of (field_list where field_list.DataItemName = "IsPRN"); Reason_fld := first of (field_list where field_list.DataItemName = "PRX_PRNCONDITION"); StopAfter_fld := first of (field_list where field_list.DataItemName = "StopAfter"); if exist StopAfter_fld then StopAfter_dtls := StopAfter_fld.Value; // StopAfter detail fields: // NUMBER=0, // OPTION=null endif; StartDate_fld := first of (field_list where field_list.DataItemName = "RequestedDate"); StartTime_fld := first of (field_list where field_list.DataItemName = "RequestedTime"); if exist StartTime_fld then StartTime_dtls := StartTime_fld.Value; // StartTime detail fields: // REQTIMECODE=null, // REQTIMEVALUE=null, // REQTIMEUOM=null, // REQTIMEEVENTMODIFIER=null, // REQTIMEEVENTCODE=null endif; StopDate_fld := first of (field_list where field_list.DataItemName = "StopDate"); StopTime_fld := first of (field_list where field_list.DataItemName = "StopTime"); //01-25-07 RS Added for Interface Needs Worx_Route_fld := first of (field_list where field_list.DataItemName = "PRX_WORx_Route"); Omit_From_fld := first of (field_list where field_list.DataItemName = "PRX_OmitMessage"); WORx_Code_fld:= first of (field_list where field_list.DataItemName = "PRX_DRUGIDCODE"); /*----------------------------------------------*/ /* process form fields and settings on FormOpen */ /*----------------------------------------------*/ if called_by = "FormOpen" then /*---------------------------------------------*/ /* hide ALL data fields and make non-mandatory */ /*---------------------------------------------*/ PRX_Note_fld.Control_Visible := false; PRX_Note_fld.Control_Mandatory := false; Medication_fld.Control_Visible := false; Medication_fld.Control_Mandatory := false; AddlInfo_fld.Control_Visible := false; AddlInfo_fld.Control_Mandatory := false; Fluid_fld.Control_Visible := false; Fluid_fld.Control_Mandatory := false; IVAdditive_fld.Control_Visible := false; IVAdditive_fld.Control_Mandatory := false; DoseLow_fld.Control_Visible := false; DoseLow_fld.Control_Mandatory := false; DoseMax_fld.Control_Visible := false; DoseMax_fld.Control_Mandatory := false; IVRate_fld.Control_Visible := false; IVRate_fld.Control_Mandatory := false; Units_fld.Control_Visible := false; Units_fld.Control_Mandatory := false; Route_fld.Control_Visible := false; Route_fld.Control_Mandatory := false; Frequency_fld.Control_Visible := false; Frequency_fld.Control_Mandatory := false; PRN_fld.Control_Visible := false; Reason_fld.Control_Mandatory := false; StopAfter_fld.Control_Visible := false; StopAfter_fld.Control_Mandatory := false; StartDate_fld.Control_Visible := false; StartDate_fld.Control_Mandatory := false; StartTime_fld.Control_Visible := false; StartTime_fld.Control_Mandatory := false; StopDate_fld.Control_Visible := false; StopDate_fld.Control_Mandatory := false; StopTime_fld.Control_Visible := false; StopTime_fld.Control_Mandatory := false; this_comm.Message := opening_msg; this_comm.MessageType := "Informational"; /*-------------------------------------------------*/ /* process form fields and settings on FieldChange */ /*-------------------------------------------------*/ elseif called_by = "FieldChange" then if call_field is in chkbox_flds then /*--------------------------------*/ /* blank out and hide data fields */ /* if all checkboxes are blank */ /*--------------------------------*/ if not any chkbox_vals then /* make all checkboxes available */ NonFormMedInj_fld.Control_Read_Only := false; NonFormIVAddv_fld.Control_Read_Only := false; NonFormIVFld_fld.Control_Read_Only := false; /* change banner message */ this_comm.Message := "Please mark one of the checkboxes"; this_comm.MessageType := "Banner"; /* blank out and hide all data fields and make non-mandatory */ PRX_Note_fld.Control_Visible := false; PRX_Note_fld.Control_Mandatory := false; Medication_fld.Control_Visible := false; Medication_fld.Control_Mandatory := false; Medication_fld.Value := null; AddlInfo_fld.Control_Visible := false; AddlInfo_fld.Control_Mandatory := false; AddlInfo_fld.Value := null; Fluid_fld.Control_Visible := false; Fluid_fld.Control_Mandatory := false; if exist Fluid_dtls then Fluid_dtls.NAME := null; Fluid_dtls.ITEMID := null; Fluid_dtls.DOSE := null; Fluid_dtls.UOM := null; Fluid_dtls.ORDERCATALOGMASTERITEMGUID := null; endif; IVAdditive_fld.Control_Visible := false; IVAdditive_fld.Control_Mandatory := false; if exist IVAdditive_dtls then for ea_addv in IVAdditive_dtls do ea_addv.NAME := null; ea_addv.DOSE := 0; ea_addv.UOM := null; ea_addv.ORDERCATALOGMASTERITEMGUID := null; enddo; endif; (this_comm, this_form) := CALL func_set_haz_med_warning with this_comm, this_form, client_obj; DoseLow_fld.Control_Visible := false; DoseLow_fld.Control_Mandatory := false; DoseLow_fld.Value := ""; DoseMax_fld.Control_Visible := false; DoseMax_fld.Control_Mandatory := false; DoseMax_fld.Value := null; IVRate_fld.Control_Visible := false; IVRate_fld.Control_Mandatory := false; if exist IVRate_dtls then IVRate_dtls.AMOUNT := 0; IVRate_dtls.UOM := null; IVRate_dtls.DISABLEUOM := false; IVRate_dtls.KVODISPLAYED := false; IVRate_dtls.ISKVO := false; IVRate_dtls.ALLOWKVORATE := false; IVRate_dtls.DEFAULTKVORATE := 0; IVRate_dtls.MAXKVORATE := 9999.900390625; endif; Units_fld.Control_Visible := false; Units_fld.Control_Mandatory := false; Units_fld.Value := null; Route_fld.Control_Visible := false; Route_fld.Control_Mandatory := false; Route_fld.Value := null; Frequency_fld.Control_Visible := false; Frequency_fld.Control_Mandatory := false; if exist Frequency_dtls then Frequency_dtls.FREQUENCYSUMMARY := null; Frequency_dtls.FREQFROMTIME := 0; Frequency_dtls.FREQTOTIME := 0; Frequency_dtls.FREQUOM := null; Frequency_dtls.FREQEVENTMODIFIER := null; Frequency_dtls.FREQEVENTCODE := null; Frequency_dtls.FREQTIMES := null; Frequency_dtls.FREQWEEKLYDAYS := null; Frequency_dtls.FREQIRREGULARDTM := null; endif; PRN_fld.Control_Visible := false; if PRN_fld.Value then PRN_fld.Value := false; endif; Reason_fld.Control_Visible := false; Reason_fld.Control_Mandatory := false; Reason_fld.Value := null; StopAfter_fld.Control_Visible := false; StopAfter_fld.Control_Mandatory := false; if exist StopAfter_dtls then StopAfter_dtls.NUMBER := 0; StopAfter_dtls.OPTION := null; endif; StartDate_fld.Control_Visible := false; StartDate_fld.Control_Mandatory := false; StartDate_fld.Value := null; StartTime_fld.Control_Visible := false; StartTime_fld.Control_Mandatory := false; if exist StartTime_dtls then StartTime_dtls.REQTIMECODE := null; StartTime_dtls.REQTIMEVALUE := null; StartTime_dtls.REQTIMEUOM := null; StartTime_dtls.REQTIMEEVENTMODIFIER := null; StartTime_dtls.REQTIMEEVENTCODE := null; endif; StopDate_fld.Control_Visible := false; StopDate_fld.Control_Mandatory := false; StopDate_fld.Value := null; StopTime_fld.Control_Visible := false; StopTime_fld.Control_Mandatory := false; StopTime_fld.Value := null; //01-25-07 RS Added for Interface Needs WORx_Code_fld.value :="06292"; /*-----------------------------*/ /* choice made, process fields */ /*-----------------------------*/ else /*--------------------------------------*/ /* settings common to all three choices */ /*--------------------------------------*/ /* format and show banner message */ this_comm.Message := "Processing " || selected_nf_item ; this_comm.MessageType := "Banner"; /* field visibility and mandatory settings */ PRX_Note_fld.Control_Visible := true; PRX_Note_fld.Control_Mandatory := true; Medication_fld.Control_Visible := true; Medication_fld.Control_Mandatory := true; AddlInfo_fld.Control_Visible := true; Route_fld.Control_Visible := true; Route_fld.Control_Mandatory := true; StopAfter_fld.Control_Visible := true; StartDate_fld.Control_Visible := true; StartTime_fld.Control_Visible := true; StopDate_fld.Control_Visible := true; StopTime_fld.Control_Visible := true; /*---------------------------------------*/ /* visibility and mandatory settings for */ /* "Non Formulary Med/Inj" choice */ /*---------------------------------------*/ if MedOrInj_val then NonFormMedInj_fld.Control_Read_Only := false; NonFormIVAddv_fld.Control_Read_Only := true; NonFormIVFld_fld.Control_Read_Only := true; //01-25-07 RS Added for Interface Needs Worx_Route_fld.Value := "PO"; WORx_Code_fld.value :="06292"; Omit_From_fld.Value := ""; Fluid_fld.Control_Visible := true; DoseLow_fld.Control_Visible := true; DoseLow_fld.Control_Mandatory := true; DoseMax_fld.Control_Visible := true; Units_fld.Control_Visible := true; Units_fld.Control_Mandatory := true; Frequency_fld.Control_Visible := true; Frequency_fld.Control_Mandatory := true; PRN_fld.Control_Visible := true; /* Reason visibility and mandatory settings set by other MLM */ // Reason_fld.Control_Visible := false; // Reason_fld.Control_Mandatory := false; /*---------------------------------------*/ /* visibility and mandatory settings for */ /* "Non Formulary IV Additive" choice */ /*---------------------------------------*/ elseif IVAddv_val then NonFormMedInj_fld.Control_Read_Only := true; NonFormIVAddv_fld.Control_Read_Only := false; NonFormIVFld_fld.Control_Read_Only := true; IVAdditive_fld.Control_Visible := true; //01-25-07 RS Added for Interface Needs Worx_Route_fld.Value := "IV"; WORx_Code_fld.value :="06292"; Omit_From_fld.Value := "VERISCAN"; Fluid_fld.Control_Visible := true; IVRate_fld.Control_Visible := true; IVRate_fld.Control_Mandatory := true; Route_fld.Control_Visible := true; Route_fld.Control_Mandatory := true; /*---------------------------------------*/ /* visibility and mandatory settings for */ /* "Non Formulary IV Fluid" choice */ /*---------------------------------------*/ elseif IVFld_val then NonFormMedInj_fld.Control_Read_Only := true; NonFormIVAddv_fld.Control_Read_Only := true; NonFormIVFld_fld.Control_Read_Only := false; IVAdditive_fld.Control_Visible := true; //01-25-07 RS Added for Interface Needs Worx_Route_fld.Value := "IV"; WORx_Code_fld.value :="06292"; Omit_From_fld.Value := "VERISCAN"; IVRate_fld.Control_Visible := true; IVRate_fld.Control_Mandatory := true; Units_fld.Control_Visible := true; Units_fld.Control_Mandatory := true; endif; // checkbox values ... endif; // not any chkbox_vals endif; // call_field is in chkbox_flds //01-25-07 RS Added on close call elseif called_by = "FormClose" then If (NonFormMedInj_fld.Value = False) and (NonFormIVAddv_fld.value=False) and (NonFormIVFld_fld.value=False) then this_comm.DisplayForm := "Yes"; this_comm.Message := "You must select one of the three checkboxes to proceed "; this_comm.MessageType := "Error"; endif; // checkbox values endif; // called_by = ... ;; evoke: // No evoke statement ;; logic: conclude true; // always, to return modified objects ;; action: /*--------------------------------------------------------------*/ /* return communication_type and form_type parameters to system */ /*--------------------------------------------------------------*/ return this_comm, this_form; ;; end: