413 lines
21 KiB
Plaintext
413 lines
21 KiB
Plaintext
maintenance:
|
|
|
|
maintenance:
|
|
title: SC Visit Transfer ;;
|
|
filename: SC_Visit_Transfer;;
|
|
arden: version 2;;
|
|
version: 4.50;;
|
|
institution: St Clair;;
|
|
author: Robert Spence;;
|
|
specialist: Robert Spence;;
|
|
date: 2007-03-22;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Do not allow a patient to be transfered via the SCM application
|
|
if the starting location is not valid
|
|
;;
|
|
explanation: When a user selects {{{SINGLE-QUOTE}}}OK{{{SINGLE-QUOTE}}} in change location (Confirm Transfer) in the SCM application
|
|
and the patient is not already in house,
|
|
a hard stop alert will display
|
|
|
|
Change History
|
|
Robert 03.29.2007 - Added logic to allow ER to Psych or ER to IRU
|
|
03.29.2007 - Also logic for Psych to ER and IRU to ER
|
|
03.02.2010 - Addded logic to trap for release of temp and change to new bed
|
|
DW 12.16.2010 - Added logic for MRSA ordering
|
|
JML 05.24.2013 - WO #158012 - Restrict transfer from Infusion, OR, and FBC.
|
|
STH 04.14.2016 - CSR#: 31256 - Update to allow SDC patients to be transfered to/from all units except IRU and PSYE (there is already logic to handle IRU and PSYE locations).
|
|
I just commented out the SDC visittype from checking the "bad patient" logic to prevent transfering to/from most locations. {Go-Live 4/25/2016}.
|
|
JML 02.01.2017 - WO #2545984 - Cancel Discharge events now evoke ClientVisitModify event. Added logic to not process this MLM
|
|
if previous VisitStatus = DSC.
|
|
DW 08.29.2017 - CSR# 36214 - SCM AM Registration
|
|
- Commented out IRU sections
|
|
- Changed the logic to only fire the "from / to bedded unit" logic on non (clinic or preclinic) patients.
|
|
- Cleaned up formatting for readability (Ultra edit compare will show many diffreneced even though the differences are harmless formatting changes)
|
|
- Some routines will not be processed for users other than in the Registration, HIS, and Laboratory departments
|
|
JML 01.29.2018 - CSR# 26413 - Modified code based on process changes for REG / SCHED activation:
|
|
- Allow nurses to Check In / Arrive Infusion patients based on a pre-admit location of {{{SINGLE-QUOTE}}}Infusion{{{SINGLE-QUOTE}}}.
|
|
- Move OR code logic to allow nurses to Check in / Arrive SSOP & Outpatient Surgical patients, using pre-admit location = "OR" and
|
|
"St. Clair Hospital Anc"
|
|
JML 02.19.2018 - CSR# 26413 - Modified code to accommodate SDC patient types now registered as OBS patients. Conditionally checking for service type = SSOP to allow nursing to arrive patients into
|
|
an OR bed.
|
|
|
|
;;
|
|
keywords: Transfer
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
|
|
log_execution_info:= false;
|
|
send_alert := "DoNotSend";
|
|
stop_Message := "Test";
|
|
Hard_Stop:=False;
|
|
|
|
|
|
visit_alert := destination { Alert: warning, "Visit Transfer", high, chart,"Visit Transfer", 4005, send_alert, "No Override Allowed" };
|
|
visit_transfer:= event{ClientVisitModify User ClientVisit}; // where LocationStatusChange = "Confirm Transfer"};
|
|
|
|
|
|
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
|
|
using "ObjectsPlusXA.SCM.Forms";
|
|
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
|
|
|
|
|
/* This block executes only when this MLM is called by the editor */
|
|
if called_by_editor then
|
|
visit_obj := read last { ClientVisit: THIS };
|
|
EvokingObject := visit_obj;
|
|
Bk_Loc_Name := "ER-2401";
|
|
Bk_Loc_GUid := "4000001081061001";
|
|
Bk_VisitStatus := "ADM";
|
|
Bk_TypeCode := "Inpatient";
|
|
else
|
|
/* Get the backup Object */
|
|
(backup_obj) := read last {ClientVisit: Backup REFERENCING EvokingObject};
|
|
(Bk_Loc_Name, Bk_Loc_GUID, Bk_VisitStatus,Bk_TypeCode,Bk_TemporaryLocation, Bk_ServiceGuid) := read last {ClientVisit: CurrentLocation,CurrentLocationGUID,VisitStatus,TypeCode, TemporaryLocation, ServiceGUID REFERENCING backup_obj};
|
|
endif;
|
|
|
|
/* Get the ended with data */
|
|
(To_Loc_Name,To_Loc_GUID,To_VisitStatus,To_TypeCode,To_TemporaryLocation,VisitGuid) := read last {ClientVisit: CurrentLocation,CurrentLocationGUID,VisitStatus,TypeCode,TemporaryLocation,guid REFERENCING EvokingObject};
|
|
|
|
Temp_Loc_Prob:=False;
|
|
badPatient := False;
|
|
|
|
(UserGUID ) := read last { UserInfo: GUID };
|
|
|
|
|
|
// Determine if the user is from Registration, HIS, or Laboratory. These users will not recieve the hard stop related to some sections of the MLM.
|
|
(UserDepartment) := read last {"
|
|
select ou.name
|
|
from CV3User u with (nolock)
|
|
join cv3organizationalunit ou on ou.guid = u.orgunitguid
|
|
where " || UserGuid || " = u.guid
|
|
"
|
|
};
|
|
|
|
(PatientRegistration_Service) := read last { "SELECT s.Description FROM CV3Service s WITH (NOLOCK) where s.GUID = " || SQL(Bk_ServiceGuid) };
|
|
|
|
if (UserDepartment = "Registration Department" or UserDepartment = "Laboratory" or UserDepartment = "Eclipsys Corporation") then
|
|
UserDepartmentAlertOverride := true;
|
|
else
|
|
UserDepartmentAlertOverride := false;
|
|
endif;
|
|
|
|
//If ((Bk_Loc_Name = To_Loc_Name) OR (Bk_VisitStatus = "DSC"))// or (To_Loc_Name matches pattern "Room%"))
|
|
If ( ( Bk_Loc_Name = To_Loc_Name ) OR ( Bk_VisitStatus = "DSC" ) ) then
|
|
Hard_Stop := False; // This insures that the location is the only change here.
|
|
|
|
else
|
|
|
|
// Gather Room Lists
|
|
// IRU_Room_List := read {"select name from Cv3Location where name like {{{SINGLE-QUOTE}}}IRU%{{{SINGLE-QUOTE}}} and IsClientLocation = 1 and TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} order by name "};
|
|
Psych_Room_List := read {"select name from Cv3Location where name like {{{SINGLE-QUOTE}}}Psy%{{{SINGLE-QUOTE}}} and IsClientLocation = 1 and TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} order by name "};
|
|
ER_Room_List := read {"select name from Cv3Location where name like {{{SINGLE-QUOTE}}}ER-%{{{SINGLE-QUOTE}}} and IsClientLocation = 1 and TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} order by name "};
|
|
FBC_Room_List := read {"SELECT Name FROM CV3Location WHERE Name LIKE {{{SINGLE-QUOTE}}}FBC-%{{{SINGLE-QUOTE}}} AND IsClientLocation = 1 AND TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} ORDER BY Name"};
|
|
INFUSION_Room_List := read {"SELECT Name FROM CV3Location WHERE Name LIKE {{{SINGLE-QUOTE}}}INFUS-%{{{SINGLE-QUOTE}}}AND IsClientLocation = 1 AND TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} ORDER BY Name "};
|
|
OR_Room_List := read {"SELECT Name FROM CV3Location WHERE Name LIKE {{{SINGLE-QUOTE}}}OR-%{{{SINGLE-QUOTE}}} AND IsClientLocation = 1 AND TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} ORDER BY Name "};
|
|
|
|
// Determine backup (prior) visit status
|
|
If Bk_VisitStatus = "PRE" then
|
|
Bk_VisitStatus := "Pre-Admit";
|
|
elseif Bk_VisitStatus = "DSC" then
|
|
Bk_VisitStatus := "Discharged";
|
|
elseif Bk_VisitStatus = "CLS" then
|
|
Bk_VisitStatus := "Closed";
|
|
elseif Bk_VisitStatus = "ADM" then
|
|
Bk_VisitStatus := "Admitted";
|
|
endif;
|
|
|
|
/*
|
|
// Keep IRU In IRU (Except ED)
|
|
If (Bk_Loc_Name in IRU_Room_List) and (To_Loc_Name not in IRU_Room_List) and (To_Loc_Name Not in ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "directly from an IRU bed to another unit" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
endif;
|
|
|
|
If (Bk_Loc_Name Not in IRU_Room_List) and (To_Loc_Name in IRU_Room_List) and (Bk_Loc_Name Not in ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "directly from this unit to an IRU bed" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
endif;
|
|
*/
|
|
|
|
|
|
// Keep Psych In Psych (Except ED)
|
|
// From Psych
|
|
If (Bk_Loc_Name in Psych_Room_List) and (To_Loc_Name not in Psych_Room_List) and (To_Loc_Name Not in ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "directly from a Behavioral Health bed to another unit" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
endif;
|
|
|
|
// To Psych
|
|
If (Bk_Loc_Name Not in Psych_Room_List) and (To_Loc_Name in Psych_Room_List) and (Bk_Loc_Name Not in ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "directly from this unit to a Behavioral Health bed" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
endif;
|
|
|
|
If (Bk_TypeCode = "Clinic" OR To_Typecode = "Clinic") then
|
|
badPatient := True;
|
|
endif;
|
|
|
|
If (Bk_TypeCode = "Pre Clinic" or To_Typecode = "Pre Clinic") then
|
|
badPatient := True;
|
|
endif;
|
|
|
|
|
|
|
|
// Clinic or Pre Clinic patients
|
|
If (badPatient = True) then
|
|
|
|
// Keep FBC In FBC (Except ED)
|
|
// From FBC
|
|
If (Bk_Loc_Name IN FBC_Room_List) AND (To_Loc_Name NOT IN FBC_Room_List) and (To_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from an FBC bed to another unit" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
endif;
|
|
|
|
// To FBC
|
|
If (Bk_Loc_Name NOT IN FBC_Room_List) AND (To_Loc_Name IN FBC_Room_List) AND (Bk_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || To_Typecode || " patient directly from this unit to an FBC bed" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
endif;
|
|
|
|
|
|
// Keep Infusion In Infusion (Except ED)
|
|
// From Infusion
|
|
If (Bk_Loc_Name IN INFUSION_Room_List) AND (To_Loc_Name NOT IN INFUSION_Room_List) AND (To_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from an Infusion bed to another unit" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
Endif;
|
|
|
|
// To Infusion
|
|
If (Bk_Loc_Name NOT IN INFUSION_Room_List) AND (Bk_Loc_Name <> "Infusion") AND (To_Loc_Name IN INFUSION_Room_List) AND (Bk_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from this unit to an Infusion bed" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
Endif;
|
|
|
|
|
|
// Do not allow Clinic or Pre Clinic patients transferred out of ED to any bed
|
|
If (Bk_Loc_Name IN ER_Room_List) AND (To_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from an ER inpatient bed to another unit" || "\n" ||
|
|
"Please contact Registration." || "\n\n" || "Current Patient Location is:- " || Bk_Loc_Name|| "\nYou are attempting to transfer to:- " || To_Loc_Name;
|
|
Endif;
|
|
|
|
//Do not allow Clinic or Pre Clinic patients transferred in and out of OR
|
|
If (Bk_Loc_Name IN OR_Room_List) AND (To_Loc_Name NOT IN OR_Room_List) AND (To_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from an OR bed to another unit" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
Endif;
|
|
|
|
If (Bk_Loc_Name NOT IN OR_Room_List) AND ( Bk_Loc_Name <> "OR" AND Bk_Loc_Name <> "St. Clair Hospital Anc" ) AND (To_Loc_Name IN OR_Room_List) AND (Bk_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from this unit to an OR bed" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
Endif;
|
|
|
|
else // Not a clinic or pre clinic
|
|
|
|
//CSR 26413: Build in exception case for SDC and outpatient surgical
|
|
//TypeCode = SDC, VisitStatus = PRE, Bk_Loc_Name = OR
|
|
//TypeCode = SDC, VisitStatus = PRE, Bk_Loc_Name = St. Clair Hospital Anc
|
|
if ( Bk_TypeCode = "SDC" OR PatientRegistration_Service = "SSOP" OR ( Bk_TypeCode = "Inpatient" AND Bk_Loc_Name = "OR" ) ) then
|
|
|
|
// Keep OR In OR (Except ED)
|
|
// To OR
|
|
If (Bk_Loc_Name NOT IN OR_Room_List) AND ( Bk_Loc_Name <> "OR" AND Bk_Loc_Name <> "St. Clair Hospital Anc" ) AND (To_Loc_Name IN OR_Room_List) AND (Bk_Loc_Name NOT IN ER_Room_List) then
|
|
Hard_Stop := True;
|
|
Stop_Message := "as a " || Bk_Typecode || " patient directly from this unit to an OR bed" || "\n" || "You must discharge and readmit the patient " || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name|| "\n" || "You are attempting to transfer to:- " || To_Loc_Name;
|
|
Endif;
|
|
|
|
//All other cases where TypeCode <> Clinic or Pre-Clinic
|
|
else
|
|
|
|
// Is the FROM location a bed?
|
|
exist_bedded := read last {"select name from Cv3Location where LocnGrpGUID= " || SQL(Bk_Loc_GUID) || " and TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} and IsClientLocation = 1 and Name= " || SQL(Bk_Loc_Name) };
|
|
|
|
If exist exist_bedded then
|
|
test:=True;
|
|
else
|
|
Hard_Stop := True;
|
|
Stop_Message := "because this patient is not currently assigned to a bed" || "\n" || "Please verify you have selected the correct visit" || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name || "\n" || "Current patient type is:- " || Bk_TypeCode;
|
|
|
|
endif;
|
|
|
|
// Is the TO location a bed?
|
|
To_exist_bedded := read last {"select name from Cv3Location where LocnGrpGUID= " || SQL(To_Loc_GUID) || " and TypeCode = {{{SINGLE-QUOTE}}}Bed{{{SINGLE-QUOTE}}} and IsClientLocation = 1 and Name= " || SQL(To_Loc_Name) };
|
|
|
|
If exist To_exist_bedded then
|
|
test:=True;
|
|
else
|
|
Hard_Stop := True;
|
|
Stop_Message := "to an invalid location" || "\n\n" || "You are attempting to transfer to:- " || To_Loc_Name ;
|
|
endif;
|
|
|
|
endif; //Exception case for Surgical Patients (OPSU)
|
|
Endif; // Is this a clinic or preclinic ?
|
|
|
|
// Is the Patient Admitted?
|
|
/*
|
|
If BK_VisitStatus <> "Admitted" then
|
|
Hard_Stop :=True;
|
|
Stop_Message := "because this patient is not currently admitted to the hospital" || "\n" || "Please verify you have selected the correct visit" || "\n\n" ||
|
|
"Current Patient Location is:- " || Bk_Loc_Name || "\n" || "Current Visit Status is:- " || Bk_VisitStatus ;
|
|
endif;
|
|
*/
|
|
|
|
// Now add the extra for temporary location issue with 5.0 SP3 03/02/2010
|
|
if Hard_Stop = false then
|
|
if Bk_TemporaryLocation is null then
|
|
Hard_Stop := false;
|
|
else
|
|
Hard_Stop := true;
|
|
Stop_Message := "{{+R}}You may not clear the Temporary Location {{+B}}" || "AND{{-B}} transfer to a New Location Bed Assignment in one step" ||
|
|
"\n\n" || "Please remove the New Location Bed Assignment and Click OK. Then " || "come back and transfer to the New Location Bed Assignment" ;
|
|
Temp_Loc_Prob:=True;
|
|
endif;
|
|
endif;
|
|
|
|
endif; // If ((Bk_Loc_Name = To_Loc_Name) OR (Bk_VisitStatus = "DSC"))
|
|
|
|
if Temp_Loc_Prob = False then
|
|
Stop_Message:= "You may not transfer this patient " || Stop_Message ;
|
|
endif;
|
|
|
|
// Added for MRSA Project
|
|
(ClientVisitGuid, ChartGuid, ClientGuid, CurrentLocation, VisitStatus) := read last {ClientVisit: GUID, ChartGUID, ClientGUID, CurrentLocation, VisitStatus };
|
|
(UserGUID ) := read last { UserInfo: GUID };
|
|
|
|
MRSA_Rules_MLM := mlm {{{SINGLE-QUOTE}}}SCH_Func_MRSA_Order{{{SINGLE-QUOTE}}};
|
|
(ScreeningUnit, OrderedToday, OrderedWithin3, Positivescreen, SignificantDTM, StatusCode, ResultValue, MRSAHistory, NursingHomeResidency, AntiInfectivewithin7)
|
|
:= call MRSA_Rules_MLM with (ClientVisitGuid, ChartGuid, ClientGuid, CurrentLocation);
|
|
|
|
If AntiInfectivewithin7 = "Yes" then
|
|
ModifierVariable := "Ordered Per Protocol";
|
|
else
|
|
ModifierVariable := "MRSA Screen Antibiotics";
|
|
endif;
|
|
|
|
FromUnit:= Substring (find "-" in string Bk_Loc_Name)-1 CHARACTERS From Bk_Loc_Name;
|
|
ToUnit := Substring (find "-" in string To_Loc_Name)-1 CHARACTERS From To_Loc_Name;
|
|
|
|
If FromUnit in ("ICU","CVSU","IRU","5A","5E","6E","5G") then
|
|
FromScreeningUnit := "Yes";
|
|
else
|
|
FromScreeningUnit := "No";
|
|
endif;
|
|
|
|
// Override the ScreeningUnit value attained from the called MLM which is not the "to unit" but is the "from unit"
|
|
If ToUnit in ("ICU","CVSU","IRU","5A","5E","6E","5G") then
|
|
ScreeningUnit := "Yes";
|
|
else
|
|
ScreeningUnit := "No";
|
|
endif;
|
|
|
|
If VisitStatus = "Adm" and (ScreeningUnit = "Yes" or FromScreeningUnit = "Yes") and FromUnit <> ToUnit and orderedtoday = "No" and Positivescreen = "No" and orderedwithin3 = "No" then
|
|
Proceed := "Yes";
|
|
else
|
|
Proceed := "No";
|
|
endif;
|
|
|
|
SessionType := "Standard";
|
|
SessionReason := "";
|
|
RequestingSource := "";
|
|
user_IDType := "Edstan Number (physician)";
|
|
order_Creation_Reason := "From Protocol";
|
|
|
|
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((ClientVisitGuid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
|
|
// user_IDCode := read last {"SELECT IDCode FROM CV3User " || " where GUID = " || UserGUID};
|
|
user_IDCode := "infectioncontrol";
|
|
RequestingCareProvider_obj := call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindById with ( user_IDType, (user_IDCode as STRING) );
|
|
location_guid := read last {"SELECT CurrentLocationGUID FROM CV3ClientVisit where ClientGUID = " || ClientGUID};
|
|
location_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((location_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
|
|
|
;;
|
|
evoke: visit_transfer ;
|
|
;;
|
|
logic:
|
|
// conclude Hard_Stop;
|
|
conclude true;
|
|
|
|
;;
|
|
action:
|
|
|
|
|
|
// MRSA Ordering Change
|
|
if Hard_Stop = true and UserDepartmentAlertOverride = false then
|
|
write Stop_Message at visit_alert;
|
|
else
|
|
if Proceed = "Yes" then
|
|
|
|
try
|
|
Catalog_Item_Name := "Nasal Screen for MRSA (Infection Control)";
|
|
Catalog_Item_Modifier := ModifierVariable;
|
|
Catalog_Item_Version := "";
|
|
Laboratory_catalog_item := call {{{SINGLE-QUOTE}}}OrderCatalogMasterItem{{{SINGLE-QUOTE}}}.FindByName with Catalog_Item_Name;
|
|
Parent_DiagnosticOrder_obj := call {{{SINGLE-QUOTE}}}DiagnosticOrder{{{SINGLE-QUOTE}}}.CreateDiagnosticOrder
|
|
with client_visit_obj, // ClientVisit ObjectsPlus object
|
|
Laboratory_catalog_item, // OrderCatalogMasterItem ObjectsPlus object
|
|
Catalog_Item_Modifier, // string ItemNameModifier
|
|
Catalog_Item_Version, // string ItemNameModifierVersion
|
|
order_Creation_Reason, // string CreateReason
|
|
RequestingCareProvider_obj , // RequestedBy ObjectsPlus object
|
|
RequestingSource, // string RequestedBySource (must be in dictionary)
|
|
SessionType, // string SessionType
|
|
SessionReason, // string SessionReason
|
|
location_obj, // Location ReleaseLocGrpID
|
|
"Always" as {{{SINGLE-QUOTE}}}AvailabilityOverride{{{SINGLE-QUOTE}}}; // AvailabilityOverride eAvailabilityOverride
|
|
|
|
if ( Laboratory_catalog_item is NOT NULL ) then
|
|
void := call Parent_DiagnosticOrder_obj.Save;
|
|
void := call Parent_DiagnosticOrder_obj.Dispose;
|
|
void:= call Laboratory_catalog_item.Dispose;
|
|
Laboratory_catalog_item:= null;
|
|
endif;
|
|
|
|
endtry;
|
|
|
|
catch Exception ex
|
|
error_occurred := true; error_message := "{{+R}}New Parent Diagnostic order:{{-R}}\n" || ex.Message || "\n\n";
|
|
|
|
if ( Laboratory_catalog_item is NOT NULL ) then
|
|
void:= call Laboratory_catalog_item.Dispose;
|
|
Laboratory_catalog_item:= null;
|
|
endif;
|
|
|
|
if ( Parent_DiagnosticOrder_obj is NOT NULL ) then
|
|
void:= call Parent_DiagnosticOrder_obj.Dispose;
|
|
Parent_DiagnosticOrder_obj:= null;
|
|
endif;
|
|
|
|
Parent_DiagnosticOrder_dest := null;
|
|
|
|
endcatch;
|
|
endif;
|
|
endif;
|
|
;;
|
|
end:
|