Files
St.Clair/MLMStripper/bin/Debug/SCH/SCH_SURGERY_STATUSCHANGE_ANESTHESIA.mlm

184 lines
4.5 KiB
Plaintext

maintenance:
title: SCH_Surgery_StatusChange_Anesthesia;;
mlmname: SCH_Surgery_StatusChange_Anesthesia;;
arden: version 2.5;;
version: 16.3;; //
institution: Allscripts, ;;
author: Allscripts Healthcare Solutions, Inc.;;
specialist: ;;
date: 2017-04-11;;
validation: Testing;;
library:
purpose: Maintains an Alert when SUrgCase status change is done to "Procedure Complete" with missing Anesthesia data
;;
explanation: This MLM is a sample of alert on SUrgCase status change with missing data - and hard stop alert
01/07/15 - Allscripts - change trigger and status to regard to "Procedure Complete" and update alert message
04/05/17 - Allscripts - initiate readiness and deploy at SCH Dev
05/01/17 - updated for enhanced anesthesia checking upon close with iPro
07/19/17 - demoted out of PRod uction status as CU 8 has cared for iPro to write into closed cases
10/09/17 - revert back to 04/05/17 version for hardstop if no Anesth Type
;;
keywords: ObjectsPlus, Advanced Visit List Data, Health Issues
;;
knowledge:
type: data-driven;;
data:
//****************Make Changes To Spelling And Flags In This Section****************
// list of CPT{{{SINGLE-QUOTE}}}s to check for - to see if COnsult
/// for case statuses that to be considered the logic
in_prog_status:= "Procedure Complete", "Transfer to In-patient"; //"In OR", "Ready for Recovery Room", "Closing Started" ;
//-------------------------------------------------------------------
// Triggers
//-------------------------------------------------------------------
// Case status event CaseStatusInternalType
/// 07/18/15 - update to look at Internal Type for status
case_status_event := EVENT {SRGCaseStatusChange User SRGCase: Where (CaseStatusInternalType in ("Complete") ) };
// Where (CaseStatusName in ("Procedure Complete") ) }; // "In OR", "Ready for Recovery Room", "Closing Started" )) };
//---------------------------------------------------------------
// Email and ObjectsPlus destinations
//---------------------------------------------------------------
/// flags
test_a:= "&";
a:= 0;
ct_get_con:= 0;
//******************Do Not Make Changes Below This Section*******************
// Specify which .NET assemblies need to be loaded for ObjectsPlus
standard_libs := MLM {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
include standard_libs;
if called_by_editor
then
EvokingObject := read last {SRGCase: THIS };
evokingevent:= case_status_event;
endif;
//break;
/// for STV Surg Procedures
// Get the case events object from the evoking case object
// find the surg case events
bu_case_obj:= evokingObject.backup;
get_status:= EVOKINGOBJECT.CaseStatusName;
get_status_type:= EVOKINGOBJECT.CaseStatusInternalType;
get_anesth:= EVOKINGOBJECT.AnesthesiaTypeName;
get_anesth_id:= EVOKINGOBJECT.AnesthesiaTypeID ;
proc_end := evokingobject.ActualEndDateTimeUTC;
/// testing
if called_by_editor
then
proc_end:= NOW - 8 days;
endif;
///
//break;
/// logic for anesthesia needed
/// 07/18/16 - update to look at internal status type
if ( get_status in in_prog_status
OR get_status_type in ("Complete") )
and not(bu_case_obj.CaseStatusName in in_prog_status)
then
if not (exists get_anesth)
then
a:=1;
endif;
endif;
// break;
//////////////////////////////////////////////////////////////////////////////
/// test for logic
If a > 0 then
//break;
alert_text:=// "Procedure Status Update to: "||get_status||" \n{{+B}} IS NOT permitted on a Procedure without {{{SINGLE-QUOTE}}}Anesthesia Type{{{SINGLE-QUOTE}}} documented. {{-B}}" //|| proc_f // for a {{+B}}{{+C}}Consult Code{{-C}} {{-B}}"
"\nPlease document {{+B}} {{+R}}Anesthesia Type {{-R}}{{-B}} on the {{+B}}Case Header{{-B}} tab for this Case."
||"\n\n Then you may proceed to Close the Case."; // below if you need to enter the NDC Codes."; //||"It is being deleted.\n\nYou Must Re-Value to get a Score";
dest_var:= destination{alert: warning, "Anesthesia Type is Required",
low, chart, "my rule group", 1001, "", "No Override Allowed" };
endif; // a >0 an
//break;
;;
priority: 50
;;
evoke:
case_status_event
;;
logic:
if a = 0 //( EvokingObject is null or
///continue_processing = false )
then
conclude false;
elseif a > 0
then
conclude true;
endif;
//break;
;;
action:
if exists dest_var //and a >0
then
write alert_text at dest_var;
endif;
;;
urgency: 50;;
end: