289 lines
12 KiB
Plaintext
289 lines
12 KiB
Plaintext
maintenance:
|
|
|
|
title: FORM_PRE_CARDIAC_PERIPHERAL_PROC;;
|
|
mlmname: FORM_PRE_CARDIAC_PERIPHERAL_PROC;;
|
|
arden: version 2.5;;
|
|
version: 6.10;;
|
|
institution: St. Clair Hospital;;
|
|
author: Shivprasad Jadhav;;
|
|
specialist: Shivprasad jadhav, Allscripts Corporation;;
|
|
date: 2015-02-10;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: 1) Check for the EKG 12 lead order for past 14 days on the patient visit and if no order found then preselect EKG 12 lead order
|
|
2) Check for the below order status of “940” in last 96 hours and if order found with this status then preselect the respective order.
|
|
- CBC (Includes Diff)
|
|
- BUN
|
|
- Potassium Plasma/ Serum
|
|
- Prothrombin/INR
|
|
- Creatinine
|
|
|
|
;;
|
|
|
|
explanation:
|
|
|
|
Change History
|
|
-----------------
|
|
13.01.2015 JML CSR# 32940: Created
|
|
;;
|
|
keywords: Called MLMs
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
// This MLM is passed three arguments, of types
|
|
// communication_type, form_type and client info object respectively.
|
|
|
|
(this_communication, // Communication object
|
|
this_form, // Form object
|
|
client_info_obj //Arden ClientInfo object
|
|
) := argument;
|
|
|
|
|
|
/*******************Make Changes To Spelling And Flags In This Section*******************/
|
|
|
|
/* Set to true if a decision.log is needed.*/
|
|
log_execution_info := FALSE;
|
|
|
|
/***************************************************************************************/
|
|
|
|
// Initialize error message
|
|
error_message:="";
|
|
|
|
// Assigns fields passed in the Form object to the Field object
|
|
field_list:= this_form.fields;
|
|
client_guid := this_communication.ClientGUID;
|
|
visit_guid := this_communication.ClientVisitGUID;
|
|
chart_guid := this_communication.ChartGUID;
|
|
|
|
//pObj := this_communication.PrimaryObj;
|
|
|
|
CallingEvent := this_communication.CallingEvent;
|
|
CallingField := this_communication.CallingFieldName;
|
|
|
|
item_event := this_communication.itemevent;
|
|
form_type := this_communication.formtype;
|
|
|
|
|
|
//-----------BEGIN COPY SECTION-------------------
|
|
DisplayNewScheduled := first of (field_list.Value
|
|
where field_list.DataItemName = "LAB_CB_Alternate Priorities");
|
|
|
|
if (DisplayNewScheduled) then
|
|
Call_UserFriendly_Lab_Priorities := mlm {{{SINGLE-QUOTE}}}SCH_LAB_PRIORITY_OPTIONS_CALLED{{{SINGLE-QUOTE}}};
|
|
(this_communication,this_form) := call Call_UserFriendly_Lab_Priorities with (this_communication,this_form,client_info_obj);
|
|
endif;
|
|
//-----------END COPY SECTION-------------------
|
|
|
|
|
|
//Retrieve relevant form fields
|
|
Labs_96Hr := last of ( field_list WHERE field_list.DataItemName = "MultiOrderCheckBox" and field_list.Label = "Labs within 96 hrs of procedure");
|
|
//and field_list.Control_MultiFieldOccNum = 5);
|
|
Labs_96Hr_Val := Labs_96Hr.Value;
|
|
|
|
|
|
if ( CallingEvent = "FormOpen" ) then
|
|
|
|
//Check to see if patient is on continuous heparin
|
|
EKG_12_Check := read {"SELECT o.Name"
|
|
|| " FROM CV3ClientVisit cv WITH (NOLOCK) JOIN CV3Order o WITH (NOLOCK)"
|
|
|| " ON cv.GUID = o.ClientVisitGUID"
|
|
|| " AND cv.ClientGUID = o.ClientGUID"
|
|
|| " AND cv.ChartGUID = o.ChartGUID"
|
|
|| " WHERE cv.ClientGUID = " || Sql(client_guid)
|
|
|| " AND o.NAME IN ( {{{SINGLE-QUOTE}}}EKG 12 Lead{{{SINGLE-QUOTE}}} ) "
|
|
|| " AND DATEDIFF(DD, o.ARRIVALDTM, GetDate()) <= 14"
|
|
|| " AND o.OrderStatusCode NOT IN ({{{SINGLE-QUOTE}}}CANC{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}CAND{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}DISCD{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}DISC{{{SINGLE-QUOTE}}})"};
|
|
//|| " AND o.OrderStatusCode IN ({{{SINGLE-QUOTE}}}SPRV{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESI{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESC{{{SINGLE-QUOTE}}})"};
|
|
|
|
If Length(EKG_12_Check) is NULL Then
|
|
EKG :=1;
|
|
Else
|
|
EKG :=2;
|
|
EndIf;
|
|
|
|
|
|
|
|
//EKG Grid And Its Order Value
|
|
Multi_Grid := First of ( field_list where field_list.DataItemName = "MultiOrderGrid" and field_list.Label = "Diagnostic Test") ;
|
|
Multi_Grid_fields := Multi_Grid.Value;
|
|
item1 := Multi_Grid_fields[1];
|
|
|
|
If EKG =1 Then
|
|
|
|
Item1.IsSelected := TRUE ;
|
|
//item1.IsReadonly := TRUE ;
|
|
Else
|
|
Item1.IsSelected := FALSE;
|
|
//item1.IsReadonly := FALSE ;
|
|
EndIF;
|
|
|
|
lab_name :="abc";
|
|
|
|
( lab_name_Potassium ) := read {"SELECT o.Name "
|
|
|| " FROM CV3ClientVisit cv WITH (NOLOCK) JOIN CV3Order o WITH (NOLOCK)"
|
|
|| " ON cv.GUID = o.ClientVisitGUID"
|
|
|| " AND cv.ClientGUID = o.ClientGUID"
|
|
|| " AND cv.ChartGUID = o.ChartGUID"
|
|
|| " WHERE cv.ClientGUID = " || Sql(client_guid) || " "
|
|
|| " AND (o.NAME IN (Select Distinct OCMI.Name "
|
|
|| " from CV3ResultComponent RC (NoLock) "
|
|
|| " INNER JOIN CV3ResultCatalogItem RCI1 (NoLock) "
|
|
|| " ON RC.ItemChildGUID = RCI1.GUID "
|
|
|| " INNER JOIN CV3ResultCatalogItem RCI2 (NoLock) "
|
|
|| " ON RC.ItemParentGUID = RCI2.GUID "
|
|
|| " INNER JOIN CV3OrderCatalogMasterItem OCMI (NoLock) "
|
|
|| " ON RCI2.OrderMasterItemGUID = OCMI.GUID "
|
|
|| " Where RCI1.ItemName Like {{{SINGLE-QUOTE}}}%Potassium Plasma/Serum%{{{SINGLE-QUOTE}}} ) or o.NAME ={{{SINGLE-QUOTE}}}Potassium Plasma/Serum{{{SINGLE-QUOTE}}}) "
|
|
|| " AND DATEDIFF(HH, o.ARRIVALDTM, GetDate()) <= 96 "
|
|
|| " AND o.OrderStatusCode IN ({{{SINGLE-QUOTE}}}SPRV{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESI{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESC{{{SINGLE-QUOTE}}})"};
|
|
|
|
|
|
|
|
( lab_name_BUN ) := read {"SELECT o.Name "
|
|
|| " FROM CV3ClientVisit cv WITH (NOLOCK) JOIN CV3Order o WITH (NOLOCK)"
|
|
|| " ON cv.GUID = o.ClientVisitGUID"
|
|
|| " AND cv.ClientGUID = o.ClientGUID"
|
|
|| " AND cv.ChartGUID = o.ChartGUID"
|
|
|| " WHERE cv.ClientGUID = " || Sql(client_guid)
|
|
|| " AND (o.NAME IN (Select Distinct OCMI.Name "
|
|
|| " from CV3ResultComponent RC (NoLock) "
|
|
|| " INNER JOIN CV3ResultCatalogItem RCI1 (NoLock) "
|
|
|| " ON RC.ItemChildGUID = RCI1.GUID "
|
|
|| " INNER JOIN CV3ResultCatalogItem RCI2 (NoLock) "
|
|
|| " ON RC.ItemParentGUID = RCI2.GUID "
|
|
|| " INNER JOIN CV3OrderCatalogMasterItem OCMI (NoLock) "
|
|
|| " ON RCI2.OrderMasterItemGUID = OCMI.GUID "
|
|
|| " Where RCI1.ItemName like {{{SINGLE-QUOTE}}}%BUN%{{{SINGLE-QUOTE}}} ) or o.NAME ={{{SINGLE-QUOTE}}}BUN{{{SINGLE-QUOTE}}} ) "
|
|
|| " AND DATEDIFF(HH, o.ARRIVALDTM, GetDate()) <= 96 " //1400
|
|
|| " AND o.OrderStatusCode IN ({{{SINGLE-QUOTE}}}SPRV{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESI{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESC{{{SINGLE-QUOTE}}})"};
|
|
|
|
( lab_name_Creatinine ) := read {"SELECT o.Name "
|
|
|| " FROM CV3ClientVisit cv WITH (NOLOCK) JOIN CV3Order o WITH (NOLOCK)"
|
|
|| " ON cv.GUID = o.ClientVisitGUID"
|
|
|| " AND cv.ClientGUID = o.ClientGUID"
|
|
|| " AND cv.ChartGUID = o.ChartGUID"
|
|
|| " WHERE cv.ClientGUID = " || Sql(client_guid)
|
|
|| " AND (o.NAME IN (Select Distinct OCMI.Name "
|
|
|| " from CV3ResultComponent RC (NoLock) "
|
|
|| " INNER JOIN CV3ResultCatalogItem RCI1 (NoLock) "
|
|
|| " ON RC.ItemChildGUID = RCI1.GUID "
|
|
|| " INNER JOIN CV3ResultCatalogItem RCI2 (NoLock) "
|
|
|| " ON RC.ItemParentGUID = RCI2.GUID "
|
|
|| " INNER JOIN CV3OrderCatalogMasterItem OCMI (NoLock) "
|
|
|| " ON RCI2.OrderMasterItemGUID = OCMI.GUID "
|
|
|| " Where RCI1.ItemName Like {{{SINGLE-QUOTE}}}%Creatinine%{{{SINGLE-QUOTE}}} ) or o.NAME ={{{SINGLE-QUOTE}}}Creatinine{{{SINGLE-QUOTE}}} ) "
|
|
|| " AND DATEDIFF(HH, o.ARRIVALDTM, GetDate()) <= 96 " //1400
|
|
|| " AND o.OrderStatusCode IN ({{{SINGLE-QUOTE}}}SPRV{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESI{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESC{{{SINGLE-QUOTE}}})"};
|
|
|
|
|
|
//Check to see if patient had these labs drawn in last 96 hours
|
|
( lab_name_CBC ) := read {"SELECT o.Name "
|
|
|| " FROM CV3ClientVisit cv WITH (NOLOCK) JOIN CV3Order o WITH (NOLOCK)"
|
|
|| " ON cv.GUID = o.ClientVisitGUID"
|
|
|| " AND cv.ClientGUID = o.ClientGUID"
|
|
|| " AND cv.ChartGUID = o.ChartGUID "
|
|
|| " WHERE cv.ClientGUID = " || Sql(client_guid)
|
|
|| " AND o.NAME IN ({{{SINGLE-QUOTE}}}CBC (Includes Diff){{{SINGLE-QUOTE}}}) "
|
|
|| " AND DATEDIFF(HH, o.ARRIVALDTM, GetDate()) <= 96 " //96 " //1400"
|
|
//|| " AND DATEDIFF(DD, o.ARRIVALDTM, GetDate()) <= 60 " //1400"
|
|
|| " AND o.OrderStatusCode IN ({{{SINGLE-QUOTE}}}SPRV{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESI{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESC{{{SINGLE-QUOTE}}}) "};
|
|
|
|
( lab_name_Prothrombin ) := read {"SELECT o.Name "
|
|
|| " FROM CV3ClientVisit cv WITH (NOLOCK) JOIN CV3Order o WITH (NOLOCK)"
|
|
|| " ON cv.GUID = o.ClientVisitGUID"
|
|
|| " AND cv.ClientGUID = o.ClientGUID"
|
|
|| " AND cv.ChartGUID = o.ChartGUID "
|
|
|| " WHERE cv.ClientGUID = " || Sql(client_guid)
|
|
|| " AND o.NAME IN ( {{{SINGLE-QUOTE}}}Prothrombin/INR{{{SINGLE-QUOTE}}} ) "
|
|
|| " AND DATEDIFF(HH, o.ARRIVALDTM, GetDate()) <= 96 " //96 " //1400"
|
|
//|| " AND DATEDIFF(DD, o.ARRIVALDTM, GetDate()) <= 14 " //1400"
|
|
|| " AND o.OrderStatusCode IN ({{{SINGLE-QUOTE}}}SPRV{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESI{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}RESC{{{SINGLE-QUOTE}}}) "};
|
|
|
|
|
|
|
|
|
|
|
|
//Len1 :=Length(lab_name_Potassium);
|
|
|
|
If (Not Exist lab_name_Potassium ) Then
|
|
lab_name := lab_name || ",Potassium Plasma/Serum";
|
|
EndIf;
|
|
|
|
//Len2 :=Length( lab_name_BUN ) ;
|
|
if (Not Exist lab_name_BUN ) Then
|
|
lab_name := lab_name || ",BUN";
|
|
EndIf;
|
|
|
|
//Len3 :=Length ( lab_name_Creatinine );
|
|
if ( Not Exist lab_name_Creatinine) Then
|
|
lab_name := lab_name || ",Creatinine" ;
|
|
EndIf;
|
|
|
|
// Len4 :=Length ( lab_name_CBC );
|
|
|
|
if not exists lab_name_CBC Then
|
|
lab_name := lab_name || ",CBC (Includes Diff)" ;
|
|
|
|
EndIf;
|
|
|
|
//Len5 :=Length ( lab_name_Prothrombin );
|
|
if ( Not Exist lab_name_Prothrombin) Then
|
|
lab_name := lab_name || ",Prothrombin/INR" ;
|
|
EndIf;
|
|
|
|
|
|
|
|
(New_lab_name) := Read { " IF OBJECT_ID({{{SINGLE-QUOTE}}}tempdb..#TempTab{{{SINGLE-QUOTE}}}) IS NOT NULL DROP TABLE #TempTab "
|
|
|| " create table #TempTab(Data varchar(50)) "
|
|
|| " declare @InStr varchar(100) = " || Sql(lab_name)
|
|
|| " SET @InStr = REPLACE(@InStr + {{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}},,{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}) "
|
|
|| " DECLARE @SP INT "
|
|
|| " DECLARE @VALUE VARCHAR(1000) "
|
|
|| " WHILE PATINDEX({{{SINGLE-QUOTE}}}%,%{{{SINGLE-QUOTE}}}, @INSTR ) <> 0 "
|
|
|| " BEGIN "
|
|
|| " SELECT @SP = PATINDEX({{{SINGLE-QUOTE}}}%,%{{{SINGLE-QUOTE}}},@INSTR) "
|
|
|| " SELECT @VALUE = LEFT(@INSTR , @SP - 1) "
|
|
|| " SELECT @INSTR = STUFF(@INSTR, 1, @SP, {{{SINGLE-QUOTE}}}{{{SINGLE-QUOTE}}}) "
|
|
|| " INSERT INTO #TempTab(Data) VALUES (@VALUE) "
|
|
|| " END "
|
|
|| " SELECT * FROM #TempTab " };
|
|
|
|
|
|
|
|
|
|
if ( exists lab_name ) then
|
|
|
|
for lab in 1 seqto ( count Labs_96Hr_Val ) do
|
|
|
|
|
|
if ( Labs_96Hr_Val[lab].Name IN New_lab_name ) then
|
|
Labs_96Hr_Val[lab].IsSelected := true;
|
|
|
|
else
|
|
Labs_96Hr_Val[lab].IsSelected := false;
|
|
endif;
|
|
enddo;
|
|
else
|
|
//No labs exist for this patient, select all labs
|
|
|
|
Labs_96Hr_Val.IsSelected := ( true, true, true, true, True );
|
|
|
|
endif;
|
|
|
|
endif; //End FormOpen Event
|
|
;;
|
|
evoke: // No evoke statement
|
|
;;
|
|
logic:
|
|
|
|
conclude true;
|
|
;;
|
|
action:
|
|
// This MLM returns two parameters, of types communication_type and form_type respectively.
|
|
return this_communication, this_form;
|
|
;;
|
|
end:
|