Files
St.Clair/MLMStripper/bin/Debug/CALLED/CALLED_RPM_DOM_MLM.mlm

166 lines
6.7 KiB
Plaintext

maintenance:
title: CALLED_RPM_DOM_MLM ;;
mlmname: CALLED_RPM_DOM_MLM ;;
arden: version 2.5;;
version: 6.00;;
institution: RPM, Sample Document Called MLM;;
author: Rick Mansour with addition from Steve Abel;;
specialist: ;;
date: 2010-11-03;;
validation: testing;;
library:
purpose: Demonstrate the ability to identify the current Observation in a structured
document and instantiate the parameter.
;;
explanation: This is your basic starter mlms for all standard document mlms.
;;
keywords: RTF, Document Called MLM , list, multi-select
;;
knowledge:
type: data-driven;;
data:
(this_documentCommunication,
parameter_name,newValue,
sugg_txt_value,UpdateType) := argument;
/*******************Make Changes To Spelling And Flags In This Section******************/
/* Set to true if a decision.log is needed.*/
log_execution_info := false;
/* Create variable for tab*/
// TAB := 9 formatted with "%c" ;
/***************************************************************************************/
//*** Variable and Constant Declaration ***//
(this_structuredNoteDoc) := this_documentCommunication.DocumentConfigurationObj;
(this_parameters) := this_structuredNoteDoc.ParametersList;
(this_chartedObservationsList) := this_structuredNoteDoc.ChartedObservationsList;
// if the parameter type is a text and the observation already exist the new data may be a
// Replace of Append to current valueObj.Value
if not exists UpdateType OR UpdateType NOT IN("Append","Replace") then
UpdateType := "Replace";
endif;
/////////////////////////////////////////////////////////////////////////////////////////////////
//*** Data Structures ***//
//The following data structures can be used to create new objects within the MLM itself.
//Not all data structures are represented here, only ones that can be created in the MLM.
// Parameter Types
NUMERICVALUE := "NumericValue";
FREETEXTVALUE := "FreeTextValue";
LISTVALUE := "ListValue";
LISTSETVALUE := "ListSetValue";
DATEVALUE := "DateValue";
IOVALUE := "IOValue" ;
GENERICDRIPVALUE := "GenericDripValue" ;
DRIPVALUE := "DripValue" ;
ObservationType := OBJECT [ObservationGUID, ClientDocumentGUID,
ParameterGUID, DataType, ValueObj];
ListValueType := OBJECT [ListGUID,ListItemsList, SuggestedTextValue];
ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected];
DateValueType := OBJECT [Value];
FreeTextValueType := OBJECT [Value];
NumericValueType := OBJECT [Value];
//
// This section of code will demonstrate how to write to FreeTextValue, DateValue,NumericValue
// and ListValue
parameter := FIRST OF (this_Parameters WHERE this_Parameters.Name = parameter_name );
IF EXISTS parameter THEN
//***************************************************************************************
// Check for existing object
//***************************************************************************************
obs := first of(this_ChartedObservationsList
WHERE this_ChartedObservationsList.parameterGUID = parameter.parameterGUID) ;
if not exist obs then
//Create a new Observation for the list
obs := NEW ObservationType;
obs.ClientDocumentGUID :=
this_documentCommunication.DocumentConfigurationObj.ClientDocumentGUID;
obs.ParameterGUID := parameter.ParameterGUID;
obs.DataType := parameter.DataType;
// Based on the parameter.DataType create the ValueObj Type and set the
// valueObj.value for (FREETEXTVALUETYPE,DATEVALUETYPE,NUMERICVALUETYPE)
// If the DataType is LISTVALUE then creat the valueObj of LISTVALUETYPE
// ABD ASSIGN THE paramter.configurationObj.ListGUID
if parameter.DataType = FREETEXTVALUE then
obs.ValueObj := NEW FreeTextValueType ;
elseif parameter.DataType = DATEVALUE then
obs.ValueObj := NEW DateValueType ;
elseif parameter.DataType = NUMERICVALUE then
obs.ValueObj := NEW NumericValueType ;
elseif parameter.DataType = LISTVALUE then
obs.ValueObj := NEW ListValueType;
obs.ValueObj.ListGUID := parameter.ConfigurationObj.ListGUID;
endif; // if parameter.DataType = FREETEXTVALUE then
// APPEND obs to the ChartedObservationsList
this_documentCommunication.DocumentConfigurationObj.ChartedObservationsList
:= (this_documentCommunication.DocumentConfigurationObj.ChartedObservationsList,
obs);
endif;
if parameter.DataType = FREETEXTVALUE AND UpdateType = "Append" then
if length of obs.ValueObj.Value > 0 then
obs.ValueObj.Value := obs.ValueObj.Value || "\n" || newValue ;
else
obs.ValueObj.Value := newValue ;
endif;
elseif parameter.DataType = FREETEXTVALUE AND UpdateType = "Replace" then
obs.ValueObj.Value := newValue ;
elseif parameter.DataType IN(DATEVALUE,NUMERICVALUE) then
if exists newValue then // new code added by Stve Abel from Roswell Park
obs.ValueObj.Value := newValue ;
else
obs.ValueObj := null;
endif;
// obs.ValueObj.Value := newValue; This was the code before Steve Abel addition
elseif parameter.DataType = LISTVALUE then
//Populate the ListItemsList in the new observation object (obs)
// loop through each item in the parameter.ConfugurationObj.ListItemsList using
// "item"and append the item to the newly created object ListValueListItemType
// assign the item.listItemGUID to the selectedItem.ListItemGUID, the Item.value
// to the selectedItem.Value and set the SelectedItem.IsSelected := true
listItems := ();
FOR item IN parameter.ConfigurationObj.ListItemsList DO
IF item.Value IN newValue THEN
//Create a list item object for the selected list item
selectedItem := NEW ListValueListItemType;
selectedItem.ListItemGUID := item.ListItemGUID;
selectedItem.Value := item.Value;
selectedItem.IsSelected := true;
// Arden list append statement appending the new object to the listItems
// object of the ListValueListItemType Object
listItems := (listItems, selectedItem);
ENDIF;
// set the obs.valueObj.ListItemsList := listItems list object
Obs.ValueObj.ListItemsList := listItems;
if exists sugg_txt_value then
obs.ValueObj.SuggestedTextValue := sugg_txt_value ;
endif ;
ENDDO;
endif; //if parameter.DataType = LISTVALUE then
ENDIF; //IF EXISTS parameter THEN
/////////////////////////////////////////////////////////////////////////////////////////////////
;;
evoke:
;;
logic:
conclude true;
;;
action:
return this_documentCommunication;
;;
Urgency: 50;;
end: