Files
St.Clair/MLMStripper/bin/Debug/FORM/FORM_SET_LAB_ORDER_24HR.mlm

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: