259 lines
9.7 KiB
Plaintext
259 lines
9.7 KiB
Plaintext
maintenance:
|
|
|
|
title: Methotrexate Orders;;
|
|
mlmname: FORM_Set_Methotrexate_Orders;;
|
|
arden: version 2;;
|
|
version: 15.10;;
|
|
institution: St Clair Admissions;;
|
|
author: Teresa Spicuzza, Eclipsys Corp ext 7448;;
|
|
specialist: Teresa Spicuzza, Eclipsys Corp ext 7448;;
|
|
date: 2016-01-06;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Used for methotrexate orders to allow user to easily enter weekly schedules
|
|
and creating a <User Schedule> from their selections.
|
|
;;
|
|
|
|
explanation: This MLM is called from the methotrexate order set
|
|
|
|
|
|
Change history
|
|
|
|
01.26.2016 TMS Initial build CSR 33699
|
|
04.26.2016 TMS Add call on form Close to Medication Order Management MLM CSR 33465
|
|
|
|
|
|
;;
|
|
keywords: Called MLMs, methotrexate
|
|
;;
|
|
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*******************/
|
|
|
|
/* Set to true if a decision.log is needed.*/
|
|
log_execution_info := FALSE;
|
|
standard_libs := MLM {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
//using "ObjectsPlusXA.SCM.Forms";
|
|
//using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
|
/***************************************************************************************/
|
|
|
|
// Use String parse
|
|
str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}};
|
|
|
|
// 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;
|
|
|
|
//Find the baseline order checkbox that may need to be ordered with this protocol
|
|
|
|
DoseA := last of (field_list where field_list.DataItemName = "MethotrexateDose" and field_List.Control_MultiFieldOccNum = 1);
|
|
DoseA_value := DoseA.value;
|
|
Dosage := first of (field_list where field_list.DataItemName = "DosageLow" and field_List.Control_MultiFieldOccNum = 1);
|
|
Dosage_val := dosage.value;
|
|
AltDaysDoseA := last of (field_list where field_list.DataItemName = "PRX_AltSchedule1" and field_List.Control_MultiFieldOccNum = 1);
|
|
AltDaysDoseA_list := AltDaysDoseA.value;
|
|
AdminTimesDoseA := last of (field_list where field_list.DataItemName = "PRX_WeeklyAdminTime" and field_List.Control_MultiFieldOccNum = 1);
|
|
AdminTimesDoseA_list := AdminTimesDoseA.value;
|
|
NonWeeklyFreqDoseA := last of (field_list where field_list.DataItemName = "PRX_NonWeeklySchedule" and field_List.Control_MultiFieldOccNum = 1);
|
|
NonWeeklyFreqDoseA_list := NonWeeklyFreqDoseA.value;
|
|
DoseADays := last of (field_list where field_list.DataItemName = "PRX_Scheddays1" and field_List.Control_MultiFieldOccNum = 1);
|
|
DoseATimes := last of (field_list where field_list.DataItemName = "PRX_SchedTimes" and field_List.Control_MultiFieldOccNum = 1);
|
|
NonWeeklyCB := last of (field_list where field_list.DataItemName = "PRX_Generic_CB" and field_List.Control_MultiFieldOccNum = 1);
|
|
NonWeeklyCB_value := NonWeeklyCB.value;
|
|
Frequency := last of (field_list where field_list.DataItemName = "FrequencyCode" and field_List.Control_MultiFieldOccNum = 1);
|
|
Frequency_val := Frequency.value;
|
|
DailyFreq := last of (field_list where field_list.DataItemName = "PRX_Std_Schedule" and field_List.Control_MultiFieldOccNum = 1);
|
|
DailyFreq_value := DailyFreq.value;
|
|
DoseAStartdate:= last of (field_list where field_list.DataItemName = "RequestedDate"and field_List.Control_MultiFieldOccNum = 1);
|
|
Instructions := first of (field_list where field_list.DataItemName = "AdminInstructions" and field_List.Control_MultiFieldOccNum = 1);
|
|
|
|
|
|
|
|
If CallingEvent = "FieldChange" or CallingEvent = "FormClose" Then
|
|
|
|
//Make appropriate fields available on the form for weekly and one time frequencies
|
|
|
|
If CallingField = "PRX_Generic_CB|1" then
|
|
|
|
If NonWeeklyCB.Value = false then
|
|
AltDaysDoseA.control_read_only := False;
|
|
AdminTimesDoseA.control_read_only := False;
|
|
Frequency_val.frequencysummary := Null;
|
|
NonWeeklyFreqDoseA.control_read_only := true;
|
|
NonWeeklyFreqDoseA.value:= Null;
|
|
|
|
|
|
elseif NonWeeklyCB_Value = true then
|
|
AltDaysDoseA.value := Null;
|
|
AltDaysDoseA.control_read_only := True;
|
|
AdminTimesDoseA.control_read_only := True;
|
|
AdminTimesDoseA.value := Null;
|
|
DoseADays.value := "None";
|
|
DoseATimes.value := "None";
|
|
NonWeeklyFreqDoseA.control_read_only := false;
|
|
endif;
|
|
|
|
endif;
|
|
|
|
// Determine the day of the week for today and the following 6 days
|
|
|
|
ThisTime := (now as time) ;
|
|
FormatDate := extract month ThisTime ||"-" || extract day ThisTime ||"-" ||extract year ThisTime;
|
|
ThisDay := extract year ThisTime || "-" || extract month ThisTime ||"-" || extract day ThisTime;
|
|
DayofWeek1 := read last {"SELECT DATENAME(dw, GETDATE ())"};
|
|
DayofWeek2 := read last {"SELECT DATENAME(dw, dateadd (WEEKDAY,1,{{{SINGLE-QUOTE}}}" || ThisTime || "{{{SINGLE-QUOTE}}}))"};
|
|
DayofWeek3 := read last {"SELECT DATENAME(dw, dateadd (WEEKDAY,2,{{{SINGLE-QUOTE}}}" || ThisTime || "{{{SINGLE-QUOTE}}}))"};
|
|
DayofWeek4 := read last {"SELECT DATENAME(dw, dateadd (WEEKDAY,3,{{{SINGLE-QUOTE}}}" || ThisTime || "{{{SINGLE-QUOTE}}}))"};
|
|
DayofWeek5 := read last {"SELECT DATENAME(dw, dateadd (WEEKDAY,4,{{{SINGLE-QUOTE}}}" || ThisTime || "{{{SINGLE-QUOTE}}}))"};
|
|
DayofWeek6 := read last {"SELECT DATENAME(dw, dateadd (WEEKDAY,5,{{{SINGLE-QUOTE}}}" || ThisTime || "{{{SINGLE-QUOTE}}}))"};
|
|
DayofWeek7 := read last {"SELECT DATENAME(dw, dateadd (WEEKDAY,6,{{{SINGLE-QUOTE}}}" || ThisTime || "{{{SINGLE-QUOTE}}}))"};
|
|
|
|
If CallingField = "PRX_NonWeeklySchedule|1" then
|
|
Frequency_val.frequencysummary := NonWeeklyFreqDoseA.value;
|
|
DailyFreq.value := Frequency_val.frequencysummary;
|
|
endif;
|
|
|
|
If CallingField = "MultiOrderGrid|1" and DoseA_value is Null then
|
|
dialogmsg := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Please select Dose of Methotrexate and Frequency from selection options. " ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
Grid1Orders_List.IsReadOnly := (True);
|
|
Grid1Orders_List.IsSelected := (False);
|
|
endif;
|
|
|
|
// Add dose selected, days selected and times selected to hidden fields to map to order
|
|
If CallingField = "MethotrexateDose|1" then
|
|
|
|
If DoseA_value is not null then
|
|
|
|
(doselist) := call str_parse with DoseA_value," ";
|
|
|
|
for r in doselist do
|
|
dosage.value := doselist [1];
|
|
enddo;
|
|
|
|
numtabs := (dosage.value as number) / 2.5;
|
|
endif;
|
|
endif;
|
|
|
|
If CallingField = "PRX_WeeklyAdminTime|1" then
|
|
|
|
if AdminTimesDoseA.value is not null then
|
|
DoseATimes.value := AdminTimesDoseA_list;
|
|
(adminlist) := call str_parse with AdminTimesDoseA_list,",";
|
|
admin_count := count adminlist;
|
|
|
|
endif;
|
|
endif;
|
|
|
|
// Loop through days selected, compare with days of the week to determine starting day
|
|
if callingfield = "PRX_AltSchedule1|1" then
|
|
if AltDaysDoseA.value is not null then
|
|
DoseADays.value := AltDaysDoseA_list;
|
|
StartDay1A := "NO";
|
|
StartDay2A := "NO";
|
|
StartDay3A := "NO";
|
|
StartDay4A := "NO";
|
|
StartDay5A := "NO";
|
|
StartDay6A := "NO";
|
|
StartDay7A := "NO";
|
|
ListOfDaysA := call str_parse with DoseADays.value, ",";
|
|
|
|
for r in 1 seqto (count ListOfDaysA) do
|
|
|
|
If DayofWeek1 = ListOfDaysA [r] then
|
|
StartDay1A := "YES";
|
|
elseif DayofWeek2 = ListOfDaysA [r] then
|
|
StartDay2A := "Yes";
|
|
elseif DayofWeek3 = ListOfDaysA [r] then
|
|
StartDay3A := "Yes";
|
|
elseif DayofWeek4 = ListOfDaysA [r] then
|
|
StartDay4A := "Yes";
|
|
elseif DayofWeek5 = ListOfDaysA [r] then
|
|
StartDay5A := "Yes";
|
|
elseif DayofWeek6 = ListOfDaysA [r] then
|
|
StartDay6A := "Yes";
|
|
elseif DayofWeek7 = ListOfDaysA [r] then
|
|
StartDay7A := "Yes";
|
|
endif;
|
|
enddo;
|
|
|
|
endif;
|
|
endif;
|
|
|
|
// Determine start date for order
|
|
|
|
If StartDay1A = "Yes" then
|
|
DoseAStartDate.value := Thistime;
|
|
elseif StartDay2A = "Yes" then
|
|
DoseAStartDate.value := Thistime + 1 day;
|
|
elseif StartDay3A = "Yes" then
|
|
DoseAStartDate.value := Thistime + 2 day;
|
|
elseif StartDay4A = "Yes" then
|
|
DoseAStartDate.value := Thistime + 3 day;
|
|
elseif StartDay5A = "Yes" then
|
|
DoseAStartDate.value := Thistime + 4 day;
|
|
elseif StartDay6A = "Yes" then
|
|
DoseAStartDate.value := Thistime + 5 day;
|
|
elseif StartDay7A = "Yes" then
|
|
DoseAStartDate.value := Thistime + 6 day;
|
|
endif;
|
|
|
|
endif; //CallingEvent = "FieldChange" or CallingEvent = "FormClose"
|
|
|
|
If CallingEvent = "FormClose" then
|
|
|
|
Med_Order_Mgt := mlm {{{SINGLE-QUOTE}}}FORM_SET_Rx_Medication_Order_Mgt{{{SINGLE-QUOTE}}};
|
|
(this_communication, this_form) := call Med_Order_Mgt with this_communication, this_form, client_info_obj;
|
|
endif;
|
|
|
|
// Determine how many tablets to administer for dose selected add to admin instructions
|
|
|
|
numtabs := (dosage.value as number) / 2.5;
|
|
|
|
If (numtabs is not null) then
|
|
If (DoseATimes.value <> "None") and (DoseADays.value <> "None") then
|
|
instructions.value := "Give " || numtabs || " tablets, every " || DoseADays.value || " at " || DoseATimes.value;
|
|
elseif (DoseATimes.value = "None") and (DoseADays.value = "None") then
|
|
instructions.value := "Give " || numtabs || " tablets " ;
|
|
endif;
|
|
else
|
|
instructions.value := "";
|
|
endif;
|
|
|
|
|
|
|
|
;;
|
|
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:
|