Files
St.Clair/MLMStripper/bin/Debug/UTIL/UTIL_OBJECT_CUSTOMIZE_DIPA_MLM.mlm

318 lines
15 KiB
Plaintext

maintenance:
title: OBJECT_Customize_DIPA MLM ;;
mlmname: UTIL_OBJECT_Customize_DIPA_MLM;;
arden: version 2.5;;
version: 5.50;;
institution: Allscripts Corporation;;
author: Jignesh Parmar;;
specialist: ;;
date: 2011-01-06;;
validation: testing;;
library:
purpose:
To create an generic object based on the parameters passed and define , initialize , populate and ADD it.
;;
explanation:
This is a Generic MLM which can use to set value to any parameter on any type of document both Flowsheet and StructureNote.
;;
keywords:
;;
knowledge:
type: data-driven;;
data:
//Input parameters
( this_DocumentCommunication , // Document Communication Object
Parameter_Name , // Parameter for which the value needs to be set or assign
Value) // Value to be assigned.
//Clear_Field) // Are we clearing the field? YES/NO.default "NO" , Specifically for Datevaluetype
:= ARGUMENT;
//Get The Structure Note
(this_Doc) := this_documentCommunication.DocumentConfigurationObj;
//Get the Parameter List
(this_parms) := This_Doc.ParametersList;
//Get the Observation
(this_observations) := This_Doc.ChartedObservationsList;
//Checking for the documnet type
IF this_DocumentCommunication.DocumentType = "Flowsheet" THEN
IsFlowsheet := TRUE;
IsStructNote := FALSE;
ELSEIF this_DocumentCommunication.DocumentType = "StructureNote" THEN
IsFlowsheet := FALSE;
IsStructNote := TRUE;
ENDIF;
(this_observations) := this_documentCommunication.CurrentObservationObj;
(doc_config_obj):= this_documentCommunication.DocumentConfigurationObj;
/****************************************************************
Defining the all object types
****************************************************************/
//Declare the Observation
ObservationType := OBJECT [ ObservationGUID,
ClientDocumentGUID,
ParameterGUID,
DataType,
ValueObj ];
//Declare the NumericValue
NumericValueType := OBJECT [ Value ];
//Declare the TextValue
TextValueType := OBJECT [ Value ];
//Declare the DateValue
DateValueType := OBJECT [ Value ];
//Decalare the ListValue
ListValueType :=OBJECT [ ListGUID,
ListItemsList,
SuggestedTextValue ];
//Declare the ListItem
ListItemType := OBJECT[ListItemGuid,
Value,
IsSelected];
ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected];
//FOLLOWING OBJECTS ARE ONLY FOR FLOWSHEET DOCUMENTS.
IF IsFlowsheet = TRUE THEN
//Declare the Listset Value
ListSetValueType := OBJECT [ ListValuesList ];
//Declare the IO Value
IOValueType := OBJECT [ InValue,
OutValue,
DayRunningValue,
BagNumber,
BagInitialVolume
];
//Declare the Generic Drip Value
GenericDripValueType := OBJECT [DoseValue,
RateValue
];
//Declare the Drip Value
DripValueType := OBJECT [ Value,
BagNumber,
BagInitialVolume
];
ENDIF;
;;
evoke: /* Call MLM */
;;
logic:
/*************************************************************************
Creating object of the observation.
*************************************************************************/
Result_observation := NEW ObservationType;
Result_observation.ClientDocumentGUID := This_Doc.ClientDocumentGUID;
Result_observation.ParameterGUID := Last(Parameter_Name.ParameterGUID);
Result_observation.DataType := Parameter_Name.DataType;
//Checking for the datatype of the parameter.
/*************************************************************************
Initializing and Populating with Value
*************************************************************************/
//NUMERIC VALUE
IF Parameter_Name.DataType = "NUMERICVALUE" THEN
//CHECKING FOR THE RESULT VALUE EXIST
IF value IS NOT NULL THEN
//creates the new NumericValueType object and populates the fields
// - this is the value being supplied to the observation
Result_observation.ValueObj := NEW NumericValueType;
Result_observation.ValueObj.Value := value AS NUMBER;
ENDIF;
//TEXT VALUE
ELSEIF Parameter_Name.DataType = "FreeTextValue" THEN
//creates the new NumericValueType object and populates the fields
// - this is the value being supplied to the observation
Result_observation.ValueObj := NEW TextValueType;
Result_observation.ValueObj.Value := value AS STRING;
//DATE VALUE
ELSEIF Parameter_Name.DataType = "DATEVALUE" THEN
//creates the new NumericValueType object and populates the fields
// - this is the value being supplied to the observation
//We are setting the value object only when Clear field flag is No or NULL.
If Value IS NOT NULL OR Value <> "" Then
Result_observation.ValueObj := NEW DateValueType;
Endif;
Result_observation.ValueObj.Value := value;
//LIST VALUE
ELSEIF Parameter_Name.DataType = "LISTVALUE" THEN
//Get the Parameter details
listItems := ();
items := 1 seqto ( count Value);
//break;
(This_List_param) := this_parms WHERE this_parms.NAME = (Parameter_Name.name as string);
//Get the LitConfiguration of the parameter
(this_List_Config_list) := This_List_param.ConfigurationObj;
//Get the ListItemConfiguration
(this_List_ListItem) := LAST(this_List_Config_list.Listitemslist);
//Create ValueObj as the ListValue
Result_observation.ValueObj := NEW ListValueType;
//Populate the ValueObj ListGUID from the ListGUID of the ListConfiguration
Result_observation.ValueObj.ListGUID := LAST(this_List_Config_list.ListGUID);
//List item array declaration.
listItems := FIRST OF(this_List_ListItem WHERE (this_List_ListItem.IsSelected = TRUE));
for x in items do
item := Value[x];
//Creating the ListItem
//Populating the ListItem
newItems := (this_List_ListItem WHERE (this_List_ListItem.value = item));
for nitems in newItems
do
NewListItem := NEW ListItemType;
NewListItem.ListItemGUID := nitems.ListItemGUID;
NewListItem.Value := nitems.Value;
NewListItem.IsSelected := TRUE;
//Adding ListItem in the List
listItems := listItems, NewListItem;
//break;
enddo;
/*
//Creating the ListItem
NewListItem2 := NEW ListItemType;
//Populating the ListItem
Item2 := FIRST OF(this_List_ListItem WHERE (this_List_ListItem.value = "S2"));
NewListItem2.ListItemGUID := item2.ListItemGUID;
NewListItem2.Value := item2.Value;
NewListItem2.IsSelected := TRUE;
//Adding ListItem in the List
*/
// listItems := listItems, NewListItem ;
// listItems := listItems, NewListItem2 ;
enddo;
//Attaching the ListItem to the ListValue of the created observation
Result_observation.ValueObj.ListItemsList := listItems AS LIST;
//break;
/*
ELSEIF Parameter_Name.DataType = "LISTSETVALUE" THEN
//Get the Parameter details
listItems := ();
listValues := ();
(This_List_param) := this_parms WHERE this_parms.NAME = (Parameter_Name.name as string);
//Get the LitConfiguration of the parameter
(this_List_Config_list) := This_List_param.ConfigurationObj;
//Get the ListItemConfiguration
(this_List_ListItem) := LAST(this_List_Config_list.Listitemslist);
//Create ValueObj as the ListValue
Result_observation.ValueObj := NEW ListValueType;
//Populate the ValueObj ListGUID from the ListGUID of the ListConfiguration
Result_observation.ValueObj.ListGUID := LAST(this_List_Config_list.ListGUID);
//List item array declaration.
listItems := FIRST OF(this_List_ListItem WHERE (this_List_ListItem.IsSelected = TRUE));
Peds_General_List_Set_Param := This_List_param;
obs := NEW ObservationType;
obs.ClientDocumentGUID := this_documentCommunication.DocumentConfigurationObj.ClientDocumentGUID;
obs.ParameterGUID := Peds_General_List_Set_Param.ParameterGUID;
obs.DataType := Peds_General_List_Set_Param.DataType;
obs.ValueObj := NEW ListSetValueType;
items := 1 seqto ( count Value);
for x in items do
item := Value[x];
//Creating the ListItem
NewListSetItem := NEW ListSetValueType;
//Populating the ListItem
Item := FIRST OF(this_List_ListItem WHERE (this_List_ListItem.value = item));
NewListSetItem.ListItemGUID := item.ListItemGUID;
NewListSetItem.Value := item.Value;
NewListSetItem.IsSelected := TRUE;
//Adding ListItem in the List
listItems := listItems, NewListSetItem;
*/
/* */
/*
For Peds_General in Peds_General_List_Set_Param.ConfigurationObj.ListConfigurationList DO
BREAK;
// On the level of ListConfiguration Object
selectedElement := NEW ListValueType;
selectedElement.ListGuid := Peds_General.ListGuid;
FOR item IN Peds_General.ListItemsList DO
// On the level of ListItemConfiguration Object
IF item.Value = "S1" THEN
this_DocumentCommunication.Message := "2";
this_DocumentCommunication.DisplayMessage := true;
//Create a list item object for the selected list item
selectedItem := NEW ListValueListItemType;
selectedItem.ListItemGUID := item.ListItemGUID;
selectedItem.Value := item.Value;
selectedItem.IsSelected := true;
listItems := (listItems, selectedItem);
ENDIF;
ENDDO; // End of ListItem
selectedElement.ListItemsList:= listItems;
ListValues := (ListValues,selectedElement);
ENDDO;// End of ListValue
// End of General
enddo;
//Attaching the ListItem to the ListValue of the created observation
Result_observation.ValueObj.ListItemsList := listItems ;
//break;
*/
ENDIF ;
/*************************************************************************
Add the new value to the document{{{SINGLE-QUOTE}}}s charted observations
*************************************************************************/
//Structure Note
If IsFlowsheet = FALSE AND IsStructNote = TRUE Then
This_Doc.ChartedObservationsList :=(This_Doc.ChartedObservationsList,
Result_observation);
//Flowsheet.
ElseIf IsFlowsheet = TRUE AND IsStructNote = FALSE Then
This_Doc.CurrentColumn.ChartedObservationsList := ( This_Doc.CurrentColumn.ChartedObservationsList,
Result_observation );
EndIf;
//Conclude true
CONCLUDE TRUE;
;;
action:
RETURN Result_observation ;
;;
Urgency: 50;;
end: