1455 lines
63 KiB
Plaintext
1455 lines
63 KiB
Plaintext
maintenance:
|
|
|
|
title: FORM_SET_DVT_PE_TREATMENT ;;
|
|
mlmname: FORM_SET_DVT_PE_TREATMENT;;
|
|
arden: version 2.5;;
|
|
version: 1.00;;
|
|
institution: St.Clair Hospital ;;
|
|
author: Sandy Zhang ;;
|
|
specialist: Amy Georgolis ;;
|
|
date: 2017-09-22;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Requested by pharmacy: Box checking algorithm for DVT/PE Treatment options (Rivaroxaban and Apixaban).
|
|
1) If Rivaroxaban 15mg (Apixaban 10mg) is selected then check 20mg (apixaban 5mg) option as well.
|
|
2) If Rivaroxaban 20mg only is selected then change start date to today using hidden field.
|
|
3) Allow users to select stop after date from field above order grid, map to maintenance therapy stop after date.
|
|
|
|
Attached to {{{SINGLE-QUOTE}}}Called MLMs{{{SINGLE-QUOTE}}} for Forms: PRX_OS_Rivaroxaban and PRX_OS_Apixaban
|
|
|
|
;;
|
|
explanation:
|
|
|
|
Change history
|
|
|
|
09.22.2017 SZ CSR #35039 - Add DVT/PE dose options for rivaroxaban and apixaban Initial build - derived from FORM_Set_Tikosyn_Electrolyte as a model
|
|
02.01.2018 SZ added code to fix stop after date requirements by Amy
|
|
03.19.2018 SZ CSR #36412 - Apixaban occurrence-Enhance order set. Has several safety enhancements and does a much better job with auto-schedule
|
|
03.22.2018 SZ CSR #36414 - Apply apixaban ordering corrections to xarelto
|
|
07.03.2019 SZ Help Desk ticket #3797703 - System change caused issues with __ x times(doses)logic for stat and now ordering. Issue corrected on both apixaban and rivaroxaban order sets.
|
|
|
|
;;
|
|
keywords:
|
|
;;
|
|
citations:
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
using "ObjectsPlusXA.SCM.Forms";
|
|
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
|
|
|
|
|
// 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;
|
|
|
|
/***************************************************************************************/
|
|
|
|
// 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;
|
|
user_guid := this_communication.UserGuid;
|
|
|
|
CallingEvent := this_communication.CallingEvent;
|
|
CallingField := this_communication.CallingFieldName;
|
|
|
|
Stop_After_field := last of (field_list where field_list.DataItemName = "StopAfter" and field_List.Control_MultiFieldOccNum = 1);
|
|
Stop_After_field_value := Stop_After_field.Value;
|
|
Stop_After_field_value_number := Stop_After_field_value.Number;
|
|
Stop_After_field_value_option := Stop_After_field_value.Option;
|
|
Stop_After_field_2 := last of (field_list where field_list.DataItemName = "StopAfter" and field_List.Control_MultiFieldOccNum = 2);
|
|
Stop_After_field_2_value := Stop_After_field_2.Value;
|
|
Stop_After_field_2_value_number := Stop_After_field_2_value.Number;
|
|
|
|
Stop_Date_field := last of (field_list where field_list.DataItemName = "StopDate");
|
|
|
|
primary_obj := this_communication.PrimaryObj[1];
|
|
tomorrow := Now + 1 day;
|
|
current_hour := (extract hour NOW);
|
|
|
|
/****************************************** start Rivaroxaban part ***********************************************/
|
|
if (Primary_Obj.OrderSetName = "Rivaroxaban") then
|
|
|
|
prompt_answer_no := last of (field_list where field_list.DataItemName = "Checkbox" and field_List.Control_MultiFieldOccNum = 6);
|
|
prompt_answer_yes := last of (field_list where field_list.DataItemName = "Checkbox" and field_List.Control_MultiFieldOccNum = 7);
|
|
|
|
stat_dose_15mg := last of (field_list where field_list.DataItemName = "PRX_Dosing Stat and Then"); //Rivaroxaban OS = 15mg
|
|
now_dose_15mg := last of (field_list where field_list.DataItemName = "PRX_Dosing Start Now"); //Rivaroxaban OS = 15mg
|
|
|
|
Rivaroxaban_DVTPE_order_grid := last of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 3);
|
|
Rivaroxaban_DVTPE_order_options := Rivaroxaban_DVTPE_order_grid.Value;
|
|
|
|
Rivaroxaban_15mg_tab := Rivaroxaban_DVTPE_order_options[1];
|
|
Rivaroxaban_20mg_tab := Rivaroxaban_DVTPE_order_options[2];
|
|
|
|
req_date_field_15mg := last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 3);
|
|
req_date_field_20mg := last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 2);
|
|
|
|
req_time_field_15mg := last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 3);
|
|
req_time_field_20mg := last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 2);
|
|
req_time_field_15mg_value := req_time_field_15mg.Value;
|
|
req_time_field_20mg_value := req_time_field_20mg.Value;
|
|
|
|
if (CallingEvent = "FieldChange") and (CallingField = "MultiOrderGrid|3") then
|
|
|
|
Stop_After_field_value.Number := 42;
|
|
Stop_After_field_value.Option := "Doses";
|
|
|
|
Stop_After_field_2_value.Number := 42;
|
|
Stop_After_field_2_value.Option := "Doses";
|
|
|
|
// if user is ordering after 9pm, but before 9am (with even doses) then default the start/scheduled times to 09:00
|
|
if (current_hour < 9) or (current_hour >= 21) then
|
|
if (current_hour >= 21) then
|
|
req_date_field_15mg.Value := NOW + 1 day;
|
|
endif;
|
|
req_time_field_15mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
req_time_field_20mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
req_time_field_15mg_value.ReqTimeValue := "09:00";
|
|
req_time_field_20mg_value.ReqTimeValue := "17:00";
|
|
else
|
|
req_time_field_15mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
req_time_field_20mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
req_time_field_15mg_value.ReqTimeValue := "21:00";
|
|
req_time_field_20mg_value.ReqTimeValue := "17:00";
|
|
endif;
|
|
|
|
// defaults start time of 15mg to 22 days
|
|
// true/false
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) and (Rivaroxaban_20mg_tab.IsSelected = false) and (not exist req_date_field_20mg.Value) then
|
|
|
|
Rivaroxaban_20mg_tab.IsSelected := true;
|
|
if (current_hour >= 9 and current_hour < 21) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 22 day;
|
|
endif;
|
|
|
|
if (current_hour >= 21) or (current_hour < 9) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 21 day;
|
|
endif;
|
|
|
|
endif;
|
|
|
|
// false/true
|
|
if (Rivaroxaban_15mg_tab.IsSelected = false) and (Rivaroxaban_20mg_tab.IsSelected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value;
|
|
req_time_field_20mg_value.ReqTimeValue := "17:00";
|
|
|
|
endif;
|
|
|
|
// true/true
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) and (Rivaroxaban_20mg_tab.IsSelected = true) then
|
|
if current_hour >= 9 and current_hour < 21 then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 22 day;
|
|
endif;
|
|
|
|
if (current_hour >= 21) or (current_hour < 9) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 21 day;
|
|
endif;
|
|
endif;
|
|
|
|
// code for unchecking of 5mg
|
|
// true/false
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) and (Rivaroxaban_20mg_tab.IsSelected = false) and (exist req_date_field_20mg.Value) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value;
|
|
endif;
|
|
|
|
// code for unchecking of 5mg and requires MD to select a stop after date
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) and (Rivaroxaban_20mg_tab.IsSelected = false) then
|
|
if current_hour >= 9 and current_hour < 21 then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 22 day;
|
|
endif;
|
|
|
|
if (current_hour >= 21) or (current_hour < 9) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 21 day;
|
|
endif;
|
|
Stop_After_field.Control_Mandatory := true;
|
|
endif;
|
|
|
|
// false/false
|
|
if (Rivaroxaban_15mg_tab.IsSelected = false) and (Rivaroxaban_20mg_tab.IsSelected = false) then
|
|
req_date_field_20mg.Value := null;
|
|
endif;
|
|
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) then
|
|
Stop_After_field.Control_Mandatory := true;
|
|
endif;
|
|
|
|
endif; //if (CallingEvent = "FieldChange") and (CallingField = "MultiOrderGrid|3") then
|
|
|
|
|
|
|
|
/************************************************* Rivaroxaban - stop after dosing changes - Rivaroxaban **************************************/
|
|
fifteen_mg_time_field_string := req_time_field_15mg_value.ReqTimeValue as string;
|
|
twenty_mg_time_field_string := req_time_field_20mg_value.ReqTimeValue as string;
|
|
|
|
|
|
// code for modifying stop after date of Rivaroxaban
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) and (Rivaroxaban_20mg_tab.IsSelected = true) and (CallingEvent = "FieldChange") and (CallingField = "StopAfter|1") then
|
|
|
|
if (stat_dose_15mg.Value = true) or (now_dose_15mg.Value = true) then
|
|
|
|
//calculated_days := (Stop_After_field_value_number)/2;
|
|
calculated_days := (Stop_After_field_value.Number/2);
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
if (current_hour >= 9) and (current_hour < 21) and (even_dose_detected = true) then
|
|
if (prompt_answer_no.Value = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days + 1) day;
|
|
endif;
|
|
|
|
if (prompt_answer_yes.Value = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days) day;
|
|
endif;
|
|
endif;
|
|
|
|
if (current_hour >= 9) and (current_hour < 21) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days + 1) day;
|
|
endif;
|
|
|
|
// logic for {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} answer to prompt and STAT/NOW dose already selected during stop after changes
|
|
if (prompt_answer_no.Value = true) then
|
|
if (current_hour >= 21 or current_hour < 9) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days) day;
|
|
endif;
|
|
|
|
if (current_hour >= 21 or current_hour < 9) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days + 1) day;
|
|
endif;
|
|
endif;
|
|
|
|
// logic for {{{SINGLE-QUOTE}}}YES{{{SINGLE-QUOTE}}} answer to prompt and STAT/NOW dose already selected during stop after changes
|
|
if (prompt_answer_yes.Value = true) then
|
|
if (current_hour >= 21 or current_hour < 9) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days + 1) day;
|
|
endif;
|
|
|
|
if (current_hour >= 21 or current_hour < 9) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days + 1) day;
|
|
endif;
|
|
endif;
|
|
|
|
else // neither STAT/NOW are selected, so both are unselected //if (stat_dose_15mg.Value = true) or (now_dose_15mg.Value = true) then
|
|
|
|
calculated_days := (Stop_After_field_value.Number/2);
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
|
|
if (current_hour >= 9) and (current_hour < 21) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days + 1) day;
|
|
endif;
|
|
|
|
if (current_hour >= 21 or current_hour < 9) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days +1) day;
|
|
endif;
|
|
if (current_hour >= 21 or current_hour < 9) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days) day;
|
|
endif;
|
|
|
|
|
|
endif; // if (stat_dose_15mg.Value = true) or (now_dose_15mg.Value = true) then
|
|
|
|
|
|
// takes # of doses and inserts into hidden stopafter field
|
|
// done this way due to glitch where "units", "minutes", or "hours" would get inserted into order despite code that reinserts "Doses" into field to correct it
|
|
Stop_After_field_2_value.Number := Stop_After_field_value_number;
|
|
Stop_After_field_2_value.Option := Stop_After_field_value_option;
|
|
|
|
|
|
// prevents ordering of 5mg dose if user presses "Clear". Or else it would order 10mg and 5mg with same start date.
|
|
if (Stop_After_field_value.Option = "Doses") and (Stop_After_field_value.Number = 0) then
|
|
Rivaroxaban_20mg_tab.IsSelected := false;
|
|
|
|
Stop_After_field_value.Number := 42;
|
|
Stop_After_field_2_value.Number := 42;
|
|
Stop_After_field_value.Option := "Doses";
|
|
Stop_After_field_2_value.Option := "Doses";
|
|
|
|
clear_button_message := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Clearing the stop after date has removed the Rivaroxaban 20mg dose" ,"Alert","Ok" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
endif;
|
|
|
|
endif; // if (Rivaroxaban_15mg_tab.IsSelected = true) and (Rivaroxaban_20mg_tab.IsSelected = true) and (CallingEvent = "FieldChange") and (CallingField = "StopAfter|1") then
|
|
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true) then
|
|
// added to prevent selection of anything other than "Doses" in the stop after field
|
|
if (Stop_After_field_value.Option <> "Doses") and (Stop_After_field_value.Option <> "Times") then
|
|
|
|
dlg_result := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with
|
|
"\nOnly {{{SINGLE-QUOTE}}}Doses{{{SINGLE-QUOTE}}} or {{{SINGLE-QUOTE}}}Times{{{SINGLE-QUOTE}}} can be selected as the stop after option" ||
|
|
"\n "
|
|
,"DVT/PE Treatment ", "ok" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}},"Question" as {{{SINGLE-QUOTE}}}MessageBoxIcon{{{SINGLE-QUOTE}}};
|
|
|
|
Stop_After_field_value.Option := "Doses";
|
|
Stop_After_field_2_value.Option := "Doses";
|
|
endif;
|
|
endif; //if (Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true) then
|
|
|
|
|
|
/*************************** Rivaroxaban - STAT ORDERING - Rivaroxaban ****************************/
|
|
Rivaroxaban_DVTPE_STAT_NOW_order_grid := last of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 4);
|
|
Rivaroxaban_DVTPE_STAT_NOW_order_options := Rivaroxaban_DVTPE_STAT_NOW_order_grid.Value;
|
|
Rivaroxaban_DVTPE_STAT_NOW_order_grid.Control_Visible := false;
|
|
|
|
Rivaroxaban_15mg_STAT_tab := Rivaroxaban_DVTPE_STAT_NOW_order_options[1];
|
|
Rivaroxaban_15mg_NOW_tab := Rivaroxaban_DVTPE_STAT_NOW_order_options[2];
|
|
|
|
// if user selected to give a STAT dose of 15mg then push back doses for rivaroxaban 20mg
|
|
if (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Stat and Then|1") then
|
|
if (stat_dose_15mg.Value = true) and (now_dose_15mg.Value = true) then
|
|
stat_dose_15mg.Value := false;
|
|
else
|
|
continue_processing_stat := true;
|
|
endif;
|
|
if ((Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true)) and (continue_processing_stat = true) then
|
|
|
|
if (stat_dose_15mg.Value = true) then
|
|
|
|
if (Stop_After_field_value.Number > 1) and (Stop_After_field_value_number > 1) then
|
|
// reduce dose count by 1 because the NOW order will count as the first dose
|
|
Stop_After_field_value.Number := Stop_After_field_value_number - 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number - 1; //change on 7/1
|
|
endif;
|
|
// selects the stat order in order grid at bottom of the order set
|
|
Rivaroxaban_15mg_STAT_tab.IsSelected := true;
|
|
Rivaroxaban_15mg_STAT_tab.IsReadOnly := true;
|
|
|
|
|
|
next_dose_15mg := req_time_field_15mg_value.ReqTimeValue;
|
|
|
|
if (next_dose_15mg = "21:00") then
|
|
next_dose_text := "9:00PM";
|
|
after_next_dose_text := "9:00AM";
|
|
endif;
|
|
|
|
if (next_dose_15mg = "09:00") then
|
|
next_dose_text := "9:00AM";
|
|
after_next_dose_text := "9:00PM";
|
|
endif;
|
|
|
|
// this formats the date in the dialogue based on current hour
|
|
//if (current_hour < 9) or (current_hour >= 21) then
|
|
if (current_hour < 9) then
|
|
start_date_stat_now_formatted := (extract month Now) formatted with "%02d"
|
|
|| "-" || (extract day Now) formatted with "%02d" || "-"
|
|
|| (extract year Now) formatted with "%04d" ;
|
|
|
|
|
|
else
|
|
|
|
|
|
start_date_stat_now_formatted := (extract month tomorrow) formatted with "%02d"
|
|
|| "-" || (extract day tomorrow) formatted with "%02d" || "-"
|
|
|| (extract year tomorrow) formatted with "%04d" ;
|
|
endif;
|
|
|
|
//ask user (via message dialogue box) if they would like to move the start time back for rivaroxaban 15mg
|
|
move_start_of_15mg := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Do you want the {{{SINGLE-QUOTE}}}STAT{{{SINGLE-QUOTE}}} dose to replace the " || next_dose_text || " dose?"
|
|
||" .\n\n Choose YES to give a stat dose and then start at " || after_next_dose_text || " on " || start_date_stat_now_formatted
|
|
||" .\n\n Choose NO to give a stat dose and then start at " || next_dose_text ,"Rivaroxaban 15mg Alert","YesNo" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
|
|
// yes indiates stat dose = replacing upcoming 10mg so push back all future doses by 1
|
|
if ((move_start_of_15mg as string) = "Yes") then
|
|
|
|
prompt_answer_yes.Value := true;
|
|
|
|
// if the requestedtime (for 15mg) is set to 2100 then +1 day to requestedate and set new requestedtime to 0900
|
|
if (fifteen_mg_time_field_string = "21:00") then
|
|
|
|
req_date_field_15mg.Value := req_date_field_15mg.Value + 1 day;
|
|
req_time_field_15mg_value.ReqTimeValue := "09:00";
|
|
|
|
else // (fifteen_mg_time_field_string = "09:00")
|
|
req_time_field_15mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
|
|
if (Stop_After_field_value.Number = 1) and (Stop_After_field_value_number = 1) then
|
|
if (req_date_field_20mg.Value = req_date_field_15mg.Value) then
|
|
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 1 day;
|
|
|
|
endif;
|
|
endif;
|
|
|
|
endif; // if (move_start_of_15mg as string) = "Yes") then
|
|
|
|
|
|
//edits on 3/19/18
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
// no need to push forward if stop after of 1 dose
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
if ((move_start_of_15mg as string) = "No") then
|
|
|
|
prompt_answer_no.Value := true;
|
|
req_time_field_20mg_value.ReqTimeValue := "17:00";
|
|
|
|
calculated_days := (Stop_After_field_value.Number/2);
|
|
|
|
// detect if number of doses is odd
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
if (current_hour >= 9) and (current_hour < 21) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value - 1 day;
|
|
endif;
|
|
|
|
if (current_hour >= 21) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days +1) day;
|
|
|
|
endif;
|
|
|
|
if (current_hour >= 21) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days ) day;
|
|
endif;
|
|
|
|
if (current_hour < 9) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value - 1 day;
|
|
endif;
|
|
|
|
endif;
|
|
endif; //if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end changes
|
|
|
|
|
|
else // uncheck of 10mg STAT checkbox //if (stat_dose_15mg.Value = true) then
|
|
Rivaroxaban_15mg_STAT_tab.IsSelected := false;
|
|
Rivaroxaban_15mg_STAT_tab.IsReadOnly := false;
|
|
|
|
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
Stop_After_field_value.Number := Stop_After_field_value_number + 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number + 1; //change on 7/1
|
|
endif;
|
|
|
|
|
|
// used to undo forward shift in date(+1) due to {{{SINGLE-QUOTE}}}YES{{{SINGLE-QUOTE}}} on prompt
|
|
if (prompt_answer_yes.Value = true) and (Stop_After_field_value.Number = 1) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value - 1 day;
|
|
prompt_answer_yes.Value := false;
|
|
endif;
|
|
|
|
if (prompt_answer_yes.Value = true) and (Stop_After_field_value.Number > 1) then
|
|
prompt_answer_yes.Value := false;
|
|
|
|
endif;
|
|
|
|
fifteen_mg_start_day_extract := extract day req_date_field_15mg.Value;
|
|
today_day_extract := extract day Now;
|
|
|
|
// if start date was shifted due to dialogue prompt, then reverse changes
|
|
if (today_day_extract <> fifteen_mg_start_day_extract) and (current_hour < 21) then
|
|
|
|
req_date_field_15mg.Value := req_date_field_15mg.Value - 1 day;
|
|
req_time_field_15mg_value.ReqTimeValue := "21:00";
|
|
|
|
endif;
|
|
|
|
if (current_hour < 9) or (current_hour >= 21) and (fifteen_mg_time_field_string = "21:00") then
|
|
req_time_field_15mg_value.ReqTimeValue := "09:00";
|
|
//req_time_field_20mg_value.ReqTimeValue := "09:00";
|
|
endif; // if (today_day_extract <> fifteen_mg_start_day_extract) then
|
|
|
|
// 3/19/18 changes
|
|
// revert date/time changes when STAT dose is unselected and Prompt answer of {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} was selected
|
|
if (prompt_answer_no.Value = true) and (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
|
|
calculated_days := Stop_After_field_value.Number/2;
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
|
|
if (even_dose_detected = true) then
|
|
if (current_hour >= 9) and (current_hour < 21) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value + 1 day;
|
|
endif;
|
|
|
|
prompt_answer_no.Value := false;
|
|
|
|
endif;
|
|
|
|
if (odd_dose_detected = true) then
|
|
prompt_answer_no.Value := false;
|
|
|
|
if (current_hour >= 21) or (current_hour < 9)then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value + 1 day;
|
|
endif;
|
|
|
|
|
|
endif;
|
|
endif; // if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end 3/19/18 changes
|
|
|
|
endif; // if (stat_dose_15mg.Value = true) then
|
|
|
|
else // if ((Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true)) and (continue_processing_stat = true) then
|
|
stat_dose_15mg.Value := false;
|
|
Rivaroxaban_15mg_STAT_tab.IsSelected := false;
|
|
endif; // if ((Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true)) and (continue_processing_stat = true) then
|
|
|
|
if (Rivaroxaban_15mg_tab.IsSelected = false) then
|
|
stat_dose_15mg.Value := false;
|
|
Rivaroxaban_15mg_STAT_tab.IsSelected := false;
|
|
endif;
|
|
|
|
endif; // if (Primary_Obj.OrderSetName = "Apixaban") and (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Stat and Then|1") then
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************** Rivaroxaban - NOW ORDERING - Rivaroxaban ****************************/
|
|
if (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Start Now|1") then
|
|
if (stat_dose_15mg.Value = true) and (now_dose_15mg.Value = true) then
|
|
now_dose_15mg.Value := false;
|
|
else
|
|
continue_processing_now := true;
|
|
endif;
|
|
if ((Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true)) and (continue_processing_now = true) then
|
|
|
|
if (now_dose_15mg.Value = true) then
|
|
|
|
if (Stop_After_field_value.Number > 1) and (Stop_After_field_value_number > 1) then
|
|
// reduce dose count by 1 because the NOW order will count as the first dose
|
|
Stop_After_field_value.Number := Stop_After_field_value_number - 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number - 1; //change on 7/1
|
|
endif;
|
|
|
|
Rivaroxaban_15mg_NOW_tab.IsSelected := true;
|
|
Rivaroxaban_15mg_NOW_tab.IsReadOnly := true;
|
|
|
|
next_dose_15mg := req_time_field_15mg_value.ReqTimeValue;
|
|
|
|
if (next_dose_15mg = "21:00") then
|
|
next_dose_text := "9:00PM";
|
|
after_next_dose_text := "9:00AM";
|
|
endif;
|
|
|
|
if (next_dose_15mg = "09:00") then
|
|
next_dose_text := "9:00AM";
|
|
after_next_dose_text := "9:00PM";
|
|
endif;
|
|
|
|
// this formats the date in the dialogue based on current hour
|
|
if (current_hour < 9) then
|
|
|
|
start_date_stat_now_formatted := (extract month Now) formatted with "%02d"
|
|
|| "-" || (extract day Now) formatted with "%02d" || "-"
|
|
|| (extract year Now) formatted with "%04d" ;
|
|
else
|
|
|
|
start_date_stat_now_formatted := (extract month tomorrow) formatted with "%02d"
|
|
|| "-" || (extract day tomorrow) formatted with "%02d" || "-"
|
|
|| (extract year tomorrow) formatted with "%04d" ;
|
|
endif;
|
|
|
|
//ask user (via message dialogue box) if they would like to move the start time back for apixaban 10mg
|
|
move_start_of_15mg := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Do you want the {{{SINGLE-QUOTE}}}NOW{{{SINGLE-QUOTE}}} dose to replace the " || next_dose_text || " dose?"
|
|
||" .\n\n Choose YES to give a stat dose and then start at " || after_next_dose_text || " on " || start_date_stat_now_formatted
|
|
||" .\n\n Choose NO to give a stat dose and then start at " || next_dose_text ,"Rivaroxaban 15mg Alert","YesNo" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
|
|
// yes indiates NOW dose = replacing upcoming 10mg so push back all future doses by 1
|
|
if ((move_start_of_15mg as string) = "Yes") then
|
|
|
|
prompt_answer_yes.Value := true;
|
|
|
|
// if the requestedtime (for 15mg) is set to 2100 then +1 day to requestedate and set new requestedtime to 0900
|
|
if (fifteen_mg_time_field_string = "21:00") then
|
|
|
|
req_date_field_15mg.Value := req_date_field_15mg.Value + 1 day;
|
|
req_time_field_15mg_value.ReqTimeValue := "09:00";
|
|
|
|
else // (fifteen_mg_time_field_string = "09:00")
|
|
req_time_field_15mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
|
|
if (Stop_After_field_value.Number = 1) and (Stop_After_field_value_number = 1) then
|
|
if (req_date_field_20mg.Value = req_date_field_15mg.Value) then
|
|
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + 1 day;
|
|
|
|
endif;
|
|
endif;
|
|
|
|
endif; // if (move_start_of_15mg as string) = "Yes") then
|
|
|
|
|
|
//edits on 3/19/18
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
// no need to push forward if stop after of 1 dose
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
if ((move_start_of_15mg as string) = "No") then
|
|
|
|
prompt_answer_no.Value := true;
|
|
req_time_field_20mg_value.ReqTimeValue := "17:00";
|
|
|
|
calculated_days := (Stop_After_field_value.Number/2);
|
|
|
|
// detect if number of doses is odd
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
if (current_hour >= 9) and (current_hour < 21) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value - 1 day;
|
|
endif;
|
|
|
|
if (current_hour >= 21) and (odd_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days +1) day;
|
|
|
|
endif;
|
|
|
|
if (current_hour >= 21) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_15mg.Value + (calculated_days ) day;
|
|
endif;
|
|
|
|
if (current_hour < 9) and (even_dose_detected = true) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value - 1 day;
|
|
endif;
|
|
|
|
endif;
|
|
endif; // if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end changes
|
|
|
|
else // deselect of 10mg NOW checkbox
|
|
Rivaroxaban_15mg_NOW_tab.IsSelected := false;
|
|
Rivaroxaban_15mg_NOW_tab.IsReadOnly := false;
|
|
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
Stop_After_field_value.Number := Stop_After_field_value_number + 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number + 1; //change on 7/1
|
|
endif;
|
|
|
|
|
|
// used to undo forward shift in date(+1) due to {{{SINGLE-QUOTE}}}YES{{{SINGLE-QUOTE}}} on prompt
|
|
if (prompt_answer_yes.Value = true) and (Stop_After_field_value.Number = 1) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value - 1 day;
|
|
prompt_answer_yes.Value := false;
|
|
endif;
|
|
|
|
if (prompt_answer_yes.Value = true) and (Stop_After_field_value.Number > 1) then
|
|
prompt_answer_yes.Value := false;
|
|
endif;
|
|
|
|
|
|
fifteen_mg_start_day_extract := extract day req_date_field_15mg.Value;
|
|
today_day_extract := extract day Now;
|
|
|
|
// if start date was shifted due to dialogue prompt, then reverse changes
|
|
if (today_day_extract <> fifteen_mg_start_day_extract) and (current_hour < 21) then
|
|
|
|
req_date_field_15mg.Value := req_date_field_15mg.Value - 1 day;
|
|
req_time_field_15mg_value.ReqTimeValue := "21:00";
|
|
|
|
endif;
|
|
|
|
if (current_hour < 9) or (current_hour >= 21) and (fifteen_mg_time_field_string = "21:00") then
|
|
req_time_field_15mg_value.ReqTimeValue := "09:00";
|
|
//req_time_field_20mg_value.ReqTimeValue := "09:00";
|
|
endif; // if (today_day_extract <> fifteen_mg_start_day_extract) then
|
|
|
|
// 3/19/18 changes
|
|
// revert date/time changes when STAT dose is unselected and Prompt answer of {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} was selected
|
|
if (prompt_answer_no.Value = true) and (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
|
|
calculated_days := Stop_After_field_value.Number/2;
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
|
|
if (even_dose_detected = true) then
|
|
if (current_hour >= 9) and (current_hour < 21) then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value + 1 day;
|
|
endif;
|
|
|
|
prompt_answer_no.Value := false;
|
|
|
|
endif;
|
|
|
|
if (odd_dose_detected = true) then
|
|
prompt_answer_no.Value := false;
|
|
|
|
if (current_hour >= 21) or (current_hour < 9)then
|
|
req_date_field_20mg.Value := req_date_field_20mg.Value + 1 day;
|
|
endif;
|
|
endif;
|
|
endif; // if (prompt_answer_no.Value = true) and (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end 3/19/18 changes
|
|
|
|
endif; // if (now_dose_15mg.Value = true) then
|
|
|
|
else // unselect STAT dose checkbox
|
|
now_dose_15mg.Value := false;
|
|
Rivaroxaban_15mg_NOW_tab.IsSelected := false;
|
|
endif; // if (Rivaroxaban_15mg_tab.IsSelected = true) or (Rivaroxaban_20mg_tab.IsSelected = true) then
|
|
|
|
if (Rivaroxaban_15mg_tab.IsSelected = false) then
|
|
now_dose_15mg.Value := false;
|
|
Rivaroxaban_15mg_NOW_tab.IsSelected := false;
|
|
endif;
|
|
endif; // if (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Stat and Then|1") then
|
|
|
|
|
|
//************ stop here ********************************************************/
|
|
|
|
// sets second stop after field to match first stop after field on FormClose
|
|
if (Rivaroxaban_15mg_tab.IsSelected = true) and (CallingEvent = "FormClose") then
|
|
Stop_After_field_2_value.Number := Stop_After_field_value.Number;
|
|
endif;
|
|
|
|
endif; // if (Primary_Obj.OrderSetName = "Rivaroxaban") then
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
/****************************************** start apixaban part *******************************************************************************************************************************/
|
|
if (Primary_Obj.OrderSetName = "Apixaban") then
|
|
|
|
prompt_answer_no := last of (field_list where field_list.DataItemName = "Checkbox" and field_List.Control_MultiFieldOccNum = 2);
|
|
prompt_answer_yes := last of (field_list where field_list.DataItemName = "Checkbox" and field_List.Control_MultiFieldOccNum = 3);
|
|
|
|
stat_dose_10mg := last of (field_list where field_list.DataItemName = "PRX_Dosing Stat and Then"); //Apixaban OS = 10mg
|
|
now_dose_10mg := last of (field_list where field_list.DataItemName = "PRX_Dosing Start Now"); //Apixaban OS = 10mg
|
|
|
|
Apixaban_DVTPE_order_grid := last of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 2);
|
|
Apixaban_DVTPE_order_options := Apixaban_DVTPE_order_grid.Value;
|
|
|
|
|
|
Apixaban_10mg_tab := Apixaban_DVTPE_order_options[1];
|
|
Apixaban_5mg_tab := Apixaban_DVTPE_order_options[2];
|
|
|
|
DVT_PE_req_date_field := last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 2);
|
|
DVT_PE_req_date_field_10mg := last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 3);
|
|
|
|
// new code additions 2/28/18
|
|
DVT_PE_req_time_field_5mg := last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 2);
|
|
DVT_PE_req_time_field_10mg := last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 3);
|
|
DVT_PE_req_time_field_5mg_value := DVT_PE_req_time_field_5mg.Value;
|
|
DVT_PE_req_time_field_10mg_value := DVT_PE_req_time_field_10mg.Value;
|
|
|
|
|
|
// selection of DVT/PE treatment defaults
|
|
if (CallingEvent = "FieldChange") and (CallingField = "MultiOrderGrid|2") then
|
|
|
|
Stop_After_field_value.Number := 14;
|
|
Stop_After_field_value.Option := "Doses";
|
|
|
|
Stop_After_field_2_value.Number := 14;
|
|
Stop_After_field_2_value.Option := "Doses";
|
|
|
|
|
|
// if user is ordering after 9pm, but before 9am (with even doses) then default the start/scheduled times to 09:00
|
|
if (current_hour < 9) or (current_hour >= 21) then
|
|
if (current_hour >= 21) then
|
|
DVT_PE_req_date_field_10mg.Value := NOW + 1 day;
|
|
endif;
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "09:00";
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
else
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeCode := "Scheduled/Start Time";
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "21:00";
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
|
|
|
|
|
|
// defaults start time of 5mg to 7 days
|
|
if (Apixaban_10mg_tab.IsSelected = true) and (Apixaban_5mg_tab.IsSelected = false) and (not exist DVT_PE_req_date_field.Value) then
|
|
Apixaban_5mg_tab.IsSelected := true;
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + 7 day;
|
|
endif;
|
|
|
|
// sz new code 2/1/18 - to fix stop after date requirements
|
|
if (Apixaban_10mg_tab.IsSelected = false) and (Apixaban_5mg_tab.IsSelected = true) then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value;
|
|
|
|
Stop_After_field.Control_Mandatory := false;
|
|
if (current_hour >= 9) and (current_hour < 21) then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
if (current_hour < 9) and (current_hour >= 21) then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
endif;
|
|
|
|
// sz new code 2/1/18 - to fix stop after date requirements
|
|
if (Apixaban_10mg_tab.IsSelected = true) and (Apixaban_5mg_tab.IsSelected = true) then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + 7 day;
|
|
// Stop_After_field.Control_Mandatory := true;
|
|
endif;
|
|
|
|
|
|
// code for unchecking of 5mg
|
|
if (Apixaban_10mg_tab.IsSelected = true) and (Apixaban_5mg_tab.IsSelected = false) and (exist DVT_PE_req_date_field.Value) then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value;
|
|
endif;
|
|
|
|
|
|
// sz new code 2/1/18 - to fix stop after date requirements
|
|
// code for unchecking of 5mg and requires MD to select a stop after date
|
|
if (Apixaban_10mg_tab.IsSelected = true) and (Apixaban_5mg_tab.IsSelected = false) then
|
|
DVT_PE_req_date_field.Value := NOW + 7 day;
|
|
Stop_After_field.Control_Mandatory := true;
|
|
endif;
|
|
|
|
|
|
if (Apixaban_10mg_tab.IsSelected = false) and (Apixaban_5mg_tab.IsSelected = false) then
|
|
DVT_PE_req_date_field.Value := null;
|
|
endif;
|
|
|
|
|
|
if (Apixaban_10mg_tab.IsSelected = true) then
|
|
Stop_After_field.Control_Mandatory := true;
|
|
endif;
|
|
|
|
endif; // if (Primary_Obj.OrderSetName = "Apixaban") and (CallingEvent = "FieldChange") and (CallingField = "MultiOrderGrid|2") then
|
|
|
|
|
|
|
|
|
|
/************************************************* Apixaban - stop after dosing changes **************************************/
|
|
|
|
ten_mg_time_field_string := DVT_PE_req_time_field_10mg_value.ReqTimeValue as string;
|
|
five_mg_time_field_string := DVT_PE_req_time_field_5mg_value.ReqTimeValue as string;
|
|
|
|
// code for modifying stop after date of Apixaban
|
|
// no need to change stop after date if either 10mg or 5mg are not selected
|
|
if (Apixaban_10mg_tab.IsSelected = true) and (Apixaban_5mg_tab.IsSelected = true) and (CallingEvent = "FieldChange") and (CallingField = "StopAfter|1") then
|
|
|
|
if (stat_dose_10mg.Value = true) or (now_dose_10mg.Value = true) then
|
|
|
|
calculated_days := (Stop_After_field_value_number)/2;
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
if (even_dose_detected = true) then
|
|
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + calculated_days day;
|
|
|
|
if (ten_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
endif;
|
|
|
|
|
|
if (odd_dose_detected = true) then
|
|
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + calculated_days day;
|
|
|
|
if (ten_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
endif;
|
|
else // if (stat_dose_10mg.Value = true) or (now_dose_10mg.Value = true) then
|
|
calculated_days := Stop_After_field_value_number/2;
|
|
|
|
// detect if number of doses is odd
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
|
|
if (even_dose_detected = true) then
|
|
// start date of 5mg is equal to doses/2
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + calculated_days day;
|
|
// DVT_PE_req_date_field (is start date for 5mg)
|
|
// DVT_PE_req_date_field_10mg (is start date for 10mg)
|
|
|
|
if (ten_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
endif; // if (even_dose_detected = true) and (not exist stat_now_order_active) then
|
|
|
|
|
|
if (odd_dose_detected = true) then
|
|
if (current_hour >= 9) and (current_hour < 21) then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + (calculated_days + 1) day;
|
|
else
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + calculated_days day;
|
|
endif;
|
|
// DVT_PE_req_date_field (is start date for 5mg)
|
|
// DVT_PE_req_date_field_10mg (is start date for 10mg)
|
|
|
|
if (ten_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif; // if (ten_mg_time_field_string = "21:00") then
|
|
|
|
if (ten_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif; // if (ten_mg_time_field_string = "21:00") then
|
|
endif; // if (odd_dose_detected = true) and (not exist stat_now_order_active) then
|
|
|
|
endif; //if (stat_dose_10mg.Value = true) or (now_dose_10mg.Value = true) then
|
|
|
|
|
|
// takes # of doses and inserts into hidden stopafter field
|
|
// done this way due to glitch where "units", "minutes", or "hours" would get inserted into order despite code that reinserts "Doses" into field to correct it
|
|
Stop_After_field_2_value.Number := Stop_After_field_value_number;
|
|
Stop_After_field_2_value.Option := Stop_After_field_value_option;
|
|
|
|
|
|
// prevents ordering of 5mg dose if user presses "Clear". Or else it would order 10mg and 5mg with same start date.
|
|
if (Stop_After_field_value.Option = "Doses") and (Stop_After_field_value.Number = 0) then
|
|
Apixaban_5mg_tab.IsSelected := false;
|
|
//july_2019_spot_fix := true;
|
|
Stop_After_field_value.Number := 14;
|
|
Stop_After_field_2_value.Number := 14;
|
|
Stop_After_field_value.Option := "Doses";
|
|
Stop_After_field_2_value.Option := "Doses";
|
|
//Stop_After_field_value.Option := null;
|
|
//Stop_After_field_value.Number := null;
|
|
|
|
clear_button_message := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Clearing the stop after date has removed the Apixaban 5mg dose" ,"Alert","Ok" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
endif;
|
|
|
|
endif; //if (Apixaban_10mg_tab.IsSelected = true) and (Apixaban_5mg_tab.IsSelected = true) and (CallingEvent = "FieldChange") and (CallingField = "StopAfter|1") then
|
|
|
|
|
|
if (Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true) then
|
|
// added to prevent selection of anything other than "Doses" in the stop after field
|
|
if (Stop_After_field_value.Option <> "Doses") and (Stop_After_field_value.Option <> "Times") then
|
|
|
|
dlg_result := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with
|
|
"\nOnly {{{SINGLE-QUOTE}}}Doses{{{SINGLE-QUOTE}}} or {{{SINGLE-QUOTE}}}Times{{{SINGLE-QUOTE}}} can be selected as the stop after option" ||
|
|
"\n "
|
|
,"DVT/PE Treatment ", "ok" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}},"Question" as {{{SINGLE-QUOTE}}}MessageBoxIcon{{{SINGLE-QUOTE}}};
|
|
|
|
Stop_After_field_value.Option := "Doses";
|
|
Stop_After_field_2_value.Option := "Doses";
|
|
endif;
|
|
endif; //if (Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true) then
|
|
|
|
|
|
/*************************** Apixaban - STAT ORDERING****************************/
|
|
|
|
Apixaban_DVTPE_STAT_NOW_order_grid := last of (field_list where field_list.DataItemName = "MultiOrderGrid" and field_List.Control_MultiFieldOccNum = 3);
|
|
Apixaban_DVTPE_STAT_NOW_order_options := Apixaban_DVTPE_STAT_NOW_order_grid.Value;
|
|
Apixaban_DVTPE_STAT_NOW_order_grid.Control_Visible := false;
|
|
|
|
Apixaban_10mg_STAT_tab := Apixaban_DVTPE_STAT_NOW_order_options[1];
|
|
Apixaban_10mg_NOW_tab := Apixaban_DVTPE_STAT_NOW_order_options[2];
|
|
|
|
// if user selected to give a STAT dose of 10mg then push back doses for apixaban 5mg
|
|
if (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Stat and Then|1") then
|
|
if (stat_dose_10mg.Value = true) and (now_dose_10mg.Value = true) then
|
|
stat_dose_10mg.Value := false;
|
|
else
|
|
continue_processing_stat := true;
|
|
endif;
|
|
if ((Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true)) and (continue_processing_stat = true) then
|
|
|
|
if (stat_dose_10mg.Value = true) then
|
|
if (Stop_After_field_value.Number > 1) and (Stop_After_field_value_number > 1) then
|
|
// reduce dose count by 1 because the NOW order will count as the first dose
|
|
Stop_After_field_value.Number := Stop_After_field_value_number - 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number - 1; //change on 7/1
|
|
endif;
|
|
// selects the stat order in order grid at bottom of the order set
|
|
Apixaban_10mg_STAT_tab.IsSelected := true;
|
|
Apixaban_10mg_STAT_tab.IsReadOnly := true;
|
|
|
|
|
|
next_dose_10mg := DVT_PE_req_time_field_10mg_value.ReqTimeValue;
|
|
|
|
if (next_dose_10mg = "21:00") then
|
|
next_dose_text := "9:00PM";
|
|
after_next_dose_text := "9:00AM";
|
|
endif;
|
|
|
|
if (next_dose_10mg = "09:00") then
|
|
next_dose_text := "9:00AM";
|
|
after_next_dose_text := "9:00PM";
|
|
endif;
|
|
|
|
// this formats the date in the dialogue based on current hour
|
|
//if (current_hour < 9) or (current_hour >= 21) then
|
|
if (current_hour < 9) then
|
|
start_date_stat_now_formatted := (extract month Now) formatted with "%02d"
|
|
|| "-" || (extract day Now) formatted with "%02d" || "-"
|
|
|| (extract year Now) formatted with "%04d" ;
|
|
|
|
|
|
else
|
|
|
|
|
|
start_date_stat_now_formatted := (extract month tomorrow) formatted with "%02d"
|
|
|| "-" || (extract day tomorrow) formatted with "%02d" || "-"
|
|
|| (extract year tomorrow) formatted with "%04d" ;
|
|
endif;
|
|
|
|
//ask user (via message dialogue box) if they would like to move the start time back for apixaban 10mg
|
|
move_start_of_10mg := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Do you want the {{{SINGLE-QUOTE}}}STAT{{{SINGLE-QUOTE}}} dose to replace the " || next_dose_text || " dose?"
|
|
||" .\n\n Choose YES to give a stat dose and then start at " || after_next_dose_text || " on " || start_date_stat_now_formatted
|
|
||" .\n\n Choose NO to give a stat dose and then start at " || next_dose_text ,"Apixaban 10mg Alert","YesNo" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
|
|
// yes indiates stat dose = replacing upcoming 10mg so push back all future doses by 1
|
|
if ((move_start_of_10mg as string) = "Yes") then
|
|
|
|
// if the requestedtime (for 5mg) is set to 2100 then +1 day to requestedate and set new requestedtime to 0900
|
|
if (ten_mg_time_field_string = "21:00") then
|
|
|
|
stat_order_moved_date_time := true;
|
|
DVT_PE_req_date_field_10mg.Value := DVT_PE_req_date_field_10mg.Value + 1 day;
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "09:00";
|
|
|
|
else // (ten_mg_time_field_string = "09:00")
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
|
|
if (Stop_After_field_value.Number = 1) and (Stop_After_field_value_number = 1) then
|
|
if (five_mg_time_field_string = "21:00") then
|
|
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
|
|
else // (ten_mg_time_field_string = "09:00")
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
endif;
|
|
|
|
endif; // if (move_start_of_10mg as string) = "Yes") then
|
|
|
|
|
|
//edits on 3/19/18
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
// no need to push forward if stop after of 1 dose
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
if ((move_start_of_10mg as string) = "No") then
|
|
|
|
prompt_answer_no.Value := true;
|
|
|
|
//if (current_hour >= 9) and (current_hour < 21) then
|
|
if (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
else
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value - 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
//endif;
|
|
endif;
|
|
endif; //if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end changes
|
|
|
|
|
|
else // deselect of 10mg STAT checkbox //if (stat_dose_10mg.Value = true) then
|
|
Apixaban_10mg_STAT_tab.IsSelected := false;
|
|
Apixaban_10mg_STAT_tab.IsReadOnly := false;
|
|
|
|
//Stop_After_field_value.Number := Stop_After_field_value_number + 1; //change on 7/1
|
|
|
|
//Stop_After_field_2_value.Number := Stop_After_field_2_value_number + 1; //change on 7/1
|
|
|
|
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
Stop_After_field_value.Number := Stop_After_field_value_number + 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number + 1; //change on 7/1
|
|
endif;
|
|
|
|
|
|
|
|
// code to prevent issues if stop after = 1 dose and "STAT" or "NOW" dose is selected with "yes" to prompt
|
|
if (Stop_After_field_value.Number = 1) and (Stop_After_field_2_value.Number = 1) and (DVT_PE_req_date_field.Value = DVT_PE_req_date_field_10mg.Value) then
|
|
if (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
else // (ten_mg_time_field_string = "09:00")
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value - 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
endif;
|
|
|
|
|
|
ten_mg_start_day_extract := extract day DVT_PE_req_date_field_10mg.Value;
|
|
today_day_extract := extract day Now;
|
|
|
|
// if start date was shifted due to dialogue prompt, then reverse changes
|
|
if (today_day_extract <> ten_mg_start_day_extract) and (current_hour < 21) then
|
|
|
|
DVT_PE_req_date_field_10mg.Value := DVT_PE_req_date_field_10mg.Value - 1 day;
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "21:00";
|
|
|
|
endif;
|
|
|
|
if (current_hour < 9) or (current_hour >= 21) and (ten_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "09:00";
|
|
//DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif; // if (today_day_extract <> ten_mg_start_day_extract) then
|
|
|
|
// 3/19/18 changes
|
|
// revert time changes when STAT dose is unselected and Prompt answer of {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} was selected
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
calculated_days := Stop_After_field_value.Number/2;
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
|
|
if (prompt_answer_no.Value = true) and (even_dose_detected = true) then
|
|
// even doses should have same start times, if not then {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} was selected for prompt to move dose. Correct the offset for 5mg dose.
|
|
if (ten_mg_time_field_string <> five_mg_time_field_string) then
|
|
|
|
if (ten_mg_time_field_string = "21:00") and (five_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") and (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
prompt_answer_no.Value := false;
|
|
endif;
|
|
endif;
|
|
|
|
if (prompt_answer_no.Value = true) and (odd_dose_detected = true) then
|
|
|
|
if (ten_mg_time_field_string = "21:00") and (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") and (five_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
prompt_answer_no.Value := false;
|
|
endif;
|
|
endif; // if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end 3/19/18 changes
|
|
|
|
endif; // if (stat_dose_10mg.Value = true) then
|
|
|
|
else // if ((Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true)) and (continue_processing_stat = true) then
|
|
stat_dose_10mg.Value := false;
|
|
Apixaban_10mg_STAT_tab.IsSelected := false;
|
|
endif; // if ((Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true)) and (continue_processing_stat = true) then
|
|
|
|
if (Apixaban_10mg_tab.IsSelected = false) then
|
|
stat_dose_10mg.Value := false;
|
|
Apixaban_10mg_STAT_tab.IsSelected := false;
|
|
endif;
|
|
|
|
endif; // if (Primary_Obj.OrderSetName = "Apixaban") and (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Stat and Then|1") then
|
|
|
|
|
|
|
|
/*************************** Apixaban - NOW ORDERING****************************/
|
|
|
|
|
|
if (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Start Now|1") then
|
|
if (stat_dose_10mg.Value = true) and (now_dose_10mg.Value = true) then
|
|
now_dose_10mg.Value := false;
|
|
else
|
|
continue_processing_now := true;
|
|
endif;
|
|
if ((Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true)) and (continue_processing_now = true) then
|
|
|
|
if (now_dose_10mg.Value = true) then
|
|
|
|
if (Stop_After_field_value.Number > 1) and (Stop_After_field_value_number > 1) then
|
|
// reduce dose count by 1 because the NOW order will count as the first dose
|
|
Stop_After_field_value.Number := Stop_After_field_value_number - 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number - 1; //change on 7/1
|
|
endif;
|
|
|
|
Apixaban_10mg_NOW_tab.IsSelected := true;
|
|
Apixaban_10mg_NOW_tab.IsReadOnly := true;
|
|
|
|
next_dose_10mg := DVT_PE_req_time_field_10mg_value.ReqTimeValue;
|
|
|
|
if (next_dose_10mg = "21:00") then
|
|
next_dose_text := "9:00PM";
|
|
after_next_dose_text := "9:00AM";
|
|
endif;
|
|
|
|
if (next_dose_10mg = "09:00") then
|
|
next_dose_text := "9:00AM";
|
|
after_next_dose_text := "9:00PM";
|
|
endif;
|
|
|
|
// this formats the date in the dialogue based on current hour
|
|
if (current_hour < 9) then
|
|
|
|
start_date_stat_now_formatted := (extract month Now) formatted with "%02d"
|
|
|| "-" || (extract day Now) formatted with "%02d" || "-"
|
|
|| (extract year Now) formatted with "%04d" ;
|
|
else
|
|
|
|
start_date_stat_now_formatted := (extract month tomorrow) formatted with "%02d"
|
|
|| "-" || (extract day tomorrow) formatted with "%02d" || "-"
|
|
|| (extract year tomorrow) formatted with "%04d" ;
|
|
endif;
|
|
|
|
//ask user (via message dialogue box) if they would like to move the start time back for apixaban 10mg
|
|
move_start_of_10mg := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "Do you want the {{{SINGLE-QUOTE}}}NOW{{{SINGLE-QUOTE}}} dose to replace the " || next_dose_text || " dose?"
|
|
||" .\n\n Choose YES to give a stat dose and then start at " || after_next_dose_text || " on " || start_date_stat_now_formatted
|
|
||" .\n\n Choose NO to give a stat dose and then start at " || next_dose_text ,"Apixaban 10mg Alert","YesNo" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
|
|
// yes indiates NOW dose = replacing upcoming 10mg so push back all future doses by 1
|
|
if ((move_start_of_10mg as string) = "Yes") then
|
|
|
|
// if the requestedtime (for 5mg) is set to 2100 then +1 day to requestedate and set new requestedtime to 0900
|
|
if (ten_mg_time_field_string = "21:00") then
|
|
|
|
DVT_PE_req_date_field_10mg.Value := DVT_PE_req_date_field_10mg.Value + 1 day;
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "09:00";
|
|
|
|
else // (ten_mg_time_field_string = "09:00")
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
if (Stop_After_field_value.Number = 1) and (Stop_After_field_value_number = 1) then
|
|
if (five_mg_time_field_string = "21:00") then
|
|
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
|
|
else // (ten_mg_time_field_string = "09:00")
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
endif;
|
|
|
|
endif; // if (move_start_of_10mg as string) = "Yes") then
|
|
|
|
|
|
//edits on 3/19/18
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
// no need to push forward if stop after of 1 dose
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// no indicates not replacing stat dose = pushing forward all doses by 1
|
|
if ((move_start_of_10mg as string) = "No") then
|
|
|
|
prompt_answer_no.Value := true;
|
|
|
|
//if (current_hour >= 9) and (current_hour < 21) then
|
|
if (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
else
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value - 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
//endif;
|
|
endif;
|
|
endif; // if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end changes
|
|
|
|
else // deselect of 10mg NOW checkbox
|
|
Apixaban_10mg_NOW_tab.IsSelected := false;
|
|
Apixaban_10mg_NOW_tab.IsReadOnly := false;
|
|
|
|
// Stop_After_field_value.Number := Stop_After_field_value_number + 1; //change on 7/1
|
|
// Stop_After_field_2_value.Number := Stop_After_field_2_value_number + 1; //change on 7/1
|
|
|
|
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
Stop_After_field_value.Number := Stop_After_field_value_number + 1;
|
|
Stop_After_field_2_value.Number := Stop_After_field_2_value_number + 1; //change on 7/1
|
|
endif;
|
|
|
|
// code to prevent issues if stop after = 1 dose and "STAT" or "NOW" dose is selected with "yes" to prompt
|
|
if (Stop_After_field_value.Number = 1) and (Stop_After_field_2_value.Number = 1) and (DVT_PE_req_date_field.Value = DVT_PE_req_date_field_10mg.Value) then
|
|
if (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
else // (ten_mg_time_field_string = "09:00")
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field_10mg.Value - 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
stop_after_issue := true;
|
|
endif;
|
|
|
|
ten_mg_start_day_extract := extract day DVT_PE_req_date_field_10mg.Value;
|
|
today_day_extract := extract day Now;
|
|
|
|
// if start date was shifted due to dialogue prompt, then reverse changes
|
|
if (today_day_extract <> ten_mg_start_day_extract) and (current_hour < 21) then
|
|
|
|
DVT_PE_req_date_field_10mg.Value := DVT_PE_req_date_field_10mg.Value - 1 day;
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "21:00";
|
|
|
|
endif;
|
|
|
|
if (current_hour < 9) or (current_hour >= 21) and (ten_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_time_field_10mg_value.ReqTimeValue := "09:00";
|
|
//DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif; // if (today_day_extract <> ten_mg_start_day_extract) then
|
|
|
|
// 3/19/18 changes
|
|
// revert time changes when STAT dose is unselected and Prompt answer of {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} was selected
|
|
if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
calculated_days := Stop_After_field_value.Number/2;
|
|
|
|
if ((calculated_days as string) matches pattern "%.5%") then
|
|
odd_dose_detected := true;
|
|
else
|
|
even_dose_detected := true;
|
|
endif;
|
|
|
|
|
|
if (prompt_answer_no.Value = true) and (even_dose_detected = true) then
|
|
// even doses should have same start times, if not then {{{SINGLE-QUOTE}}}NO{{{SINGLE-QUOTE}}} was selected for prompt to move dose. Correct the offset for 5mg dose.
|
|
if (ten_mg_time_field_string <> five_mg_time_field_string) then
|
|
|
|
if (ten_mg_time_field_string = "21:00") and (five_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") and (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
prompt_answer_no.Value := false;
|
|
endif;
|
|
endif;
|
|
|
|
if (prompt_answer_no.Value = true) and (odd_dose_detected = true) then
|
|
|
|
if (ten_mg_time_field_string = "21:00") and (five_mg_time_field_string = "21:00") then
|
|
DVT_PE_req_date_field.Value := DVT_PE_req_date_field.Value + 1 day;
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "09:00";
|
|
endif;
|
|
|
|
if (ten_mg_time_field_string = "09:00") and (five_mg_time_field_string = "09:00") then
|
|
DVT_PE_req_time_field_5mg_value.ReqTimeValue := "21:00";
|
|
endif;
|
|
|
|
prompt_answer_no.Value := false;
|
|
endif;
|
|
endif; // if (Stop_After_field_value.Number >= 1) and (Stop_After_field_2_value.Number > 1) then
|
|
// end 3/19/18 changes
|
|
|
|
endif; // if (now_dose_10mg.Value = true) then
|
|
|
|
else // unselect STAT dose checkbox
|
|
now_dose_10mg.Value := false;
|
|
Apixaban_10mg_NOW_tab.IsSelected := false;
|
|
endif; // if (Apixaban_10mg_tab.IsSelected = true) or (Apixaban_5mg_tab.IsSelected = true) then
|
|
|
|
if (Apixaban_10mg_tab.IsSelected = false) then
|
|
now_dose_10mg.Value := false;
|
|
Apixaban_10mg_NOW_tab.IsSelected := false;
|
|
endif;
|
|
endif; // if (CallingEvent = "FieldChange") and (CallingField = "PRX_Dosing Stat and Then|1") then
|
|
|
|
// sets second stop after field to match first stop after field on FormClose
|
|
if (Apixaban_10mg_tab.IsSelected = true) and (CallingEvent = "FormClose") then
|
|
Stop_After_field_2_value.Number := Stop_After_field_value.Number;
|
|
endif;
|
|
|
|
endif; //if (Primary_Obj.OrderSetName = "Apixaban")
|
|
|
|
|
|
|
|
;;
|
|
priority: 50
|
|
;;
|
|
evoke: // No evoke statement
|
|
// evoked from
|
|
;;
|
|
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:
|