533 lines
22 KiB
Plaintext
533 lines
22 KiB
Plaintext
maintenance:
|
|
|
|
title: FORM_Set_Repeat_Lab_Orders;;
|
|
mlmname: FORM_Set_Repeat_Lab_Orders;;
|
|
arden: version 2.5;;
|
|
version: 5.50;;
|
|
institution: St Clair Hospital;;
|
|
author: Teresa Spicuzza, Allscripts ;;
|
|
specialist: Teresa Spicuzza, Allscripts;;
|
|
date: 2011-04-01;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Used for Creating Repeating Lab Orders
|
|
;;
|
|
|
|
explanation: This MLM is called from ___ Order Set
|
|
|
|
Change history
|
|
06.12.2012 TMS Created in DEV
|
|
11.26.2012 TMS Moved to Production CSR 26927
|
|
02.25.2013 TMS Added logic to look for heparin orders for APTT heparin status
|
|
Missing from first repeat order, identified during AM Rounds project. HD ticket 156616
|
|
03.25.2015 JML CSR 32953 Modified logic to work for internal medicine order set as well as CCM Common Labs;
|
|
retrieving orderset name so correct dataitem is pulled.
|
|
06.17.2015 TMS Modified to add new dataitems used for Labs, Time and Frquency for
|
|
Post Initiation Catheter Directed Thrombolytic Therapy CSR:32710
|
|
08.03.2015 GOS Added new code to change format of Order information display on form CSR:32710
|
|
11.30.2015 JML WO #1949479: Modified code to properly display user-friendly verbiage for AM Rounds and other frequencies
|
|
in repeat lab orders text box.
|
|
12.03.2015 JML Moved to Production.
|
|
01.07.2016 STH CSR#: 33758 - Updated section for Post Initiation Thrombolytic to call the custom repeat lab scheduling MLM {go-live 3/7/2016}
|
|
04.26.2016 TMS CSR 33465 Add call on form Close to Medication Order Management MLM
|
|
03.11.2019 TMS CSR 37602 Added Hospitalist Orders to use data item "Repeat_Labs 2".
|
|
07.02.2019 TMS CSR 38460 Added General Admission Orders to use data item "Repeat_Labs 2". This is going to be the new
|
|
name for the Hospitalist Orders.
|
|
09.05.2019 TMS CSR 38460 Added Admission Orders - General to use data item "Repeat_Labs 2". This is going to be the new
|
|
name for the General Admission Orders .
|
|
|
|
;;
|
|
keywords: Called MLMs, Repeat Lab Orders
|
|
;;
|
|
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;
|
|
|
|
ClientGuid := this_communication.ClientGUID;
|
|
ChartGuid := this_communication.ChartGUID;
|
|
ClientVisitGuid := this_communication.ClientVisitGUID;
|
|
/*******************Make Changes To Spelling And Flags In This Section*******************/
|
|
|
|
/* Set to True if a decision.log is needed.*/
|
|
log_execution_info := False;
|
|
|
|
CreateRepeatOrder := MLM {{{SINGLE-QUOTE}}}SCH_DIAG_WRITE_ORDER{{{SINGLE-QUOTE}}};
|
|
str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}};
|
|
Post_Init_cath_dir_Thrombolytic := mlm {{{SINGLE-QUOTE}}}FORM_POST_INITIATION_CATHETER_DIR_THROMBOLYTIC{{{SINGLE-QUOTE}}};
|
|
|
|
|
|
/***************************************************************************************/
|
|
|
|
// Initialize error message
|
|
error_message:="";
|
|
error_occurred := false;
|
|
// Assigns fields passed in the Form object to the Field object
|
|
field_list:= this_form.fields;
|
|
CallingEvent := this_communication.CallingEvent;
|
|
CallingField := this_communication.CallingFieldName;
|
|
|
|
PrimaryObjDetail := this_communication.PrimaryObj;
|
|
OrderSetName := PrimaryObjDetail.OrderSetName;
|
|
|
|
// Define other fields
|
|
|
|
if ( OrderSetName = "CCM Common Lab Orders" ) then
|
|
RepeatLabs := last of (field_list where field_list.DataItemName = "Repeat_Labs" and field_List.Control_MultiFieldOccNum = 1);
|
|
RepeatFreq := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Frequency" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartTimeB := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Lab_Time" and field_List.Control_MultiFieldOccNum = 1);
|
|
|
|
elseif ( OrderSetName in ("Hospitalist Orders","Internal Medicine Order Set","General Admission Orders", "Admission Orders - General" )) then
|
|
RepeatLabs := last of (field_list where field_list.DataItemName = "Repeat_Labs 2" and field_List.Control_MultiFieldOccNum = 1);
|
|
RepeatFreq := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Frequency" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartTimeB := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Lab_Time" and field_List.Control_MultiFieldOccNum = 1);
|
|
|
|
elseif ( trim(OrderSetName) = "Post Initiation Catheter Directed Thrombolytic Therapy" ) then
|
|
|
|
RepeatLabs := last of (field_list where field_list.DataItemName = "Repeat_Labs 3" and field_List.Control_MultiFieldOccNum = 1);
|
|
RepeatFreq := last of (field_list where field_list.DataItemName = "CPOE_Rpt_Freq_LyticTherapy" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartTimeB := last of (field_list where field_list.DataItemName = "CPOE_Rpt_Time_LyticTherapy" and field_List.Control_MultiFieldOccNum = 1);
|
|
//Occurances := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Lab_Occur" and field_list.Control_MultiFieldOccNum = 1 );
|
|
//if (Occurances.Value = "5 Times") then
|
|
void := call Post_Init_cath_dir_Thrombolytic with (this_communication,this_form,client_info_obj);
|
|
|
|
//endif;
|
|
else
|
|
RepeatLabs := last of (field_list where field_list.DataItemName = "Repeat_Labs" and field_List.Control_MultiFieldOccNum = 1);
|
|
RepeatFreq := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Frequency" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartTimeB := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Lab_Time" and field_List.Control_MultiFieldOccNum = 1);
|
|
|
|
endif;
|
|
|
|
StartOn := last of (field_list where field_list.DataItemName = "CPOE_Repeat Lab Start" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartDate := last of (field_list where field_list.DataItemName = "RequestedDate" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartTime := last of (field_list where field_list.DataItemName = "RequestedTime" and field_List.Control_MultiFieldOccNum = 1);
|
|
RepeatOcc := last of (field_list where field_list.DataItemName = "CPOE_Repeat_Lab_Occur" and field_List.Control_MultiFieldOccNum = 1);
|
|
SubmitButton := last of (field_list where field_list.DataItemName = "CPOE Repeat Lab Submit Button" and field_List.Control_MultiFieldOccNum = 1);
|
|
OrderAccumBox := last of (field_list where field_list.DataItemName = "CPOE Repeat Lab Accumulator" and field_List.Control_MultiFieldOccNum = 1);
|
|
SendButton := last of (field_list where field_list.DataItemName = "MLM Generic Checkbox" and field_List.Control_MultiFieldOccNum = 1);
|
|
StartDate_val := StartDate.Value;
|
|
StartOn_val := StartOn.Value;
|
|
StartTime_val := StartTime.Value;
|
|
StartTimeB_val := StartTimeB.Value;
|
|
RepeatOcc_val := RepeatOcc.Value;
|
|
RepeatFreq_val := RepeatFreq.Value;
|
|
SendButton_val := SendButton.Value;
|
|
SubmitButton_val := SubmitButton.Value;
|
|
OrderAccumBox_val := OrderAccumBox;
|
|
|
|
//------------------------------------------------------------
|
|
// Define the ObjectsPlus destinations
|
|
//------------------------------------------------------------
|
|
|
|
Parent_DiagnosticOrder_dest := destination { ObjectsPlus } with
|
|
[ alert_type := "Warning",
|
|
short_message := "Object created by MLM, placed on worksheet",
|
|
priority := "low",
|
|
scope := "chart",
|
|
rule_group := "Order Object",
|
|
rule_number := 2080 ];
|
|
|
|
//---------------------------------------------------------------
|
|
// Error destination
|
|
//---------------------------------------------------------------
|
|
error_destination := destination { Alert } with [
|
|
alert_type := "Warning",
|
|
short_message := "ObjectsPlus Error from MLM",
|
|
priority := "low",
|
|
scope := "chart",
|
|
Rule_group := "ObjectsPlus Error from MLM",
|
|
Rule_number := 1004,
|
|
Rule_subgroup := "",
|
|
Send_with_order := "",
|
|
Alert_dialog_settings := "",
|
|
Display_alert := true ];
|
|
|
|
CurrentLocation := read last {"Select CurrentLocation "
|
|
||" From cv3Clientvisit "
|
|
||" Where Guid = " || SQL(ClientVisitGuid)
|
|
||" and VisitStatus = {{{SINGLE-QUOTE}}}ADM{{{SINGLE-QUOTE}}}" };
|
|
|
|
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;
|
|
|
|
If (callingevent = "FormClose" or callingfield = "MLM Generic Checkbox|1" or callingfield = "CPOE Repeat Lab Submit Button|1") then
|
|
|
|
|
|
// retrieve if patient on IV heparin for APTT order form
|
|
heparin_order_iv := "%Heparin 25,000%";
|
|
heparin_order_iv_found := read last {"select name from cv3order where name like " || SQL(heparin_order_iv)
|
|
|| " and ClientGUID = " || SQL(clientguid)
|
|
|| " and ChartGUID = " || SQL(chartguid)
|
|
|| " and ClientVisitGUID= " || SQL(clientvisitguid)
|
|
|| " and OrderStatusLevelNum > 15 "
|
|
|| " and OrderStatusLevelNum not in (69, 70) " };
|
|
|
|
if heparin_order_IV_found is not null then
|
|
heparin_iv_found := true;
|
|
else
|
|
heparin_iv_found := false;
|
|
endif;
|
|
|
|
|
|
If RepeatFreq.value is Null then
|
|
orderfreq := "NONE";
|
|
else
|
|
orderfreq := RepeatFreq.value;
|
|
endif;
|
|
|
|
If RepeatOcc.value = "2 Times" then
|
|
ordertimes := "x 2";
|
|
OccTime := (2 as number); // Added By Shivprasad for CSR #32710
|
|
elseif RepeatOcc.value = "3 Times" then
|
|
ordertimes := "x 3";
|
|
OccTime := (3 as number); // Added By Shivprasad for CSR #32710
|
|
elseif RepeatOcc.value= "4 Times" then
|
|
ordertimes := "x 4";
|
|
OccTime := (4 as number); // Added By Shivprasad for CSR #32710
|
|
elseif RepeatOcc.value = "5 Times" then
|
|
ordertimes := "x 5";
|
|
OccTime := ( 5 as number); // Added By Shivprasad for CSR #32710
|
|
else
|
|
ordertimes := "NONE";
|
|
endif;
|
|
|
|
If StartOn.value = "Today" then
|
|
StartVerName := "Today";
|
|
SDate := Read First { " Select GetDate() " } ; // Added By Shivprasad
|
|
elseif StartOn.value = "Tomorrow" then
|
|
StartVerName := "Tomorrow";
|
|
SDate := Read First { " Select DateAdd(Day, 1, GetDate()) "} ; // Added By Shivprasad
|
|
else
|
|
VerName := "NONE";
|
|
endif;
|
|
|
|
stimeb2:= StartTimeb.value;
|
|
|
|
If StartTimeb.value = "AM Rounds" then
|
|
If repeatfreq.value <> "Daily" and repeatfreq.value <> "NONE" then
|
|
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "You cannot choose " || StartTimeb.value ||" with a frequency of " || repeatfreq.value
|
|
||". Please change your frequency to Daily, or select a valid start time to continue. " ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
goodtime := "no";
|
|
else
|
|
stimeb1 := StartTimeb.value;
|
|
orderfreq := "AM Rounds";
|
|
stimeb2 := Null;
|
|
goodtime := "yes";
|
|
endif;
|
|
else
|
|
hourmin := call str_parse with ((stimeb2 as string),":");
|
|
stimeb1 := "Scheduled Time";
|
|
stimebhr := hourmin [1];
|
|
stimebmin := hourmin [2];
|
|
goodtime := "yes";
|
|
If StartOn.value = "Today" then
|
|
getcurrenthour := extract hour now;
|
|
starthour := stimebhr as number;
|
|
currenthour := getcurrenthour as number;
|
|
|
|
If currenthour >= starthour then
|
|
goodtime := "no";
|
|
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "The start time of " || stimeb2 ||" " || starton.value
|
|
||" has already passed, please choose another start date or time to continue. " ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
else
|
|
goodtime := "yes";
|
|
endif;
|
|
endif;
|
|
endif;
|
|
|
|
if (RepeatLabs.value is not null or RepeatLabs.value = "") then
|
|
StartTimeb.Control_Mandatory := true;
|
|
StartOn.Control_Mandatory := true;
|
|
RepeatOcc.Control_Mandatory := true;
|
|
RepeatFreq.Control_Mandatory := true;
|
|
else
|
|
StartTimeb.Control_Mandatory := false;
|
|
StartOn.Control_Mandatory := false;
|
|
RepeatOcc.Control_Mandatory := false;
|
|
RepeatFreq.Control_Mandatory := false;
|
|
endif;
|
|
|
|
If ordertimes <> "NONE" and orderfreq <> "NONE" and StartVerName <> "NONE" and goodtime = "yes" then
|
|
If RepeatLabs is not null then
|
|
SendButton.value := false;
|
|
|
|
If OrderAccumBox.value is null then
|
|
OrderAccumBox.value := "Ordered: ";
|
|
endif;
|
|
|
|
Placeorder := "yes";
|
|
modname := orderfreq || " " || ordertimes;
|
|
vername := StartVerName;
|
|
sdate := StartDate.Value;
|
|
stime1 := StartTime_val.ReqTimeCode;
|
|
else
|
|
placeorder := "No";
|
|
endif;
|
|
endif;
|
|
endif;
|
|
|
|
// WITH WORKSHEET
|
|
try
|
|
//-----------------------------------------------------------
|
|
// Retrieve current order entry batch.
|
|
// The companion order can be added only if the parent order
|
|
// belongs to the order entry batch
|
|
// object owned by the OrderEntryWorksheet.
|
|
//-----------------------------------------------------------
|
|
worksheetInfo := call {{{SINGLE-QUOTE}}}OrderEntryBatch{{{SINGLE-QUOTE}}}.GetCurrent;
|
|
|
|
if worksheetInfo is NULL OR "OrderEntryWorksheet" <> (worksheetInfo.OrderBatchOwner as String) then
|
|
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n Unable to retrieve the Worksheet Info for this Order Batch" ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
endif;
|
|
|
|
//------------------------------------------------------------
|
|
// Get the .NET version of the Client Visit object.
|
|
// Needed to create new ObjectsPlus object
|
|
//------------------------------------------------------------
|
|
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey
|
|
with ((Active_ClientVisitGUID as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
|
|
|
|
//-----------------------------------------------------------
|
|
// Check the order entry worksheet. If there are no entries
|
|
// already on the worksheet set the initial values for
|
|
// the worksheet.
|
|
//-----------------------------------------------------------
|
|
if worksheetInfo.UnsubmittedOrdersCount = 0 then
|
|
// If there are no orders on the worksheet set
|
|
// defaults that will be used to create the orders
|
|
|
|
WSSessionType := "Standard";
|
|
WSSessionReason := " ";
|
|
WSRequestedBySource := "";
|
|
|
|
// Set the session type and reason on the worksheet
|
|
void := call worksheetInfo.SetSessionType with (WSSessionType, WSSessionReason);
|
|
|
|
// Set the requesting source string
|
|
worksheetInfo.RequestedBySource := WSRequestedBySource;
|
|
|
|
//Get the current user as the default care provider
|
|
WSRequestedBy_obj := call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindById
|
|
with ( user_IDType, user_IDCode );
|
|
|
|
//Set the requesting provider
|
|
worksheetInfo.RequestedBy := WSRequestedBy_obj;
|
|
|
|
// Get the location that will be used for the orders.
|
|
WSlocation_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey
|
|
with ((LocationGuid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
|
|
|
//Set the expected release location group
|
|
worksheetInfo.ExpectedReleaseLocationGroup := WSlocation_obj;
|
|
|
|
//Dispose RequestedBy CareProvider
|
|
if( WSRequestedBy_obj is NOT NULL ) then
|
|
void := call WSRequestedBy_obj.Dispose;
|
|
WSRequestedBy_obj:= null;
|
|
endif;
|
|
|
|
//Dispose ExpectedReleaseLocationGroup
|
|
if( WSlocation_obj is NOT NULL ) then
|
|
void := call WSlocation_obj.Dispose;
|
|
WSlocation_obj:= null;
|
|
endif;
|
|
|
|
else
|
|
//If there are orders on the worksheet retrieve the default values
|
|
// on the worksheet.
|
|
// These values are not required for this sample MLM however they
|
|
// contain useful information that can be used in the logic of an
|
|
// MLM.
|
|
WSSessionType := worksheetInfo.SessionType;
|
|
WSSessionReason := worksheetInfo.SessionReason;
|
|
WSRequestedBySource := worksheetInfo.RequestedBySource;
|
|
WSRequestedBy_obj := worksheetInfo.RequestedBy;
|
|
WSlocation_obj := worksheetInfo.ExpectedReleaseLocationGroup;
|
|
endif;
|
|
endtry;
|
|
|
|
catch Exception ex
|
|
error_occurred := true;
|
|
error_message := "{{+R}}Common Data:{{-R}}\n" || ex.Message || "\n\n";
|
|
|
|
if( worksheetInfo is NOT NULL ) then
|
|
void := call worksheetInfo.Dispose;
|
|
worksheetInfo:= null;
|
|
endif;
|
|
|
|
if( client_visit_obj is NOT NULL ) then
|
|
void := call client_visit_obj.Dispose;
|
|
client_visit_obj:= null;
|
|
endif;
|
|
|
|
if( WSRequestedBy_obj is NOT NULL ) then
|
|
void := call WSRequestedBy_obj.Dispose;
|
|
WSRequestedBy_obj:= null;
|
|
endif;
|
|
|
|
if( WSlocation_obj is NOT NULL ) then
|
|
void := call WSlocation_obj.Dispose;
|
|
WSlocation_obj:= null;
|
|
endif;
|
|
|
|
// If unable to initialize starting data, do not continue
|
|
// with the creation of any orders.
|
|
// Still conclude true as the error message needs to
|
|
// be displayed as an error.
|
|
|
|
endcatch;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Create a new Diagnostic order from a PreFilled item
|
|
// Place the order onto the order entry worksheet
|
|
//----------------------------------------------------------------------
|
|
|
|
// Added By Shivprasad for CSR# 32710 - Post Throbolytic OS
|
|
|
|
|
|
If (RepeatLabs.value is not null) and ( repeatfreq.value is Not Null ) and (OccTime is not Null) and (starttimeb.value is not Null) then
|
|
|
|
if ( StartTimeb.value <> "AM Rounds" ) then
|
|
|
|
if repeatfreq.value = "Daily" Then
|
|
Freq := (24 as number);
|
|
Elseif repeatfreq.value = "Q2H" Then
|
|
Freq := (2 as number);
|
|
Elseif repeatfreq.value = "Q4H" Then
|
|
Freq := (4 as number);
|
|
Elseif repeatfreq.value = "Q6H" Then
|
|
Freq := (6 as number);
|
|
Elseif repeatfreq.value = "Q8H" Then
|
|
Freq := (8 as number);
|
|
Elseif repeatfreq.value = "Q12H" Then
|
|
Freq := (12 as number);
|
|
Else
|
|
Freq := (0 as number);
|
|
Endif;
|
|
|
|
if ( StartOn.Value = "Today" ) then
|
|
Dat := read first { "SELECT FORMAT(GetDate(), {{{SINGLE-QUOTE}}}yyyy-MM-dd{{{SINGLE-QUOTE}}}) "};
|
|
elseif ( StartOn.Value = "Tomorrow" ) then
|
|
Dat := Read First { "Select FORMAT(DateAdd(Day, 1, GetDate()), {{{SINGLE-QUOTE}}}yyyy-MM-dd{{{SINGLE-QUOTE}}}) "} ;
|
|
endif;
|
|
|
|
StartDate1 := Dat ||" " || starttimeb.value ;
|
|
StartDateNew := Read first {" Select CONVERT(Datetime, {{{SINGLE-QUOTE}}}"|| StartDate1 || "{{{SINGLE-QUOTE}}}, 101)"} ;
|
|
FinalDate := StartDateNew + ( (( OccTime as Number ) - 1 ) * (Freq As Number ) * (60 as Number ) ) Minutes ;
|
|
FinalDate:= Read First { " Select FORMAT( Convert(Datetime, {{{SINGLE-QUOTE}}}" || FinalDate || "{{{SINGLE-QUOTE}}}),{{{SINGLE-QUOTE}}}yyyy-MM-dd HH:mm{{{SINGLE-QUOTE}}})"};
|
|
else
|
|
//Handling AM Rounds
|
|
//We force user to select Daily as frequency above; preset variable to 24
|
|
Freq := (24 as number);
|
|
|
|
//Need to check patient{{{SINGLE-QUOTE}}}s current location to determine AM Rounds start time
|
|
if ( currentLocation matches pattern "ICU%" OR currentLocation matches pattern "CVSU%" ) then
|
|
startTime := "04:00";
|
|
startHour := (4 as number);
|
|
stimebhr := "04";
|
|
stimebmin := "00";
|
|
else
|
|
startTime := "06:00";
|
|
startHour := (6 as number);
|
|
stimebhr := "06";
|
|
stimebmin := "00";
|
|
endif;
|
|
|
|
if ( StartOn.Value = "Today" ) then
|
|
if ( currentHour >= startHour ) then
|
|
Dat := read first { " SELECT FORMAT(DateAdd(Day, 1, GetDate()), {{{SINGLE-QUOTE}}}yyyy-MM-dd{{{SINGLE-QUOTE}}}) " };
|
|
else
|
|
Dat := read first { " SELECT FORMAT(GETDATE(), {{{SINGLE-QUOTE}}}yyyy-MM-dd{{{SINGLE-QUOTE}}}) " };
|
|
endif;
|
|
elseif ( StartOn.Value = "Tomorrow" ) then
|
|
Dat := read first { " SELECT FORMAT(DateAdd(Day, 1, GetDate()), {{{SINGLE-QUOTE}}}yyyy-MM-dd{{{SINGLE-QUOTE}}}) " };
|
|
endif;
|
|
|
|
StartDate1 := Dat || " " || startTime;
|
|
StartDateNew := read first { "SELECT CONVERT(DateTime, {{{SINGLE-QUOTE}}}" || StartDate1 || "{{{SINGLE-QUOTE}}}, 101)" };
|
|
FinalDate := StartDateNew + ( ( (OccTime as number) - 1 ) * ( Freq as number ) * ( 60 as number ) ) Minutes;
|
|
FinalDate := read first { "SELECT FORMAT(Convert(DateTime, {{{SINGLE-QUOTE}}}" || FinalDate || "{{{SINGLE-QUOTE}}}), {{{SINGLE-QUOTE}}}yyyy-MM-dd HH:mm{{{SINGLE-QUOTE}}})" };
|
|
|
|
endif;
|
|
|
|
Endif;
|
|
|
|
// end Shivprasad
|
|
|
|
If placeorder = "yes" then
|
|
|
|
linebreakme:= read last {" SELECT {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}} + char(13) + char(10) " };
|
|
|
|
lablist := call str_parse with ((repeatlabs.value),";");
|
|
|
|
If RepeatLabs.value is not null then
|
|
// Added By Shivprasad for CSR# 32710 - Post Throbolytic OS
|
|
OrderAccumBox.value := OrderAccumBox.value || linebreakme || " " || repeatlabs.value || ", Repeat From: " || StartDate1 || " To: " || FinalDate || ", Every " || Freq || " hr(s) " ;
|
|
|
|
Numords := count lablist;
|
|
for k in (1 seqto NumOrds) do
|
|
ordernamex := lablist [k];
|
|
ordername := ordernamex;
|
|
|
|
ws_call := call CreateRepeatOrder with
|
|
ordername,
|
|
modname,
|
|
vername,
|
|
worksheetInfo,
|
|
stimeb1,
|
|
stimebhr,
|
|
stimebmin,
|
|
heparin_iv_found,
|
|
//Active_OrderGUID,
|
|
//Active_SignificiantDtm,
|
|
client_visit_obj;
|
|
|
|
enddo;
|
|
|
|
RepeatLabs.value := "";
|
|
StartTimeb.value := Null;
|
|
StartOn.value := "";
|
|
RepeatOcc.value := "";
|
|
RepeatFreq.value := "";
|
|
StartTimeb.Control_Mandatory := false;
|
|
StartOn.Control_Mandatory := false;
|
|
RepeatOcc.Control_Mandatory := false;
|
|
RepeatFreq.Control_Mandatory := false;
|
|
|
|
else
|
|
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n Please choose the test(s) you wish to order and choose submit . " ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
|
endif;
|
|
endif; // End of Place Order = Yes section
|
|
|
|
;;
|
|
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;
|
|
;;
|
|
Urgency: 50;;
|
|
end:
|