maintenance: title: FORM_RX_NEONATAL_MORPHINE_LABEL ;; mlmname: FORM_RX_NEONATAL_MORPHINE_LABEL;; arden: version 2.5;; version: 1.00;; institution: St.Clair Hospital ;; author: Sandy Zhang ;; specialist: Sandy Zhang ;; date: 2017-07-31;; validation: testing;; library: purpose: ;; explanation: Takes the calculated dose/volume of neonatal morphine and inserts it into the instructions field, thereby printing on pharmacy label. Typically the pharmacist needs to manipulate the label text at order verification for the calculated dose/volume to be included. Change History 07.31.2017 SZ CSR #31162 - Neonatal Morphine Dose/Volume Label ;; keywords: ;; citations: ;; 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"; // 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; // the calculated dose/volume is stored in the Note Comment note_comment := first(this_form.Fields where this_form.Fields.DataItemName = "PRX_NOTECOMMENT0"); calculated_dose_volume := note_comment.Value; instruction_field := first(this_form.Fields where this_form.Fields.DataItemName = "AdminInstructions"); instruction_value := instruction_field.value; // appends the calculated dose/volume onto end of instructions text when “ok” button is clicked // if dose is edited, then new dose is inserted into instructions field and removes old dose if (this_communication.CallingEvent = "FormClose") then // if text was entered in instructions field then use the formating below if (exist instruction_value) then colon_match := instruction_value MATCHES PATTERN "%::%"; mg_match := instruction_value MATCHES PATTERN "%mg =%"; if (colon_match = true) then // instruction_field.value := ""; string_count_before_colon := find " :: " in string instruction_value; text_before_colon := substring string_count_before_colon characters starting at 1 from (instruction_value); label_instruction := text_before_colon || ":: " || calculated_dose_volume; instruction_field.value := label_instruction; elseif (mg_match = true) and (colon_match = false) then label_instruction := calculated_dose_volume; instruction_field.value := label_instruction; else label_instruction := instruction_value || " :: " || calculated_dose_volume; instruction_field.value := label_instruction; endif; endif; // if NO text was entered in instructions field then use the formating below if (not exist instruction_value) then label_instruction := calculated_dose_volume; instruction_field.value := label_instruction; endif; endif; ;; priority: 50 ;; evoke: ;; logic: conclude true; ;; action: //return this_communication, this_form; ;; Urgency: 50;; end: