Initial Checking with all 820 MLMs

This commit is contained in:
2020-02-02 00:54:01 -05:00
parent c59dc6de2e
commit 840d0432f4
828 changed files with 239162 additions and 0 deletions

View 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: