Initial Checking with all 820 MLMs
This commit is contained in:
434
MLMStripper/bin/Debug/DOC/DOC_LAUNCH_PDMP_SEARCH.mlm
Normal file
434
MLMStripper/bin/Debug/DOC/DOC_LAUNCH_PDMP_SEARCH.mlm
Normal file
@@ -0,0 +1,434 @@
|
||||
maintenance:
|
||||
|
||||
title: Doc_Launch_PDMP_Search;;
|
||||
filename: Doc_Launch_PDMP_Search;;
|
||||
arden: version 2;;
|
||||
version: 1.00;;
|
||||
institution: St. Clair Hospital;;
|
||||
author: Peggy Karish;;
|
||||
specialist: Don Warnick;;
|
||||
date: 2015-03-04;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose: This mlm launches the PDMP Search Objects+ custom application from a document
|
||||
;;
|
||||
explanation: The PDMP Search Objects+ custom application was designed to make searching the Pennsylvania Department of Health Drug Monitoring Program website easier. This MLM will also document
|
||||
in the Structured Note that the doctor has searched the site.
|
||||
|
||||
Change history
|
||||
|
||||
04.27.2017 DW CSR# 35436 - PDMP Improvements - Created
|
||||
09.28.2018 DW CSR# 36715 Created - PDMP in order session
|
||||
|
||||
|
||||
|
||||
;;
|
||||
keywords:
|
||||
;;
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
|
||||
(this_documentCommunication) := argument;
|
||||
|
||||
log_execution_info := FALSE;
|
||||
str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}};
|
||||
|
||||
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
||||
include standard_libs;
|
||||
using "ObjectsPlusXA.SCM.Forms";
|
||||
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
||||
|
||||
problemlist := " ";
|
||||
launchtheapp:= "yes";
|
||||
|
||||
(thisStructuredNoteDoc) := this_documentCommunication.DocumentConfigurationObj;
|
||||
(thisParameters) := thisStructuredNoteDoc.ParametersList;
|
||||
(thisObservations) := thisStructuredNoteDoc.ChartedObservationsList;
|
||||
|
||||
ObservationType := OBJECT [ObservationGUID, ClientDocumentGUID, ParameterGUID, DataType, ValueObj];
|
||||
FreeTextValueType := OBJECT [Value];
|
||||
DateValueType := OBJECT [Value];
|
||||
ListValueType := OBJECT [ListGuid,ListItemsList, SuggestedTextValue];
|
||||
ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected];
|
||||
|
||||
launchtheapp:= "no";
|
||||
|
||||
|
||||
client_visit_guid := this_documentCommunication.clientvisitguid;
|
||||
client_guid := this_documentCommunication.clientguid;
|
||||
chart_guid := this_documentCommunication.chartguid;
|
||||
user_guid := this_documentCommunication.UserGUID;
|
||||
|
||||
user_name := read last {"SELECT
|
||||
case when middlename is not null then firstname + {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}} + middlename + {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}} + lastname
|
||||
else firstname + {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}} + lastname
|
||||
end
|
||||
FROM CV3User with (nolock)
|
||||
WHERE GUID = " || Sql(user_guid)}
|
||||
;
|
||||
|
||||
|
||||
SignificantEvent_dest:= destination { ObjectsPlus } with [ alert_type := "Warning", short_message := "Object created by MLM", priority := "low", scope := "General",rule_group := "Significant Event Object",
|
||||
rule_number := 2010 ];
|
||||
|
||||
error_destination := destination { Alert } with [ alert_type := "Warning", short_message := "ObjectsPlus Error from MLM", priority := "low", scope := "chart", Rule_group := "ObjectsPlus Error from MLM",
|
||||
Rule_number := 1001, Rule_subgroup := "", Send_with_order := "", Alert_dialog_settings := "", Display_alert := true ];
|
||||
|
||||
|
||||
selectedobservationname:= first of (thisparameters.Name where thisparameters.ParameterGUID = this_documentCommunication.CurrentObservationObj.parameterguid);
|
||||
|
||||
|
||||
|
||||
// Document Open
|
||||
|
||||
|
||||
IF this_documentCommunication.EventType = "DocumentOpening"
|
||||
then
|
||||
|
||||
|
||||
// Gather, format, and write the PDMP Search significant events for this visit to a text field
|
||||
|
||||
|
||||
pastsearches := read {" select text from CV3ClientEventDeclaration with (nolock) "
|
||||
|| " where Description = {{{SINGLE-QUOTE}}}Checked{{{SINGLE-QUOTE}}} and clientvisitguid = " || client_visit_guid || " and chartguid = " || chart_guid || " and clientguid = " || client_guid ||
|
||||
" and status = {{{SINGLE-QUOTE}}}active{{{SINGLE-QUOTE}}} order by createdwhen desc " };
|
||||
|
||||
pastsearches_count := count(pastsearches) As Number;
|
||||
|
||||
pastsearch_information:="";
|
||||
if pastsearches_count > 0 then
|
||||
for k in (1 seqto (pastsearches_count )) do
|
||||
if pastsearches[k] is not null then
|
||||
pastsearch_information := pastsearch_information || pastsearches[k] || "\n" ;
|
||||
if k <> pastsearches_count then // not the last in the list
|
||||
pastsearch_information := pastsearch_information;
|
||||
endif;
|
||||
endif;
|
||||
enddo;
|
||||
endif;
|
||||
|
||||
|
||||
writefield := first of (thisParameters where thisParameters.Name = "SCH_MDPN_Drug MonitorSig Event FT");
|
||||
newObservation := NEW ObservationType;
|
||||
newObservation.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
newObservation.ParameterGUID := writefield.ParameterGUID;
|
||||
newObservation.DataType := "FreeTextValue";
|
||||
newObservation.ValueObj := NEW FreeTextValueType;
|
||||
newObservation.ValueObj.Value := pastsearch_information;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisStructuredNoteDoc.ChartedObservationsList, newObservation);
|
||||
|
||||
|
||||
endif; // Document Open
|
||||
|
||||
|
||||
|
||||
// Chart Observation
|
||||
|
||||
/*
|
||||
|
||||
// A Comment was selected from the list
|
||||
|
||||
|
||||
|
||||
IF this_documentCommunication.EventType = "ChartObservation" and selectedobservationname = "SCH_MDPN_No Flag List"
|
||||
|
||||
then
|
||||
|
||||
launchtheapp:= "no";
|
||||
|
||||
|
||||
// Concatenate the search date stamp and comments to a text field which will be made into a significant event
|
||||
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCH_MDPN_Drug Monitor Checked FT");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
search_datestamp := theObservation.ValueObj.Value;
|
||||
|
||||
if search_datestamp is null
|
||||
then
|
||||
search_datestamp := "Comment entered without search by " || user_name || " " || extract month now || "/" || extract day now || "/" || extract year now || " ";
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
datestamp_and_comments:= search_datestamp;
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCH_MDPN_No Flag List");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
|
||||
listItems := ();
|
||||
FOR item IN theParameter.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = selectedItem.Value)
|
||||
|
||||
then datestamp_and_comments := datestamp_and_comments || " " || selectedItem.Value;
|
||||
endif;
|
||||
|
||||
listItems := (listItems, selectedItem);
|
||||
|
||||
ENDDO;
|
||||
|
||||
writefield := first of (thisParameters where thisParameters.Name = "SCH_MDPN_Drug Monitoring Comment FT");
|
||||
newObservation := NEW ObservationType;
|
||||
newObservation.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
newObservation.ParameterGUID := writefield.ParameterGUID;
|
||||
newObservation.DataType := "FreeTextValue";
|
||||
newObservation.ValueObj := NEW FreeTextValueType;
|
||||
newObservation.ValueObj.Value := datestamp_and_comments;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisStructuredNoteDoc.ChartedObservationsList, newObservation);
|
||||
*/
|
||||
|
||||
// ElseIf this_documentCommunication.EventType = "ChartObservation" and selectedobservationname = "SCH_MDPN_Launch PA Drug App"
|
||||
|
||||
|
||||
|
||||
// The Launch button was selected
|
||||
|
||||
|
||||
If this_documentCommunication.EventType = "ChartObservation" and selectedobservationname = "SCH_MDPN_Launch PA Drug App"
|
||||
|
||||
|
||||
then
|
||||
|
||||
launchtheapp:= "yes";
|
||||
|
||||
|
||||
// Launch the PDMP Search
|
||||
|
||||
using "LaunchPDMP";
|
||||
test:= new net_object {{{SINGLE-QUOTE}}}LaunchPDMP.LaunchPDMPForm{{{SINGLE-QUOTE}}};
|
||||
|
||||
|
||||
|
||||
// Reset the launch button
|
||||
|
||||
|
||||
theParameterx := first of (thisparameters where thisparameters.Name = "SCH_MDPN_Launch PA Drug App");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameterx.ParameterGUID);
|
||||
|
||||
if this_documentCommunication.CurrentObservationObj.parameterguid = theParameterx.ParameterGUID then
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCH_MDPN_Launch PA Drug App");
|
||||
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;
|
||||
selectedItem.IsSelected := false;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
|
||||
// Some other button was selected (shouldn{{{SINGLE-QUOTE}}}t happen)
|
||||
|
||||
|
||||
else
|
||||
|
||||
launchtheapp:= "no";
|
||||
|
||||
|
||||
endif; // ChartObservation
|
||||
|
||||
|
||||
;;
|
||||
|
||||
evoke: // No evoke statement
|
||||
;;
|
||||
|
||||
logic:
|
||||
|
||||
|
||||
|
||||
// Gather Data from the text field that contains search date stamp and comments
|
||||
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCH_MDPN_Drug Monitoring Comment FT");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
pdmp_search_information := theObservation.ValueObj.Value;
|
||||
|
||||
|
||||
|
||||
// Document Closing with search information
|
||||
|
||||
|
||||
If this_documentCommunication.EventType = "DocumentClosing" and launchtheapp = "no" and pdmp_search_information is not null
|
||||
|
||||
then
|
||||
|
||||
|
||||
try
|
||||
|
||||
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((client_visit_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
|
||||
|
||||
endtry;
|
||||
|
||||
catch Exception ex
|
||||
|
||||
error_occurred := true;
|
||||
error_message := "{{+R}}Retrieve client:{{-R}}\n" || ex.Message || "\n\n";
|
||||
if ex.InnerException is not null net_object then
|
||||
error_message := error_message || "Inner Exception: " || ex.InnerException.Message || "\n\n";
|
||||
endif;
|
||||
|
||||
endcatch;
|
||||
|
||||
TimeOfEntry := now ;
|
||||
|
||||
yr := extract year TimeOfEntry;
|
||||
mn := extract month TimeOfEntry;
|
||||
dd := extract day TimeOfEntry;
|
||||
|
||||
PartialDate_obj := new net_object {{{SINGLE-QUOTE}}}PartialDate{{{SINGLE-QUOTE}}} with (
|
||||
yr as {{{SINGLE-QUOTE}}}Int32{{{SINGLE-QUOTE}}}, // Year
|
||||
mn as {{{SINGLE-QUOTE}}}Int32{{{SINGLE-QUOTE}}}, // Month
|
||||
dd as {{{SINGLE-QUOTE}}}Int32{{{SINGLE-QUOTE}}} ); // Day
|
||||
|
||||
BBEventTypeCode := "PDMP";
|
||||
BBEventText := pdmp_search_information;
|
||||
LeukRedEventText := "Checked";
|
||||
|
||||
|
||||
// Create Significant Event
|
||||
|
||||
try
|
||||
|
||||
SignificantEvent_obj := call {{{SINGLE-QUOTE}}}SignificantEvent{{{SINGLE-QUOTE}}}.CreateSignificantEvent
|
||||
with
|
||||
(client_visit_obj, //ClientVisit
|
||||
BBEventTypeCode, //TypeCode
|
||||
LeukRedEventText); //Event
|
||||
|
||||
SignificantEvent_obj.Text := BBEventText;
|
||||
SignificantEvent_obj.OnsetDate := PartialDate_obj;
|
||||
SignificantEvent_dest.ObjectsPlus := SignificantEvent_obj;
|
||||
|
||||
void := call SignificantEvent_obj.save;
|
||||
|
||||
endtry;
|
||||
|
||||
catch exception ex
|
||||
|
||||
error_occurred := true;
|
||||
error_message := error_message || "{{+R}}New Significant Event{{-R}}\n" || ex.Message || "\n\n";
|
||||
if ex.InnerException is not null net_object then
|
||||
error_message := error_message || "Inner Exception: " || ex.InnerException.Message || "\n\n";
|
||||
endif;
|
||||
|
||||
if ( SignificantEvent_obj is NOT NULL ) then
|
||||
void:= call SignificantEvent_obj.Dispose;
|
||||
SignificantEvent_obj:= null;
|
||||
endif;
|
||||
|
||||
SignificantEvent_dest := null;
|
||||
endcatch;
|
||||
|
||||
|
||||
if ( client_visit_obj is NOT NULL ) then
|
||||
void:= call client_visit_obj.Dispose;
|
||||
client_visit_obj:= null;
|
||||
endif;
|
||||
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
// Launch the application
|
||||
|
||||
|
||||
if launchtheapp = "yes"
|
||||
|
||||
then
|
||||
|
||||
oeUnsigned:=CALL test.ShowDialog;
|
||||
|
||||
return_string:= test.text;
|
||||
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
// Application has closed after a search
|
||||
|
||||
|
||||
// if return_string = "search completed"
|
||||
if return_string matches pattern "search completed%"
|
||||
|
||||
then
|
||||
|
||||
SearchAssessment := substring 80 characters starting at 17 from return_string ;
|
||||
// SearchInformation:= "PDMP Searched by " || user_name || " " || Now;
|
||||
SearchInformation:= "PDMP Searched by " || user_name || " " || extract month now || "/" || extract day now || "/" || extract year now || " " || extract hour now || ":" || extract minute now || SearchAssessment;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Populate Information Boxes With The Scearh Stamp
|
||||
|
||||
|
||||
// Search Stamp Box
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCH_MDPN_Drug Monitor Checked FT");
|
||||
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 := SearchInformation;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
|
||||
// Comment Box (search stamp plus physician comments)
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCH_MDPN_Drug Monitoring Comment FT");
|
||||
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 := SearchInformation;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
conclude true; // always concludes TRUE
|
||||
|
||||
|
||||
;;
|
||||
action:
|
||||
|
||||
if Error_occurred
|
||||
then
|
||||
write "An error has occured in the MLM {{+B}}Doc_Launch_PDMP_Search {{-B}} " ||
|
||||
"Please notify your System Administrators that an error message has occurred for this patient. They will review the following error message: \n" at error_destination;
|
||||
write error_message at error_destination;
|
||||
endif;
|
||||
|
||||
|
||||
if EXISTS SignificantEvent_dest then
|
||||
write true at SignificantEvent_dest;
|
||||
endif;
|
||||
|
||||
return this_documentCommunication;
|
||||
|
||||
;;
|
||||
end:
|
||||
Reference in New Issue
Block a user