178 lines
6.6 KiB
Plaintext
178 lines
6.6 KiB
Plaintext
maintenance:
|
|
|
|
title: FORM_SET_LAB_ORDER_24hr;;
|
|
mlmname: FORM_SET_LAB_ORDER_24hr;;
|
|
arden: version 2.5;;
|
|
version: 15.1;;
|
|
institution: St Clair Hospital;;
|
|
author: Bryan Berkeybile, Allscripts Corp;;
|
|
specialist: Bryan Berkeybile;;
|
|
date: 2016-05-18;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: To select labs on an Orderset form, if available lab results not within 24 hours.
|
|
;;
|
|
explanation: Lab grouping on the Orderset form will be auto selected, if there are no results for the lab grouping within past 24 hours.
|
|
|
|
Change History
|
|
2016.05.18 BB CSR# 34528: Created
|
|
2016.07.15 BB Ticket# 2228125: Removing lab auto-selecting, if the patient does not have a visit type of "Inpatient", "Observation", or "Emergency" .
|
|
11.20.2018 DJW CSR# 37100 Powerscribe - altered to call FORM_SET_MEDICAL_IMAGING_GRID_ITEM_DESELECT
|
|
12.4.2018 STH CSR# 37682 Added call to the generic MLM to be used for the form MI CT PrepLbsPeriCar on "formopen" only. Used on CT Pericardocentesis {Go-Live 12/4/2018}
|
|
;;
|
|
keywords:
|
|
;;
|
|
citations:
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
|
|
(this_communication, // Communication object
|
|
this_form, // Form object
|
|
client_info_obj //Arden ClientInfo object
|
|
) := argument;
|
|
|
|
|
|
log_execution_info := FALSE;
|
|
|
|
if Called_By_Editor Then
|
|
(ClientVisitGuid, ChartGuid, ClientGuid) := read last {ClientVisit: GUID, ChartGUID, ClientGUID};
|
|
//(UserGUID ) := read last { UserInfo: GUID };
|
|
|
|
Else
|
|
ClientVisitGuid := this_communication.ClientVisitGUID;
|
|
ChartGuid := this_communication.ChartGUID;
|
|
ClientGuid := this_communication.ClientGUID;
|
|
endif;
|
|
//[BB] 7/15/16
|
|
//obtaning the patient visit type
|
|
(Visit_Type) := read last { " select TypeCode"
|
|
|| " from cv3clientvisit with (nolock) "
|
|
|| " where clientguid = " || sql(ClientGUID)
|
|
|| " and chartguid = " || sql(ChartGuid)
|
|
|| " and guid = " || sql(ClientVisitGuid) };
|
|
//[bb]
|
|
|
|
field_list:= this_form.fields;
|
|
CallingEvent := this_communication.CallingEvent;
|
|
CallingField := this_communication.CallingFieldName;
|
|
FormName := this_form.Name;
|
|
//ClientVisitGuid := this_communication.ClientVisitGUID;{{{SINGLE-QUOTE}}}
|
|
//ChartGuid := this_communication.ChartGUID;
|
|
//ClientGuid := this_communication.ClientGUID;
|
|
|
|
|
|
Labs_fld := last of (field_list WHERE field_list.DataItemName = "MultiOrderCheckbox"
|
|
and field_list.label = "Labs");
|
|
Labs_fld_List := Labs_fld.Value;
|
|
|
|
|
|
Labs_field_selected := labs_fld_list.isselected;
|
|
|
|
// pulling Order results from client
|
|
(Lab_Results) := read
|
|
{"SELECT DISTINCT o.Name AS {{{SINGLE-QUOTE}}}Orders{{{SINGLE-QUOTE}}} "
|
|
|| " FROM CV3ClientVisit cv "
|
|
|| " INNER JOIN CV3Client c ON cv.ClientGUID = c.GUID "
|
|
|| " INNER JOIN CV3Order o ON cv.GUID = o.ClientVisitGUID AND o.ClientGUID = cv.ClientGUID ANd o.ChartGUID = cv.ChartGUID "
|
|
|| " JOIN CV3BasicObservation bo ON o.GUID = bo.OrderGUID AND bo.ClientVisitGUID = cv.GUID AND bo.ClientGUID = c.GUID AND bo.ChartGUID = o.ChartGUID "
|
|
|| " WHERE o.Name IN ({{{SINGLE-QUOTE}}}cbc no Diff (Hemogram Only){{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}CBC (Includes Diff){{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}CBC with Manual Diff{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}BUN{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Creatinine{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Prothrombin/INR{{{SINGLE-QUOTE}}}) "
|
|
|| " AND cv.ClientGUID = " || SQL(ClientGuid)
|
|
|| " AND bo.ArrivalDtm > getdate()-1 "
|
|
};
|
|
|
|
// Additional labs
|
|
|
|
// pulling OrderItem results from client
|
|
(Lab_Result_Battery) := read
|
|
{"SELECT DISTINCT rci2.ItemName AS {{{SINGLE-QUOTE}}}Ords{{{SINGLE-QUOTE}}} "
|
|
|| " FROM CV3ClientVisit cv "
|
|
|| " INNER JOIN CV3Client c ON cv.ClientGUID = c.GUID "
|
|
|| " INNER JOIN CV3Order o ON cv.GUID = o.ClientVisitGUID AND o.ClientGUID = cv.ClientGUID ANd o.ChartGUID = cv.ChartGUID "
|
|
|| " JOIN CV3BasicObservation bo ON o.GUID = bo.OrderGUID AND bo.ClientVisitGUID = cv.GUID AND bo.ClientGUID = c.GUID AND bo.ChartGUID = o.ChartGUID "
|
|
|| " JOIN CV3OrderCatalogMasterItem ocmi on o.OrderCatalogMasterItemGUID = ocmi.GUID "
|
|
|| " JOIN CV3ResultCatalogItem rci ON rci.OrderMasterItemGUID = ocmi.guid "
|
|
|| " JOIN CV3ResultComponent rcom ON rci.GUID = rcom.ItemParentGUID "
|
|
|| " JOIN CV3ResultCatalogItem rci2 ON rcom.ItemChildGUID = rci2.GUID "
|
|
|| " WHERE rci2.ItemName in ({{{SINGLE-QUOTE}}}BUN{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Creatinine Plasma/Serum{{{SINGLE-QUOTE}}})"
|
|
|| " AND cv.ClientGUID = " || SQL(ClientGuid)
|
|
|| " AND bo.ArrivalDtm > getdate()-1 "
|
|
};
|
|
//[BB] 7/15/16
|
|
if ((trim(Visit_Type) in ("Inpatient","Observation","Emergency"))) then
|
|
Inpat := true;
|
|
else
|
|
Inpat := false;
|
|
endif;
|
|
|
|
|
|
if Inpat = true Then
|
|
//[bb]
|
|
|
|
If (("cbc no Diff (Hemogram Only)" in Lab_Results) or ("CBC (Includes Diff)" in Lab_Results) or ("CBC with Manual Diff" in Lab_Results ))
|
|
THEN create_CBC := false; Else create_CBC := true; endif;
|
|
if (("BUN" in Lab_Results) or ("BUN" in Lab_Result_Battery))
|
|
THEN create_BUN := false; Else create_BUN := true; endif;
|
|
if (("Creatinine" in Lab_Results) or ("Creatinine Plasma/Serum" in Lab_Result_Battery))
|
|
THEN create_Cr := false; Else create_Cr := true; endif;
|
|
if "Prothrombin/INR" in Lab_Results
|
|
THEN create_PTINR := false; Else create_PTINR := true; endif;
|
|
|
|
|
|
for x in 1 seqto (count Labs_fld_List) do
|
|
aaa := Labs_fld_List[x];
|
|
// ccc := Labs_fld.value.isselected;
|
|
ddd := Labs_fld.value[x].isselected;
|
|
ggg := Labs_fld.value[x];
|
|
// eee := Labs_fld[x].value.isselected;
|
|
|
|
|
|
if (ggg.name in( "cbc no Diff (Hemogram Only)" , "CBC (Includes Diff)" , "CBC with Manual Diff") AND create_CBC = true)
|
|
or (ggg.name = "BUN" AND create_BUN = true)
|
|
or (ggg.name = "Creatinine" AND create_Cr = true)
|
|
or (ggg.name = "Prothrombin/INR" AND create_PTINR = true) then
|
|
Labs_fld.value[x].isselected := true;
|
|
else
|
|
Labs_fld.value[x].isselected := false;
|
|
endif;
|
|
|
|
Enddo;
|
|
|
|
else // Inpat = false
|
|
|
|
|
|
|
|
|
|
// Call the Grid Deselect MLM
|
|
|
|
GridDeselectMLM:= mlm {{{SINGLE-QUOTE}}}FORM_SET_MEDICAL_IMAGING_GRID_ITEM_DESELECT{{{SINGLE-QUOTE}}};
|
|
(this_communication,this_form,client_info_obj):= call GridDeselectMLM with this_communication,this_form,client_info_obj;
|
|
|
|
|
|
endif; //[BB] 7/15/16
|
|
|
|
if ((CallingEvent = "FormOpen") and (formname = "MI CT PrepLbsPeriCar"))then
|
|
GenericMLM := mlm {{{SINGLE-QUOTE}}}FORM_SET_GENERIC_ITEM_CONTROL{{{SINGLE-QUOTE}}};
|
|
(this_communication,this_form,client_info_obj):= call GenericMLM with this_communication,this_form,client_info_obj;
|
|
endif;
|
|
;;
|
|
|
|
evoke:
|
|
|
|
;;
|
|
logic:
|
|
conclude true;
|
|
;;
|
|
action:
|
|
|
|
|
|
return this_communication, this_form;
|
|
|
|
|
|
;;
|
|
Urgency: 50;;
|
|
end:
|