maintenance: title: FORM_SET_THORACENTESIS_LABS;; mlmname: FORM_SET_THORACENTESIS_LABS;; arden: version 2.5;; version: 5.50;; institution: St Clair Hospital;; author: Juliet M. Law, Allscripts ;; specialist: Maria Pest, Allscripts;; date: 2012-12-03;; validation: testing;; library: purpose: Lab orders entered on Thoracentesis and Paracentesis Order Sets need to display on MI and Cytology requisitions ;; explanation: This MLM is called from ... Change history 2012.12.03 JML CSR 30985: Created 2014.07.28 STH CSR 31956: Rewrote MLM to work based on Bryans MLM specs. Also created a copy of this original MLM to still be used by the Thoracentesis Specimen Handling (CCM) Order set. The copied MLM was re-named to FORM_SET_CCM_THORA_SPEC_HAND ;; keywords: Called MLMs, Thoracentesis, Paracentesis ;; 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"; generic_item_control := mlm {{{SINGLE-QUOTE}}}FORM_SET_GENERIC_ITEM_CONTROL{{{SINGLE-QUOTE}}}; // 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; CallingEvent := this_communication.CallingEvent; CallingField := this_communication.CallingFieldName; ClientGuid := this_communication.ClientGUID; FormName := this_form.Name; CR := 13 formatted with "%c"; LF := 10 formatted with "%c"; //Retrieve fields Labs_fld := last of (field_list WHERE field_list.DataItemName = "MultiOrderCheckbox" and field_list.Control_MultiFieldOccNum = 1); Labs_fld_List := Labs_fld.Value; US_Thor_fld := last of (field_list WHERE field_list.DataItemName = "MultiOrderGrid" and field_list.Control_MultiFieldOccNum = 2); US_Thor_fld_List := US_Thor_fld.Value; righ_labs_fld := last of (field_list WHERE field_list.DataItemName = "MultiOrderCheckBox" and field_list.Control_MultiFieldOccNum = 1); right_labs_list := righ_labs_fld.Value; left_labs_fld := last of (field_list WHERE field_list.DataItemName = "MultiOrderCheckBox" and field_list.Control_MultiFieldOccNum = 2); left_labs_list := left_labs_fld.Value; tbd_labs_fld := last of (field_list WHERE field_list.DataItemName = "MultiOrderCheckBox" and field_list.Control_MultiFieldOccNum = 3); tbd_labs_list := left_labs_fld.Value; fld_sideSpecific := last of (field_list WHERE field_list.DataItemName = "MI_MR_VO_OBR31P2_Thoracentesis"); fld_diagtherapy := last of (field_list WHERE field_list.DataItemName = "MI_MR_VO_OBR31P2_Thora Diag/Thera"); SideSelected := fld_sideSpecific.value; DiagSelected := fld_diagtherapy.value; Labs_Right_Left_fld := last of (field_list WHERE field_list.DataItemName = "LAB_VO_Right or Left"); //and field_list.Control_MultiFieldOccNum = 1); Labs_Right_Left2_fld := last of (field_list WHERE field_list.DataItemName = "LAB_SREQ_VO_DI_Left or Right"); //and field_list.Control_MultiFieldOccNum = 1); Labs_List_fld := last of (field_list WHERE field_list.DataItemName = "Labs on Centesis" and field_list.Control_MultiFieldOccNum = 1); Cytology_List_fld := last of (field_list WHERE field_list.DataItemName = "Cytology on Centesis" and field_list.Control_MultiFieldOccNum = 1); if (CallingEvent = "FieldChange") then if (CallingField = "MI_MR_VO_OBR31P2_Thoracentesis|1" or CallingField = "MI_MR_VO_OBR31P2_Thora Diag/Thera|1") then if ((DiagSelected <> "Therapeutic Process") and (DiagSelected <> "")) then if SideSelected = "Left" then righ_labs_fld.Value.IsSelected := false; tbd_labs_fld.Value.IsSelected := false; left_labs_fld.Value.IsSelected := true; elseif SideSelected = "Right" then righ_labs_fld.Value.IsSelected := true; left_labs_fld.Value.IsSelected := false; tbd_labs_fld.Value.IsSelected := false; elseif Sideselected = "Right and Left" then righ_labs_fld.Value.IsSelected := true; left_labs_fld.Value.IsSelected := true; tbd_labs_fld.Value.IsSelected := false; elseif Sideselected = "TBD by IR" then righ_labs_fld.Value.IsSelected := false; left_labs_fld.Value.IsSelected := false; tbd_labs_fld.Value.IsSelected := true; else righ_labs_fld.Value.IsSelected := false; left_labs_fld.Value.IsSelected := false; tbd_labs_fld.Value.IsSelected := false; endif; else righ_labs_fld.Value.IsSelected := false; left_labs_fld.Value.IsSelected := false; tbd_labs_fld.Value.IsSelected := false; endif; endif; leftlabs := ""; rightlabs := ""; tbdlabs := ""; leftcytology := ""; rightcytology := ""; tbdcytology := ""; cytology := ""; for i in 1 seqto (count right_labs_list.Name) do if (not (right_labs_list.Name[i] matches pattern "%Cytology%")) then if (righ_labs_fld.Value.IsSelected[i]) then if (rightlabs IS NULL) then rightlabs := right_labs_list.Name[i]; else rightlabs := rightlabs || ", " || right_labs_list.Name[i]; endif; endif; else if (righ_labs_fld.Value.IsSelected[i]) then if (rightcytology IS NULL) then rightcytology := right_labs_list.Name[i]; else rightcytology := rightcytology || ", " || right_labs_list.Name[i]; endif; endif; endif; enddo; for i in 1 seqto (count left_labs_list.Name) do if (not (left_labs_list.Name[i] matches pattern "%Cytology%")) then if (left_labs_fld.Value.IsSelected[i]) then if (leftlabs IS NULL) then leftlabs := left_labs_list.Name[i]; else leftlabs := leftlabs || ", " || left_labs_list.Name[i]; endif; endif; else if (left_labs_fld.Value.IsSelected[i]) then if (leftcytology IS NULL) then leftcytology := left_labs_list.Name[i]; else leftcytology := leftcytology || ", " || left_labs_list.Name[i]; endif; endif; endif; enddo; for i in 1 seqto (count tbd_labs_list.Name) do if (not (tbd_labs_list.Name[i] matches pattern "%Cytology%")) then if (tbd_labs_fld.Value.IsSelected[i]) then if (tbdlabs IS NULL) then tbdlabs := tbd_labs_list.Name[i]; else tbdlabs := tbdlabs || ", " || tbd_labs_list.Name[i]; endif; endif; else if (tbd_labs_fld.Value.IsSelected[i]) then if (tbdcytology IS NULL) then tbdcytology := tbd_labs_list.Name[i]; else tbdcytology := tbdcytology || ", " || tbd_labs_list.Name[i]; endif; endif; endif; enddo; Labs_List_fld.Value := ""; Cytology_List_fld.Value := ""; if leftlabs <> "" and leftlabs is not null then Labs_List_fld.Value := "Left Labs: " || leftlabs || CR || LF; endif; if leftcytology <> "" and leftcytology is not null then Cytology_List_fld.Value := "Left Cytology: " || leftcytology || CR || LF; endif; if rightlabs <> "" and rightlabs is not null then Labs_List_fld.Value := Labs_List_fld.Value || "Right Labs: " || rightlabs || CR || LF; endif; if rightcytology <> "" and rightcytology is not null then Cytology_List_fld.Value := Cytology_List_fld.Value || "Right Cytology: " || rightcytology || CR || LF; endif; if tbdlabs <> "" and tbdlabs is not null then Labs_List_fld.Value := Labs_List_fld.Value || "TBD Labs: " || tbdlabs || CR || LF; endif; if tbdcytology <> "" and tbdcytology is not null then Cytology_List_fld.Value := Cytology_List_fld.Value || "TBD Cytology: " || tbdcytology || CR || LF; endif; endif; ;; 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: