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: