Files
St.Clair/MLMStripper/bin/Debug/FORM/FORM_SET_FBC_CHARGES.mlm

181 lines
7.2 KiB
Plaintext

maintenance:
title: Selected/de-select chaars & item supply orders on Order Sets;;
mlmname: FORM_Set_FBC_Charges;;
arden: version 2;;
version: 5.50;;
institution: St Clair FBC;;
author: Maria Pest, Allscripts ext 7443;;
specialist: Shawn Head, Allscripts ext 7468;;
date: 2012-03-16;;
validation: testing;;
library:
purpose: Used to auto select/de-select charges and/or Item supply orders
when the opposite is checked/unchecked. used on the FBC Charges (mother) order set
;;
explanation: This MLM is called from the FBC Charges (Mother) Order set
Change history
03.15.2012 STH Copied FORM_Set_Labs_Deselected to create this MLM as a net-new MLM on 3.15.2012
;;
keywords: Called MLMs, FBC, FBC charges, FBC charges (mother)
;;
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 ONLY******************************************************/
/* Set to true if a decision.log is needed.*/
log_execution_info := FALSE;
//identifies the SCM form item that will need to trigger the MLM. e.g. items using MultiOrderCheckBox(3) will be MultiOrderCheckBox|3
//callingformitem[1] (in this MLM its MultiOrderCheckBox|3) will match up to items listed in itemsgrp1
//callingformitem[2] (in this MLM its MultiOrderCheckBox|4) will match up with itemsgrp2
callingformitem := ("MultiOrderCheckBox|3","MultiOrderCheckBox|4"); //DO NOT add more than 2 MultiOrder items in this section as this will cause unexpected results.
//if an item from itemsgrp1 is selected it will auto select/deselect the item associated with the cooresponding item in itemsgrp2.
//e.g. if Chg 0015 Straight Catheter Insertion is selected/deselected then Chg 4000 Straight Cath Urine 15Fr will be selected/deselected automatically
itemsgrp1 := ("Chg 4000 Straight Cath Urine 15Fr" //item1
,"Chg 4001 Indwelling Cath Urine 16Fr"); //item2
//,""); //item4
//,""); //item5
//,""); //item6
//,""); //item7
//,""); //item8
//,""); //item9
//,""); //item10
itemsgrp2 := ("Chg 0015 Straight Catheter Insertion" //item1
,"Chg 0026 Foley Insertion"); //item2
//,""); //item4
//,""); //item5
//,""); //item6
//,""); //item7
//,""); //item8
//,""); //item9
//,""); //item10
/**********************END of Make Changes To Spelling And Flags In This Section ONLY*******************************************/
// Initialize error message
error_message:="";
/*****************************below is all the code pulled from FORM_Set_Labs_Deselected******************/
// Assigns fields passed in the Form object to the Field object
field_list:= this_form.fields;
CallingEvent := this_communication.CallingEvent;
CallingField := this_communication.CallingFieldName;
//define item lists that will be used in this MLM
Grid_itemlist := ();
Grid_itemcheck := ();
update_itemlist := ();
update_itemcheck := ();
//Get the multi order grid check box value
//check to make sure the calling item from the form is configured to trigger this MLM
if CallingField is in callingformitem then
//identify the "Control_MultiFieldOccNum" associated with the multiorder grid calling the MLM. e.g (MultiOrderGrid(3) will return 3 in mfon
callfieldlgth := length of CallingField;
findpipe := FIND "|" IN STRING CallingField;
itemctlenght := callfieldlgth - findpipe;
itemstartpos := findpipe + 1;
mfon := substring itemctlenght characters starting at itemstartpos from CallingField;
//get the list of items in the MultiOrder field that called the MLM
Grid_itemflds := last of (field_list where field_list.DataItemName = "MultiOrderCheckBox"
and field_List.Control_MultiFieldOccNum = (mfon as number));
Grid_itemlist := Grid_itemflds.Value;
Grid_itemcheck := Grid_itemlist.IsSelected;
//identify the "Control_MultiFieldOccNum" associated with the multiorder grid needing updated. e.g. (MultiOrderGrid(4) will return 4 in mfonupdate
updateitemname := last of (callingformitem where callingformitem <> CallingField);
updatefieldlgth := length of updateitemname;
updatepipe := find "|" in string updateitemname;
updatectlength := updatefieldlgth - updatepipe;
updatestartpos := updatepipe + 1;
mfonupdate := substring updatectlength characters starting at updatestartpos from updateitemname;
//get the list of items in the MultiOrder field that will need updated based on item selection
update_itemflds := last of (field_list where field_list.DataItemName = "MultiOrderCheckBox"
and field_list.Control_MultiFieldOccNum = (mfonupdate as number));
update_itemlist := update_itemflds.Value;
update_itemcheck := update_itemflds.IsSelected;
//set the callingitems and udpateitems equal to the proper itemsgrp defined in the edit sections based on the calling field.
//Currently this MLM is only configured to handle 2 objects a calling field and an update field which is why you will find a note
//in the edit section that states "DO NOT add more than 2 MultiOrder items in this section as this will cause unexpected results."
if CallingField = callingformitem[1] then
callingitems := itemsgrp1;
updateitems := itemsgrp2;
else
callingitems := itemsgrp2;
updateitems := itemsgrp1;
endif;
//big old for loop. Basically looping through all items in the calling field (MultiOrderCheckBox in this MLM)
//this for loop will check the each item in the calling field against the items configured in edit sections to verify
//if the item(s) selected in the calling field need to update a field in the update field section. If it finds that
//an item in the calling event is configured in the edit section to "trigger" an update to the update field section
//then the MLM will "update" the update item that cooresponds to the calling item name(s) to match the "IsSelected" value
//of the calling item. In sort. If you check callingitems[1] this MLM will check updateitems[1], if you check callingitems[2]
//this MLM will check updateitem[2]. If you uncheck callingitems[1] updateimtes[1] will uncheck, ect...
for j in 1 seqto (count Grid_itemlist) do
if Grid_itemlist[j].name is in callingitems then
for x in 1 seqto (count callingitems) do
if callingitems[x] = Grid_itemlist[j].name then
callitemnum := x;
endif;
enddo;
for x in 1 seqto (count update_itemlist) do
if update_itemlist[x].name = updateitems[callitemnum] then
isitemcheck := Grid_itemcheck[j];
update_itemlist[x].IsSelected := isitemcheck;
endif;
enddo;
endif;
enddo;
endif;
/**************************************end of original code pulled from FORM_Set_Labs_Deselected************************/
;;
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: