Initial Checking with all 820 MLMs
This commit is contained in:
278
MLMStripper/bin/Debug/FORM/FORM_GENERIC_DISPLAY.mlm
Normal file
278
MLMStripper/bin/Debug/FORM/FORM_GENERIC_DISPLAY.mlm
Normal file
@@ -0,0 +1,278 @@
|
||||
maintenance:
|
||||
|
||||
title: Ordering Conditional Display field;;
|
||||
mlmname: FORM_GENERIC_Display;;
|
||||
arden: version 2;;
|
||||
version: 4.50;;
|
||||
institution: St Clair Hospital;;
|
||||
author: Claudia Benson, Claudia.Benson@stclair.org, (412) 942-1307;;
|
||||
specialist: Eclipsys Corporation;;
|
||||
date: 2006-10-11;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose: Based on a value provided in one field, make another field DISPLAY.
|
||||
;;
|
||||
explanation: This generic MLM can be called from several order forms:
|
||||
- Resp PFT
|
||||
- (others?)
|
||||
|
||||
If a particular value is placed in a certain field of a certain form, specified by
|
||||
the configuration list below, then another field, also in the list, will be made to
|
||||
display.
|
||||
|
||||
Trigger on formopen or fieldchange.
|
||||
|
||||
Rules:
|
||||
Use lists of
|
||||
forms,
|
||||
fields to test on the form,
|
||||
values to test for,
|
||||
field to make visible (if the value in the other field is present)
|
||||
Value (T or F) of the read-only status of the visible field.
|
||||
|
||||
change history
|
||||
|
||||
05.22.2008 RS Get ED Status Board location
|
||||
05.28.2008 DW Forced Xopenex error box if dose missing
|
||||
01.20.2015 TMS Added new form map for "RESP Spont Aerosol" CSR 32176
|
||||
04.26.2016 TMS Add call on form Open to Medication Order Management MLM CSR 33465
|
||||
07.26.2017 AnkitM CSR 33723: Changed word references from {{{SINGLE-QUOTE}}}Xopenex{{{SINGLE-QUOTE}}} to {{{SINGLE-QUOTE}}}Levalbuterol{{{SINGLE-QUOTE}}}
|
||||
|
||||
;;
|
||||
keywords: Called MLMs, Form fields, generic, field test, visible
|
||||
;;
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
/***********************Make Changes To Spelling And Flags In This Section************************/
|
||||
|
||||
//NOTE: THE RELATIVE ORDER OF ITEMS MUST BE MAINTAINED WITHIN LISTS!!!
|
||||
//MUST HAVE THE FOLLOWING ORDER FOR EACH ELEMENT ITEM:
|
||||
//"FORM_NAME|FIELD_NAME_TO_TEST|VALUEs_TO_TEST_FOR|FIELD_TO_MAKE_VISIBLE|T_or_F(READ_ONLY)"
|
||||
|
||||
form_map_list :=
|
||||
("Resp PFT|Resp PFT Reason For Test|Pre-Operative|Resp PFT_Surgery Date|F"
|
||||
,"Resp PFT|Resp PFT Reason For Test|Pre-Operative|Resp PFT_Surgery Time|F"
|
||||
,"RESP SA IPPB|IsPRN|TRUE|RESP_PRN Reasons|F"
|
||||
,"RESP SA IPPB|RESP_Xopenex|Use Therapeutic Substitute|RESP_Xopenex Substitutes Label|T"
|
||||
,"RESP SA IPPB|RESP_Xopenex|Use Therapeutic Substitute|RESP_Xopenex Substitute Label 2|T"
|
||||
,"RESP SA IPPB|RESP_Xopenex|Per Physician Order: Do NOT Substitute|RESP_Xopenex 0.63mg/3ml NSS|F"
|
||||
,"RESP SA IPPB|RESP_Xopenex|Per Physician Order: Do NOT Substitute|RESP_Xopenex 1.25mg/3ml NSS|F"
|
||||
|
||||
,"RESP Spont Aerosol|IsPRN|TRUE|RESP_PRN Reasons|F"
|
||||
,"RESP Spont Aerosol|RESP_Xopenex|Use Therapeutic Substitute|RESP_Xopenex Substitutes Label|T"
|
||||
,"RESP Spont Aerosol|RESP_Xopenex|Use Therapeutic Substitute|RESP_Xopenex Substitute Label 2|T"
|
||||
,"RESP Spont Aerosol|RESP_Xopenex|Per Physician Order: Do NOT Substitute|RESP_Xopenex 0.63mg/3ml NSS|F"
|
||||
,"RESP Spont Aerosol|RESP_Xopenex|Per Physician Order: Do NOT Substitute|RESP_Xopenex 1.25mg/3ml NSS|F"
|
||||
|
||||
,"YOUR_FORM_NAME_HERE|YOUR_TEST_FIELD_HERE|VALID_VAL1,VALID_VAL2|DISPLAY_FIELD_HERE|F_or_T"
|
||||
);
|
||||
|
||||
/**************************************************************************************JAB********/
|
||||
|
||||
// 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;
|
||||
|
||||
//Initialize MLM pointers:
|
||||
str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}};
|
||||
chk_overdue_time := MLM {{{SINGLE-QUOTE}}}overdue_req_time{{{SINGLE-QUOTE}}};
|
||||
|
||||
// Initialize error message
|
||||
error_message:="";
|
||||
|
||||
|
||||
// Assigns fields passed in the Form object to the Field object
|
||||
field_list:= this_form.fields;
|
||||
|
||||
CallingForm := this_form.name;
|
||||
CallingEvent := this_communication.CallingEvent;
|
||||
CallingField := this_communication.CallingFieldName;
|
||||
Visit_Guid := this_communication.ClientVisitGuid;
|
||||
|
||||
// 05/22/08 RS Added per ED CPOE Beeper additions
|
||||
If (CallingForm = "RESP SA IPPB" or CallingForm = "RESP Spont Aerosol") then
|
||||
If (CallingEvent = "FormOpen") then
|
||||
EDLoc :=last of (field_list
|
||||
where field_list.DataItemName = "ED Location" );
|
||||
|
||||
Temp := read last {"Select el.EDDisplayName "
|
||||
|| " from sxaedlocation as el "
|
||||
|| " join sxaedboard as eb "
|
||||
|| " on eb.EdLocationguid = el.locationguid "
|
||||
|| " and eb.clientvisitguid = " || SQL(Visit_Guid)
|
||||
|| " and eb.active =1 "};
|
||||
|
||||
EDLoc.Value := Temp;
|
||||
|
||||
elseif (CallingEvent = "FormClose") then
|
||||
|
||||
Levalbuterolquestion := last of (field_list where field_list.DataItemName = "RESP_Xopenex" );
|
||||
Levalbuterol063 := last of (field_list where field_list.DataItemName = "RESP_Xopenex 0.63mg/3ml NSS" );
|
||||
Levalbuterol125 := last of (field_list where field_list.DataItemName = "RESP_Xopenex 1.25mg/3ml NSS" );
|
||||
|
||||
If Levalbuterolquestion.value = "Per Physician Order: Do NOT Substitute" and (Levalbuterol063.value = False and Levalbuterol125.value = False) then
|
||||
this_communication.Message :=
|
||||
"callingform = "|| callingform
|
||||
|| "\nCallingEvent = " || CallingEvent;
|
||||
this_communication.Message := "You must select a Levalbuterol dose";
|
||||
this_communication.MessageType := "Error";
|
||||
endif;
|
||||
endif;
|
||||
endif;
|
||||
|
||||
|
||||
if called_by_editor then
|
||||
CallingForm := "LAB Ser Nsg Col_Ser1";
|
||||
CallingEvent := "FieldChange";
|
||||
CallingField := "LAB_M_VO_OBR15_SpecType_Ser1";
|
||||
endif;
|
||||
|
||||
for i in 1 seqto count form_map_list do
|
||||
// initialize vars:
|
||||
visible_field := null;
|
||||
trigger_field := null;
|
||||
|
||||
// parse the form mapper:
|
||||
form_element_list := call str_parse with form_map_list[i], "|";
|
||||
test_form_name := form_element_list[1]; //Lookup form name from map list
|
||||
|
||||
// Test for proper form
|
||||
if CallingForm = test_form_name then
|
||||
|
||||
test_visible_field := form_element_list[4]; //Lookup visible field from map list
|
||||
test_vis_field_r_o := form_element_list[5]; //Lookup read-only status from map list
|
||||
|
||||
visible_field := first of
|
||||
(field_list where field_list.DataItemName = test_visible_field);
|
||||
|
||||
// Set open form defaults
|
||||
if exists visible_field then
|
||||
|
||||
test_field := form_element_list[2]; //Lookup test field from map list
|
||||
trigger_field := first of
|
||||
(field_list where field_list.DataItemName = test_field);
|
||||
|
||||
//check for {{{SINGLE-QUOTE}}}additional info{{{SINGLE-QUOTE}}} fields
|
||||
if visible_field.dataitemname = "LAB_SREQ_VO_DI_MicroDescript" then
|
||||
Right_box := last of (field_list
|
||||
where field_list.DataItemName = "LAB_SREQ_LO_CB_Micro_Right" );
|
||||
Superficial_box := last of (field_list
|
||||
where field_list.DataItemName = "LAB_SREQ_LO_CB_Micro_Superficial" );
|
||||
Left_box := last of (field_list
|
||||
where field_list.DataItemName = "LAB_SREQ_LO_CB_Micro_Left" );
|
||||
Deep_box := last of (field_list
|
||||
where field_list.DataItemName = "LAB_SREQ_LO_CB_Micro_Deep" );
|
||||
endif;
|
||||
// Test for proper field
|
||||
if exists trigger_field then
|
||||
//Lookup list of valid values for the test field
|
||||
test_val_list := call str_parse with form_element_list[3], ",";
|
||||
|
||||
//Check for time field
|
||||
|
||||
if trigger_field.dataitemname = "RequestedTime"
|
||||
and "overdue" is in test_val_list then
|
||||
if exists trigger_field.value.reqtimevalue then
|
||||
time_type := "scheduled";
|
||||
time_val := trigger_field.value.reqtimevalue;
|
||||
else
|
||||
time_type := "coded";
|
||||
time_val := trigger_field.value.reqtimecode;
|
||||
endif;
|
||||
// check for overdue time
|
||||
time_is_overdue := call chk_overdue_time
|
||||
with time_val, time_type;
|
||||
endif;
|
||||
|
||||
if (trigger_field.value as string) is in test_val_list or time_is_overdue then
|
||||
// Make the field visible (but NOT Manditory!)
|
||||
visible_field.control_visible := True;
|
||||
if test_vis_field_r_o = "F" then
|
||||
visible_field.control_read_only := False;
|
||||
else
|
||||
visible_field.control_read_only := True;
|
||||
endif;
|
||||
|
||||
// make {{{SINGLE-QUOTE}}}additional info{{{SINGLE-QUOTE}}} settings writable
|
||||
if visible_field.dataitemname = "LAB_SREQ_VO_DI_MicroDescript" then
|
||||
Right_box.control_visible := True;
|
||||
Superficial_box.control_visible := True;
|
||||
Left_box.control_visible := True;
|
||||
Deep_box.control_visible := True;
|
||||
if test_vis_field_r_o = "F" then
|
||||
Right_box.control_read_only := False;
|
||||
Superficial_box.control_read_only := False;
|
||||
Left_box.control_read_only := False;
|
||||
Deep_box.control_read_only := False;
|
||||
else
|
||||
|
||||
Superficial_box.control_read_only := True;
|
||||
Left_box.control_read_only := True;
|
||||
Deep_box.control_read_only := True;
|
||||
endif;
|
||||
endif;
|
||||
|
||||
// FOR DEBUGGING PURPOSES: display a message to the user
|
||||
/* this_communication.Message :=
|
||||
"callingform = "|| callingform
|
||||
|| "\nCallingEvent = " || CallingEvent
|
||||
|| "\ntest_form_name = " || test_form_name
|
||||
|| "\ntest_field = " || test_field
|
||||
|| "\ntest_visible_field = " || test_visible_field
|
||||
|| "\ntrigger_field = " || trigger_field.dataitemname
|
||||
|| "\nvisible_field = " || visible_field.dataitemname
|
||||
|| "\ntest_val_list = " || test_val_list;
|
||||
this_communication.MessageType := "Informational";
|
||||
*/
|
||||
else
|
||||
visible_field.control_visible := False;
|
||||
if test_vis_field_r_o = "F" then
|
||||
// visible_field.control_read_only := True;
|
||||
visible_field.value := null;
|
||||
endif;
|
||||
|
||||
if visible_field.dataitemname = "LAB_SREQ_VO_DI_MicroDescript" then
|
||||
// set all {{{SINGLE-QUOTE}}}additional info{{{SINGLE-QUOTE}}} boxes to read-only
|
||||
Right_box.control_visible := False;
|
||||
Superficial_box.control_visible := False;
|
||||
Left_box.control_visible := False;
|
||||
Deep_box.control_visible := False;
|
||||
Right_box.value := null;
|
||||
Superficial_box.value := null;
|
||||
Left_box.value := null;
|
||||
Deep_box.value := null;
|
||||
|
||||
endif; // visible_field.dataitemname = "LAB_SREQ_VO_DI_MicroDescript"
|
||||
|
||||
endif; // (trigger_field.value as string) is in test_val_list
|
||||
|
||||
endif; // exists trigger_field
|
||||
|
||||
endif; // exists visible_field
|
||||
|
||||
endif; // CallingForm = test_form_name
|
||||
|
||||
enddo; // for i in 1 seqto count form_map_list
|
||||
|
||||
Med_Order_Mgt := mlm {{{SINGLE-QUOTE}}}FORM_Rx_Medication_Retrieval{{{SINGLE-QUOTE}}};
|
||||
(this_communication, this_form) := call Med_Order_Mgt with this_communication, this_form, client_info_obj;
|
||||
|
||||
;;
|
||||
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