146 lines
5.9 KiB
Plaintext
146 lines
5.9 KiB
Plaintext
maintenance:
|
|
|
|
title: Pediatric Acetaminophen Dosing Message;;
|
|
mlmname: FORM_Rx_Pediatric_Acetaminophen;;
|
|
arden: version 2.5;;
|
|
version: 5.50;;
|
|
institution: St Clair Hospital;;
|
|
author: Teresa Spicuzza, Allscripts ;;
|
|
specialist: Teresa Spicuzza, Allscripts;;
|
|
date: 2011-11-18;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Used for displaying correct recommended daily dosage of acetaminophen
|
|
;;
|
|
|
|
explanation: This MLM is called from PRX forms that are attached to orders containing acetaminophen.
|
|
|
|
Change history
|
|
04.03.2012 TMS Change informational message for maximum dose for pediatric patients based upon
|
|
patient weight and age. Created for CSR 26905
|
|
01.30.2013 TMS Changed call to "Form_HoldOrder_RequestedTime" MLM to be on FormOpen only. That MLM
|
|
has been updated with additional logic for Now and Then dosing that must be initiated
|
|
even if the order is not in a hold session. CSR 26926
|
|
07.23.2013 TMS Change informational message for maximum dose for non pediatric patients to 3gms for
|
|
all orders except IV acetaminophen which remains at 4gms. CSR 30976
|
|
10.09.2013 TMS Change informational message for maximum dose for pediatric patients from 90mg/kg/day to
|
|
75mg/kg/day. HD Ticket 161277
|
|
04.11.2017 TMS Changed MLM to be called from "Form_HoldOrder_RequestedTime" to keep calls on FormOpen
|
|
from one {{{SINGLE-QUOTE}}}master{{{SINGLE-QUOTE}}} MLM, being done in preparation for using hidden default dosing CSR 35364.
|
|
|
|
;;
|
|
keywords: Called MLMs, Acetaminophen, pediatric dosing
|
|
;;
|
|
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;
|
|
|
|
|
|
/*******************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;
|
|
ChartGuid := this_Communication.ChartGUID;
|
|
Order_Name := this_communication.PrimaryObj.Name;
|
|
comm_obj := this_communication.primaryobj;
|
|
called_by := this_communication.CallingEvent;
|
|
call_field := this_communication.CallingFieldName;
|
|
session_type := comm_obj.internalprocessingtype;
|
|
|
|
CR := 13 formatted with "%c";
|
|
LF := 10 formatted with "%c";
|
|
CRLF:= CR||LF;
|
|
|
|
Note_fld := last of (field_list where field_list.DataItemName = "PRX_NOTECOMMENT0");
|
|
Ped_message := "Do not exceed maximum pediatric Acetaminophen dose of 75mg/kg/24 hours from all sources.";
|
|
Std_message := "Do not exceed 3gm of Acetaminophen daily from oral/rectal sources." || CRLF ||
|
|
"As of July 2013, total daily acetaminophen dose is now 3gm/day per Med Exec.";
|
|
nomessage := " ";
|
|
|
|
// if hold session set requested time to scheduled/start time with no time specified
|
|
// if not hold session call MLM for other "start now logic"
|
|
// if called_by ="FormOpen" and session_type = "Hold" then
|
|
// if called_by ="FormOpen" then
|
|
// HoldOrder := MLM {{{SINGLE-QUOTE}}}Form_HoldOrder_RequestedTime{{{SINGLE-QUOTE}}};
|
|
// (this_communication, this_form) := call HoldOrder with this_communication, this_form, client_info_obj;
|
|
// endif;
|
|
|
|
If Order_name matches pattern "%Acetaminophen%" then
|
|
Ped_message := "Do not exceed maximum pediatric Acetaminophen dose of 75mg/kg/24 hours from all sources.";
|
|
|
|
If Order_name matches pattern "% Inj" then
|
|
Std_message := "Do not exceed 4gm of Acetaminophen daily from all sources.";
|
|
else
|
|
Std_message := "Do not exceed 3gm of Acetaminophen daily from oral/rectal sources." || CRLF ||
|
|
"As of July 2013, total daily acetaminophen dose is now 3gm/day per Med Exec.";
|
|
endif;
|
|
|
|
WeightValue, obsname := read last {"Select o.ValueText, oci.name from CV3ClientDocumentcur cd "
|
|
|| " join CV3ClientDocDetailcur cdd on (cdd.ClientDocumentGUID = cd.GUID AND cdd.ClientGUID = " || SQL(ClientGuid) || ") "
|
|
|| " join CV3ObservationDocumentcur od on cdd.CLientDocumentGUID = od.OwnerGUID and od.active = 1 "
|
|
|| " join CV3ObsCatalogMasterItem on od.ObsMasterItemGUID = CV3ObsCatalogMasterItem.GUID "
|
|
|| " join CV3Observationcur o on o.GUID = od.ObservationGUID "
|
|
|| " LEFT OUTER JOIN CV3User u ON o.UserGUID = u.GUID "
|
|
|| " join cv3obscatalogitem oci on oci.guid = o.obsitemguid and oci.name in ({{{SINGLE-QUOTE}}}Weight in kg - Peds{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Weight - kg{{{SINGLE-QUOTE}}})"
|
|
|| " where cd.clientguid = " || SQL(ClientGuid) || " and cd.chartguid = " || SQL(ChartGuid)
|
|
|| " and o.ValueText is not null "
|
|
|| " order by cd.authoreddtm asc " };
|
|
|
|
|
|
if exists (client_info_obj) then
|
|
(birthdate,dobM,dobD,dobY) := read last {ClientInfo: BirthDate, BirthMonthNum, BirthDayNum, BirthYearNum
|
|
REFERENCING client_info_obj};
|
|
endif;
|
|
|
|
patientAge := (NOW - birthdate) / (1 year);
|
|
|
|
|
|
if (patientAge < 18.00) and (((weightvalue as number) <= 43.2) or (weightvalue is null)) then
|
|
Note_fld.value := Ped_message;
|
|
else
|
|
Note_fld.value := Std_message;
|
|
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:
|