332 lines
11 KiB
Plaintext
332 lines
11 KiB
Plaintext
maintenance:
|
|
|
|
title: FORM_SET_SHOULDER_POST_OP;;
|
|
mlmname: FORM_SET_SHOULDER_POST_OP;;
|
|
arden: version 2;;
|
|
version: 5.50;;
|
|
institution: St Clair Admissions;;
|
|
author: Juliet Law, Eclipsys Corp Ext 7461;;
|
|
specialist: Michele Carter-Payne, Eclipsys Corp Ext 7445;;
|
|
date: 2011-09-02;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Used for Post Op Shoulder Order Set
|
|
;;
|
|
|
|
explanation: Used for Post Op Shoulder Order Set
|
|
|
|
Change history
|
|
|
|
09.02.2011 JMLaw Created.
|
|
09.07.2018 JMLaw CSR 37062: Logic added to support annual Order Set Revisions project. Concurrently implementing
|
|
anticoagulant check (previously documented in service ticket# 3260474)
|
|
|
|
;;
|
|
keywords: Called MLMs, Shoulder, Post Op
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
// 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;
|
|
|
|
|
|
/*******************Make Changes To Spelling And Flags In This Section*******************/
|
|
// Initialize error message
|
|
error_message:="";
|
|
|
|
// Assigns fields passed in the Form object to the Field object
|
|
field_list:= this_form.fields;
|
|
client_guid := this_communication.ClientGUID;
|
|
visit_guid := this_communication.ClientVisitGUID;
|
|
chart_guid := this_communication.ChartGuid;
|
|
CallingEvent := this_communication.CallingEvent;
|
|
CallingField := this_communication.CallingFieldName;
|
|
|
|
standard_libs := MLM {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
|
|
using "ObjectsPlusXA.SCM.Forms";
|
|
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
|
|
|
//Need to implicitly call the generic MLM ONLY for the Anticoagulant Grids
|
|
anticoagulant_conflict := MLM {{{SINGLE-QUOTE}}}FORM_FUNC_ANTICOAGULANT_CONFLICT_CHECK{{{SINGLE-QUOTE}}};
|
|
|
|
// Retrieve field list of Nursing Assessment Grid
|
|
NursingAssessments := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 12);
|
|
NursingAssessments_List := NursingAssessments.Value;
|
|
|
|
//Retrieve field list of Conditional Order Grid
|
|
ConditionalOrders := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 31);
|
|
ConditionalOrders_List := ConditionalOrders.Value;
|
|
|
|
// Retrieve field list of Bowel Regimen Order Grid
|
|
BowelOrders := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 7);
|
|
BowelOrders_List := BowelOrders.Value;
|
|
|
|
// Retrieve field list of Anti-Emetic Order Grid
|
|
AntiEmeticOrders := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 6);
|
|
AntiEmeticOrders_List := AntiEmeticOrders.Value;
|
|
|
|
//Retrieve field list of Moderate Pain Order Grid
|
|
ModPainOrders := last of (field_list where field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 5);
|
|
ModPainOrders_List := ModPainOrders.Value;
|
|
|
|
//Retrieve field list of Severe Pain Order Grid
|
|
SeverePainOrders := last of (field_list where field_list.DataItemname = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 4);
|
|
SeverePainOrders_List := SeverePainOrders.Value;
|
|
|
|
Lovenox_AntiCoag_Orders := last of ( field_list WHERE field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 9 );
|
|
Lovenox_AntiCoag_List := Lovenox_AntiCoag_Orders.Value;
|
|
Aspirin_AntiCoag_Orders := last of ( field_list WHERE field_list.DataItemName = "MultiOrderGrid"
|
|
AND field_list.Control_MultiFieldOccNum = 41 );
|
|
Aspirin_AntiCoag_List := Aspirin_AntiCoag_Orders.Value;
|
|
|
|
|
|
|
|
if (CallingField = "MultiOrderGrid|12") then
|
|
InstrFld := first of (NursingAssessments_List where NursingAssessments_List.Name = "Nurse Instruction:");
|
|
|
|
if (InstrFld.IsSelected = true) then
|
|
ConditionalOrders_List.IsSelected := (true,true);
|
|
else
|
|
ConditionalOrders_List.IsSelected := (false,false);
|
|
endif;
|
|
endif;
|
|
|
|
if (CallingField = "MultiOrderGrid|7") then
|
|
Found_MofM := first of (BowelOrders_List where BowelOrders_List.Name = "Magnesium Hydroxide Susp");
|
|
Found_Senna := first of (BowelOrders_List where BowelOrders_List.Name = "Senna Tab");
|
|
|
|
if (Found_MofM.IsSelected = true) then
|
|
Found_Senna.IsSelected := false;
|
|
Found_Senna.IsReadOnly := true;
|
|
elseif (Found_Senna.IsSelected = true) then
|
|
Found_MofM.IsSelected := false;
|
|
Found_MofM.IsReadOnly := true;
|
|
else
|
|
Found_Senna.IsSelected := false;
|
|
Found_MofM.IsSelected := false;
|
|
Found_Senna.IsReadOnly := false;
|
|
Found_MofM.IsReadOnly := false;
|
|
endif;
|
|
|
|
endif;
|
|
|
|
if (CallingField = "MultiOrderGrid|6") then
|
|
|
|
FirstThree := (AntiEmeticOrders_List.IsSelected[1],
|
|
AntiEmeticOrders_List.IsSelected[2],
|
|
AntiEmeticOrders_List.IsSelected[3]);
|
|
|
|
if true in Firstthree then
|
|
NewReadOnly := ();
|
|
NewSelected := ();
|
|
for k in (1 seqto (count AntiEmeticOrders_List.IsSelected)) do
|
|
|
|
if k <= 3 then
|
|
if AntiEmeticOrders_List.IsSelected[k] = true then
|
|
NewReadOnly := NewReadOnly, false;
|
|
NewSelected := NewSelected,true;
|
|
else
|
|
NewReadOnly := NewReadOnly, true;
|
|
NewSelected := NewSelected, false;
|
|
endif;
|
|
elseif k = 4 then
|
|
NewReadOnly := NewReadOnly, false;
|
|
NewSelected := NewSelected,AntiEmeticOrders_List.IsSelected[k];
|
|
elseif (k <= 8) then
|
|
NewReadOnly := NewReadOnly, true;
|
|
NewSelected:= NewSelected, AntiEmeticOrders_List.IsSelected[4];
|
|
else
|
|
NewReadOnly := NewReadOnly, AntiEmeticOrders_List.IsReadOnly[k];
|
|
NewSelected := NewSelected, AntiEmeticOrders_List.IsSelected[k];
|
|
endif;
|
|
enddo;
|
|
AntiEmeticOrders_List.IsReadOnly := NewReadOnly;
|
|
AntiEmeticOrders_List.IsSelected := NewSelected;
|
|
|
|
else
|
|
NewReadOnly := ();
|
|
DeselectAll := ();
|
|
for k in (1 seqto (count AntiEmeticOrders_List.IsSelected)) do
|
|
if k <= 3 then
|
|
NewReadOnly := NewReadOnly, false;
|
|
DeselectAll := DeselectAll ,false;
|
|
elseif k>8 then
|
|
NewReadOnly := NewReadOnly, AntiEmeticOrders_List.IsReadOnly[k];
|
|
DeselectAll := DeselectAll, AntiEmeticOrders_List.IsSelected[k];
|
|
else
|
|
NewReadOnly := NewReadOnly, true;
|
|
DeselectAll := DeselectAll, false;
|
|
endif;
|
|
enddo;
|
|
AntiEmeticOrders_List.IsReadOnly := NewReadOnly;
|
|
AntiEmeticOrders_List.IsSelected := DeselectAll;
|
|
endif;
|
|
endif;
|
|
|
|
if (CallingField = "MultiOrderGrid|5") then
|
|
|
|
LastThree := (ModPainOrders_List.IsSelected[2],
|
|
ModPainOrders_List.IsSelected[3],
|
|
ModPainOrders_List.IsSelected[4]);
|
|
|
|
if true IN LastThree then
|
|
NewReadOnly := ();
|
|
NewSelected := ();
|
|
for k in (1 seqto (count ModPainOrders_List.IsSelected)) do
|
|
if (k = 1) then
|
|
NewReadOnly := NewReadOnly, false;
|
|
NewSelected := NewSelected, ModPainOrders_List.IsSelected[k];
|
|
elseif (k > 1) then
|
|
if (ModPainOrders_List.IsSelected[k] = true) then
|
|
NewReadOnly := NewReadOnly, false;
|
|
NewSelected := NewSelected, true;
|
|
else
|
|
NewReadOnly := NewReadOnly, true;
|
|
NewSelected := NewSelected, false;
|
|
endif;
|
|
else
|
|
NewReadOnly := NewReadOnly, ModPainOrders_List.IsReadOnly[k];
|
|
NewSelected := NewSelected, ModPainOrders_List.IsSelected[k];
|
|
endif;
|
|
enddo;
|
|
ModPainOrders_List.IsSelected := NewSelected;
|
|
ModPainOrders_List.IsReadOnly := NewReadOnly;
|
|
else
|
|
NewReadOnly := ();
|
|
DeSelectAll := ();
|
|
for k in (1 seqto (count ModPainOrders_List.IsSelected)) do
|
|
if (k=1) then
|
|
NewReadOnly := NewReadOnly, false;
|
|
DeSelectAll := DeSelectAll, ModPainOrders_List.IsSelected[k];
|
|
elseif (k > 1) then
|
|
NewReadOnly := NewReadOnly, false;
|
|
DeSelectAll := DeSelectAll, false;
|
|
else
|
|
NewReadOnly := NewReadOnly, ModPainOrders_List.IsReadOnly[k];
|
|
DeSelectAll := DeSelectAll, ModPainOrders_List.IsSelected[k];
|
|
endif;
|
|
enddo;
|
|
ModPainOrders_List.IsSelected := DeSelectAll;
|
|
ModPainOrders_List.IsReadOnly := NewReadOnly;
|
|
|
|
endif;
|
|
|
|
endif;
|
|
|
|
if (CallingField = "MultiOrderGrid|4") then
|
|
|
|
severe_pain_meds := ("Oxycodone 5mg Tab",
|
|
"Acetaminophen 500mg/Hydrocodon 7.5mg Tab",
|
|
"PCA - Hydromorphone Order Set",
|
|
"PCA - Morphine Order Set");
|
|
|
|
if (true IN SeverePainOrders_List.IsSelected) then
|
|
NewReadOnly := ();
|
|
NewSelected := ();
|
|
for k IN (1 seqto (count SeverePainOrders_List.IsSelected)) do
|
|
if (SeverePainOrders_List.Name[k] IN severe_pain_meds) then
|
|
if (SeverePainOrders_List.IsSelected[k] = true) then
|
|
NewReadOnly := NewReadOnly, false;
|
|
NewSelected := NewSelected, true;
|
|
else
|
|
NewReadOnly := NewReadOnly, true;
|
|
NewSelected := NewSelected, false;
|
|
endif;
|
|
else
|
|
NewReadOnly := NewReadOnly, SeverePainOrders_List.IsReadOnly[k];
|
|
NewSelected := NewSelected, SeverePainOrders_List.IsSelected[k];
|
|
endif;
|
|
enddo;
|
|
SeverePainOrders_List.IsSelected := NewSelected;
|
|
SeverePainOrders_List.IsReadOnly := NewReadOnly;
|
|
else
|
|
NewReadOnly := ();
|
|
DeSelectAll := ();
|
|
for k in (1 seqto (count SeverePainOrders_List.IsSelected)) do
|
|
if (SeverePainOrders_List.Name[k] IN severe_pain_meds) then
|
|
NewReadOnly := NewReadOnly, false;
|
|
DeSelectAll := DeSelectAll, false;
|
|
else
|
|
NewReadOnly := NewReadOnly, SeverePainOrders_List.IsReadOnly[k];
|
|
DeSelectAll := DeSelectAll, SeverePainOrders_List.IsSelected[k];
|
|
endif;
|
|
enddo;
|
|
SeverePainOrders_List.IsSelected := DeSelectAll;
|
|
SeverePainOrders_List.IsReadOnly := NewReadOnly;
|
|
endif;
|
|
endif;
|
|
|
|
//CSR 37062: Begin Change
|
|
if ( CallingField = "MultiOrderGrid|9" OR CallingField = "MultiOrderGrid|41" ) then
|
|
|
|
Enoxaparin_Select := first of ( Lovenox_AntiCoag_List WHERE Lovenox_AntiCoag_List.Name matches pattern "Enoxaparin%" );
|
|
Aspirin_Select := first of ( Aspirin_AntiCoag_List WHERE Aspirin_AntiCoag_List.Name matches pattern "Aspirin%" );
|
|
|
|
if ( Enoxaparin_Select.IsSelected = true )then
|
|
|
|
Aspirin_Select.IsSelected := false;
|
|
Aspirin_Select.IsReadonly := true;
|
|
|
|
(stop, stop_message, severity) := call anticoagulant_conflict WITH (this_communication, this_form, client_info_obj, Enoxaparin_Select.Name);
|
|
if ( stop = true ) then
|
|
if ( severity = "high" ) then
|
|
dialogRes := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with stop_message, "Anticoagulant Order Conflict", "OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}}, "Exclamation" as {{{SINGLE-QUOTE}}}MessageBoxIcon{{{SINGLE-QUOTE}}};
|
|
|
|
Enoxaparin_Select.IsSelected := false;
|
|
Aspirin_Select.IsReadonly := false;
|
|
|
|
else
|
|
dialogRes := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with stop_message, "Anticoagulant Order Conflict", "YesNo" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}}, "Question" as {{{SINGLE-QUOTE}}}MessageBoxIcon{{{SINGLE-QUOTE}}};
|
|
|
|
if ( ( dialogRes as String ) = "No" ) then
|
|
Enoxaparin_Select.IsSelected := false;
|
|
Aspirin_Select.IsReadonly := false;
|
|
endif;
|
|
endif;
|
|
endif;
|
|
|
|
elseif ( Aspirin_Select.IsSelected = true ) then
|
|
Enoxaparin_Select.IsSelected := false;
|
|
Enoxaparin_Select.IsReadonly := true;
|
|
|
|
else
|
|
Enoxaparin_Select.IsSelected := false;
|
|
Enoxaparin_Select.IsReadonly := false;
|
|
Aspirin_Select.IsSelected := false;
|
|
Aspirin_Select.IsReadonly := false;
|
|
endif;
|
|
|
|
|
|
endif;
|
|
//CSR 37062: End Change
|
|
|
|
;;
|
|
evoke: // No evoke statement
|
|
;;
|
|
logic:
|
|
|
|
conclude true;
|
|
;;
|
|
action:
|
|
// This MLM returns two parameters, of types communication_type and form_type respectively.
|
|
return this_communication, this_form;
|
|
;;
|
|
end:
|