306 lines
8.5 KiB
Plaintext
306 lines
8.5 KiB
Plaintext
maintenance:
|
|
|
|
title: Regression test include definitions;;
|
|
mlmname: STD_FUNC_DOSAGE_INCLUDES;;
|
|
arden: version 2.5;;
|
|
version: 18.4;;
|
|
institution: Allscripts, Standard MLM;;
|
|
author: Allscripts Healthcare Solutions, Inc.;;
|
|
specialist: ;;
|
|
date: 2018-10-26;;
|
|
validation: testing;;
|
|
|
|
/* P r o p r i e t a r y N o t i c e */
|
|
/* Unpublished (c) 2013 - 2018 Allscripts Healthcare, LLC. and/or its affiliates. All Rights Reserved.
|
|
|
|
P r o p r i e t a r y N o t i c e: This software has been provided pursuant to a License Agreement, with
|
|
Allscripts Healthcare, LLC. and/or its affiliates, containing restrictions on its use. This software contains
|
|
valuable trade secrets and proprietary information of Allscripts Healthcare, LLC. and/or its affiliates and is
|
|
protected by trade secret and copyright law. This software may not be copied or distributed in any form or medium,
|
|
disclosed to any third parties, or used in any manner not provided for in said License Agreement except with prior
|
|
written authorization from Allscripts Healthcare, LLC. and/or its affiliates. Notice to U.S. Government Users:
|
|
This software is {{{SINGLE-QUOTE}}}Commercial Computer Software{{{SINGLE-QUOTE}}}.
|
|
|
|
All product names are the trademarks or registered trademarks of Allscripts Healthcare, LLC. and/or its affiliates.
|
|
*/
|
|
/* P r o p r i e t a r y N o t i c e */
|
|
|
|
library:
|
|
purpose: The purpose of this MLM is to include the common data structures needed by dosage range MLMs
|
|
;;
|
|
explanation: Include this MLM at the start of any MLM that will
|
|
be making using the objects in the MLM
|
|
;;
|
|
keywords: single dose; average daily dose; total daily dose; dosage range
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
// Core UOM Constant Object
|
|
Core_UOM_OBJECT := OBJECT [
|
|
lb_string,
|
|
gm_string,
|
|
kg_string,
|
|
M2_string,
|
|
ounce_string,
|
|
day_string,
|
|
hour_string,
|
|
minute_string,
|
|
month_string,
|
|
second_string,
|
|
week_string,
|
|
year_string
|
|
];
|
|
|
|
// Item catalog criteria type string object
|
|
Catalog_DRC_Criteria_Type_String_Object := OBJECT [
|
|
age_average_daily_dose_string,
|
|
age_string,
|
|
age_total_daily_dose_string,
|
|
BSA_average_daily_dose_string,
|
|
Body_Surface_Area_string,
|
|
BSA_total_daily_dose_string,
|
|
weight_average_daily_dose_string,
|
|
weight_string,
|
|
weight_total_daily_dose_string
|
|
];
|
|
|
|
//Declare the Med_Data_Object
|
|
//Note: Med_Data_GUID is the
|
|
//CV3Order.GUID, CV3OrderComponent.GUID or CV3OrderVariableComponent.GUID
|
|
//Depending on whether this is a Regular Order, IV-Additive Order, or Complex Order
|
|
Med_Data_Object := OBJECT [
|
|
sort_number,
|
|
med_order_type,
|
|
med_data_guid,
|
|
grouper_id,
|
|
multum_dnum,
|
|
multum_mmdc,
|
|
order_med_significant_date, // CalculatedStartDtm when component
|
|
order_med_name,
|
|
order_med_route,
|
|
order_med_route_id, // multum drug key for the order_med_route
|
|
order_med_dose_low,
|
|
order_med_dose_high,
|
|
order_med_units,
|
|
order_med_uom_id, // multum drug key for the order_med_units
|
|
order_med_frequency,
|
|
multum_freq_id, // multum drug key for frequency
|
|
order_interval,
|
|
calc_dose_method,
|
|
calc_med_dose_low,
|
|
calc_med_dose_high,
|
|
calc_med_per_uom,
|
|
updated_calc_med_per_uom, //Populated by DoseBasis MLM
|
|
wt_kg, //Populated by DoseBasis MLM
|
|
calc_text, //Populated by DoseBasis MLM
|
|
dose_basis, //Populated by DoseBasis MLM
|
|
stop_dtm,
|
|
calcStop_dtm, //Debug info
|
|
calcStart_dtm, //Debug info
|
|
calculation_method, //Debug info
|
|
stop_after_value,
|
|
stop_after_option_type,
|
|
freq_from_time,
|
|
freq_to_time,
|
|
freq_uom,
|
|
freq_multiplier, // only used by Prescription
|
|
isShiftFrequency,
|
|
admin_dtm_list,
|
|
admin_dtm_list_calc_method, // ORDER or MLM - Debug Info
|
|
order_catalog_item_obj,
|
|
retrieved_dose_range_data,
|
|
missing_route,
|
|
unmapped_route,
|
|
generic_route,
|
|
missing_uom,
|
|
unmapped_uom,
|
|
uom_conversion_issue,
|
|
unmapped_drug,
|
|
unmapped_grouper,
|
|
processed_missing_data_msg,
|
|
processed_for_printing,
|
|
outside_single_dosage_range,
|
|
contraindication_found,
|
|
alert_msg_for_single,
|
|
is_order,
|
|
is_outpatient_order, //indicate whether this order is outpatient order or not
|
|
is_script, //used for outpatient order
|
|
is_iv_additive,
|
|
rx_instructions
|
|
];
|
|
|
|
// Declare dosage range object
|
|
Dosage_Range_Object := OBJECT [
|
|
sort_number,
|
|
match_found, // true if matching dose range found. false if missing age/weight/gender/route
|
|
dosage_type, // single, average, total, or contraindication
|
|
med_name,
|
|
age_criteria,
|
|
BSA_criteria,
|
|
weight_criteria,
|
|
gender_criteria,
|
|
renal_criteria,
|
|
creatinine_criteria,
|
|
liver_criteria,
|
|
contraindication_msg, // for dosage_type = contraindication
|
|
recommendation_msg, // for dosage type = single/average/total
|
|
is_range,
|
|
lower_dose, // for dosage_type = single/average/total
|
|
upper_dose, // for dosage_type = single/average/total
|
|
unit_of_measure,
|
|
conversion_factor,
|
|
uom_conversion_factor, // Keep the pure UOM conversion factor based on the SXAUnitOfMeasureConversion table
|
|
// This is used only used for Catalog DRC checking in STD_FUNC_DOSAGE_CAT, because
|
|
// STD_FUNC_DOSAGE_CAT has logic to override conversion_factor value for "per weight" scenario.
|
|
// uom_conversion_factor is currently not used in STD_FUNC_DOSAGE_MULTUM.
|
|
uom_conversion_issue,
|
|
Is_PER_WT,
|
|
Is_PER_M2,
|
|
dose_calc_method,
|
|
corrected_uom,
|
|
calc_per_core_uom,
|
|
is_multum,
|
|
grouper_id,
|
|
case_id,
|
|
route,
|
|
route_id,
|
|
// Populated in STD_FUNC_DOSAGE_MULTUM.mlm and STD_FUNC_DOSAGE_CAT.mlm
|
|
// Contains the medication route and route ID used to retrieve this
|
|
// dosage range by the two MLMs mentioned above
|
|
med_route,
|
|
med_route_id,
|
|
|
|
display_route, // the route to display to the user. Populated by
|
|
// STD_FUNC_DOSAGE_MESSAGES.MLM.
|
|
|
|
//cannot_match_to_generic_route,
|
|
unrecognized_route_conversion_issue,
|
|
inapplicable_route_conversion_issue,
|
|
is_default,
|
|
hard_stop_high,
|
|
hard_stop_low,
|
|
crcl_within_range,
|
|
patient_age_at_order,
|
|
dnum_ic_match_found,
|
|
dose_frequency, // e.g. "once a day"
|
|
frequency_issue, // "too frequent", "unmapped", or null
|
|
//[New born birth-time missing]
|
|
// 0: alert not using estimated ages; 1: using estimated min age; 2: using estimated max age max; 3: using both estimated age min/max.
|
|
estimated_age_used
|
|
];
|
|
|
|
// medication dosage range map object
|
|
Medication_Dosage_Range_Map := OBJECT [
|
|
sort_number,
|
|
med_sort_number,
|
|
dosage_range_sort_number,
|
|
dosage_type,
|
|
match_found,
|
|
above_range,
|
|
below_range,
|
|
med_name,
|
|
med_dose_low,
|
|
med_dose_high,
|
|
med_dose_uom,
|
|
adjusted_dose_high,
|
|
adjusted_dose_low,
|
|
adjusted_dose_uom,
|
|
hard_stop_low,
|
|
hard_stop_high,
|
|
dose_frequency, // e.g. "once a day"
|
|
frequency_issue // "too frequent", "unmapped", or null
|
|
];
|
|
|
|
Alert_If_Missing_Obj := OBJECT [
|
|
patient_age,
|
|
patient_gender,
|
|
patient_height,
|
|
patient_weight,
|
|
uom,
|
|
route,
|
|
uom_conversion,
|
|
unmapped_drug,
|
|
unmapped_grouper,
|
|
unmapped_gender,
|
|
unmapped_route,
|
|
unmapped_uom,
|
|
unmapped_frequency,
|
|
cannot_check_DNUM_Rx_to_Multum,
|
|
cannot_check_Rx_to_IC,
|
|
cannot_check_generic_route,
|
|
inapplicable_route
|
|
];
|
|
|
|
//[New born birth-time missing]Holding info of birthday and max estimated_birthday
|
|
//the age values are patient_age_at_order calcualted by birthday and order order_med_significant_date
|
|
Patient_Birthday_Info_Obj := OBJECT [
|
|
birthday,
|
|
age_year_value,
|
|
age_month_value,
|
|
age_week_value,
|
|
age_day_value,
|
|
age_hour_value,
|
|
age_str,
|
|
// from here only used when is_estimated_birthday is true
|
|
is_estimated_birthday,
|
|
age_max_inhour_str,
|
|
estimated_birthday_to,
|
|
age_year_min_value,
|
|
age_month_min_value,
|
|
age_week_min_value,
|
|
age_day_min_value,
|
|
age_hour_min_value,
|
|
age_min_inhour_str
|
|
];
|
|
|
|
// weight, 68 kg, entered on 2011-nov-22, false, false
|
|
// height,
|
|
Patient_Property_Obj := OBJECT [
|
|
type,
|
|
value,
|
|
date,
|
|
is_missing,
|
|
is_unmapped,
|
|
not_current,
|
|
unknown_other
|
|
];
|
|
|
|
// Holds patient property objects
|
|
Patient_Info_Obj := Object [
|
|
Age,
|
|
Weight,
|
|
Height,
|
|
BSA,
|
|
Gender,
|
|
Liver,
|
|
Renal,
|
|
Creatinine,
|
|
DNum_Grouper,
|
|
ICD9_List
|
|
];
|
|
|
|
// Holds the currentness duration
|
|
Validity_Duration := OBJECT [
|
|
duration,
|
|
toAge,
|
|
fromAge ]; // Note fromAge is set by the system
|
|
|
|
|
|
Grouper_Info_Object := OBJECT [
|
|
grouper_id,
|
|
grouper_name,
|
|
dosage_range_found
|
|
];
|
|
;;
|
|
priority: 50
|
|
;;
|
|
evoke:
|
|
;;
|
|
logic:
|
|
;;
|
|
action:
|
|
;;
|
|
Urgency: 50;;
|
|
end:
|