maintenance: title: Doc_Func_Launch_Add_CareProviders;; filename: Doc_Func_Launch_Add_CareProviders;; arden: version 2;; version: 1.00;; institution: Eclipsys Corp;; author: Eclipsys Corp;; specialist: Shawn Head;; date: 2015-11-16;; validation: testing;; library: purpose: This mlm launches the AddCareProviders Objects+ custom application from a document ;; explanation: The Add Care Providers was designed for use by the Physician Progress Note, but could be useful in other areas of SCM Change history 10.14.2015 STH CSR#: 33715 - Add care providers {Go-Live 12/10/2015} ;; keywords: ;; knowledge: type: data-driven;; data: (this_documentCommunication) := argument; /*******************Make Changes To Spelling And Flags In This Section*******************/ /* Set to true if a decision.log is needed.*/ log_execution_info := FALSE; standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}}; str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}}; //used to parse string data into a list include standard_libs; using "ObjectsPlusXA.SCM.Forms"; using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms"; using "AddCareProviders"; using namespace "AddProviders"; // Extract interesting parts of the object model (thisStructuredNoteDoc) := this_documentCommunication.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]; // Reset the launch button theParameterx := first of (thisparameters where thisparameters.Name = "SCH_Launch CP Window"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameterx.ParameterGUID); rtbCommentsParam := first of (thisparameters where thisparameters.Name = "SCH_MDPN_CareProviders"); rtbCommentsObs := first of (thisobservations where thisobservations.ParameterGUID = rtbCommentsParam.ParameterGUID); //first of (thisparameters where thisparameters.Name = "SCH_MDPN_Other Results"); //rtbCommentsObs := first of (thisobservations where thisobservations.ParameterGUID = rtbCommentsParam.ParameterGUID); if this_documentCommunication.CurrentObservationObj.parameterguid = theParameterx.ParameterGUID then this_parametername := first of (thisParameters where thisParameters.Name = "SCH_Launch CP Window"); 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; docname := this_documentCommunication.DocumentName as string; LaunchCP := new net_object {{{SINGLE-QUOTE}}}AddCareProviders.Form1{{{SINGLE-QUOTE}}}; ;; evoke: // No evoke statement ;; logic: tstCPLaunch := CALL LaunchCP.ShowDialog; lstresults := (); lstitems := (); lstFromObj := (); //lstFromObj := LaunchCP.lstProviders4Note; txtfromobj := LaunchCP.providers4note as string; lstresults := call str_parse with (txtfromobj,"|"); ctlistitems := count(lstresults); a := lstresults[0]; b := lstresults[1]; c := lstresults[2]; d := lstresults[3]; finalresults := ""; resultcategory := ""; currentcategory := ""; ccproviders := ""; nonccproviders := ""; sendtonote := ""; for x in (1 seqto count(lstresults)) do if((trim(lstresults[x]) is not null) and (trim(lstresults[x]) <> "")) then lstitems := call str_parse with (lstresults[x],"^"); if((trim(lstitems[2]) is not null) and (trim(lstitems[2]) <> "")) then if((lstitems[1] = "electronic") and (lstitems[4] = "true")) then sendtonote := " (ELECTRONICALLY SENT TO PHYSICIAN PRACTICE)"; elseif((lstitems[1] = "fax") and (lstitems[4] = "true")) then sendtonote := " (FAXED DOCUMENT TO " || lstitems[3] || ")"; else sendtonote := ""; endif; if(lstitems[4] = "true") then ccproviders := ccproviders || "\b \li720" || "CC: " || lstitems[2] || "\b0 \i " || sendtonote || "\i0 \n"; else nonccproviders := nonccproviders || "\b \li720" || lstitems[2] || "\b0 \i " || sendtonote || " \i0 \n"; endif; endif; endif; enddo; messagefornote := ""; //messagefornote := "\b \ul \li0" || "ADDITIONAL CARE PROVIDERS" || "\b0 \ul0 \n"; if(ccproviders <> "") then messagefornote := messagefornote || "\n \b \ul \li360 THE FOLLOWING CARE PROVIDERS RECEIVED A COPY OF THIS NOTE \b0 \ul0 \n\n" || ccproviders; endif; if(nonccproviders <> "") then messagefornote := messagefornote || "\n \b \ul \li360 THE FOLLOWING CARE PROVIDERS DID NOT RECEIVE A COPY OF THIS NOTE \b0 \ul0 \n\n" || nonccproviders; endif; rtbCommentObj := NEW ObservationType; rtbCommentObj.ClientdocumentGUID := thisStructuredNoteDoc.ClientDocumentGUID; rtbCommentObj.ParameterGUID := rtbCommentsParam.ParameterGUID; rtbCommentObj.DataType := "FreeTextValue"; rtbCommentObj.ValueObj := NEW FreeTextValueType; rtbCommentObj.ValueObj.Value := messagefornote; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, rtbCommentObj); conclude true; // always concludes TRUE ;; action: return this_documentCommunication; ;; end: