182 lines
7.6 KiB
Plaintext
182 lines
7.6 KiB
Plaintext
maintenance:
|
|
|
|
title: DOC_Clinical_Scales_Flowsheet;;
|
|
mlmname: DOC_Clinical_Scales_Flowsheet;;
|
|
arden: version 2.5;;
|
|
version: 1.02;; //Release 5.5 SP1/FP1 and 6.0/6.1 SU2 and higher
|
|
institution: St. Clair, Allscrtips;;
|
|
author: Shawn Head;;
|
|
specialist: Janit Nordin;;
|
|
date: 2016-04-12;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose:
|
|
|
|
This MLM will automatically populate values based on the clinical scales values for PHQ-9 and PHQ-7
|
|
;;
|
|
explanation:
|
|
|
|
Modification history:
|
|
|
|
04.12.2016 - STH CSR#: 33982 - created
|
|
07.23.2019 - TMS CSR#: 37676 - Change log_execution_info to false per upgrade analysis.
|
|
;;
|
|
keywords: Objects Plus, Education Log, Worklist, ARRA
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
mlm_name := "DOC_EDUCATION_FS_PRECHECK";
|
|
|
|
CR := 13 formatted with "%c";
|
|
LF := 10 formatted with "%c";
|
|
CRLF:= CR||LF;
|
|
|
|
//Set to true if a decision.log is needed for diagnostic purposes. Please refer to the CDS Authoring Guides for more information
|
|
log_execution_info:= false;
|
|
|
|
// Specify which .NET assemblies need to be loaded for ObjectsPlus
|
|
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
|
|
using "ObjectsPlusXA.SCM.Forms";
|
|
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
|
|
|
set_cds_vars := MLM {{{SINGLE-QUOTE}}}CALLED_DOC_FS_DEFINITION_MLM{{{SINGLE-QUOTE}}};
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
// Error destination
|
|
//---------------------------------------------------------------
|
|
//"SYSTEM ALERT",
|
|
send_alert := "DoNotSend";
|
|
error_destination := destination { Alert: warning, "ObjectsPlus Error from MLM", low, chart, "ObjectsPlus Error from MLM", 1003, send_alert, "No Override Allowed" };
|
|
|
|
// Receive arguments from the structured note
|
|
(this_DocumentCommunication) := argument;
|
|
|
|
// Get the user, chart, client and visit GUIDs
|
|
if called_by_editor then
|
|
userguid := "";
|
|
clientGuid := "9000001860200200"; //Admission, Holly
|
|
clientvisitguid := "9000003613200270";//Admission, Holly
|
|
chartguid := "9000003613100170";//Admission, Holly
|
|
else
|
|
userGuid := this_DocumentCommunication.UserGUID;
|
|
clientGuid := this_DocumentCommunication.ClientGUID;
|
|
clientvisitGuid := this_DocumentCommunication.ClientVisitGUID;
|
|
chartGuid := this_DocumentCommunication.ChartGUID;
|
|
endif;
|
|
|
|
// Create prototypes for the object types we{{{SINGLE-QUOTE}}}ll need to instantiate
|
|
ObservationType := OBJECT [ObservationGUID, ClientDocumentGUID, ParameterGUID, DataType, ValueObj];
|
|
FreeTextValueType := OBJECT [Value];
|
|
NumericValueType := OBJECT [Value];
|
|
ListValueType := OBJECT [ListGuid, ListItemsList, SuggestedTextValue];
|
|
ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected];
|
|
//Document Type
|
|
FLOWSHEET := "FlowSheet";
|
|
|
|
//Event Types
|
|
CHARTOBSERVATION := "ChartObservation";
|
|
DOCUMENTCLOSING := "DocumentClosing";
|
|
DOCUMENTOPENING := "DocumentOpening";
|
|
|
|
(this_documentCommunication, client_guid, client_visit_guid, chart_guid,
|
|
user_guid, document_type, document_name, event_type,
|
|
configuration_guid, this_currentObs, CancelEventFlag, this_fs_doc,
|
|
authored_by_guid, isIOFlowsheetFlag, client_document_guid, this_parameters,
|
|
this_columnList, this_currentColumn, this_chartedObservationsList,
|
|
this_parameters_displayName, current_parameter, current_parameter_name, current_parameter_guid,
|
|
current_parameter_datatype, selectedItems, selectedItems_Value, current_value,
|
|
diagnostic_message, displayMessageFlag) := CALL set_cds_vars WITH (this_documentCommunication);
|
|
|
|
Error_occurred := false;
|
|
//create a list of charted parameters that exist in the list of observartion names created above.
|
|
charted_parameters := (this_parameters where this_parameters.Name is in ("SCH_PHP_GAD Score","SCH_PHP_ PHQ"));
|
|
|
|
for x in (1 seqto(count(charted_parameters))) do
|
|
Education_obs := charted_parameters[x];
|
|
theCurrentColumn := first of ( this_columnList WHERE this_columnList.ClientDocumentGUID = this_currentObs.ClientDocumentGUID);
|
|
current_obs := first of ( theCurrentColumn.ChartedObservationsList WHERE theCurrentColumn.ChartedObservationsList.ParameterGUID = Education_obs.ParameterGUID);
|
|
|
|
if(charted_parameters[x].Name = "SCH_PHP_ PHQ") then
|
|
PHQScore := (current_obs.ValueObj.Value as number);
|
|
if((PHQScore >= 0) and (PHQScore <= 4)) then
|
|
Depression_Severity := "Minimal";
|
|
Recommend_action := "none";
|
|
elseif((PHQScore >= 5) and (PHQScore <= 9)) then
|
|
Depression_Severity := "Mild";
|
|
Recommend_action := "Watchful waiting, repeat at follow up";
|
|
elseif((PHQScore >= 10) and (PHQScore <= 14)) then
|
|
Depression_Severity := "Moderate";
|
|
Recommend_action := "Treatment plan, considering counseling, follow-up and/or pharmacotherapy";
|
|
elseif((PHQScore >= 15) and (PHQScore <= 19)) then
|
|
Depression_Severity := "Moderately Severe";
|
|
Recommend_action := "Active treatment with pharmacotherapy and/or psychotherapy";
|
|
elseif((PHQScore >= 20)) then
|
|
Depression_Severity := "Severe";
|
|
Recommend_action := "Immediate initiation of pharmacotherapy and, if severe impairment or poor response to therapy, expedited referral to a mental health specialist for psychotherapy and/or collaborative management ";
|
|
endif;
|
|
Depression_Param := first of (this_parameters WHERE this_parameters.Name = "SCH_PHP_PHQ Depression Severity");
|
|
this_currentObj1 := NEW ObservationType;
|
|
this_currentObj1.ClientDocumentGUID := this_fs_doc.ClientDocumentGUID;
|
|
this_currentObj1.ParameterGUID := Depression_Param.ParameterGUID;
|
|
this_currentObj1.DataType := "FreeTextValue";
|
|
this_currentObj1.ValueObj := NEW FreeTextValueType;
|
|
this_currentObj1.ValueObj.Value := Depression_Severity AS STRING;
|
|
|
|
this_fs_doc.CurrentColumn.ChartedObservationsList := (this_fs_doc.CurrentColumn.ChartedObservationsList, this_currentObj1);
|
|
|
|
Recomend_Param := first of (this_parameters WHERE this_parameters.Name = "SCH_PHP_PHQ Recommendations");
|
|
this_currentObj2 := NEW ObservationType;
|
|
this_currentObj2.ClientDocumentGUID := this_currentObs.ClientDocumentGUID;
|
|
this_currentObj2.ParameterGUID := Recomend_Param.ParameterGUID;
|
|
this_currentObj2.DataType := "FreeTextValue";
|
|
this_currentObj2.ValueObj := NEW FreeTextValueType;
|
|
this_currentObj2.ValueObj.Value := Recommend_action AS STRING;
|
|
|
|
this_fs_doc.CurrentColumn.ChartedObservationsList := (this_fs_doc.CurrentColumn.ChartedObservationsList, this_currentObj2);
|
|
|
|
elseif((charted_parameters[x].Name = "SCH_PHP_GAD Score") and ((current_obs.ValueObj.Value as number)>=0)) then
|
|
GADScore := (current_obs.ValueObj.Value as number);
|
|
|
|
if((GADScore >= 0) and (GADScore <= 4)) then
|
|
Anxiety := "Minimal";
|
|
elseif((GADScore >= 5) and (GADScore <= 9)) then
|
|
Anxiety := "Mild";
|
|
elseif((GADScore >= 10) and (GADScore <= 14)) then
|
|
Anxiety := "Moderate";
|
|
elseif((GADScore >= 15) /*and (PHQScore <= 27)*/) then
|
|
Anxiety := "Severe";
|
|
endif;
|
|
Anxiety_Param := first of (this_parameters WHERE this_parameters.Name = "SCH_PHP_GAD Anxiety Severity");
|
|
this_currentObj3 := NEW ObservationType;
|
|
this_currentObj3.ClientDocumentGUID := this_currentObs.ClientDocumentGUID;
|
|
this_currentObj3.ParameterGUID := Anxiety_Param.ParameterGUID;
|
|
this_currentObj3.DataType := Anxiety_Param.DataType;
|
|
this_currentObj3.ValueObj := NEW FreeTextValueType;
|
|
this_currentObj3.ValueObj.Value := Anxiety AS STRING;
|
|
|
|
this_fs_doc.CurrentColumn.ChartedObservationsList := (this_fs_doc.CurrentColumn.ChartedObservationsList, this_currentObj3);
|
|
|
|
endif;
|
|
enddo;
|
|
|
|
;;
|
|
priority: 50
|
|
;;
|
|
evoke:
|
|
;;
|
|
logic:
|
|
|
|
conclude true;
|
|
|
|
;;
|
|
action:
|
|
return this_DocumentCommunication; ;;
|
|
Urgency: 50;;
|
|
end:
|