Initial Checking with all 820 MLMs
This commit is contained in:
400
MLMStripper/bin/Debug/STD/STD_FUNC_DUP_MESSAGES.mlm
Normal file
400
MLMStripper/bin/Debug/STD/STD_FUNC_DUP_MESSAGES.mlm
Normal file
@@ -0,0 +1,400 @@
|
||||
maintenance:
|
||||
|
||||
title: Alert Messages for Advanced Duplicate Order Checking MLM;;
|
||||
mlmname: STD_FUNC_DUP_MESSAGES;;
|
||||
arden: version 2.5;;
|
||||
version: 18.4;;
|
||||
institution: Allscripts, Standard MLM;;
|
||||
author: Allscripts Healthcare Solutions, Inc.;;
|
||||
specialist: ;;
|
||||
date: 2018-10-26;;
|
||||
validation: testing;;
|
||||
|
||||
/* P r o p r i e t a r y N o t i c e */
|
||||
/* Unpublished (c) 2013 - 2018 Allscripts Healthcare, LLC. and/or its affiliates. All Rights Reserved.
|
||||
|
||||
P r o p r i e t a r y N o t i c e: This software has been provided pursuant to a License Agreement, with
|
||||
Allscripts Healthcare, LLC. and/or its affiliates, containing restrictions on its use. This software contains
|
||||
valuable trade secrets and proprietary information of Allscripts Healthcare, LLC. and/or its affiliates and is
|
||||
protected by trade secret and copyright law. This software may not be copied or distributed in any form or medium,
|
||||
disclosed to any third parties, or used in any manner not provided for in said License Agreement except with prior
|
||||
written authorization from Allscripts Healthcare, LLC. and/or its affiliates. Notice to U.S. Government Users:
|
||||
This software is {{{SINGLE-QUOTE}}}Commercial Computer Software{{{SINGLE-QUOTE}}}.
|
||||
|
||||
All product names are the trademarks or registered trademarks of Allscripts Healthcare, LLC. and/or its affiliates.
|
||||
*/
|
||||
/* P r o p r i e t a r y N o t i c e */
|
||||
|
||||
library:
|
||||
purpose: Selects the appropriate alert message for the Advanced Duplicate-Order
|
||||
Checking MLM{{{SINGLE-QUOTE}}}s alerts and actions.
|
||||
;;
|
||||
explanation: The number of possible messages for the Advanced Duplicate-Order
|
||||
Checking MLM is large. This MLM encapsulates the messages, so that all
|
||||
changes to the messages can be done in one MLM.
|
||||
;;
|
||||
keywords: Duplicate Order; Alert; Message;
|
||||
;;
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
/***************Make Changes To Spelling And Flags In This Section***************/
|
||||
/* Set to true if logging is needed.*/
|
||||
log_execution_info := false;
|
||||
|
||||
/********************************************************************************/
|
||||
|
||||
(order_name,
|
||||
order_status_code,
|
||||
order_without_specific_stop_date,
|
||||
exact_msg,
|
||||
performed_msg,
|
||||
scheduled_msg,
|
||||
exact_type,
|
||||
subset_type,
|
||||
superset_type,
|
||||
same_order_type,
|
||||
partial_match_type,
|
||||
conflict_type,
|
||||
possible_conflict_type,
|
||||
no_std_message_type,
|
||||
matching_name_list,
|
||||
matching_significant_date_list,
|
||||
matching_requested_date_list,
|
||||
matching_entered_date_list,
|
||||
matching_stop_date_list,
|
||||
matching_msg_type_list,
|
||||
matching_msg_text_list,
|
||||
matching_time_msg_list,
|
||||
matching_class_list,
|
||||
matching_summary_list,
|
||||
matching_order_status_list,
|
||||
matching_order_type_code_list,
|
||||
matching_alternate_order_type_list,
|
||||
matching_is_script_list,
|
||||
community_resultedOrder_alert_text ):= ARGUMENT;
|
||||
|
||||
/* Gets the Full text description of the OrderStatusCode */
|
||||
(status_code_list,
|
||||
status_description_list):= read { "SELECT Code, Description FROM CV3OrderStatus WHERE Active = 1" };
|
||||
;;
|
||||
evoke:
|
||||
;;
|
||||
logic:
|
||||
indent_string:= " ";
|
||||
hyphen_string:= "-----";
|
||||
|
||||
// Substitutes the Status Description for the Status Code
|
||||
order_status := first (status_description_list where (status_code_list = order_status_code ));
|
||||
|
||||
/*---------------------------------*/
|
||||
/* Picks the correct alert message */
|
||||
/*---------------------------------*/
|
||||
|
||||
//Initialize variables
|
||||
long_alert_msg:= "";
|
||||
short_message := "";
|
||||
matching_short_message_list := ();
|
||||
|
||||
processing_list:= 1 seqto (count matching_name_list);
|
||||
for k in processing_list do
|
||||
// Gets duplicate order information
|
||||
dup_order_found:= processing_list = k;
|
||||
dup_order_name:= first (matching_name_list where dup_order_found);
|
||||
dup_order_significant_date:= first (matching_significant_date_list where dup_order_found);
|
||||
dup_order_entered_date := first (matching_entered_date_list where dup_order_found);
|
||||
dup_order_requested_date := first(matching_requested_date_list where dup_order_found);
|
||||
dup_order_stop_date:= first (matching_stop_date_list where dup_order_found);
|
||||
dup_order_msg_type:= first (matching_msg_type_list where dup_order_found);
|
||||
dup_order_msg_text:= first (matching_msg_text_list where dup_order_found);
|
||||
dup_order_time_msg:= first (matching_time_msg_list where dup_order_found);
|
||||
dup_order_class_msg:= first (matching_class_list where dup_order_found);
|
||||
dup_order_summary:= first (matching_summary_list where dup_order_found);
|
||||
dup_order_status_code:= first (matching_order_status_list where dup_order_found);
|
||||
dup_order_type_code:= first (matching_order_type_code_list where dup_order_found);
|
||||
dup_alternate_order_type := first(matching_alternate_order_type_list where dup_order_found);
|
||||
dup_is_script := first(matching_is_script_list where dup_order_found);
|
||||
|
||||
// Format dates, removing milliseconds
|
||||
if exist dup_order_significant_date then
|
||||
dup_order_significant_date_formatted := dup_order_significant_date formatted with "%.4t";
|
||||
else
|
||||
dup_order_significant_date_formatted := "";
|
||||
endif;
|
||||
|
||||
if exist dup_order_requested_date then
|
||||
dup_order_requested_date_formatted := dup_order_requested_date formatted with "%.4t";
|
||||
else
|
||||
dup_order_requested_date_formatted := "";
|
||||
endif;
|
||||
|
||||
if exist dup_order_entered_date then
|
||||
dup_order_entered_date_formatted := dup_order_entered_date formatted with "%.4t";
|
||||
else
|
||||
dup_order_entered_date_formatted := "";
|
||||
endif;
|
||||
|
||||
if exist dup_order_stop_date then
|
||||
dup_order_stop_date_formatted := dup_order_stop_date formatted with "%.4t";
|
||||
else
|
||||
dup_order_stop_date_formatted := "";
|
||||
endif;
|
||||
|
||||
// Eliminates NULLs from printing in the alert message
|
||||
if dup_order_msg_text is null
|
||||
then
|
||||
dup_order_msg_text:= "";
|
||||
endif;
|
||||
|
||||
if (dup_order_summary is not null AND dup_order_summary <> "")
|
||||
then
|
||||
dup_order_summary := hyphen_string || dup_order_summary;
|
||||
else
|
||||
dup_order_summary := "";
|
||||
endif;
|
||||
|
||||
dup_order_status := "Unsubmitted";
|
||||
if ( dup_order_status_code <> "Unsubmitted" )
|
||||
then
|
||||
// Substitutes the Status Description for the Status Code
|
||||
dup_order_status := first (status_description_list where (status_code_list = dup_order_status_code ));
|
||||
endif;
|
||||
|
||||
dup_date_prefix := "Start Date: ";
|
||||
dup_date_str := dup_order_significant_date_formatted;
|
||||
dup_status_suffix := "Order";
|
||||
|
||||
if (dup_alternate_order_type = 2)
|
||||
then
|
||||
if (dup_order_requested_date is NULL or dup_order_requested_date = "" or dup_order_requested_date = "null")
|
||||
then
|
||||
dup_date_prefix := "Entered Date: ";
|
||||
endif;
|
||||
|
||||
if (dup_is_script)
|
||||
then
|
||||
dup_status_suffix := "Prescription";
|
||||
else
|
||||
dup_status_suffix := "Home Medication";
|
||||
endif;
|
||||
elseif (dup_alternate_order_type = 1)
|
||||
then
|
||||
dup_status_suffix := "";
|
||||
elseif (dup_alternate_order_type = 3)
|
||||
then
|
||||
dup_order_name := dup_order_name || "{{+B}} (" || community_resultedOrder_alert_text || "){{-B}}";
|
||||
endif;
|
||||
|
||||
// Creates the beginning of the long alert message
|
||||
long_alert_msg:= long_alert_msg
|
||||
|| dup_order_name || dup_order_summary || "\n"
|
||||
|| dup_date_prefix || dup_date_str || "\n"
|
||||
|| "Status: " || dup_order_status || " " || dup_status_suffix || "\n" ;
|
||||
|
||||
// Creates the rest of the long alert message
|
||||
If dup_order_msg_type = exact_type
|
||||
then
|
||||
If dup_order_time_msg = exact_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning duplicate order - " || dup_order_name
|
||||
|| " has already been ordered for the same date and time. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = performed_msg
|
||||
then
|
||||
if order_without_specific_stop_date
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - " || dup_order_name
|
||||
|| " was performed " || dup_order_significant_date_formatted || ". "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
else
|
||||
short_message :=
|
||||
"Warning - potential duplicate - " || dup_order_name
|
||||
|| " was started " || dup_order_significant_date_formatted || ". "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
endif; /* if order_without_specific_stop_date */
|
||||
elseif dup_order_time_msg = scheduled_msg
|
||||
then
|
||||
if order_without_specific_stop_date
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - " || dup_order_name
|
||||
|| " has already been scheduled on " || dup_order_significant_date_formatted
|
||||
|| ". Consider cancelling one of the items. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
else
|
||||
short_message :=
|
||||
"Warning - potential duplicate - " || dup_order_name
|
||||
|| " has already been scheduled to start on "
|
||||
|| dup_order_significant_date_formatted
|
||||
|| ". Consider cancelling one of the items. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
endif; /* if order_without_specific_stop_date */
|
||||
|
||||
|
||||
else
|
||||
short_message :=
|
||||
"Error Message 1: Cannot find a message for an EXACT match."
|
||||
;
|
||||
endif; /* if dup_order_time_msg */
|
||||
elseif dup_order_msg_type = subset_type
|
||||
then
|
||||
If dup_order_time_msg = exact_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning duplicate order - Your current order for " || order_name
|
||||
|| " includes the " || dup_order_name
|
||||
|| " which has already been ordered for the same date and time. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = performed_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - Your current order for " || order_name
|
||||
|| " includes the " || dup_order_name
|
||||
|| " which was performed on " || dup_order_significant_date_formatted || ". "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = scheduled_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - Your current order for " || order_name
|
||||
|| " includes the " || dup_order_name
|
||||
|| " which is already scheduled for " || dup_order_significant_date_formatted
|
||||
|| ". Consider cancelling the " || dup_order_name || ". "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
else
|
||||
short_message :=
|
||||
"Error Message 2: Cannot find a message for a SUBSET match."
|
||||
;
|
||||
endif; /* if dup_order_time_msg */
|
||||
elseif dup_order_msg_type = superset_type
|
||||
then
|
||||
If dup_order_time_msg = exact_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning duplicate order - Your current order for " || order_name
|
||||
|| " is included in the " || dup_order_name
|
||||
|| " which has already been ordered for the same date and time. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = performed_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - Your current order for " || order_name
|
||||
|| " is included in the " || dup_order_name
|
||||
|| " which has already been performed on "
|
||||
|| dup_order_significant_date_formatted || ". "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = scheduled_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - Your current order for " || order_name
|
||||
|| " is included in the " || dup_order_name
|
||||
|| " which is scheduled on " || dup_order_significant_date_formatted
|
||||
|| ". Consider cancelling one of the items. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
else
|
||||
short_message :=
|
||||
"Error Message 3: Cannot find a message for a SUPERSET match."
|
||||
;
|
||||
endif; /* if dup_order_time_msg */
|
||||
elseif dup_order_msg_type = partial_match_type
|
||||
then
|
||||
If dup_order_time_msg = exact_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - duplicate order - " || dup_order_name
|
||||
|| " has already been ordered for the same date and time. Both "
|
||||
|| order_name || " and " || dup_order_name
|
||||
|| " have some items in common. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = performed_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - " || dup_order_name
|
||||
|| " was already performed on " || dup_order_significant_date_formatted
|
||||
|| ". Both " || order_name || " and " || dup_order_name
|
||||
|| " have some items in common. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_time_msg = scheduled_msg
|
||||
then
|
||||
short_message :=
|
||||
"Warning - potential duplicate - " || dup_order_name
|
||||
|| " is already scheduled on " || dup_order_significant_date_formatted
|
||||
|| ". Both " || order_name || " and " || dup_order_name
|
||||
|| " have some items in common. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
else
|
||||
short_message :=
|
||||
"Error Message 4: Cannot find a message for a PARTIAL MATCH. "
|
||||
;
|
||||
endif; /* if dup_order_time_msg */
|
||||
elseif dup_order_msg_type = same_order_type
|
||||
then
|
||||
//Avoid Printing NULL for dup_order_class_msg
|
||||
if exist dup_order_class_msg
|
||||
then print_dup_order_class_msg := ", " || dup_order_class_msg || ",";
|
||||
else print_dup_order_class_msg := "";
|
||||
endif;
|
||||
short_message :=
|
||||
"An order for " || dup_order_name
|
||||
|| " is of the same type" || print_dup_order_class_msg
|
||||
|| " as your current order for " || order_name || ". "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_msg_type = conflict_type
|
||||
then
|
||||
short_message :=
|
||||
"A scheduled order for " || dup_order_name
|
||||
|| " conflicts with your current order for " || order_name
|
||||
|| ". Either modify the stop date of your current order,"
|
||||
|| " modify the date of the scheduled order, or cancel the future order. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_msg_type = possible_conflict_type
|
||||
then
|
||||
short_message :=
|
||||
"An order for " || dup_order_name
|
||||
|| " may conflict with your current order for " || order_name
|
||||
|| ". Please review. "
|
||||
|| dup_order_msg_text
|
||||
;
|
||||
elseif dup_order_msg_type = no_std_message_type
|
||||
then
|
||||
short_message :=
|
||||
dup_order_msg_text
|
||||
;
|
||||
else
|
||||
short_message :=
|
||||
"Error Message 5: Undefined Message Type for the item ordered."
|
||||
;
|
||||
endif; /*if dup_order_msg_type */
|
||||
|
||||
|
||||
//Add the Message to the lists
|
||||
matching_short_message_list := matching_short_message_list, short_message;
|
||||
long_alert_msg:= long_alert_msg ||short_message || "\n\n";
|
||||
|
||||
enddo; /* for k */
|
||||
|
||||
/* Always conclude true to return values to the calling program */
|
||||
conclude true;
|
||||
;;
|
||||
action:
|
||||
RETURN (order_status, long_alert_msg, matching_short_message_list );
|
||||
;;
|
||||
end:
|
||||
Reference in New Issue
Block a user