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,385 @@
maintenance:
title: Form_HoldOrder_RequestedTime;;
mlmname: Form_HoldOrder_RequestedTime;;
arden: version 2;;
version: 4.50;;
institution: St. Clair Hospital;;
author: Teresa Spicuzza ;;
specialist: Eclipsys Corporation;;
date: 2010-10-27;;
validation: testing;;
library:
purpose: Change med orders to scheduled start time.
;;
explanation: ( )
Change history
01.30.2012 TMS Added routines for Now and Then Dosing to only make Start Now Checkbox visible to
IT and CCM physicians during pilot period. Also verifies on form open if Start Now
checkbox will be available. Not available in hold session, if order preconfigured
as PRN, if order is preconfigured with a one time or User Schedule frequency. If
order is preconfigured with start now checked and a duration other than times, alert
user to only use Times with Start Now.
03.05.2013 TMS Added call to FORM_MED_Irreg_Sched to populate Rx Comments and Rx Instructions for meal
frequencies when pre-configured on a child order. CSR 31322
04.08.2013 TMS Added call to FORM_SCIP_Abx_Dosing MLM on form open CSR 31359
08.12.2013 TMS Added logic for PRN reason to be mandatory upon form open for Behav. Health patients. CSR 31639
08.14.2013 TMS Added logic to make PRN field visible if hidden on form for Behav. Health patients. CSR 31639
08.15.2013 TMS Changed prn reason to not mandatory until dept ensures reason indicated by physician. CSR 31639
10.08.2013 TMS Changed the users who can use the "now and then" functionality on form open from particular
users as part of the pilot to all physician and physician extenders. CSR 26926
11.07.2013 TMS Commented out the users who can use the "now and then" functionality to allow nurses,
secretaries and pharmacists access. CSR 26926
02.21.2014 TMS Added functionality for STAT and Then orders, modified to allow use of PRN with Stat/Now and then orders.
Updated to use Total doses UDDI to populate the stop after field with appropriate value. CSR 31883
06.16.2014 TMS Add call to FORM_S2V_ORM_FORMOPEN to form open mlm calls for Admission Order Rec project. CSR 31688
06.17.2014 DW CSR# 32133 Added call to Automatic Medication Scheduling mlm
08.25.2014 TMS Added logic to form open for ORM orders on chemical restraint forms. If medical management indication
is prefilled on an order template, remove read only control from frequency and indication to allow
changing the preselected indication and allow entry of a frequency when chosen from the order browse.
Trackit Ticket # 167748
02.25.2016 JML CSR 32396: Modified to call FORM_PERICARDITIS_PAIN_ORDER mlm to protect all medication relevant ordering fields.
04.27.2016 TMS Added coding for Order Management CSR 33465
05.31.2016 JML CSR 34091: Modified to call FORM_ANTIBIOTIC_ORDERS_PROTECT_DOSE for several antibiotic orders.
04.11.2017 TMS Modified to add FORM_Rx_Pediatric_Acetaminophen and Form_Rituxin as a called MLM from this MLM instead of having
the reverse to keep this as the "master" MLM that calls others for form open, being done in preparation for using
hidden default dosing. Added call to FORM_RX_Default_Medication_Values CSR 35364.
05.10.2017 JML CSR 35272: Modified to work with new Sepsis Unknown Source Antibiotic ED order set AND
Sepsis Work Up Orders (ED) order set
09.14.2017 TMS CSR 35956: Added temporary alert message for hydromorphone shortage.
09.21.2017 TMS CSR 35956: Removed temporary alert message for hydromorphone shortage.
03.13.2018 TMS CSR 34822: Add Logic to call PRX_Sched_Logic to protect Zosyn extended infusion start date/time and frequency.
04.19.2018 TMS CSR 35320: Remove setting medications to {{{SINGLE-QUOTE}}}Scheduled/Start Time{{{SINGLE-QUOTE}}} when order is placed from the anesthesia post op order sets for
medications being ordered for PACU or OPSU.
05.16.2018 TMS CSR 33940: Add "With Dialysis Treatment" to Frequency retrievals that contain As Ordered.
01.29.2019 TMS CSR 37266: Remove setting medications to {{{SINGLE-QUOTE}}}Scheduled/Start Time{{{SINGLE-QUOTE}}} when order is placed from two new anesthesia post op order sets
(Standard and Supplemental) for medications being ordered for PACU or OPSU.
09.26.2019 TMS CSR 38305: Added logic to set start time to Routine if location is Infusion Center.
;;
keywords:
Hold, requested Time, Start time;
;;
knowledge:
type: data-driven;;
data:
/********************Make Changes To Spelling And Flags In This Section*********************/
/* send_alert := "DoNotSend";
*/
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
include standard_libs;
using "ObjectsPlusXA.SCM.Forms";
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
/*
//--------------------------------------------------------------------------
local_session := cds_session.local;
//--------------------------------------------------------------------------
*/
// This MLM is passed three arguments, of types
// communication_type, form_type and client info object respectively.
(this_communication, // Communication object
this_form, // Form object
client_info_obj // Arden ClientInfo object
) := argument;
comm_obj := this_communication.primaryobj;
CalledBy := this_communication.CallingEvent;
CallingField := this_communication.CallingFieldName;
IrregFreqOrders := MLM {{{SINGLE-QUOTE}}}FORM_MED_Irreg_Sched{{{SINGLE-QUOTE}}};
SCIPAbxOrder := MLM {{{SINGLE-QUOTE}}}FORM_SCIP_Abx_Dosing{{{SINGLE-QUOTE}}};
AutoMedScheduling := MLM {{{SINGLE-QUOTE}}}FORM_Antibiotic_Scheduling{{{SINGLE-QUOTE}}};
AdmitORM := MLM {{{SINGLE-QUOTE}}}FORM_S2V_ORM_FormOpen{{{SINGLE-QUOTE}}};
AcetaminophenOrder := MLM {{{SINGLE-QUOTE}}}FORM_Rx_Pediatric_Acetaminophen{{{SINGLE-QUOTE}}};
OrderManagement := MLM {{{SINGLE-QUOTE}}}FORM_Rx_Medication_Retrieval{{{SINGLE-QUOTE}}};
RituxinCalc := MLM {{{SINGLE-QUOTE}}}FORM_Rituxin{{{SINGLE-QUOTE}}};
DefaultMedValues := MLM {{{SINGLE-QUOTE}}}FORM_RX_Default_Medication_Values{{{SINGLE-QUOTE}}};
ZosynOrder := MLM {{{SINGLE-QUOTE}}}FORM_PRX_SCHED_LOGIC{{{SINGLE-QUOTE}}};
//CSR 32396 JML Change Begin
PericarditisOrder := MLM {{{SINGLE-QUOTE}}}FORM_PERICARDITIS_PAIN_ORDER{{{SINGLE-QUOTE}}};
Antibiotic_Stewardship_Orders := MLM {{{SINGLE-QUOTE}}}FORM_ANTIBIOTIC_ORDERS_PROTECT_DOSE{{{SINGLE-QUOTE}}};
AnesthesiaOS :=( "Anesthesia Post Op Orders",
"Anesthesia Post Op Orders - Standard",
"Anesthesia Post Op Orders - Supplemental",
"Pediatric Medication PACU Post Op OS");
//List of specific OS names to modify MLM logic handling
PericarditisOSName := "Pericarditis Pain Order Set";
ASP_OSName := ( "IntraAbdominal Antibiotic ED",
"Pneumonia Antibiotic ED",
"Pneumonia Antibiotic Outpatient ED",
"Genitourinary Antibiotic",
"Genitourinary Antibiotic ED",
"IntraAbdominal Antibiotic",
"Pneumonia Antibiotic",
"Pneumonia Antibiotic Outpatient",
"Skin Antibiotic Inpatient",
"Skin Antibiotic Inpatient ED",
"Skin Antibiotic Outpatient",
"Skin Antibiotic Outpatient ED",
"C Diff Antibiotic ED",
"C Diff Antibiotic",
"Sepsis Unknown Source Antibiotic",
"Sepsis Unknown Source Antibiotic ED",
"Antibiotic Guidelines ED",
"Antibiotic Guidelines",
"Septic Work Up Orders" );
//CSR 32396 JML Change End
ASP_with_ExtZosyn := ("Skin Antibiotic Inpatient",
"Pneumonia Antibiotic",
"Sepsis Unknown Source Antibiotic",
"IntraAbdominal Antibiotic");
// Set some needed fields
if called_by_editor then
client_guid := "9000001369400200";
visit_guid := visit_obj.GUID;
chart_guid := "9000001918900170";
orderId := "1000002689073001";
called_by := "FormOpen";
else
client_guid := this_communication.ClientGUID;
visit_guid := this_communication.ClientVisitGUID;
chart_guid := this_communication.ChartGuid;
orderid := this_communication.ItemID;
endif;
// Assigns fields passed in the Form object to the Field object
field_list:= this_form.fields;
start_now := last of (field_list where field_list.DataItemName = "PRX_Dosing Start Now" );
stat_then := last of (field_list where field_list.DataItemName = "PRX_Dosing Stat and Then" );
TotalDosing := first of ( field_list WHERE field_list.DataItemName = "PRX_Dosing Total Doses");
disable_now := last of (field_list where field_list.DataItemName = "PRX_DosingNowDisabled" );
requested_date := last of (field_list where field_list.DataItemName = "RequestedDate" );
requested_time := last of (field_list where field_list.DataItemName = "RequestedTime" );
requested_time_value := requested_time.value;
order_freq := first of (field_list where field_list.DataItemName = "FrequencyCode");
order_freq_value := order_freq.value;
order_freq_summary := order_freq_value.FrequencySummary;
newfrequency := order_freq.FrequencySummary;
session_type := comm_obj.internalprocessingtype;
Order_name:= comm_obj.name;
Order_set_name := comm_obj.OrderSetName;
nofrequency := "";
IsPRN_field := last of (field_list where field_list.DataItemName = "IsPRN" );
Reason_field := last of (field_list where field_list.DataItemName = "PRX_PRNCONDITION" );
StopAfter := first of (field_list.Value WHERE field_list.DataItemName="StopAfter" );
RX_Comments_field := last of (field_list where field_list.DataItemName = "Rx Comments");
RX_Instructions_field := last of (field_list where field_list.DataItemName = "Rx Instructions");
SCIP_Antibiotic := last of (field_list where field_list.DataItemName = "PRX_AntibioticNameforMLM");
SCIP_Antibiotic_value := SCIP_Antibiotic.value;
BehavHealth := ("PSYE", "PSYW");
med_cb := last of (field_list where field_list.DataItemName = "NUR_Not Chemical Restraint" );
med_cb_value := med_cb.value;
med_cond := last of (field_list where field_list.DataItemName = "NUR_Nonchemical Restraint Ind");
OneTimeFreq := ("As Ordered", "As-Directed", "Between Blood", "Given in Delivery Room",
"Given in Infusion Center", "Given in NSY","<QxM>", "Load", "Now", "Once", "Stat",
"One Time", "Today", "Per-Protocol", "POST OP", "Post-Procedure", "Post-Transfusion",
"PRE OP", "Pre-Procedure", "Pre-Transfusion", "<User Schedule>", "<Variable Interval>",
"With Dialysis Treatment");
continue_checking_order := TRUE;
// fire_on_User := ("MD","DO","DDS","DPM","PA","PA-C","CRNP","IT");
/* Get the current user{{{SINGLE-QUOTE}}}s occupation*/
/* userguid := this_communication.UserGUID;
UserCode := read last
{"Select occupationcode "
||" From cv3user with (nolock) "
||" Where Guid = " || SQL(userguid) };
continue_checking_order := UserCode in fire_on_User;
*/
CurrentLocationGuid := read last
{"Select CurrentLocationGuid "
||" From cv3Clientvisit "
||" Where ClientGuid = " || SQL(Client_Guid)
||" and Guid = " || SQL(Visit_Guid)
||" and VisitStatus in ({{{SINGLE-QUOTE}}}ADM{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRE{{{SINGLE-QUOTE}}})" };
CurrentLocation := read last
{"Select Name from cv3location "
||" Where Guid = " || SQL(CurrentLocationGuid) };
If exists Reason_field and CurrentLocation in BehavHealth then
Reason_field.control_mandatory := FALSE;
Reason_field.control_visible := TRUE;
endif;
If session_type = "Hold" then
If exists order_freq and order_freq_summary = "STAT" then
order_freq_value.FrequencySummary := NULL ;
endif;
start_now.control_read_only := true;
start_now.value := false;
stat_then.control_read_only := true;
stat_then.value := false;
TotalDosing.control_read_only := true;
TotalDosing.value := "";
requested_time_value.ReqTimeCode := "Scheduled/Start Time";
endif;
//CSR 32396 JML Change
If ( CalledBy = "FormOpen" AND Order_set_name = PericarditisOSName ) then
( this_communication, this_form ) := call PericarditisOrder
with ( this_communication, this_form, client_info_obj );
elseif ( ( CalledBy = "FormOpen" OR CalledBy = "FieldChange" ) AND ( Order_Set_Name IN ASP_OSName OR Order_Set_Name matches pattern "Transition Orders%" ) ) then
( this_communication, this_form ) := call Antibiotic_Stewardship_Orders
with ( this_communication, this_form, client_info_obj );
If Order_Set_Name IN ASP_with_ExtZosyn then
( this_communication, this_form ) := call ZosynOrder
with ( this_communication, this_form, client_info_obj );
endif;
( this_communication, this_form ) := call AutoMedScheduling with ( this_communication, this_form, client_info_obj );
elseIf ( CalledBy = "FormOpen" AND Order_set_name = "Piperacillin/Tazobactam Orders" ) then
( this_communication, this_form ) := call ZosynOrder
with ( this_communication, this_form, client_info_obj );
Else
(this_communication, this_form) := call AutoMedScheduling
with (this_communication, this_form, client_info_obj);
(this_communication, this_form) := call AdmitORM
with (this_communication, this_form, client_info_obj);
(this_communication, this_form) := call OrderManagement
with (this_communication, this_form, client_info_obj);
(this_communication, this_form) := call DefaultMedValues
with (this_communication, this_form, client_info_obj);
If Order_name matches pattern "%Acetaminophen%" then
(this_communication, this_form) := call AcetaminophenOrder
with (this_communication, this_form, client_info_obj);
endif;
// TMS removed on 9.21.2017 due to shipment arriving and supply not critically low
// If Order_name matches pattern "%HYDROmorphone Inj%" or Order_name matches pattern "%HYDROmorphone Inj%" then
// dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n Hydromorphone injection supply is critically low. \n\n Please consider ordering morphine injection. ","Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
// endif;
If Order_name = "Rituximab:" then
(this_communication, this_form) := call RituxinCalc
with (this_communication, this_form, client_info_obj);
endif;
If exists order_freq and order_freq_summary = "Now" then
start_now.control_read_only := true;
stat_then.control_read_only := true;
TotalDosing.control_read_only := true;
stopafter.number := null;
stopafter.option := "";
else
if exist Rx_comments_field then
(this_communication, this_form) := call IrregFreqOrders
with (this_communication, this_form, client_info_obj);
endif;
endif;
// If order is on a chemical restraint med form and indication for
// medication management is prepopulated, remove read only control
// from frequency and indication 08.25/2014 - TMS
If (exists med_cb and med_cb.Value = true) then
order_freq.control_read_only := false;
med_cond.control_read_only := false;
endif;
If exists order_freq and order_freq_summary in OneTimeFreq then
start_now.control_read_only := true;
stat_then.control_read_only := true;
TotalDosing.control_read_only := true;
endif;
If exists SCIP_Antibiotic and SCIP_Antibiotic.value is not NULL then
(this_communication, this_form) := call SCIPAbxOrder
with (this_communication, this_form, client_info_obj);
endif;
/* If exists IsPRN_field and IsPRN_field.value = true then
If exists start_now then
start_now.value := false;
start_now.control_read_only := true;
stat_then.value := false;
stat_then.control_read_only := true;
TotalDosing.value := "";
TotalDosing.control_read_only := true;
endif;
endif;
*/
If session_type = "Hold" then
If exists order_freq and order_freq_summary = "STAT" then
order_freq_value.FrequencySummary := NULL ;
endif;
start_now.control_read_only := true;
start_now.value := false;
stat_then.control_read_only := true;
stat_then.value := false;
TotalDosing.control_read_only := true;
TotalDosing.value := "";
If (Order_Set_Name in AnesthesiaOS or CurrentLocation matches pattern "Infus%") then
requested_time_value.ReqTimeCode := "Routine";
else
requested_time_value.ReqTimeCode := "Scheduled/Start Time";
endif; endif;
if continue_checking_order = false then
Start_Now.control_visible := FALSE;
Stat_Then.control_visible := FALSE;
TotalDosing.control_visible := FALSE;
endif;
if(Start_Now.Value = true) or (Stat_Then.Value = true) Then
StopAfter.control_read_only := true;
TotalDosing.control_read_only := false;
else
StopAfter.control_read_only := false;
TotalDosing.control_read_only := true;
/*
if(StopAfter.option = "Days" OR StopAfter.option = "Hours" OR StopAfter.option = "Minutes") then
this_communication.DisplayForm := "Yes";
this_communication.Message := "You can not select "|| StopAfter.option ||" in Stop After Window with Start Now Dosing Option. Please select {{{SINGLE-QUOTE}}}Times{{{SINGLE-QUOTE}}} option ";
this_communication.MessageType := "Error";
stopafter.option := "";
endif;
*/
endif;
endif;
;;
evoke:
;;
logic:
Conclude true;
;;
action:
// This MLM returns two parameters, of types
//communication_type and form_type respectively.
return this_communication, this_form;
;;
Urgency: 50;;
end: