Initial Checking with all 820 MLMs
This commit is contained in:
266
MLMStripper/bin/Debug/DOC/DOC_FUNC_PAWSS.mlm
Normal file
266
MLMStripper/bin/Debug/DOC/DOC_FUNC_PAWSS.mlm
Normal file
@@ -0,0 +1,266 @@
|
||||
maintenance:
|
||||
|
||||
title: DOC_FUNC_PAWSS;;
|
||||
mlmname: DOC_FUNC_PAWSS;;
|
||||
arden: version 2.5;;
|
||||
version: 5.50;;
|
||||
institution: Allscripts;;
|
||||
author: Peggy Karish;;
|
||||
specialist: Don Warnick;;
|
||||
date: 2011-07-18;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose: Support PAWSS assessment in the Patient Profile
|
||||
;;
|
||||
explanation: Support PAWSS assessment in the Patient Profile
|
||||
|
||||
Change history
|
||||
|
||||
05.23.2016 DJW CSR#34250 PAWSS - Created
|
||||
|
||||
;;
|
||||
keywords: pawss
|
||||
;;
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
|
||||
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
||||
include standard_libs;
|
||||
using "ObjectsPlusXA.SCM.Forms";
|
||||
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
||||
|
||||
msg := "";
|
||||
|
||||
(thisDocumentCommunication) := argument;
|
||||
|
||||
// Extract interesting parts of the object model
|
||||
(thisStructuredNoteDoc) := thisDocumentCommunication.DocumentConfigurationObj;
|
||||
(thisParameters) := thisStructuredNoteDoc.ParametersList;
|
||||
(thisObservations) := thisStructuredNoteDoc.ChartedObservationsList;
|
||||
|
||||
// Create prototypes for the object types we{{{SINGLE-QUOTE}}}ll need to instantiate
|
||||
ObservationType := OBJECT [ObservationGUID, ClientDocumentGUID, ParameterGUID, DataType, ValueObj];
|
||||
FreeTextValueType := OBJECT [Value];
|
||||
DateValueType := OBJECT [Value];
|
||||
ListValueType := OBJECT [ListGuid,ListItemsList, SuggestedTextValue];
|
||||
ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected];
|
||||
|
||||
// Get the client and visit GUIDs
|
||||
clientGuid := thisDocumentCommunication.ClientGUID;
|
||||
visitGuid := thisDocumentCommunication.ClientVisitGUID;
|
||||
chartGuid := thisDocumentCommunication.ChartGUID;
|
||||
userGuid := thisDocumentCommunication.UserGUID;
|
||||
|
||||
|
||||
TaskRoleType := read { " select cp.TaskRoleType from CV3USER u with (nolock) "
|
||||
|| " join CV3CareProvider cp with (nolock) on cp.GUID = u.guid "
|
||||
|| " where u.guid = " || sql(userGuid) || " and cp.TaskRoleType like {{{SINGLE-QUOTE}}}%infusion%{{{SINGLE-QUOTE}}} "
|
||||
};
|
||||
|
||||
|
||||
If not exists TaskRoleType
|
||||
|
||||
|
||||
then
|
||||
|
||||
|
||||
|
||||
// DOCUMENT OPENING SECTION
|
||||
|
||||
|
||||
IF thisdocumentCommunication.EventType = "DocumentOpening" then
|
||||
|
||||
// Retrieve Alcohol Level Plasma Serum
|
||||
|
||||
(Result) := read last
|
||||
{
|
||||
" select ov.value "
|
||||
|| " from CV3BasicObservationView ov with (nolock) "
|
||||
|| " where ov.ResultItemCodingStandard = {{{SINGLE-QUOTE}}}lab{{{SINGLE-QUOTE}}} and ov.ItemName = {{{SINGLE-QUOTE}}}ETOH Level{{{SINGLE-QUOTE}}} "
|
||||
|| " and ov.clientguid = " || SQL (clientGuid) || " and ov.chartguid = " || SQL (chartGuid) || " and ov.clientvisitguid = " || SQL (visitGuid) || " "
|
||||
|| " order by ov.value "
|
||||
};
|
||||
|
||||
|
||||
If Result is not null or Result <> "NONDETECTED"
|
||||
|
||||
then
|
||||
|
||||
// Populate the Result value in the Blood Alcohol box
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "PRO Blood alcohol level");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "FreeTextValue";
|
||||
this_currentObj.ValueObj := New FreeTextValueType;
|
||||
this_currentObj.ValueObj.Value := Result;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
// Select the "Alcohol in 30 days question"
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "PRO consumed any alcohol in last 30 days");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if selectedItem.Value = "yes..." then selectedItem.IsSelected := true; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
endif; // Positive ETOH Level found
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// DOCUMENT CLOSING SECTION
|
||||
|
||||
|
||||
IF thisdocumentCommunication.EventType = "DocumentClosing"
|
||||
|
||||
then
|
||||
|
||||
|
||||
// Check for PAWSS Score
|
||||
|
||||
theParameter := first of (thisParameters where thisParameters.Name = "PRO PAWSS Total Score 1");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
PAWWSScore := theObservation.ValueObj.Value;
|
||||
|
||||
|
||||
if (PAWWSScore as number) > 3
|
||||
|
||||
then
|
||||
|
||||
|
||||
// Check for existing CIWA Assessment Order on the account
|
||||
|
||||
(orderpresent) := read last
|
||||
{
|
||||
" select o.name "
|
||||
|| " from cv3ordercatalogmasteritem as ocmi with (nolock) "
|
||||
|| " join cv3order as o with (nolock)on o.ordercatalogmasteritemguid = ocmi.guid "
|
||||
|| " and o.ClientGUID = " || ClientGuid || " and o.ChartGUID = " || chartGuid || " and o.ClientVisitGUID= " || VisitGuid || " "
|
||||
|| " and o.name = {{{SINGLE-QUOTE}}}Contact Attending Physician to Implement AWD Protocol orders{{{SINGLE-QUOTE}}} "
|
||||
|| " and o.OrderStatusLevelNum >= 15 and o.OrderStatusLevelNum not in (69, 70) "
|
||||
};
|
||||
|
||||
|
||||
if orderpresent is null
|
||||
|
||||
then
|
||||
|
||||
// Enter CIAW Assessment Order
|
||||
|
||||
try
|
||||
|
||||
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n PAWSS Risk score is 4 or greater. Contact the attending physician to implement the Alcohol Withdrawal Protocol Order ", "Informational","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
||||
|
||||
|
||||
|
||||
locationGuid := read last {"SELECT CurrentLocationGUID, touchedWhen"
|
||||
|| " FROM CV3ClientVisit with (nolock)"
|
||||
|| " WHERE GUID = " || Sql(visitGuid)
|
||||
|| " AND ClientGUID = " || Sql(clientGuid)
|
||||
, primaryTime = touchedWhen};
|
||||
|
||||
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((visitGuid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
||||
care_provider_obj:= call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((userGuid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
||||
location_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((locationGuid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
||||
order_catalog_obj:= call {{{SINGLE-QUOTE}}}OrderCatalogMasterItem{{{SINGLE-QUOTE}}}.FindByName with ("Contact Attending Physician to Implement AWD Protocol orders");
|
||||
endtry;
|
||||
|
||||
catch Exception ex
|
||||
error_occurred := true;
|
||||
error_message := "{{+R}}CommonData: {{-R}}\n" || ex.Message || "\n\n";
|
||||
|
||||
if order_catalog_obj is NOT Null then void := call order_catalog_obj.Dispose; order_catalog_obj := null; endif;
|
||||
if location_obj IS NOT Null then void := call location_obj.Dispose; location_obj := null; endif;
|
||||
if care_provider_obj IS NOT Null then void := call care_provider_obj.Dispose; care_provider_obj := null; endif;
|
||||
if client_visit_obj IS NOT Null then void := call client_visit_obj.Dispose; client_visit_obj := null; endif;
|
||||
endcatch;
|
||||
|
||||
try
|
||||
Order_Creation_Reason := "Created per protocol";
|
||||
RequestingSource := "Protocol Order";
|
||||
SessionType := "Standard";
|
||||
SessionReason := "";
|
||||
|
||||
Order_Obj := call {{{SINGLE-QUOTE}}}GeneralOrder{{{SINGLE-QUOTE}}}.CreateGeneralOrder
|
||||
with client_visit_obj,
|
||||
order_catalog_obj,
|
||||
Order_Creation_Reason,
|
||||
care_provider_obj,
|
||||
RequestingSource,
|
||||
SessionType,
|
||||
SessionReason,
|
||||
location_obj,
|
||||
"Always" as {{{SINGLE-QUOTE}}}AvailabilityOverride{{{SINGLE-QUOTE}}};
|
||||
|
||||
order_obj.SpecialInstructions := "Contact the attending physician to implement the alcohol withdrawal protocol orders.";
|
||||
|
||||
void := call Order_Obj.Save;
|
||||
|
||||
endtry;
|
||||
|
||||
catch Exception ex
|
||||
error_occurred := true;
|
||||
error_message := "{{+R}}New Other Order: {{-R}}\n" || ex.Message || "\n\n";
|
||||
if Order_Obj IS NOT Null then void := call Order_Obj.Dispose; Order_Obj := null; endif;
|
||||
endcatch;
|
||||
|
||||
if order_catalog_obj IS NOT Null then void := call order_catalog_obj.Dispose; order_catalog_obj := null; endif;
|
||||
if location_obj IS NOT Null then void := call location_obj.Dispose; location_obj := null; endif;
|
||||
if care_provider_obj IS NOT Null then void := call care_provider_obj.Dispose; care_provider_obj := null; endif;
|
||||
if client_visit_obj IS NOT Null then void := call client_visit_obj.Dispose; client_visit_obj := null; endif;
|
||||
|
||||
|
||||
endif; // Order already on file
|
||||
|
||||
|
||||
endif; // PAWWS Score > 4
|
||||
|
||||
|
||||
endif; // Document Closing
|
||||
|
||||
|
||||
endif; // Not an infusion nurse
|
||||
|
||||
|
||||
|
||||
|
||||
;;
|
||||
priority: 50
|
||||
;;
|
||||
evoke:
|
||||
;;
|
||||
logic:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
conclude true;
|
||||
|
||||
|
||||
;;
|
||||
action:
|
||||
return thisdocumentCommunication;
|
||||
;;
|
||||
Urgency: 50;;
|
||||
end:
|
||||
Reference in New Issue
Block a user