maintenance: title: SCH_CHECK_LAB_ORDERS_HISTORY ;; mlmname: SCH_CHECK_LAB_ORDERS_HISTORY ;; arden: version 2.5;; version: 15.3;; institution: ALLSCRIPTS;; author: ANKIT MISTRY;; specialist: ;; date: 2017-09-06;; validation: testing;; library: purpose: ;; explanation: ;; keywords: ;; citations: ;; knowledge: type: data-driven;; data: enter_order_event_hemoglobin := EVENT { OrderEnter User Order: WHERE NAME = "Hemoglobin A1C" }; enter_order_event_LipidPanel := EVENT { OrderEnter User Order: WHERE NAME = "Lipid Panel"}; enter_order_event_Hepaptitis_Mayo := EVENT { OrderEnter User Order: WHERE NAME = "Hepatitis C Antibody (Mayo)"}; enter_order_event_Hepaptitis_IgG := EVENT { OrderEnter User Order: WHERE NAME = "Hepatitis C Antibody IgG"}; init_order_event_hemoglobin := EVENT { OrderInit User Order: WHERE NAME = "Hemoglobin A1C" }; init_order_event_LipidPanel := EVENT { OrderInit User Order: WHERE NAME = "Lipid Panel"}; init_order_event_Hepaptitis_Mayo := EVENT { OrderInit User Order: WHERE NAME = "Hepatitis C Antibody (Mayo)"}; init_order_event_Hepaptitis_IgG := EVENT { OrderInit User Order: WHERE NAME = "Hepatitis C Antibody IgG"}; // Start Modified: 09/25/2017 Keyur Is_Order_Set :=0; Event_Type:=EvokingEventType; IF EXISTS (EVOKINGOBJECT.OrderSetName) THEN Is_Order_Set :=1; ENDIF; // End Modified: 09/25/2017 Keyur HemoglobinA1C_OrderName := "Hemoglobin A1C"; LipidPanel_OrderName := "Lipid Panel"; Hepaptitis_Mayo_OrderName := "Hepatitis C Antibody (Mayo)"; Hepaptitis_IgG_OrderName := "Hepatitis C Antibody IgG"; ClientGUID := EVOKINGOBJECT.ClientGUID; ClientVisitGUID := EVOKINGOBJECT.ClientVisitGUID; If EVOKINGOBJECT.Name = HemoglobinA1C_OrderName then // STart Modified: 09/26/2017 /*(HemoglobinA1C_EnteredDate, HemoglobinA1C_ResultComponent, HemoglobinA1C_ResultValue) := READ FIRST {" SELECT TOP 1 CONVERT(VARCHAR(12),O.Entered,110) AS ENTERED,BO.ITEMNAME,BO.VALUE FROM CV3Order O WITH (NOLOCK) INNER JOIN CV3BasicObservation BO WITH (NOLOCK) ON BO.OrderGUID = O.GUID AND BO.ItemName = {{{SINGLE-QUOTE}}}Hemoglobin A1C Percent{{{SINGLE-QUOTE}}} WHERE (O.Entered > GETDATE()-60) AND O.NAME = " || SQL(HemoglobinA1C_OrderName) || " AND O.ClientGUID = " || SQL(ClientGUID) || " ORDER BY O.CreatedWhen DESC "};*/ (HemoglobinA1C_EnteredDate, HemoglobinA1C_ResultComponent, HemoglobinA1C_ResultValue) := READ FIRST {" SELECT TOP 1 CONVERT(VARCHAR(12),O.Entered,110) AS ENTERED,BO.ITEMNAME,BO.VALUE +{{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}+BO.UnitOfMeasure " || " FROM CV3CLIENTVISIT CV WITH (NOLOCK) " || " INNER JOIN CV3Order O WITH (NOLOCK) ON O.CLIENTGUID = CV.CLIENTGUID AND O.CHARTGUID = CV.CHARTGUID AND O.ClientVisitGUID = CV.GUID AND O.NAME = {{{SINGLE-QUOTE}}}Hemoglobin A1C{{{SINGLE-QUOTE}}} AND (O.Entered > GETDATE()-60) " || " INNER JOIN CV3BasicObservation BO WITH (NOLOCK) ON BO.ClientGUID = O.ClientGUID AND BO.ChartGUID = O.ChartGUID AND BO.OrderGUID = O.GUID AND BO.ItemName = {{{SINGLE-QUOTE}}}Hemoglobin A1C Percent{{{SINGLE-QUOTE}}} " || " WHERE O.ClientGUID = " || SQL(ClientGUID) || " ORDER BY O.CreatedWhen DESC "}; // End Modified: 09/26/2017 If EXISTS HemoglobinA1C_EnteredDate THEN Hemoglobin_msg := "{{+B}}" || HemoglobinA1C_OrderName || "{{-B}}" || " performed on "|| HemoglobinA1C_EnteredDate ||" with result of {{+R}}"|| HemoglobinA1C_ResultValue ||"{{-R}}.\n" || "60 day interval between testing recommended. If additional testing required, please call Pathology Office at x3800."; HemoglobinExists := 1; ENDIF; EndIf; If EVOKINGOBJECT.Name = LipidPanel_OrderName then // Start Modified: 09/26/2017 /*(LipidPanel_Entered,LipidPanel_Cholesterol, LipidPanel_Triglycerides,LipidPanel_HDL, LipidPanel_LDL_Calculated, LipidPanel_VLDL_Calculated) := READ FIRST {" SELECT CONVERT(VARCHAR(12),O.Entered,110) AS ENTERED,BO.ITEMNAME,BO.VALUE INTO #DATA FROM CV3Order O WITH (NOLOCK) INNER JOIN CV3BasicObservation BO WITH (NOLOCK) ON BO.OrderGUID = O.GUID WHERE O.NAME = " || SQL(LipidPanel_OrderName) || " AND O.ClientVisitGUID = " || SQL(ClientVisitGUID) || " ORDER BY O.CreatedWhen DESC SELECT TOP 1 ENTERED,[Cholesterol],[Triglycerides],[HDL],[LDL Calculated],[VLDL Calculated] FROM (SELECT * FROM #DATA) AS [RESULT] PIVOT ( MAX(VALUE) FOR ITEMNAME IN ([Cholesterol],[Triglycerides],[HDL],[LDL Calculated],[VLDL Calculated]) ) AS PVT ORDER BY ENTERED DESC DROP TABLE #DATA "};*/ (LipidPanel_Entered,LipidPanel_Cholesterol, LipidPanel_Triglycerides,LipidPanel_HDL, LipidPanel_LDL_Calculated, LipidPanel_VLDL_Calculated) := READ FIRST {" IF OBJECT_ID({{{SINGLE-QUOTE}}}tempdb.dbo.#DATA{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}U{{{SINGLE-QUOTE}}}) IS NOT NULL DROP TABLE #DATA " || " SELECT CONVERT(VARCHAR(12),O.Entered,110) AS ENTERED,BO.ITEMNAME,BO.VALUE,BO.UnitOfMeasure " || " INTO #DATA " || " FROM CV3CLIENTVISIT CV WITH (NOLOCK) " || " INNER JOIN CV3Order O WITH (NOLOCK) ON O.CLIENTGUID = CV.CLIENTGUID AND O.CHARTGUID = CV.CHARTGUID AND O.ClientVisitGUID = CV.GUID AND O.NAME = {{{SINGLE-QUOTE}}}Lipid Panel{{{SINGLE-QUOTE}}} " || " INNER JOIN CV3BasicObservation BO WITH (NOLOCK) ON BO.ClientGUID = O.ClientGUID AND BO.ChartGUID = O.ChartGUID AND BO.OrderGUID = O.GUID " || " WHERE CV.GUID = " || SQL(ClientVisitGUID) || " ORDER BY O.CreatedWhen DESC " || " SELECT TOP 1 ENTERED,[Cholesterol]+{{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}+UnitOfMeasure,[Triglycerides]+{{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}+UnitOfMeasure,[HDL]+{{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}+UnitOfMeasure, " || " [LDL Calculated]+{{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}+UnitOfMeasure,[VLDL Calculated]+{{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}+UnitOfMeasure " || " FROM (SELECT * FROM #DATA) AS [RESULT] " || " PIVOT " || " ( " || " MAX(VALUE) " || " FOR ITEMNAME IN ([Cholesterol],[Triglycerides],[HDL],[LDL Calculated],[VLDL Calculated]) " || " ) AS PVT " || " ORDER BY ENTERED DESC "}; // End Modified: 09/26/2017 If EXISTS LipidPanel_Entered THEN LipidPanel_msg := "{{+B}}" || LipidPanel_OrderName || "{{-B}}" || " already performed this admission " || LipidPanel_Entered ||"\n" || "Cholesterol {{+R}}" || LipidPanel_Cholesterol || "{{-R}}\n" || "Triglycerides {{+R}}" || LipidPanel_Triglycerides || "{{-R}}\n" || "HDL {{+R}}" || LipidPanel_HDL || "{{-R}}\n" || "LDL Calculated {{+R}}" || LipidPanel_LDL_Calculated || "{{-R}}\n" || "VLDL Calculated {{+R}}" || LipidPanel_VLDL_Calculated || "{{-R}}"; LipidPanelExists := 1; ENDIF; EndIf; If EVOKINGOBJECT.Name IN (Hepaptitis_Mayo_OrderName,Hepaptitis_IgG_OrderName) then (Hepatitis_C_Antibody_Mayo_Entered, Hepatitis_C_Antibody_Mayo_ResultComponent, Hepatitis_C_Antibody_Mayo_ResultValue) := READ FIRST {" SELECT TOP 1 CONVERT(VARCHAR(12),O.Entered,110) AS ENTERED,BO.ITEMNAME,BO.VALUE " || " FROM CV3ClientVisit CV WITH (NOLOCK) " || " INNER JOIN CV3Order O WITH (NOLOCK) ON O.ClientGUID = CV.ClientGUID AND O.ChartGUID = CV.ChartGUID AND O.ClientVisitGUID = CV.GUID AND O.NAME = {{{SINGLE-QUOTE}}}Hepatitis C Antibody (Mayo){{{SINGLE-QUOTE}}} " || " INNER JOIN CV3BasicObservation BO WITH (NOLOCK) ON BO.ClientGUID = O.ClientGUID AND BO.ChartGUID = O.ChartGUID AND BO.OrderGUID = O.GUID AND BO.ItemName = {{{SINGLE-QUOTE}}}Hepatitis C Antibody Mayo{{{SINGLE-QUOTE}}} " || " WHERE CV.ClientGUID = " || SQL(ClientGUID) || " ORDER BY O.CreatedWhen DESC "}; //SELECT CONVERT(VARCHAR(20),GETDATE(),110) (Hepatitis_C_Antibody_IgG_Entered, Hepatitis_C_Antibody_IgG_ResultComponent, Hepatitis_C_Antibody_IgG_ResultValue) := READ FIRST {" SELECT TOP 1 CONVERT(VARCHAR(12),O.Entered,110) AS ENTERED,BO.ITEMNAME,BO.VALUE " || " FROM CV3ClientVisit CV WITH (NOLOCK) " || " INNER JOIN CV3Order O WITH (NOLOCK) ON O.ClientGUID = CV.ClientGUID AND O.ChartGUID = CV.ChartGUID AND O.ClientVisitGUID = CV.GUID AND O.NAME = {{{SINGLE-QUOTE}}}Hepatitis C Antibody IgG{{{SINGLE-QUOTE}}} " || " INNER JOIN CV3BasicObservation BO WITH (NOLOCK) ON BO.ClientGUID = O.ClientGUID AND BO.ChartGUID = O.ChartGUID AND BO.OrderGUID = O.GUID AND BO.ItemName = {{{SINGLE-QUOTE}}}Hepatitis C Antibody IgG{{{SINGLE-QUOTE}}} " || " WHERE CV.ClientGUID = " || SQL(ClientGUID) || " ORDER BY O.CreatedWhen DESC "}; If EXISTS Hepatitis_C_Antibody_Mayo_Entered then Hepatitis_msg := "{{+B}}" || Hepaptitis_Mayo_OrderName || "{{-B}}" || " performed on " || Hepatitis_C_Antibody_Mayo_Entered || " with result of {{+R}}" || Hepatitis_C_Antibody_Mayo_ResultValue || "{{-R}}.\n" || "If additional Hepatitis C Screening is required, please call Pathology Office at x3800."; HepatitisExists := 1; ElseIf EXISTS Hepatitis_C_Antibody_IgG_Entered then Hepatitis_msg := "{{+B}}" || Hepaptitis_IgG_OrderName || "{{-B}}" || " performed on " || Hepatitis_C_Antibody_IgG_Entered || " with result of {{+R}}" || Hepatitis_C_Antibody_IgG_ResultValue || "{{-R}}.\n" || "If additional Hepatitis C Screening is required, please call Pathology Office at x3800."; HepatitisExists := 1; EndIf; EndIf; Order_Alert := DESTINATION {Alert} WITH [ alert_type := "WARNING", Short_Message := "Duplicate Order", Priority := "High", send_with_order := "", Alert_Dialog_Settings := "No Override Allowed" ]; ;; priority: 50 ;; evoke: enter_order_event_hemoglobin; enter_order_event_LipidPanel; enter_order_event_Hepaptitis_Mayo; enter_order_event_Hepaptitis_IgG; init_order_event_hemoglobin; init_order_event_LipidPanel; init_order_event_Hepaptitis_Mayo; init_order_event_Hepaptitis_IgG; ;; logic: // Start Modified: 09/25/2017 //CONCLUDE TRUE; if Is_Order_Set=1 and Event_Type="OrderEnter" then CONCLUDE TRUE; endif; if Is_Order_Set=0 and Event_Type="OrderInit" then CONCLUDE TRUE; endif; // End Modified: 09/25/2017 ;; action: IF HemoglobinExists = 1 THEN WRITE Hemoglobin_msg AT Order_Alert; ENDIF; IF LipidPanelExists = 1 THEN WRITE LipidPanel_msg AT Order_Alert; ENDIF; IF HepatitisExists = 1 THEN WRITE Hepatitis_msg AT Order_Alert; ENDIF; ;; Urgency: 50;; end: