122 lines
4.4 KiB
Plaintext
122 lines
4.4 KiB
Plaintext
maintenance:
|
|
|
|
title: MRSA Order Check;;
|
|
mlmname: Form_MRSA_ScreenCheckOrders;;
|
|
arden: version 2;;
|
|
version: 5.00;;
|
|
institution: St. Clair Hospital;;
|
|
author: Teresa M. Spicuzza ;;
|
|
specialist: Eclipsys Corporation;;
|
|
date: 2010-12-14;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Prohibit ordering of MRSA Nasal Screen if one exists, patient has had a positive screen, or patient is not on
|
|
a screening unit.
|
|
;;
|
|
explanation: This MLM will hard stop user from entering an Infection Control MRSA Nasal Screen when one already exists.
|
|
|
|
Change history
|
|
|
|
12.21.2010 TS Created
|
|
05.04.2011 TS Added different alert messge if patient has an order pending collection.
|
|
09.26.2016 TS Added "(OrderedWithin3 = "Yes" and NewOrderBox.Value = true and StatusCode <> "PCOL")" to eliminate
|
|
users from ordering Nasal Screen via the Copy/Reorder function in SCM. CSR 35095
|
|
;;
|
|
keywords:
|
|
MRSA, Infection Control;
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
// This MLM is passed three arguments, of types
|
|
// communication_type, form_type and client info object respectively.
|
|
|
|
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
|
|
using "ObjectsPlusXA.SCM.Forms";
|
|
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
|
(this_communication, // Communication object
|
|
this_form, // Form object
|
|
client_info_obj // Arden ClientInfo object
|
|
) := argument;
|
|
|
|
called_by := this_communication.CallingEvent;
|
|
ClientGuid := this_communication.ClientGUID;
|
|
ClientVisitGuid := this_communication.ClientVisitGUID;
|
|
ChartGuid := this_communication.ChartGuid;
|
|
|
|
// Assigns fields passed in the Form object to the Field object
|
|
field_list:= this_form.fields;
|
|
|
|
// Get patient current location
|
|
CurrentLocation := read last
|
|
{"Select CurrentLocation "
|
|
||" From cv3Clientvisit "
|
|
||" Where Guid = " || SQL(ClientVisitGuid)
|
|
||" and VisitStatus = {{{SINGLE-QUOTE}}}ADM{{{SINGLE-QUOTE}}}" };
|
|
|
|
// Obtain needed data elements from SCH_Func_MRSA_Order
|
|
MRSA_Rules_MLM := mlm {{{SINGLE-QUOTE}}}SCH_Func_MRSA_Order{{{SINGLE-QUOTE}}};
|
|
(ScreeningUnit, OrderedToday, OrderedWithin3, PositiveScreen, SigDTM, StatusCode, ResultValue, MRSAHistory, NursingHomeResidency, AntiInfectivewithin7)
|
|
:= call MRSA_Rules_MLM with (ClientVisitGuid, ChartGuid, ClientGuid, CurrentLocation);
|
|
|
|
StopOrderBox := last of (field_list where field_list.DataItemName = "MLM Generic Free Text");
|
|
NewOrderBox := last of (field_list where field_list.DataItemName = "MLM Generic Checkbox");
|
|
|
|
|
|
//dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n SigDtm: " || SigDTM ||"\n itemevent: " || ItemEvent ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
NextTestDtm := (SigDTM as time) + 3 days;
|
|
|
|
If OrderedWithin3 = "Yes" and StatusCode <> "PCOL" then
|
|
ReasonMessage := "Additional MRSA Nasal Screen does not need performed " ||"\n until " || (NextTestDtm as time) || ".";
|
|
endif;
|
|
|
|
If OrderedWithin3 = "Yes" and StatusCode = "PCOL" then
|
|
ReasonMessage := "Patient has an MRSA Order pending collection; please add specimen to pending order in SCM.";
|
|
endif;
|
|
|
|
If PositiveScreen = "Yes" then
|
|
ReasonMessage := "This patient has a positive screening for MRSA, therefore this test does not need ordered.";
|
|
endif;
|
|
|
|
If (PositiveScreen = "Yes") or ((OrderedWithin3 = "Yes" and NewOrderBox.Value = false)) or (OrderedWithin3 = "Yes" and NewOrderBox.Value = true and StatusCode <> "PCOL") then
|
|
hardstop := "yes";
|
|
else hardstop := "no";
|
|
endif;
|
|
|
|
//Present user with message box and stop order from being ordered. If order allowed change value of NewOrderBox to True to eliminate
|
|
//MLM stopping user when trying to status specimen as collected.
|
|
StopOrderBoxValue:= StopOrderBox.value;
|
|
If exists StopOrderBox then
|
|
If hardstop = "yes" then
|
|
this_communication.DisplayForm := "yes";
|
|
this_communication.Message := ReasonMessage;
|
|
this_communication.MessageType := "Error";
|
|
StopOrderBoxValue.control_mandatory := TRUE;
|
|
NewOrderBox.value := FALSE;
|
|
else
|
|
StopOrderBoxValue.control_mandatory := FALSE;
|
|
NewOrderBox.value :=TRUE;
|
|
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:
|