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,234 @@
maintenance:
title: SCH_ALERT_ON_NITROGLYCERIN_ORDERS ;;
mlmname: SCH_ALERT_ON_NITROGLYCERIN_ORDERS;;
arden: version 2.5;;
version: 1.00;;
institution: ;;
author: Sandy Zhang ;;
specialist: Sandy Zhang ;;
date: 2017-07-28;;
validation: testing;;
library:
purpose: Generate a hard stop alert if nitroglycerin ointment or patch order exists and another is attempting to be ordered.
;;
explanation:
Change History:
2017.07.28 SZ CSR #33082 - Custom duplicate alert for nitroglycerin ointment and topical patch
;;
keywords:
;;
citations:
;;
knowledge:
type: data-driven;;
data:
//.Net libraries
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
include standard_libs;
//Set the stop message
stop_message := false;
hard_stop := false;
//Capture current patient data
(clientGuid, clientName) := read last {ClientInfo : GUID, DisplayName};
clientVisitGuid := read last {ClientVisit : GUID};
chartGuid := read last {ClientVisit : ChartGUID};
//Set med lists for later
(nitro_patch_meds) := ("Nitroglycerin 0.1mg/hr Patch", "Nitroglycerin 0.2mg/hr Patch", "Nitroglycerin 0.3mg/hr Patch"
, "Nitroglycerin 0.4mg/hr Patch", "Nitroglycerin 0.6mg/hr Patch");
(nitro_oint_meds) := ("Nitroglycerin 2% Oint");
/*************************** Possible Evoking Events ************************************/
// initiation of nitroglycerin ointment order
nitro_oint_event:= event{OrderInit User Order :
WHERE Name = "Nitroglycerin 2% Oint"};
// initiation of nitroglycerin patch order
nitro_patch_event := event{OrderInit User Order :
WHERE Name IN ("Nitroglycerin 0.1mg/hr Patch"
, "Nitroglycerin 0.2mg/hr Patch"
, "Nitroglycerin 0.3mg/hr Patch"
, "Nitroglycerin 0.4mg/hr Patch"
, "Nitroglycerin 0.6mg/hr Patch")};
// initiation of nitroglycerin ointment orderset
nitro_oint_orderset_event := event{OrderSetInit User OrderSet :
WHERE OrderSetName IN ("Nitroglycerin Ointment","Nitroglycerin Ointment")};
// initiation of nitroglycerin patch orderset
nitro_patch_orderset_event := event{OrderSetInit User OrderSet :
WHERE OrderSetName IN ("Nitroglycerin Patch")};
/******************************************************************************/
//Determine evoking event -
if (EvokingEvent = nitro_patch_event OR EvokingEvent = nitro_oint_event) then
(this_order_id, this_order) := read last {Order : GUID, Name Referencing EvokingObject};
else
(this_order_id, this_order) := read last {OrderSet : GUID, OrderSetName Referencing EvokingObject};
endif;
//Check for unsubmitted nitroglycerin orders
(existing_orders, origOrderSet) := READ { UnsubmittedOrders: Name, OrderSetName
WHERE Name matches pattern "Nitroglycerin 0.1mg/hr Patch%"
OR Name matches pattern "Nitroglycerin 0.2mg/hr Patch%"
OR Name matches pattern "Nitroglycerin 0.3mg/hr Patch%"
OR Name matches pattern "Nitroglycerin 0.4mg/hr Patch%"
OR Name matches pattern "Nitroglycerin 0.6mg/hr Patch%"
OR Name matches pattern "Nitroglycerin 2% Oint%"};
if (exist existing_orders) then
found_unsubmitted_order := "unbsubmitted orders were found :) ";
else
no_unsubmitted_order := "no unbsubmitted orders were found :( ";
//No unsubmitted nitroglycerin order - check for existing nitroglycerin active orders
(existing_orders,
origOrderSet) := read {"SELECT o.Name, o.OrderSetName, o.TouchedWhen"
|| " FROM CV3Order as o with (nolock) JOIN CV3OrderCatalogMasterItem AS ocmi with (nolock)"
|| " ON o.OrderCatalogMasterItemGUID = ocmi.GUID"
|| " WHERE o.ClientGUID = " || clientGuid
|| " AND o.ClientVisitGUID = " || clientVisitGuid
|| " AND o.ChartGUID = " || chartGuid
|| " AND (o.Name like {{{SINGLE-QUOTE}}}Nitroglycerin 2% Oint%{{{SINGLE-QUOTE}}}"
|| " OR o.Name like {{{SINGLE-QUOTE}}}Nitroglycerin 0.1mg/hr Patch%{{{SINGLE-QUOTE}}}"
|| " OR o.Name like {{{SINGLE-QUOTE}}}Nitroglycerin 0.2mg/hr Patch%{{{SINGLE-QUOTE}}}"
|| " OR o.Name like {{{SINGLE-QUOTE}}}Nitroglycerin 0.3mg/hr Patch%{{{SINGLE-QUOTE}}}"
|| " OR o.Name like {{{SINGLE-QUOTE}}}Nitroglycerin 0.4mg/hr Patch%{{{SINGLE-QUOTE}}}"
|| " OR o.Name like {{{SINGLE-QUOTE}}}Nitroglycerin 0.6mg/hr Patch%{{{SINGLE-QUOTE}}})"
|| " AND"
|| " ((o.OrderStatusLevelNum > 15"
|| " AND o.OrderStatusLevelNum NOT IN ({{{SINGLE-QUOTE}}}69{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}70{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}100{{{SINGLE-QUOTE}}}))"
|| " OR o.OrderStatusCode = {{{SINGLE-QUOTE}}}HOLD{{{SINGLE-QUOTE}}})"
, primarytime = touchedWhen};
endif;
// if an existing order was detected
if (exist existing_orders) then
//Keep counter in case other nitroglycerin order exist that are not in conflict
i := 0;
//loop through existing, active patient orders
for orderItem in existing_orders do
i := i + 1;
// if ordering nitro ointment
if (EvokingEvent = nitro_oint_event) then
// and existing order is nitro patch then send alert
if ((orderItem in nitro_patch_meds)) then
stop_message := true;
existing_order_name := orderItem;
situation_1 := "ordering nitro ointment and existing order is nitro patch";
endif;
// if ordering nitro ointment from orderset
elseif (EvokingEvent = nitro_oint_orderset_event) then
// and existing order is nitro patch then send alert
if (orderItem in nitro_patch_meds) then
stop_message := true;
existing_order_name := orderItem;
situation_2 := "ordering nitro ointment from orderset and existing order is nitro patch ";
endif;
// if ordering nitro patch
elseif (EvokingEvent = nitro_patch_event) then
// and existing order is nitro ointment then send alert
if ((orderItem in nitro_oint_meds)) then
stop_message := true;
existing_order_name := orderItem;
situation_3 := "ordering nitro patch and existing order is nitro ointment";
endif;
// if ordering patch orderset
elseif (EvokingEvent = nitro_patch_orderset_event) then
// and existing order is nitro ointment then send alert
if ((orderItem in nitro_oint_meds)) then
stop_message := true;
existing_order_name := orderItem;
situation_4 := "ordering patch orderset and existing order is nitro ointment ";
endif;
endif;
enddo; //End loop through existing, active nitroglycerin patch/topical orders
endif; // End - if (exist existing_orders)
/************************************** Declare Alert Details ********************************/
// If stop message is true then set the alert message and fire hard stop alert
if (stop_message) then
// alert destination
order_alert_dest := destination {alert} with
[alert_type := warning,
short_message := "Nitroglycerin topical/patch Order Conflict",
priority := "High",
scope := Chart,
rule_group := "Nitroglycerin Conflict Group",
rule_number := 8050,
send_with_order := "DoNotSend",
alert_dialog_settings := "No Override Allowed",
display_alert := true];
// alert message
alert_message := "{{+B}}Avoid concurrent use of {{+R}}" || this_order || "{{-R}} and {{+R}}"
|| existing_order_name || "{{-R}}. Contact physician to adjust orders. {{-B}} ";
hard_stop := true;
endif;
/*******************************************************************************************/
;;
priority: 50
;;
evoke:
nitro_patch_event;
nitro_oint_event;
nitro_patch_orderset_event;
nitro_oint_orderset_event;
;;
logic:
conclude hard_stop;
;;
action:
write alert_message at order_alert_dest;
;;
Urgency: 50;;
end: